Skip to content

Commit

Permalink
Merge pull request #15181 from MoonE/typecheck-strict
Browse files Browse the repository at this point in the history
Strict type checks for select files
  • Loading branch information
MoonE committed Sep 26, 2023
2 parents 70e211b + 87accc7 commit 5a7b9d3
Show file tree
Hide file tree
Showing 9 changed files with 337 additions and 5 deletions.
319 changes: 319 additions & 0 deletions config/tsconfig-strict.json
@@ -0,0 +1,319 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"strict": true,
},
"include": [
"../src/ol/**/*.js"
],
"exclude": [
"../src/ol/centerconstraint.js",
"../src/ol/Collection.js",
"../src/ol/color.js",
"../src/ol/colorlike.js",
"../src/ol/control.js",
"../src/ol/control/Attribution.js",
"../src/ol/control/Control.js",
"../src/ol/control/defaults.js",
"../src/ol/control/FullScreen.js",
"../src/ol/control/MousePosition.js",
"../src/ol/control/OverviewMap.js",
"../src/ol/control/Rotate.js",
"../src/ol/control/ScaleLine.js",
"../src/ol/control/Zoom.js",
"../src/ol/control/ZoomSlider.js",
"../src/ol/control/ZoomToExtent.js",
"../src/ol/coordinate.js",
"../src/ol/DataTile.js",
"../src/ol/dom.js",
"../src/ol/events.js",
"../src/ol/events/condition.js",
"../src/ol/events/Event.js",
"../src/ol/events/SnapEvent.js",
"../src/ol/events/Target.js",
"../src/ol/expr/cpu.js",
"../src/ol/expr/expression.js",
"../src/ol/extent.js",
"../src/ol/Feature.js",
"../src/ol/featureloader.js",
"../src/ol/format.js",
"../src/ol/format/EsriJSON.js",
"../src/ol/format/Feature.js",
"../src/ol/format/filter.js",
"../src/ol/format/filter/And.js",
"../src/ol/format/filter/Bbox.js",
"../src/ol/format/filter/Comparison.js",
"../src/ol/format/filter/ComparisonBinary.js",
"../src/ol/format/filter/Contains.js",
"../src/ol/format/filter/Disjoint.js",
"../src/ol/format/filter/During.js",
"../src/ol/format/filter/DWithin.js",
"../src/ol/format/filter/EqualTo.js",
"../src/ol/format/filter/GreaterThan.js",
"../src/ol/format/filter/GreaterThanOrEqualTo.js",
"../src/ol/format/filter/Intersects.js",
"../src/ol/format/filter/IsBetween.js",
"../src/ol/format/filter/IsLike.js",
"../src/ol/format/filter/IsNull.js",
"../src/ol/format/filter/LessThan.js",
"../src/ol/format/filter/LessThanOrEqualTo.js",
"../src/ol/format/filter/LogicalNary.js",
"../src/ol/format/filter/Not.js",
"../src/ol/format/filter/NotEqualTo.js",
"../src/ol/format/filter/Or.js",
"../src/ol/format/filter/ResourceId.js",
"../src/ol/format/filter/Spatial.js",
"../src/ol/format/filter/Within.js",
"../src/ol/format/GeoJSON.js",
"../src/ol/format/GML.js",
"../src/ol/format/GML2.js",
"../src/ol/format/GML3.js",
"../src/ol/format/GML32.js",
"../src/ol/format/GMLBase.js",
"../src/ol/format/GPX.js",
"../src/ol/format/IGC.js",
"../src/ol/format/IIIFInfo.js",
"../src/ol/format/JSONFeature.js",
"../src/ol/format/KML.js",
"../src/ol/format/MVT.js",
"../src/ol/format/OSMXML.js",
"../src/ol/format/OWS.js",
"../src/ol/format/Polyline.js",
"../src/ol/format/TextFeature.js",
"../src/ol/format/TopoJSON.js",
"../src/ol/format/WFS.js",
"../src/ol/format/WKB.js",
"../src/ol/format/WKT.js",
"../src/ol/format/WMSCapabilities.js",
"../src/ol/format/WMSGetFeatureInfo.js",
"../src/ol/format/WMTSCapabilities.js",
"../src/ol/format/XML.js",
"../src/ol/format/XMLFeature.js",
"../src/ol/format/xsd.js",
"../src/ol/functions.js",
"../src/ol/Geolocation.js",
"../src/ol/geom.js",
"../src/ol/geom/Circle.js",
"../src/ol/geom/flat/center.js",
"../src/ol/geom/flat/closest.js",
"../src/ol/geom/flat/contains.js",
"../src/ol/geom/flat/deflate.js",
"../src/ol/geom/flat/geodesic.js",
"../src/ol/geom/flat/inflate.js",
"../src/ol/geom/flat/interiorpoint.js",
"../src/ol/geom/flat/interpolate.js",
"../src/ol/geom/flat/intersectsextent.js",
"../src/ol/geom/flat/linechunk.js",
"../src/ol/geom/flat/orient.js",
"../src/ol/geom/flat/segments.js",
"../src/ol/geom/flat/simplify.js",
"../src/ol/geom/flat/straightchunk.js",
"../src/ol/geom/flat/textpath.js",
"../src/ol/geom/flat/topology.js",
"../src/ol/geom/flat/transform.js",
"../src/ol/geom/Geometry.js",
"../src/ol/geom/GeometryCollection.js",
"../src/ol/geom/LinearRing.js",
"../src/ol/geom/LineString.js",
"../src/ol/geom/MultiLineString.js",
"../src/ol/geom/MultiPoint.js",
"../src/ol/geom/MultiPolygon.js",
"../src/ol/geom/Point.js",
"../src/ol/geom/Polygon.js",
"../src/ol/geom/SimpleGeometry.js",
"../src/ol/has.js",
"../src/ol/Image.js",
"../src/ol/ImageCanvas.js",
"../src/ol/ImageTile.js",
"../src/ol/index.js",
"../src/ol/interaction.js",
"../src/ol/interaction/DblClickDragZoom.js",
"../src/ol/interaction/defaults.js",
"../src/ol/interaction/DoubleClickZoom.js",
"../src/ol/interaction/DragAndDrop.js",
"../src/ol/interaction/DragBox.js",
"../src/ol/interaction/DragPan.js",
"../src/ol/interaction/DragRotate.js",
"../src/ol/interaction/DragRotateAndZoom.js",
"../src/ol/interaction/DragZoom.js",
"../src/ol/interaction/Draw.js",
"../src/ol/interaction/Extent.js",
"../src/ol/interaction/Interaction.js",
"../src/ol/interaction/KeyboardPan.js",
"../src/ol/interaction/KeyboardZoom.js",
"../src/ol/interaction/Link.js",
"../src/ol/interaction/Modify.js",
"../src/ol/interaction/MouseWheelZoom.js",
"../src/ol/interaction/PinchRotate.js",
"../src/ol/interaction/PinchZoom.js",
"../src/ol/interaction/Pointer.js",
"../src/ol/interaction/Select.js",
"../src/ol/interaction/Snap.js",
"../src/ol/interaction/Translate.js",
"../src/ol/layer.js",
"../src/ol/layer/Base.js",
"../src/ol/layer/BaseImage.js",
"../src/ol/layer/BaseTile.js",
"../src/ol/layer/BaseVector.js",
"../src/ol/layer/Graticule.js",
"../src/ol/layer/Group.js",
"../src/ol/layer/Heatmap.js",
"../src/ol/layer/Image.js",
"../src/ol/layer/Layer.js",
"../src/ol/layer/Tile.js",
"../src/ol/layer/Vector.js",
"../src/ol/layer/VectorImage.js",
"../src/ol/layer/VectorTile.js",
"../src/ol/layer/WebGLPoints.js",
"../src/ol/layer/WebGLTile.js",
"../src/ol/loadingstrategy.js",
"../src/ol/Map.js",
"../src/ol/MapBrowserEvent.js",
"../src/ol/MapBrowserEventHandler.js",
"../src/ol/MapBrowserEventType.js",
"../src/ol/MapEvent.js",
"../src/ol/net.js",
"../src/ol/obj.js",
"../src/ol/Object.js",
"../src/ol/Observable.js",
"../src/ol/Overlay.js",
"../src/ol/proj.js",
"../src/ol/proj/epsg3857.js",
"../src/ol/proj/epsg4326.js",
"../src/ol/proj/proj4.js",
"../src/ol/proj/Projection.js",
"../src/ol/proj/projections.js",
"../src/ol/proj/transforms.js",
"../src/ol/render.js",
"../src/ol/render/Box.js",
"../src/ol/render/canvas.js",
"../src/ol/render/canvas/Builder.js",
"../src/ol/render/canvas/BuilderGroup.js",
"../src/ol/render/canvas/Executor.js",
"../src/ol/render/canvas/ExecutorGroup.js",
"../src/ol/render/canvas/hitdetect.js",
"../src/ol/render/canvas/ImageBuilder.js",
"../src/ol/render/canvas/Immediate.js",
"../src/ol/render/canvas/LineStringBuilder.js",
"../src/ol/render/canvas/PolygonBuilder.js",
"../src/ol/render/canvas/style.js",
"../src/ol/render/canvas/TextBuilder.js",
"../src/ol/render/Event.js",
"../src/ol/render/Feature.js",
"../src/ol/render/VectorContext.js",
"../src/ol/render/webgl/constants.js",
"../src/ol/render/webgl/MixedGeometryBatch.js",
"../src/ol/render/webgl/renderinstructions.js",
"../src/ol/render/webgl/utils.js",
"../src/ol/render/webgl/VectorStyleRenderer.js",
"../src/ol/renderer/canvas/ImageLayer.js",
"../src/ol/renderer/canvas/Layer.js",
"../src/ol/renderer/canvas/TileLayer.js",
"../src/ol/renderer/canvas/VectorImageLayer.js",
"../src/ol/renderer/canvas/VectorLayer.js",
"../src/ol/renderer/canvas/VectorTileLayer.js",
"../src/ol/renderer/Composite.js",
"../src/ol/renderer/Layer.js",
"../src/ol/renderer/Map.js",
"../src/ol/renderer/vector.js",
"../src/ol/renderer/webgl/Layer.js",
"../src/ol/renderer/webgl/PointsLayer.js",
"../src/ol/renderer/webgl/TileLayer.js",
"../src/ol/renderer/webgl/TileLayerBase.js",
"../src/ol/renderer/webgl/VectorLayer.js",
"../src/ol/renderer/webgl/VectorTileLayer.js",
"../src/ol/renderer/webgl/worldUtil.js",
"../src/ol/reproj.js",
"../src/ol/reproj/DataTile.js",
"../src/ol/reproj/Image.js",
"../src/ol/reproj/Tile.js",
"../src/ol/reproj/Triangulation.js",
"../src/ol/resolutionconstraint.js",
"../src/ol/rotationconstraint.js",
"../src/ol/source.js",
"../src/ol/source/arcgisRest.js",
"../src/ol/source/BingMaps.js",
"../src/ol/source/CartoDB.js",
"../src/ol/source/Cluster.js",
"../src/ol/source/DataTile.js",
"../src/ol/source/GeoTIFF.js",
"../src/ol/source/IIIF.js",
"../src/ol/source/Image.js",
"../src/ol/source/ImageArcGISRest.js",
"../src/ol/source/ImageCanvas.js",
"../src/ol/source/ImageMapGuide.js",
"../src/ol/source/ImageStatic.js",
"../src/ol/source/ImageWMS.js",
"../src/ol/source/mapguide.js",
"../src/ol/source/OGCMapTile.js",
"../src/ol/source/ogcTileUtil.js",
"../src/ol/source/OGCVectorTile.js",
"../src/ol/source/OSM.js",
"../src/ol/source/Raster.js",
"../src/ol/source/Source.js",
"../src/ol/source/StadiaMaps.js",
"../src/ol/source/static.js",
"../src/ol/source/Tile.js",
"../src/ol/source/TileArcGISRest.js",
"../src/ol/source/TileDebug.js",
"../src/ol/source/TileImage.js",
"../src/ol/source/TileJSON.js",
"../src/ol/source/TileWMS.js",
"../src/ol/source/UrlTile.js",
"../src/ol/source/UTFGrid.js",
"../src/ol/source/Vector.js",
"../src/ol/source/VectorTile.js",
"../src/ol/source/wms.js",
"../src/ol/source/WMTS.js",
"../src/ol/source/XYZ.js",
"../src/ol/source/Zoomify.js",
"../src/ol/sphere.js",
"../src/ol/structs/LinkedList.js",
"../src/ol/structs/LRUCache.js",
"../src/ol/structs/PriorityQueue.js",
"../src/ol/structs/RBush.js",
"../src/ol/style.js",
"../src/ol/style/Circle.js",
"../src/ol/style/expressions.js",
"../src/ol/style/Fill.js",
"../src/ol/style/flat.js",
"../src/ol/style/Icon.js",
"../src/ol/style/IconImage.js",
"../src/ol/style/IconImageCache.js",
"../src/ol/style/Image.js",
"../src/ol/style/literal.js",
"../src/ol/style/RegularShape.js",
"../src/ol/style/Stroke.js",
"../src/ol/style/Style.js",
"../src/ol/style/Text.js",
"../src/ol/Tile.js",
"../src/ol/TileCache.js",
"../src/ol/tilecoord.js",
"../src/ol/tilegrid.js",
"../src/ol/tilegrid/TileGrid.js",
"../src/ol/tilegrid/WMTS.js",
"../src/ol/TileQueue.js",
"../src/ol/TileRange.js",
"../src/ol/tileurlfunction.js",
"../src/ol/transform.js",
"../src/ol/uri.js",
"../src/ol/util.js",
"../src/ol/vec/mat4.js",
"../src/ol/VectorRenderTile.js",
"../src/ol/VectorTile.js",
"../src/ol/View.js",
"../src/ol/webgl.js",
"../src/ol/webgl/BaseTileRepresentation.js",
"../src/ol/webgl/Buffer.js",
"../src/ol/webgl/Helper.js",
"../src/ol/webgl/PaletteTexture.js",
"../src/ol/webgl/PostProcessingPass.js",
"../src/ol/webgl/RenderTarget.js",
"../src/ol/webgl/ShaderBuilder.js",
"../src/ol/webgl/styleparser.js",
"../src/ol/webgl/TileGeometry.js",
"../src/ol/webgl/TileTexture.js",
"../src/ol/worker/webgl.js",
"../src/ol/xml.js"
]
}
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -11,7 +11,7 @@
"homepage": "https://openlayers.org/",
"scripts": {
"lint": "eslint tasks test src/ol examples config",
"pretest": "npm run lint && npm run typecheck",
"pretest": "npm run lint && npm run typecheck && npm run typecheck-strict",
"test-rendering": "npm run build-full && node test/rendering/test.js",
"test-browser": "npm run karma -- --single-run --log-level error",
"test-node": "mocha --recursive test/node",
Expand All @@ -27,6 +27,7 @@
"generate-types": "tsc --project config/tsconfig-build.json --declaration --declarationMap --emitDeclarationOnly --outdir build/ol",
"transpile": "shx rm -rf build/ol && shx mkdir -p build/ol && shx cp -rf src/ol build && node tasks/serialize-workers.cjs && node tasks/set-version.js",
"typecheck": "tsc --pretty",
"typecheck-strict": "tsc --project config/tsconfig-strict.json",
"apidoc-debug": "shx rm -rf build/apidoc && node --inspect-brk=9229 ./node_modules/jsdoc/jsdoc.js --readme config/jsdoc/api/index.md --configure config/jsdoc/api/conf.json --package package.json --destination build/apidoc",
"apidoc": "shx rm -rf build/apidoc && jsdoc --readme config/jsdoc/api/index.md --configure config/jsdoc/api/conf.json --package package.json --destination build/apidoc"
},
Expand Down
4 changes: 2 additions & 2 deletions src/ol/array.js
Expand Up @@ -185,8 +185,8 @@ export function remove(arr, obj) {
}

/**
* @param {Array|Uint8ClampedArray} arr1 The first array to compare.
* @param {Array|Uint8ClampedArray} arr2 The second array to compare.
* @param {Array<any>|Uint8ClampedArray} arr1 The first array to compare.
* @param {Array<any>|Uint8ClampedArray} arr2 The second array to compare.
* @return {boolean} Whether the two arrays are equal.
*/
export function equals(arr1, arr2) {
Expand Down
9 changes: 9 additions & 0 deletions src/ol/console.js
Expand Up @@ -32,20 +32,29 @@ export function setLevel(l) {
level = levels[l];
}

/**
* @param {...any} args Arguments to log
*/
export function log(...args) {
if (level > levels.info) {
return;
}
console.log(...args); // eslint-disable-line no-console
}

/**
* @param {...any} args Arguments to log
*/
export function warn(...args) {
if (level > levels.warn) {
return;
}
console.warn(...args); // eslint-disable-line no-console
}

/**
* @param {...any} args Arguments to log
*/
export function error(...args) {
if (level > levels.error) {
return;
Expand Down
1 change: 1 addition & 0 deletions src/ol/css.js
Expand Up @@ -78,6 +78,7 @@ const fontRegEx = new RegExp(
].join(''),
'i'
);
/** @type {Array<'style'|'variant'|'weight'|'size'|'lineHeight'|'family'>} */
const fontRegExMatchIndex = [
'style',
'variant',
Expand Down
2 changes: 1 addition & 1 deletion src/ol/format/xlink.js
Expand Up @@ -10,7 +10,7 @@ const NAMESPACE_URI = 'http://www.w3.org/1999/xlink';

/**
* @param {Element} node Node.
* @return {string|undefined} href.
* @return {string|null} href.
*/
export function readHref(node) {
return node.getAttributeNS(NAMESPACE_URI, 'href');
Expand Down

0 comments on commit 5a7b9d3

Please sign in to comment.