diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eee4af3..6c1e790 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,11 +25,15 @@ jobs: # pnpm test # pnpm publint - - name: Prettier check - run: pnpm fmt:check - - name: Type check run: pnpm typecheck - name: Test run: pnpm test + + Lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: biomejs/setup-biome@4c91541eaada48f67d7dbd7833600ce162b68f51 # v2 + - run: biome ci . diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 48eba03..0000000 --- a/.prettierrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "tabWidth": 2, - "semi": true, - "trailingComma": "all" -} diff --git a/biome.json b/biome.json new file mode 100644 index 0000000..7714e2b --- /dev/null +++ b/biome.json @@ -0,0 +1,58 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.4.12/schema.json", + "assist": { + "actions": { + "source": { + "organizeImports": "on" + } + } + }, + "files": { + "ignoreUnknown": true, + "includes": [ + "**", + "!!**/*.log", + "!!**/coverage", + "!!**/dist", + "!!**/fixtures", + "!!**/node_modules" + ] + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 80 + }, + "javascript": { + "formatter": { + "arrowParentheses": "always", + "quoteStyle": "double", + "semicolons": "always", + "trailingCommas": "all" + } + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "style": { + "noNonNullAssertion": "off", + "useImportType": { + "level": "error", + "options": { + "style": "separatedType" + } + } + }, + "suspicious": { + "noExplicitAny": "off" + } + } + }, + "vcs": { + "clientKind": "git", + "enabled": true, + "useIgnoreFile": true + } +} diff --git a/examples/linestring/app.tsx b/examples/linestring/app.tsx index 53f9171..37b0bf5 100644 --- a/examples/linestring/app.tsx +++ b/examples/linestring/app.tsx @@ -1,9 +1,10 @@ -import React, { useState, useEffect } from "react"; -import { createRoot } from "react-dom/client"; -import { StaticMap, MapContext, NavigationControl } from "react-map-gl"; -import DeckGL, { Layer, PickingInfo } from "deck.gl"; import { GeoArrowPathLayer } from "@geoarrow/deck.gl-layers"; import * as arrow from "apache-arrow"; +import type { Layer, PickingInfo } from "deck.gl"; +import DeckGL from "deck.gl"; +import { useEffect, useState } from "react"; +import { createRoot } from "react-dom/client"; +import { MapContext, NavigationControl, StaticMap } from "react-map-gl"; const GEOARROW_POINT_DATA = "http://localhost:8080/ne_10m_roads_north_america.arrow"; diff --git a/examples/multilinestring/app.tsx b/examples/multilinestring/app.tsx index 8385f89..78d3cd3 100644 --- a/examples/multilinestring/app.tsx +++ b/examples/multilinestring/app.tsx @@ -1,9 +1,10 @@ -import React, { useState, useEffect } from "react"; -import { createRoot } from "react-dom/client"; -import { StaticMap, MapContext, NavigationControl } from "react-map-gl"; -import DeckGL, { Layer } from "deck.gl"; import { GeoArrowPathLayer } from "@geoarrow/deck.gl-layers"; import * as arrow from "apache-arrow"; +import type { Layer } from "deck.gl"; +import DeckGL from "deck.gl"; +import { useEffect, useState } from "react"; +import { createRoot } from "react-dom/client"; +import { MapContext, NavigationControl, StaticMap } from "react-map-gl"; const GEOARROW_MULTILINESTRING_DATA = "http://localhost:8080/ne_10m_roads_north_america.feather"; @@ -65,7 +66,7 @@ function Root() { getColor: ({ index, data }) => { const recordBatch = data.data; const row = recordBatch.get(index)!; - return COLORS_LOOKUP[row["scalerank"]]; + return COLORS_LOOKUP[row.scalerank]; }, widthMinPixels: 0.8, pickable: true, diff --git a/examples/multipoint/app.tsx b/examples/multipoint/app.tsx index 99cbdb4..ac1a3c3 100644 --- a/examples/multipoint/app.tsx +++ b/examples/multipoint/app.tsx @@ -1,9 +1,10 @@ -import React, { useState, useEffect } from "react"; -import { createRoot } from "react-dom/client"; -import { StaticMap, MapContext, NavigationControl } from "react-map-gl"; -import DeckGL, { Layer } from "deck.gl"; import { GeoArrowScatterplotLayer } from "@geoarrow/deck.gl-layers"; import * as arrow from "apache-arrow"; +import type { Layer } from "deck.gl"; +import DeckGL from "deck.gl"; +import { useEffect, useState } from "react"; +import { createRoot } from "react-dom/client"; +import { MapContext, NavigationControl, StaticMap } from "react-map-gl"; const GEOARROW_MULTIPOINT_DATA = "http://localhost:8080/naturalearth_cities_multipoint.feather"; @@ -75,6 +76,7 @@ function Root() { layers={layers} // @ts-expect-error ContextProvider={MapContext.Provider} + onClick={onClick} > diff --git a/examples/multipolygon/app.tsx b/examples/multipolygon/app.tsx index 33cf7b8..3dd2e60 100644 --- a/examples/multipolygon/app.tsx +++ b/examples/multipolygon/app.tsx @@ -1,9 +1,10 @@ -import React, { useState, useEffect } from "react"; -import { createRoot } from "react-dom/client"; -import { StaticMap, MapContext, NavigationControl } from "react-map-gl"; -import DeckGL, { Layer, PickingInfo } from "deck.gl"; import { GeoArrowSolidPolygonLayer } from "@geoarrow/deck.gl-layers"; import * as arrow from "apache-arrow"; +import type { Layer, PickingInfo } from "deck.gl"; +import DeckGL from "deck.gl"; +import { useEffect, useState } from "react"; +import { createRoot } from "react-dom/client"; +import { MapContext, NavigationControl, StaticMap } from "react-map-gl"; const GEOARROW_POLYGON_DATA = "http://localhost:8080/ne_10m_admin_0_countries.feather"; diff --git a/examples/point/app.tsx b/examples/point/app.tsx index f2f36c9..5b26d67 100644 --- a/examples/point/app.tsx +++ b/examples/point/app.tsx @@ -1,9 +1,10 @@ -import React, { useState, useEffect } from "react"; -import { createRoot } from "react-dom/client"; -import { StaticMap, MapContext, NavigationControl } from "react-map-gl"; -import DeckGL, { Layer, PickingInfo } from "deck.gl"; import { GeoArrowScatterplotLayer } from "@geoarrow/deck.gl-layers"; import * as arrow from "apache-arrow"; +import type { Layer, PickingInfo } from "deck.gl"; +import DeckGL from "deck.gl"; +import { useEffect, useState } from "react"; +import { createRoot } from "react-dom/client"; +import { MapContext, NavigationControl, StaticMap } from "react-map-gl"; const GEOARROW_POINT_DATA = "http://localhost:8080/2019-01-01_performance_mobile_tiles.feather"; @@ -61,7 +62,7 @@ function Root() { getRadius: ({ index, data }) => { const recordBatch = data.data; const row = recordBatch.get(index)!; - return row["avg_d_kbps"] / 50; + return row.avg_d_kbps / 50; }, radiusMinPixels: 0.1, pickable: true, diff --git a/examples/polygon/app.tsx b/examples/polygon/app.tsx index 3a3b60a..70baac7 100644 --- a/examples/polygon/app.tsx +++ b/examples/polygon/app.tsx @@ -1,9 +1,10 @@ -import React, { useState, useEffect } from "react"; -import { createRoot } from "react-dom/client"; -import { StaticMap, MapContext, NavigationControl } from "react-map-gl"; -import DeckGL, { Layer, PickingInfo } from "deck.gl"; import { GeoArrowPolygonLayer } from "@geoarrow/deck.gl-layers"; import * as arrow from "apache-arrow"; +import type { Layer, PickingInfo } from "deck.gl"; +import DeckGL from "deck.gl"; +import { useEffect, useState } from "react"; +import { createRoot } from "react-dom/client"; +import { MapContext, NavigationControl, StaticMap } from "react-map-gl"; // const GEOARROW_POLYGON_DATA = "http://localhost:8080/small.feather"; @@ -29,7 +30,7 @@ const NAV_CONTROL_STYLE = { function Root() { const onClick = (info: PickingInfo) => { if (info.object) { - console.log(info.object["BoroName"]); + console.log(info.object.BoroName); } }; diff --git a/examples/text/app.tsx b/examples/text/app.tsx index 7c753da..cf93275 100644 --- a/examples/text/app.tsx +++ b/examples/text/app.tsx @@ -1,9 +1,10 @@ -import React, { useState, useEffect } from "react"; -import { createRoot } from "react-dom/client"; -import { StaticMap, MapContext, NavigationControl } from "react-map-gl"; -import DeckGL, { Layer, PickingInfo } from "deck.gl"; import { _GeoArrowTextLayer } from "@geoarrow/deck.gl-layers"; import * as arrow from "apache-arrow"; +import type { Layer, PickingInfo } from "deck.gl"; +import DeckGL from "deck.gl"; +import { useEffect, useState } from "react"; +import { createRoot } from "react-dom/client"; +import { MapContext, NavigationControl, StaticMap } from "react-map-gl"; const GEOARROW_POLYGON_DATA = "http://localhost:8080/text.arrow"; diff --git a/examples/trips/app.tsx b/examples/trips/app.tsx index 898b2bd..d189571 100644 --- a/examples/trips/app.tsx +++ b/examples/trips/app.tsx @@ -1,9 +1,10 @@ -import React, { useState, useEffect } from "react"; -import { createRoot } from "react-dom/client"; -import { StaticMap, MapContext, NavigationControl } from "react-map-gl"; -import DeckGL, { Layer, PickingInfo } from "deck.gl"; import { GeoArrowTripsLayer } from "@geoarrow/deck.gl-layers"; import * as arrow from "apache-arrow"; +import type { Layer, PickingInfo } from "deck.gl"; +import DeckGL from "deck.gl"; +import { useEffect, useState } from "react"; +import { createRoot } from "react-dom/client"; +import { MapContext, NavigationControl, StaticMap } from "react-map-gl"; const GEOARROW_POINT_DATA = "http://localhost:8080/trips.feather"; @@ -32,12 +33,12 @@ function Root() { const [time, setTime] = useState(0); const [animation] = useState<{ id: number }>({ id: 0 }); - const animate = () => { - setTime((t) => (t + animationSpeed) % loopLength); - animation.id = window.requestAnimationFrame(animate); - }; - useEffect(() => { + const animate = () => { + setTime((t) => (t + animationSpeed) % loopLength); + animation.id = window.requestAnimationFrame(animate); + }; + animation.id = window.requestAnimationFrame(animate); return () => window.cancelAnimationFrame(animation.id); }, [animation]); diff --git a/package.json b/package.json index b1755c5..2091353 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,17 @@ "private": true, "scripts": { "build": "cd packages/deck.gl-layers && pnpm build", + "check:fix": "biome check --write .", + "check": "biome check .", "clean": "rimraf dist packages/deck.gl-layers/dist", "docs:build": "typedoc", "docs:publish": "gh-pages -d docs_build", "fmt:check": "prettier '**/*.ts' --check", "fmt": "prettier '**/*.ts' --write", + "format:fix": "biome format --write .", + "format": "biome format .", + "lint:fix": "biome lint --write .", + "lint": "biome lint .", "prepublishOnly": "pnpm clean && pnpm build", "test": "vitest run", "typecheck": "tsc --build", @@ -21,12 +27,12 @@ "author": "Kyle Barron ", "license": "MIT", "devDependencies": { + "@biomejs/biome": "^2.4.11", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-terser": "^0.4.3", "@rollup/plugin-typescript": "^11.1.2", "gh-pages": "^6.1.0", - "prettier": "^3.1.0", "rimraf": "^5.0.5", "rollup": "^3.26.2", "rollup-plugin-dts": "^5.3.0", diff --git a/packages/deck.gl-layers/rollup.config.js b/packages/deck.gl-layers/rollup.config.js index 29a6fbf..777dd67 100644 --- a/packages/deck.gl-layers/rollup.config.js +++ b/packages/deck.gl-layers/rollup.config.js @@ -1,8 +1,8 @@ +import commonjs from "@rollup/plugin-commonjs"; +import { nodeResolve } from "@rollup/plugin-node-resolve"; import terser from "@rollup/plugin-terser"; import typescript from "@rollup/plugin-typescript"; import dts from "rollup-plugin-dts"; -import { nodeResolve } from "@rollup/plugin-node-resolve"; -import commonjs from "@rollup/plugin-commonjs"; const input = "./src/index.ts"; const sourcemap = true; diff --git a/packages/deck.gl-layers/src/layers/a5-layer.ts b/packages/deck.gl-layers/src/layers/a5-layer.ts index 52d7c0b..45ab1e6 100644 --- a/packages/deck.gl-layers/src/layers/a5-layer.ts +++ b/packages/deck.gl-layers/src/layers/a5-layer.ts @@ -2,21 +2,26 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, } from "@deck.gl/core"; +import { CompositeLayer } from "@deck.gl/core"; import type { A5LayerProps } from "@deck.gl/geo-layers"; import { A5Layer } from "@deck.gl/geo-layers"; import * as arrow from "apache-arrow"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, extractAccessorsFromProps } from "../utils/utils"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; import { validateAccessors } from "../utils/validate"; /** All properties supported by GeoArrowA5Layer */ @@ -93,9 +98,9 @@ const defaultProps: DefaultProps = { ...ourDefaultProps, }; -export class GeoArrowA5Layer extends CompositeLayer< - GeoArrowA5LayerProps & ExtraProps -> { +export class GeoArrowA5Layer< + ExtraProps extends object = Record, +> extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowA5Layer"; @@ -107,11 +112,11 @@ export class GeoArrowA5Layer extends CompositeLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { return this._renderLayer(); } - _renderLayer(): Layer<{}> | LayersList | null { + _renderLayer(): Layer | LayersList | null { const { data: batch, getPentagon } = this.props; if (this.props._validate) { diff --git a/packages/deck.gl-layers/src/layers/arc-layer.ts b/packages/deck.gl-layers/src/layers/arc-layer.ts index 704e8ac..2e41403 100644 --- a/packages/deck.gl-layers/src/layers/arc-layer.ts +++ b/packages/deck.gl-layers/src/layers/arc-layer.ts @@ -2,28 +2,32 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, - assert, } from "@deck.gl/core"; -import { ArcLayer } from "@deck.gl/layers"; +import { assert, CompositeLayer } from "@deck.gl/core"; import type { ArcLayerProps } from "@deck.gl/layers"; -import type { RecordBatch } from "apache-arrow"; +import { ArcLayer } from "@deck.gl/layers"; import * as ga from "@geoarrow/geoarrow-js"; +import { child } from "@geoarrow/geoarrow-js"; +import type { RecordBatch } from "apache-arrow"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, convertStructToFixedSizeList, extractAccessorsFromProps, isGeomSeparate, } from "../utils/utils"; -import { child } from "@geoarrow/geoarrow-js"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; import { validateAccessors } from "../utils/validate"; /** All properties supported by GeoArrowArcLayer */ @@ -112,7 +116,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowArcLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowArcLayer"; @@ -125,11 +129,11 @@ export class GeoArrowArcLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { return this._renderLayersPoint(); } - _renderLayersPoint(): Layer<{}> | LayersList | null { + _renderLayersPoint(): Layer | LayersList | null { const { data: batch } = this.props; let { getSourcePosition: sourceData, getTargetPosition: targetData } = this.props; diff --git a/packages/deck.gl-layers/src/layers/column-layer.ts b/packages/deck.gl-layers/src/layers/column-layer.ts index 7fb3c54..c8f70f4 100644 --- a/packages/deck.gl-layers/src/layers/column-layer.ts +++ b/packages/deck.gl-layers/src/layers/column-layer.ts @@ -2,19 +2,27 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, - assert, } from "@deck.gl/core"; -import { ColumnLayer } from "@deck.gl/layers"; +import { assert, CompositeLayer } from "@deck.gl/core"; import type { ColumnLayerProps } from "@deck.gl/layers"; -import * as arrow from "apache-arrow"; +import { ColumnLayer } from "@deck.gl/layers"; +import * as ga from "@geoarrow/geoarrow-js"; +import type * as arrow from "apache-arrow"; import type { RecordBatch } from "apache-arrow"; +import { EXTENSION_NAME } from "../constants"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, convertStructToFixedSizeList, @@ -22,10 +30,6 @@ import { getGeometryData, isGeomSeparate, } from "../utils/utils"; -import * as ga from "@geoarrow/geoarrow-js"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; -import { EXTENSION_NAME } from "../constants"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; import { validateAccessors } from "../utils/validate"; /** All properties supported by GeoArrowColumnLayer */ @@ -106,7 +110,7 @@ const defaultProps: DefaultProps = { * coordinates. */ export class GeoArrowColumnLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowColumnLayer"; @@ -119,7 +123,7 @@ export class GeoArrowColumnLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { const { data: batch } = this.props; const geometryData = getGeometryData(batch, EXTENSION_NAME.POINT); @@ -137,7 +141,7 @@ export class GeoArrowColumnLayer< _renderPointLayer( geometryData: ga.data.PointData, - ): Layer<{}> | LayersList | null { + ): Layer | LayersList | null { const { data: batch } = this.props; if (this.props._validate) { diff --git a/packages/deck.gl-layers/src/layers/geohash-layer.ts b/packages/deck.gl-layers/src/layers/geohash-layer.ts index d2ec0f1..b6d973e 100644 --- a/packages/deck.gl-layers/src/layers/geohash-layer.ts +++ b/packages/deck.gl-layers/src/layers/geohash-layer.ts @@ -1,18 +1,23 @@ -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, } from "@deck.gl/core"; +import { CompositeLayer } from "@deck.gl/core"; import type { GeohashLayerProps } from "@deck.gl/geo-layers"; import { GeohashLayer } from "@deck.gl/geo-layers"; import * as arrow from "apache-arrow"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, extractAccessorsFromProps } from "../utils/utils"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; import { validateAccessors } from "../utils/validate"; /** All properties supported by GeoArrowGeohashLayer */ @@ -90,7 +95,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowGeohashLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowGeohashLayer"; @@ -103,11 +108,11 @@ export class GeoArrowGeohashLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { return this._renderLayer(); } - _renderLayer(): Layer<{}> | LayersList | null { + _renderLayer(): Layer | LayersList | null { const { data: batch, getGeohash } = this.props; if (this.props._validate) { diff --git a/packages/deck.gl-layers/src/layers/h3-hexagon-layer.ts b/packages/deck.gl-layers/src/layers/h3-hexagon-layer.ts index 15c90e8..5191fd0 100644 --- a/packages/deck.gl-layers/src/layers/h3-hexagon-layer.ts +++ b/packages/deck.gl-layers/src/layers/h3-hexagon-layer.ts @@ -2,21 +2,26 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, } from "@deck.gl/core"; +import { CompositeLayer } from "@deck.gl/core"; import type { H3HexagonLayerProps } from "@deck.gl/geo-layers"; import { H3HexagonLayer } from "@deck.gl/geo-layers"; import * as arrow from "apache-arrow"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, extractAccessorsFromProps } from "../utils/utils"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; import { validateAccessors } from "../utils/validate"; /** All properties supported by GeoArrowH3HexagonLayer */ @@ -94,7 +99,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowH3HexagonLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowH3HexagonLayer"; @@ -107,11 +112,11 @@ export class GeoArrowH3HexagonLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { return this._renderLayer(); } - _renderLayer(): Layer<{}> | LayersList | null { + _renderLayer(): Layer | LayersList | null { const { data: batch, getHexagon: hexData } = this.props; if (this.props._validate) { diff --git a/packages/deck.gl-layers/src/layers/heatmap-layer.ts b/packages/deck.gl-layers/src/layers/heatmap-layer.ts index 49782f7..27882c8 100644 --- a/packages/deck.gl-layers/src/layers/heatmap-layer.ts +++ b/packages/deck.gl-layers/src/layers/heatmap-layer.ts @@ -2,18 +2,19 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { HeatmapLayerProps } from "@deck.gl/aggregation-layers"; +import { HeatmapLayer } from "@deck.gl/aggregation-layers"; +import type { CompositeLayerProps, DefaultProps, Layer, LayersList, - assert, } from "@deck.gl/core"; -import { HeatmapLayer } from "@deck.gl/aggregation-layers"; -import type { HeatmapLayerProps } from "@deck.gl/aggregation-layers"; -import * as arrow from "apache-arrow"; +import { assert, CompositeLayer } from "@deck.gl/core"; import * as ga from "@geoarrow/geoarrow-js"; +import type * as arrow from "apache-arrow"; +import { EXTENSION_NAME } from "../constants"; +import type { FloatAccessor } from "../types"; import { assignAccessor, convertStructToFixedSizeList, @@ -21,8 +22,6 @@ import { getGeometryData, isGeomSeparate, } from "../utils/utils"; -import { FloatAccessor } from "../types"; -import { EXTENSION_NAME } from "../constants"; import { validateAccessors } from "../utils/validate"; /** All properties supported by GeoArrowHeatmapLayer */ @@ -77,12 +76,12 @@ const defaultProps: DefaultProps = { }; export class GeoArrowHeatmapLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowHeatmapLayer"; - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { const { data: batch } = this.props; if (this.props.getPosition !== undefined) { @@ -104,7 +103,7 @@ export class GeoArrowHeatmapLayer< _renderPointLayer( geometryData: ga.data.PointData, - ): Layer<{}> | LayersList | null { + ): Layer | LayersList | null { const { data: batch } = this.props; if (this.props._validate) { diff --git a/packages/deck.gl-layers/src/layers/path-layer.ts b/packages/deck.gl-layers/src/layers/path-layer.ts index 8972937..71b07a7 100644 --- a/packages/deck.gl-layers/src/layers/path-layer.ts +++ b/packages/deck.gl-layers/src/layers/path-layer.ts @@ -2,19 +2,26 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, - assert, } from "@deck.gl/core"; -import { PathLayer } from "@deck.gl/layers"; +import { assert, CompositeLayer } from "@deck.gl/core"; import type { PathLayerProps } from "@deck.gl/layers"; -import * as arrow from "apache-arrow"; +import { PathLayer } from "@deck.gl/layers"; import * as ga from "@geoarrow/geoarrow-js"; +import type * as arrow from "apache-arrow"; +import { EXTENSION_NAME } from "../constants"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, extractAccessorsFromProps, @@ -24,9 +31,6 @@ import { invertOffsets, isGeomSeparate, } from "../utils/utils"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; -import { EXTENSION_NAME } from "../constants"; import { validateAccessors } from "../utils/validate"; /** All properties supported by GeoArrowPathLayer */ @@ -90,7 +94,7 @@ export const defaultProps: DefaultProps = { * Render lists of coordinate points as extruded polylines with mitering. */ export class GeoArrowPathLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowPathLayer"; @@ -103,7 +107,7 @@ export class GeoArrowPathLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { const { data: batch } = this.props; if (this.props.getPath !== undefined) { @@ -148,7 +152,7 @@ export class GeoArrowPathLayer< _renderLineStringLayer( lineStringData: ga.data.LineStringData, - ): Layer<{}> | LayersList | null { + ): Layer | LayersList | null { const { data: batch } = this.props; // TODO: validate that if nested, accessor props have the same nesting @@ -204,7 +208,7 @@ export class GeoArrowPathLayer< _renderMultiLineStringLayer( multiLineStringData: ga.data.MultiLineStringData, - ): Layer<{}> | LayersList | null { + ): Layer | LayersList | null { const { data: batch } = this.props; // TODO: validate that if nested, accessor props have the same nesting diff --git a/packages/deck.gl-layers/src/layers/point-cloud-layer.ts b/packages/deck.gl-layers/src/layers/point-cloud-layer.ts index f7d5960..ca4e25c 100644 --- a/packages/deck.gl-layers/src/layers/point-cloud-layer.ts +++ b/packages/deck.gl-layers/src/layers/point-cloud-layer.ts @@ -2,19 +2,26 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, - assert, } from "@deck.gl/core"; -import { PointCloudLayer } from "@deck.gl/layers"; +import { assert, CompositeLayer } from "@deck.gl/core"; import type { PointCloudLayerProps } from "@deck.gl/layers"; -import * as arrow from "apache-arrow"; +import { PointCloudLayer } from "@deck.gl/layers"; import * as ga from "@geoarrow/geoarrow-js"; +import type * as arrow from "apache-arrow"; +import { EXTENSION_NAME } from "../constants"; +import type { + ColorAccessor, + GeoArrowPickingInfo, + NormalAccessor, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, convertStructToFixedSizeList, @@ -22,9 +29,6 @@ import { getGeometryData, isGeomSeparate, } from "../utils/utils"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; -import { ColorAccessor, GeoArrowPickingInfo, NormalAccessor } from "../types"; -import { EXTENSION_NAME } from "../constants"; import { validateAccessors } from "../utils/validate"; /* All properties supported by GeoArrowPointCloudLayer */ @@ -85,7 +89,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowPointCloudLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowPointCloudLayer"; @@ -98,7 +102,7 @@ export class GeoArrowPointCloudLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { const { data: batch } = this.props; if (this.props.getPosition !== undefined) { @@ -120,7 +124,7 @@ export class GeoArrowPointCloudLayer< _renderPointLayer( geometryData: ga.data.PointData, - ): Layer<{}> | LayersList | null { + ): Layer | LayersList | null { const { data: batch } = this.props; if (this.props._validate) { diff --git a/packages/deck.gl-layers/src/layers/polygon-layer.ts b/packages/deck.gl-layers/src/layers/polygon-layer.ts index 0735b36..a8eba29 100644 --- a/packages/deck.gl-layers/src/layers/polygon-layer.ts +++ b/packages/deck.gl-layers/src/layers/polygon-layer.ts @@ -2,23 +2,26 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, - assert, } from "@deck.gl/core"; +import { assert, CompositeLayer } from "@deck.gl/core"; import type { PolygonLayerProps } from "@deck.gl/layers"; import { PolygonLayer } from "@deck.gl/layers"; import * as ga from "@geoarrow/geoarrow-js"; import * as arrow from "apache-arrow"; import type { FunctionThread, Pool } from "threads"; import { EXTENSION_NAME } from "../constants"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; -import { GeoArrowExtraPickingProps } from "../utils/picking"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; import { getGeometryData } from "../utils/utils"; import { GeoArrowPathLayer } from "./path-layer"; import { GeoArrowSolidPolygonLayer } from "./solid-polygon-layer"; @@ -200,7 +203,6 @@ const defaultProps: DefaultProps = { }; const defaultLineColor: [number, number, number, number] = [0, 0, 0, 255]; -const defaultFillColor: [number, number, number, number] = [0, 0, 0, 255]; /** The `GeoArrowPolygonLayer` renders filled, stroked and/or extruded polygons. * @@ -208,7 +210,7 @@ const defaultFillColor: [number, number, number, number] = [0, 0, 0, 255]; * GeoArrowSolidPolygonLayer and the GeoArrowPathLayer. */ export class GeoArrowPolygonLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer & ExtraProps> { static defaultProps = defaultProps; static layerName = "GeoArrowPolygonLayer"; @@ -222,7 +224,7 @@ export class GeoArrowPolygonLayer< return params.info; } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { const { data: batch } = this.props; if (this.props.getPolygon !== undefined) { @@ -264,7 +266,7 @@ export class GeoArrowPolygonLayer< // support multi-* and single- geometries. _renderLayers( geometryColumn: ga.data.PolygonData | ga.data.MultiPolygonData, - ): Layer<{}> | LayersList | null { + ): Layer | LayersList | null { const { data: batch } = this.props; let getPath: ga.data.MultiLineStringData; diff --git a/packages/deck.gl-layers/src/layers/s2-layer.ts b/packages/deck.gl-layers/src/layers/s2-layer.ts index 5f93264..8a143fe 100644 --- a/packages/deck.gl-layers/src/layers/s2-layer.ts +++ b/packages/deck.gl-layers/src/layers/s2-layer.ts @@ -1,18 +1,23 @@ -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, } from "@deck.gl/core"; +import { CompositeLayer } from "@deck.gl/core"; import type { S2LayerProps } from "@deck.gl/geo-layers"; import { S2Layer } from "@deck.gl/geo-layers"; import * as arrow from "apache-arrow"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, extractAccessorsFromProps } from "../utils/utils"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; import { validateAccessors } from "../utils/validate"; /** All properties supported by GeoArrowS2Layer */ @@ -89,9 +94,9 @@ const defaultProps: DefaultProps = { ...ourDefaultProps, }; -export class GeoArrowS2Layer extends CompositeLayer< - GeoArrowS2LayerProps & ExtraProps -> { +export class GeoArrowS2Layer< + ExtraProps extends object = Record, +> extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowS2Layer"; @@ -103,11 +108,11 @@ export class GeoArrowS2Layer extends CompositeLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { return this._renderLayer(); } - _renderLayer(): Layer<{}> | LayersList | null { + _renderLayer(): Layer | LayersList | null { const { data: batch, getS2Token } = this.props; if (this.props._validate) { diff --git a/packages/deck.gl-layers/src/layers/scatterplot-layer.ts b/packages/deck.gl-layers/src/layers/scatterplot-layer.ts index 7ff7523..6eeedd2 100644 --- a/packages/deck.gl-layers/src/layers/scatterplot-layer.ts +++ b/packages/deck.gl-layers/src/layers/scatterplot-layer.ts @@ -2,19 +2,26 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, - assert, } from "@deck.gl/core"; -import { ScatterplotLayer } from "@deck.gl/layers"; +import { assert, CompositeLayer } from "@deck.gl/core"; import type { ScatterplotLayerProps } from "@deck.gl/layers"; -import * as arrow from "apache-arrow"; +import { ScatterplotLayer } from "@deck.gl/layers"; import * as ga from "@geoarrow/geoarrow-js"; +import type * as arrow from "apache-arrow"; +import { EXTENSION_NAME } from "../constants"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, convertStructToFixedSizeList, @@ -23,9 +30,6 @@ import { invertOffsets, isGeomSeparate, } from "../utils/utils"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; -import { EXTENSION_NAME } from "../constants"; import { validateAccessors } from "../utils/validate"; /** All properties supported by GeoArrowScatterplotLayer */ @@ -97,7 +101,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowScatterplotLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowScatterplotLayer"; @@ -110,7 +114,7 @@ export class GeoArrowScatterplotLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { const { data: batch } = this.props; if (this.props.getPosition !== undefined) { @@ -196,7 +200,7 @@ export class GeoArrowScatterplotLayer< _renderMultiPointLayer( multiPointData: ga.data.MultiPointData, - ): Layer<{}> | null { + ): Layer | null { const { data: batch } = this.props; // TODO: validate that if nested, accessor props have the same nesting diff --git a/packages/deck.gl-layers/src/layers/solid-polygon-layer.ts b/packages/deck.gl-layers/src/layers/solid-polygon-layer.ts index dd0dd19..dc4600e 100644 --- a/packages/deck.gl-layers/src/layers/solid-polygon-layer.ts +++ b/packages/deck.gl-layers/src/layers/solid-polygon-layer.ts @@ -2,21 +2,31 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, - Layer, - LayersList, GetPickingInfoParams, - assert, + Layer, LayerContext, + LayersList, UpdateParameters, } from "@deck.gl/core"; -import { SolidPolygonLayer } from "@deck.gl/layers"; +import { assert, CompositeLayer } from "@deck.gl/core"; import type { SolidPolygonLayerProps } from "@deck.gl/layers"; -import * as arrow from "apache-arrow"; +import { SolidPolygonLayer } from "@deck.gl/layers"; import * as ga from "@geoarrow/geoarrow-js"; +import type * as arrow from "apache-arrow"; +import type { FunctionThread } from "threads"; +import { BlobWorker, Pool, spawn, Transfer } from "threads"; +import type { PoolOptions } from "threads/dist/master/pool"; +import { EXTENSION_NAME } from "../constants"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, extractAccessorsFromProps, @@ -27,13 +37,7 @@ import { invertOffsets, isGeomSeparate, } from "../utils/utils"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; -import { EXTENSION_NAME } from "../constants"; import { validateAccessors } from "../utils/validate"; -import { spawn, Transfer, BlobWorker, Pool } from "threads"; -import type { FunctionThread } from "threads"; -import type { PoolOptions } from "threads/dist/master/pool"; /** A helper function to initialize a worker threadpool for earcut */ export async function initEarcutPool( @@ -67,7 +71,7 @@ export async function initEarcutPool( () => spawn(BlobWorker.fromText(earcutWorkerText)), optionsOrSize || 8, ); - } catch (err) { + } catch (_err) { return null; } } @@ -185,7 +189,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowSolidPolygonLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowSolidPolygonLayer"; @@ -240,12 +244,12 @@ export class GeoArrowSolidPolygonLayer< ); this.state.earcutWorkerPool = pool; return this.state.earcutWorkerPool; - } catch (err) { + } catch (_err) { return null; } } - async finalizeState(context: LayerContext): Promise { + async finalizeState(_context: LayerContext): Promise { await this.state?.earcutWorkerPool?.terminate(); console.log("terminated"); } @@ -397,7 +401,7 @@ export class GeoArrowSolidPolygonLayer< return ga.algorithm.earcut(polygonData); } - updateState({ props, changeFlags }: UpdateParameters): void { + updateState({ changeFlags }: UpdateParameters): void { if (changeFlags.dataChanged) { this.updateData(); } @@ -411,7 +415,7 @@ export class GeoArrowSolidPolygonLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { const { batch } = this.state; if (!batch) return null; @@ -457,7 +461,7 @@ export class GeoArrowSolidPolygonLayer< _renderPolygonLayer( polygonData: ga.data.PolygonData, - ): Layer<{}> | LayersList | null { + ): Layer | LayersList | null { const { batch } = this.state; if (!batch) return null; @@ -525,7 +529,7 @@ export class GeoArrowSolidPolygonLayer< _renderMultiPolygonLayer( multiPolygonData: ga.data.MultiPolygonData, - ): Layer<{}> | LayersList | null { + ): Layer | LayersList | null { const { batch } = this.state; if (!batch) return null; @@ -622,7 +626,7 @@ export class GeoArrowSolidPolygonLayer< } } -function encodePickingColors( +function _encodePickingColors( geomToCoordOffsets: Int32Array, encodePickingColor: (id: number, result: number[]) => void, ): Uint8ClampedArray { diff --git a/packages/deck.gl-layers/src/layers/text-layer.ts b/packages/deck.gl-layers/src/layers/text-layer.ts index 9b6b3bf..5afcca2 100644 --- a/packages/deck.gl-layers/src/layers/text-layer.ts +++ b/packages/deck.gl-layers/src/layers/text-layer.ts @@ -2,19 +2,26 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, GetPickingInfoParams, Layer, LayersList, - assert, } from "@deck.gl/core"; -import { TextLayer } from "@deck.gl/layers"; +import { assert, CompositeLayer } from "@deck.gl/core"; import type { TextLayerProps } from "@deck.gl/layers"; -import * as arrow from "apache-arrow"; +import { TextLayer } from "@deck.gl/layers"; import * as ga from "@geoarrow/geoarrow-js"; +import type * as arrow from "apache-arrow"; +import { EXTENSION_NAME } from "../constants"; +import type { + ColorAccessor, + FloatAccessor, + GeoArrowPickingInfo, +} from "../types"; +import type { GeoArrowExtraPickingProps } from "../utils/picking"; +import { getPickingInfo } from "../utils/picking"; import { assignAccessor, convertStructToFixedSizeList, @@ -23,9 +30,6 @@ import { getGeometryData, isGeomSeparate, } from "../utils/utils"; -import { GeoArrowExtraPickingProps, getPickingInfo } from "../utils/picking"; -import { ColorAccessor, FloatAccessor, GeoArrowPickingInfo } from "../types"; -import { EXTENSION_NAME } from "../constants"; import { validateAccessors } from "../utils/validate"; /** All properties supported by GeoArrowTextLayer */ @@ -144,7 +148,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowTextLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowTextLayer"; @@ -157,7 +161,7 @@ export class GeoArrowTextLayer< return getPickingInfo(params, this.props.data); } - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { const { data: batch } = this.props; if (this.props.getPosition !== undefined) { @@ -180,7 +184,7 @@ export class GeoArrowTextLayer< _renderTextLayer( geometryData: ga.data.PointData, textData: arrow.Data, - ): Layer<{}> | LayersList | null { + ): Layer | LayersList | null { const { data: batch } = this.props; if (this.props._validate) { diff --git a/packages/deck.gl-layers/src/layers/trips-layer.ts b/packages/deck.gl-layers/src/layers/trips-layer.ts index 3606fd8..e4a0d42 100644 --- a/packages/deck.gl-layers/src/layers/trips-layer.ts +++ b/packages/deck.gl-layers/src/layers/trips-layer.ts @@ -2,17 +2,19 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import { - CompositeLayer, +import type { CompositeLayerProps, DefaultProps, Layer, LayersList, - assert, } from "@deck.gl/core"; -import { TripsLayer, TripsLayerProps } from "@deck.gl/geo-layers"; -import * as arrow from "apache-arrow"; +import { assert, CompositeLayer } from "@deck.gl/core"; +import type { TripsLayerProps } from "@deck.gl/geo-layers"; +import { TripsLayer } from "@deck.gl/geo-layers"; import * as ga from "@geoarrow/geoarrow-js"; +import type * as arrow from "apache-arrow"; +import { EXTENSION_NAME } from "../constants"; +import type { ColorAccessor, FloatAccessor, TimestampAccessor } from "../types"; import { assignAccessor, extractAccessorsFromProps, @@ -20,10 +22,8 @@ import { getInterleavedLineString, isGeomSeparate, } from "../utils/utils"; -import { TimestampAccessor, ColorAccessor, FloatAccessor } from "../types"; -import { defaultProps as pathLayerDefaultProps } from "./path-layer"; import { validateAccessors } from "../utils/validate"; -import { EXTENSION_NAME } from "../constants"; +import { defaultProps as pathLayerDefaultProps } from "./path-layer"; /** All properties supported by GeoArrowTripsLayer */ export type GeoArrowTripsLayerProps = Omit< @@ -89,12 +89,12 @@ const defaultProps: DefaultProps = { /** Render animated paths that represent vehicle trips. */ export class GeoArrowTripsLayer< - ExtraProps extends {} = {}, + ExtraProps extends object = Record, > extends CompositeLayer { static defaultProps = defaultProps; static layerName = "GeoArrowTripsLayer"; - renderLayers(): Layer<{}> | LayersList | null { + renderLayers(): Layer | LayersList | null { const { data: batch, getTimestamps } = this.props; if (this.props.getPath !== undefined) { @@ -120,7 +120,7 @@ export class GeoArrowTripsLayer< _renderLineStringLayer( lineStringData: ga.data.LineStringData, timestampData: TimestampAccessor, - ): Layer<{}> | LayersList | null { + ): Layer | LayersList | null { const { data: batch } = this.props; if (this.props._validate) { diff --git a/packages/deck.gl-layers/src/types.ts b/packages/deck.gl-layers/src/types.ts index b8006ee..2a0ea10 100644 --- a/packages/deck.gl-layers/src/types.ts +++ b/packages/deck.gl-layers/src/types.ts @@ -3,8 +3,8 @@ // Copyright (c) vis.gl contributors import type { BinaryAttribute, Color, PickingInfo } from "@deck.gl/core"; -import { TypedArray } from "@deck.gl/core/dist/types/types"; -import * as arrow from "apache-arrow"; +import type { TypedArray } from "@deck.gl/core/dist/types/types"; +import type * as arrow from "apache-arrow"; import type { Data } from "apache-arrow"; /** diff --git a/packages/deck.gl-layers/src/utils/picking.ts b/packages/deck.gl-layers/src/utils/picking.ts index d0eb752..0a3b852 100644 --- a/packages/deck.gl-layers/src/utils/picking.ts +++ b/packages/deck.gl-layers/src/utils/picking.ts @@ -2,9 +2,9 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import type { RecordBatch, Data, DataType } from "apache-arrow"; -import { GetPickingInfoParams } from "@deck.gl/core"; -import { GeoArrowPickingInfo } from "../types"; +import type { GetPickingInfoParams } from "@deck.gl/core"; +import type { RecordBatch } from "apache-arrow"; +import type { GeoArrowPickingInfo } from "../types"; export interface GeoArrowExtraPickingProps { data: { diff --git a/packages/deck.gl-layers/src/utils/utils.ts b/packages/deck.gl-layers/src/utils/utils.ts index 38b5d7d..c1ccaee 100644 --- a/packages/deck.gl-layers/src/utils/utils.ts +++ b/packages/deck.gl-layers/src/utils/utils.ts @@ -3,12 +3,12 @@ // Copyright (c) vis.gl contributors import { assert } from "@deck.gl/core"; -import * as arrow from "apache-arrow"; import * as ga from "@geoarrow/geoarrow-js"; -import { +import * as arrow from "apache-arrow"; +import type { + _InternalAccessorContext, AccessorContext, AccessorFunction, - _InternalAccessorContext, } from "../types"; export type TypedArray = @@ -363,7 +363,7 @@ export function getGeometryData( // throw new Error(`No column found with extension type ${geoarrowTypeName}`); } - let vector = batch.getChildAt(geometryColumnIdx); + const vector = batch.getChildAt(geometryColumnIdx); assert(vector?.data.length === 1); return vector.data[0]; } @@ -438,9 +438,9 @@ export function invertOffsets( const largestOffset = offsets[offsets.length - 1]; const arrayConstructor = - offsets.length < Math.pow(2, 8) + offsets.length < 2 ** 8 ? Uint8Array - : offsets.length < Math.pow(2, 16) + : offsets.length < 2 ** 16 ? Uint16Array : Uint32Array; diff --git a/packages/deck.gl-layers/src/utils/validate.ts b/packages/deck.gl-layers/src/utils/validate.ts index 6e67f5b..0c89971 100644 --- a/packages/deck.gl-layers/src/utils/validate.ts +++ b/packages/deck.gl-layers/src/utils/validate.ts @@ -61,7 +61,5 @@ export function validateColorVector(vector: arrow.Data) { assert(arrow.DataType.isInt(vector.type.children[0])); // Assert the child type is a Uint8 - // @ts-ignore - // Property 'type' does not exist on type 'Int_'. Did you mean 'TType'? assert(vector.type.children[0].type.bitWidth === 8); } diff --git a/packages/deck.gl-layers/tests/utils.test.ts b/packages/deck.gl-layers/tests/utils.test.ts index 77079a0..15d53dd 100644 --- a/packages/deck.gl-layers/tests/utils.test.ts +++ b/packages/deck.gl-layers/tests/utils.test.ts @@ -1,8 +1,8 @@ -import { describe, it, expect } from "vitest"; +import { describe, expect, it } from "vitest"; import { expandArrayToCoords } from "../src/utils/utils.js"; import { arraysEqual } from "./utils.js"; -describe("linestring vertex expansion", (t) => { +describe("linestring vertex expansion", () => { it("expands correctly (size = 1)", () => { const input = new Uint8Array([1, 2, 3, 4]); const size = 1; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f656c35..b34dbed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: devDependencies: + '@biomejs/biome': + specifier: ^2.4.11 + version: 2.4.12 '@rollup/plugin-commonjs': specifier: ^25.0.7 version: 25.0.8(rollup@3.30.0) @@ -23,9 +26,6 @@ importers: gh-pages: specifier: ^6.1.0 version: 6.3.0 - prettier: - specifier: ^3.1.0 - version: 3.8.3 rimraf: specifier: ^5.0.5 version: 5.0.10 @@ -398,6 +398,59 @@ packages: resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} + '@biomejs/biome@2.4.12': + resolution: {integrity: sha512-Rro7adQl3NLq/zJCIL98eElXKI8eEiBtoeu5TbXF/U3qbjuSc7Jb5rjUbeHHcquDWeSf3HnGP7XI5qGrlRk/pA==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@2.4.12': + resolution: {integrity: sha512-BnMU4Pc3ciEVteVpZ0BK33MLr7X57F5w1dwDLDn+/iy/yTrA4Q/N2yftidFtsA4vrDh0FMXDpacNV/Tl3fbmng==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@2.4.12': + resolution: {integrity: sha512-x9uJ0bI1rJsWICp3VH8w/5PnAVD3A7SqzDpbrfoUQX1QyWrK5jSU4fRLo/wSgGeplCivbxBRKmt5Xq4/nWvq8A==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@2.4.12': + resolution: {integrity: sha512-FhfpkAAlKL6kwvcVap0Hgp4AhZmtd3YImg0kK1jd7C/aSoh4SfsB2f++yG1rU0lr8Y5MCFJrcSkmssiL9Xnnig==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@2.4.12': + resolution: {integrity: sha512-tOwuCuZZtKi1jVzbk/5nXmIsziOB6yqN8c9r9QM0EJYPU6DpQWf11uBOSCfFKKM4H3d9ZoarvlgMfbcuD051Pw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@2.4.12': + resolution: {integrity: sha512-dwTIgZrGutzhkQCuvHynCkyW6hJxUuyZqKKO0YNfaS2GUoRO+tOvxXZqZB6SkWAOdfZTzwaw8IEdUnIkHKHoew==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@2.4.12': + resolution: {integrity: sha512-8pFeAnLU9QdW9jCIslB/v82bI0lhBmz2ZAKc8pVMFPO0t0wAHsoEkrUQUbMkIorTRIjbqyNZHA3lEXavsPWYSw==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@2.4.12': + resolution: {integrity: sha512-B0DLnx0vA9ya/3v7XyCaP+/lCpnbWbMOfUFFve+xb5OxyYvdHaS55YsSddr228Y+JAFk58agCuZTsqNiw2a6ig==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@2.4.12': + resolution: {integrity: sha512-yMckRzTyZ83hkk8iDFWswqSdU8tvZxspJKnYNh7JZr/zhZNOlzH13k4ecboU6MurKExCe2HUkH75pGI/O2JwGA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + '@carto/api-client@0.5.26': resolution: {integrity: sha512-dMIfVubI+4VrylazzrJQOEza+YvWEoK7fAiyqLLB3Je7yljFvklSxGA3c5LaYD3XiHhZ7PrdM3SQH84SUNrW2A==} @@ -2817,6 +2870,41 @@ snapshots: '@babel/runtime@7.29.2': {} + '@biomejs/biome@2.4.12': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 2.4.12 + '@biomejs/cli-darwin-x64': 2.4.12 + '@biomejs/cli-linux-arm64': 2.4.12 + '@biomejs/cli-linux-arm64-musl': 2.4.12 + '@biomejs/cli-linux-x64': 2.4.12 + '@biomejs/cli-linux-x64-musl': 2.4.12 + '@biomejs/cli-win32-arm64': 2.4.12 + '@biomejs/cli-win32-x64': 2.4.12 + + '@biomejs/cli-darwin-arm64@2.4.12': + optional: true + + '@biomejs/cli-darwin-x64@2.4.12': + optional: true + + '@biomejs/cli-linux-arm64-musl@2.4.12': + optional: true + + '@biomejs/cli-linux-arm64@2.4.12': + optional: true + + '@biomejs/cli-linux-x64-musl@2.4.12': + optional: true + + '@biomejs/cli-linux-x64@2.4.12': + optional: true + + '@biomejs/cli-win32-arm64@2.4.12': + optional: true + + '@biomejs/cli-win32-x64@2.4.12': + optional: true + '@carto/api-client@0.5.26': dependencies: '@loaders.gl/schema': 4.4.1