diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..90de04a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,48 @@ +name: CI + +on: + push: + branches: + - 'main' + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + + +jobs: + lint-and-test: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up Volta + uses: volta-cli/action@v4 + + - name: Get npm cache directory + id: npm-cache-dir + shell: bash + run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT} + + - uses: actions/cache@v3 + id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' + with: + path: ${{ steps.npm-cache-dir.outputs.dir }} + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Install + run: npm install + + - name: Prettier check + run: npm run fmt:check + + - name: Type check + run: npm run typecheck + + - name: Test + run: npm run test diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..48eba03 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,5 @@ +{ + "tabWidth": 2, + "semi": true, + "trailingComma": "all" +} diff --git a/package-lock.json b/package-lock.json index f9cdcb4..5617129 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ "@rollup/plugin-terser": "^0.4.3", "@rollup/plugin-typescript": "^11.1.2", "apache-arrow": "^13.0.0", + "prettier": "^3.1.0", "rimraf": "^5.0.5", "rollup": "^3.26.2", "rollup-plugin-dts": "^5.3.0", @@ -1051,6 +1052,14 @@ "@probe.gl/log": "^4.0.1" } }, + "node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils": { + "version": "3.4.14", + "resolved": "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.4.14.tgz", + "integrity": "sha512-PUSwxoAYbskisXd0KfYEQ902b0igBA2UAWdP6PzPvY+tJmobfh74dTNwrrBQ1rGXQxxmGx6zc6/ksX6mlIzIrg==", + "dependencies": { + "@babel/runtime": "^7.3.1" + } + }, "node_modules/@loaders.gl/core/node_modules/@probe.gl/env": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-4.0.4.tgz", @@ -1080,6 +1089,14 @@ "draco3d": "1.5.5" } }, + "node_modules/@loaders.gl/draco/node_modules/@loaders.gl/worker-utils": { + "version": "3.4.14", + "resolved": "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.4.14.tgz", + "integrity": "sha512-PUSwxoAYbskisXd0KfYEQ902b0igBA2UAWdP6PzPvY+tJmobfh74dTNwrrBQ1rGXQxxmGx6zc6/ksX6mlIzIrg==", + "dependencies": { + "@babel/runtime": "^7.3.1" + } + }, "node_modules/@loaders.gl/gis": { "version": "3.4.14", "resolved": "https://registry.npmjs.org/@loaders.gl/gis/-/gis-3.4.14.tgz", @@ -1122,6 +1139,14 @@ "@probe.gl/stats": "^4.0.1" } }, + "node_modules/@loaders.gl/loader-utils/node_modules/@loaders.gl/worker-utils": { + "version": "3.4.14", + "resolved": "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.4.14.tgz", + "integrity": "sha512-PUSwxoAYbskisXd0KfYEQ902b0igBA2UAWdP6PzPvY+tJmobfh74dTNwrrBQ1rGXQxxmGx6zc6/ksX6mlIzIrg==", + "dependencies": { + "@babel/runtime": "^7.3.1" + } + }, "node_modules/@loaders.gl/loader-utils/node_modules/@probe.gl/stats": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-4.0.4.tgz", @@ -1185,6 +1210,14 @@ "texture-compressor": "^1.0.2" } }, + "node_modules/@loaders.gl/textures/node_modules/@loaders.gl/worker-utils": { + "version": "3.4.14", + "resolved": "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.4.14.tgz", + "integrity": "sha512-PUSwxoAYbskisXd0KfYEQ902b0igBA2UAWdP6PzPvY+tJmobfh74dTNwrrBQ1rGXQxxmGx6zc6/ksX6mlIzIrg==", + "dependencies": { + "@babel/runtime": "^7.3.1" + } + }, "node_modules/@loaders.gl/tiles": { "version": "3.4.14", "resolved": "https://registry.npmjs.org/@loaders.gl/tiles/-/tiles-3.4.14.tgz", @@ -1225,14 +1258,6 @@ "lerc": "^4.0.1" } }, - "node_modules/@loaders.gl/worker-utils": { - "version": "3.4.14", - "resolved": "https://registry.npmjs.org/@loaders.gl/worker-utils/-/worker-utils-3.4.14.tgz", - "integrity": "sha512-PUSwxoAYbskisXd0KfYEQ902b0igBA2UAWdP6PzPvY+tJmobfh74dTNwrrBQ1rGXQxxmGx6zc6/ksX6mlIzIrg==", - "dependencies": { - "@babel/runtime": "^7.3.1" - } - }, "node_modules/@loaders.gl/xml": { "version": "3.4.14", "resolved": "https://registry.npmjs.org/@loaders.gl/xml/-/xml-3.4.14.tgz", @@ -3056,6 +3081,21 @@ "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==" }, + "node_modules/prettier": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", + "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", diff --git a/package.json b/package.json index 1d3182c..9143099 100644 --- a/package.json +++ b/package.json @@ -22,13 +22,16 @@ "default": "./dist/dist.es.mjs" }, "scripts": { - "build": "npm run build:tsc && npm run build:rollup", - "build:tsc": "tsc", "build:rollup": "rollup -c rollup.config.js", + "build:tsc": "tsc", + "build": "npm run build:tsc && npm run build:rollup", "clean": "rimraf dist", - "watch": "tsc --watch", + "fmt:check": "prettier './src/**/*.ts' --check", + "fmt": "prettier './src/**/*.ts' --write", + "prepublishOnly": "npm run clean && npm run build", "test": "vitest run", - "prepublishOnly": "npm run clean && npm run build" + "typecheck": "tsc --build", + "watch": "tsc --watch" }, "files": [ "dist/", @@ -54,6 +57,7 @@ "@rollup/plugin-terser": "^0.4.3", "@rollup/plugin-typescript": "^11.1.2", "apache-arrow": "^13.0.0", + "prettier": "^3.1.0", "rimraf": "^5.0.5", "rollup": "^3.26.2", "rollup-plugin-dts": "^5.3.0", diff --git a/src/arc-layer.ts b/src/arc-layer.ts index 0097cd6..87d1611 100644 --- a/src/arc-layer.ts +++ b/src/arc-layer.ts @@ -108,7 +108,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowArcLayer< - ExtraProps extends {} = {} + ExtraProps extends {} = {}, > extends CompositeLayer & ExtraProps> { static defaultProps = defaultProps; static layerName = "GeoArrowArcLayer"; diff --git a/src/column-layer.ts b/src/column-layer.ts index 6e60678..1259911 100644 --- a/src/column-layer.ts +++ b/src/column-layer.ts @@ -104,7 +104,7 @@ const defaultProps: DefaultProps = { * coordinates. */ export class GeoArrowColumnLayer< - ExtraProps extends {} = {} + ExtraProps extends {} = {}, > extends CompositeLayer & ExtraProps> { static defaultProps = defaultProps; static layerName = "GeoArrowColumnLayer"; @@ -130,7 +130,7 @@ export class GeoArrowColumnLayer< } _renderLayersPoint( - geometryColumn: PointVector + geometryColumn: PointVector, ): Layer<{}> | LayersList | null { const { data: table } = this.props; diff --git a/src/earcut.ts b/src/earcut.ts index e4674e4..c117343 100644 --- a/src/earcut.ts +++ b/src/earcut.ts @@ -40,7 +40,7 @@ function earcutSinglePolygon(data: PolygonData, geomIndex: number): number[] { const slicedFlatCoords = flatCoords.values.subarray( coordsBegin * dim, - coordsEnd * dim + coordsEnd * dim, ); const initialCoordIndex = ringOffsets[ringBegin]; diff --git a/src/h3-hexagon-layer.ts b/src/h3-hexagon-layer.ts index 78c4d74..2bf2993 100644 --- a/src/h3-hexagon-layer.ts +++ b/src/h3-hexagon-layer.ts @@ -56,7 +56,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowH3HexagonLayer< - ExtraProps extends {} = {} + ExtraProps extends {} = {}, > extends CompositeLayer & ExtraProps> { static defaultProps = defaultProps; static layerName = "GeoArrowH3HexagonLayer"; diff --git a/src/heatmap-layer.ts b/src/heatmap-layer.ts index c9d99a2..f53c8f0 100644 --- a/src/heatmap-layer.ts +++ b/src/heatmap-layer.ts @@ -70,7 +70,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowHeatmapLayer< - ExtraProps extends {} = {} + ExtraProps extends {} = {}, > extends CompositeLayer & ExtraProps> { static defaultProps = defaultProps; static layerName = "GeoArrowHeatmapLayer"; @@ -92,7 +92,7 @@ export class GeoArrowHeatmapLayer< } _renderLayersPoint( - geometryColumn: PointVector + geometryColumn: PointVector, ): Layer<{}> | LayersList | null { const { data: table } = this.props; diff --git a/src/path-layer.ts b/src/path-layer.ts index dec3673..352f359 100644 --- a/src/path-layer.ts +++ b/src/path-layer.ts @@ -98,7 +98,7 @@ const defaultProps: DefaultProps = { * Render lists of coordinate points as extruded polylines with mitering. */ export class GeoArrowPathLayer< - ExtraProps extends {} = {} + ExtraProps extends {} = {}, > extends CompositeLayer & ExtraProps> { static defaultProps = defaultProps; static layerName = "GeoArrowPathLayer"; @@ -112,7 +112,7 @@ export class GeoArrowPathLayer< const lineStringVector = getGeometryVector( table, - EXTENSION_NAME.LINESTRING + EXTENSION_NAME.LINESTRING, ); if (lineStringVector !== null) { return this._renderLayersLineString(lineStringVector); @@ -120,7 +120,7 @@ export class GeoArrowPathLayer< const multiLineStringVector = getGeometryVector( table, - EXTENSION_NAME.MULTILINESTRING + EXTENSION_NAME.MULTILINESTRING, ); if (multiLineStringVector !== null) { return this._renderLayersMultiLineString(multiLineStringVector); @@ -139,7 +139,7 @@ export class GeoArrowPathLayer< } _renderLayersLineString( - geometryColumn: LineStringVector + geometryColumn: LineStringVector, ): Layer<{}> | LayersList | null { const { data: table } = this.props; @@ -206,7 +206,7 @@ export class GeoArrowPathLayer< } _renderLayersMultiLineString( - geometryColumn: MultiLineStringVector + geometryColumn: MultiLineStringVector, ): Layer<{}> | LayersList | null { const { data: table } = this.props; diff --git a/src/picking.ts b/src/picking.ts index 53a9a9d..3df6565 100644 --- a/src/picking.ts +++ b/src/picking.ts @@ -4,7 +4,7 @@ import { GeoArrowPickingInfo } from "./types"; export function getPickingInfo( { info, sourceLayer }: GetPickingInfoParams, - table: arrow.Table + table: arrow.Table, ): GeoArrowPickingInfo { // Geometry index as rendered let index = info.index; diff --git a/src/scatterplot-layer.ts b/src/scatterplot-layer.ts index d137c3b..bc7f463 100644 --- a/src/scatterplot-layer.ts +++ b/src/scatterplot-layer.ts @@ -97,7 +97,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowScatterplotLayer< - ExtraProps extends {} = {} + ExtraProps extends {} = {}, > extends CompositeLayer & ExtraProps> { static defaultProps = defaultProps; static layerName = "GeoArrowScatterplotLayer"; @@ -116,7 +116,7 @@ export class GeoArrowScatterplotLayer< const multiPointVector = getGeometryVector( table, - EXTENSION_NAME.MULTIPOINT + EXTENSION_NAME.MULTIPOINT, ); if (multiPointVector !== null) { return this._renderLayersMultiPoint(multiPointVector); @@ -135,7 +135,7 @@ export class GeoArrowScatterplotLayer< } _renderLayersPoint( - geometryColumn: PointVector + geometryColumn: PointVector, ): Layer<{}> | LayersList | null { const { data: table } = this.props; @@ -197,7 +197,7 @@ export class GeoArrowScatterplotLayer< } _renderLayersMultiPoint( - geometryColumn: MultiPointVector + geometryColumn: MultiPointVector, ): Layer<{}> | LayersList | null { const { data: table } = this.props; diff --git a/src/solid-polygon-layer.ts b/src/solid-polygon-layer.ts index 0eb640d..e7ca41b 100644 --- a/src/solid-polygon-layer.ts +++ b/src/solid-polygon-layer.ts @@ -101,7 +101,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowSolidPolygonLayer< - ExtraProps extends {} = {} + ExtraProps extends {} = {}, > extends CompositeLayer< Required & ExtraProps > { @@ -122,7 +122,7 @@ export class GeoArrowSolidPolygonLayer< const MultiPolygonVector = getGeometryVector( table, - EXTENSION_NAME.MULTIPOLYGON + EXTENSION_NAME.MULTIPOLYGON, ); if (MultiPolygonVector !== null) { return this._renderLayersMultiPolygon(MultiPolygonVector); @@ -141,7 +141,7 @@ export class GeoArrowSolidPolygonLayer< } _renderLayersPolygon( - geometryColumn: PolygonVector + geometryColumn: PolygonVector, ): Layer<{}> | LayersList | null { const { data: table } = this.props; @@ -217,7 +217,7 @@ export class GeoArrowSolidPolygonLayer< } _renderLayersMultiPolygon( - geometryColumn: MultiPolygonVector + geometryColumn: MultiPolygonVector, ): Layer<{}> | LayersList | null { const { data: table } = this.props; @@ -322,7 +322,7 @@ export class GeoArrowSolidPolygonLayer< function encodePickingColors( geomToCoordOffsets: Int32Array, - encodePickingColor: (id: number, result: number[]) => void + encodePickingColor: (id: number, result: number[]) => void, ): Uint8ClampedArray { const largestOffset = geomToCoordOffsets[geomToCoordOffsets.length - 1]; const pickingColors = new Uint8ClampedArray(largestOffset); diff --git a/src/text-layer.ts b/src/text-layer.ts index d8964d6..6f2f542 100644 --- a/src/text-layer.ts +++ b/src/text-layer.ts @@ -142,7 +142,7 @@ const defaultProps: DefaultProps = { }; export class GeoArrowTextLayer< - ExtraProps extends {} = {} + ExtraProps extends {} = {}, > extends CompositeLayer & ExtraProps> { static defaultProps = defaultProps; static layerName = "GeoArrowTextLayer"; @@ -168,7 +168,7 @@ export class GeoArrowTextLayer< } _renderLayersPoint( - geometryColumn: PointVector + geometryColumn: PointVector, ): Layer<{}> | LayersList | null { const { data: table } = this.props; @@ -217,7 +217,7 @@ export class GeoArrowTextLayer< value: expandArrayToCoords( flatCoordinateArray, geometryData.type.listSize, - characterOffsets + characterOffsets, ), size: geometryData.type.listSize, }, diff --git a/src/types.ts b/src/types.ts index 1ffcd81..82ec407 100644 --- a/src/types.ts +++ b/src/types.ts @@ -30,8 +30,8 @@ export type MultiLineStringData = arrow.Data; export type MultiPolygonData = arrow.Data; export type GeoArrowPickingInfo = PickingInfo & { - object: arrow.StructRowProxy -} + object: arrow.StructRowProxy; +}; export type FloatAccessor = | arrow.Vector diff --git a/src/utils.ts b/src/utils.ts index 9c3f5b7..183ee48 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -29,12 +29,12 @@ export type TypedArray = export function findGeometryColumnIndex( schema: arrow.Schema, extensionName: string, - geometryColumnName?: string | null + geometryColumnName?: string | null, ): number | null { const index = schema.fields.findIndex( (field) => field.name === geometryColumnName || - field.metadata.get("ARROW:extension:name") === extensionName + field.metadata.get("ARROW:extension:name") === extensionName, ); return index !== -1 ? index : null; } @@ -47,14 +47,14 @@ export function isColumnReference(input: any): input is string { } function isDataInterleavedCoords( - data: arrow.Data + data: arrow.Data, ): data is arrow.Data> { // TODO: also check 2 or 3d? Float64? return data.type instanceof arrow.FixedSizeList; } function isDataSeparatedCoords( - data: arrow.Data + data: arrow.Data, ): data is arrow.Data> { // TODO: also check child names? Float64? return data.type instanceof arrow.Struct; @@ -70,7 +70,7 @@ function isDataSeparatedCoords( function convertStructToFixedSizeList( coords: | arrow.Data> - | arrow.Data> + | arrow.Data>, ): arrow.Data> { if (isDataInterleavedCoords(coords)) { return coords; @@ -86,7 +86,7 @@ function convertStructToFixedSizeList( const childDataType = new arrow.Float64(); const dataType = new arrow.FixedSizeList( 2, - new arrow.Field("coords", childDataType) + new arrow.Field("coords", childDataType), ); const interleavedCoordsData = arrow.makeData({ @@ -145,7 +145,7 @@ export function assignAccessor(args: AssignAccessorProps) { values = expandArrayToCoords( values, columnData.type.listSize, - geomCoordOffsets + geomCoordOffsets, ); } @@ -188,7 +188,7 @@ export function assignAccessor(args: AssignAccessorProps) { export function expandArrayToCoords( input: T, size: number, - geomOffsets: Int32Array + geomOffsets: Int32Array, ): T { const numCoords = geomOffsets[geomOffsets.length - 1]; // @ts-expect-error @@ -221,11 +221,11 @@ export function expandArrayToCoords( */ export function getGeometryVector( table: arrow.Table, - geoarrowTypeName: string + geoarrowTypeName: string, ): arrow.Vector | null { const geometryColumnIdx = findGeometryColumnIndex( table.schema, - geoarrowTypeName + geoarrowTypeName, ); if (geometryColumnIdx === null) { @@ -256,7 +256,7 @@ export function isPointVector(vector: arrow.Vector): vector is PointVector { } export function isLineStringVector( - vector: arrow.Vector + vector: arrow.Vector, ): vector is LineStringVector { // Check the outer vector is a List if (!arrow.DataType.isList(vector.type)) { @@ -286,7 +286,7 @@ export function isPolygonVector(vector: arrow.Vector): vector is PolygonVector { } export function isMultiPointVector( - vector: arrow.Vector + vector: arrow.Vector, ): vector is MultiPointVector { // Check the outer vector is a List if (!arrow.DataType.isList(vector.type)) { @@ -302,7 +302,7 @@ export function isMultiPointVector( } export function isMultiLineStringVector( - vector: arrow.Vector + vector: arrow.Vector, ): vector is MultiLineStringVector { // Check the outer vector is a List if (!arrow.DataType.isList(vector.type)) { @@ -318,7 +318,7 @@ export function isMultiLineStringVector( } export function isMultiPolygonVector( - vector: arrow.Vector + vector: arrow.Vector, ): vector is MultiPolygonVector { // Check the outer vector is a List if (!arrow.DataType.isList(vector.type)) { @@ -363,7 +363,7 @@ export function getMultiPointChild(data: MultiPointData): PointData { } export function getMultiLineStringChild( - data: MultiLineStringData + data: MultiLineStringData, ): LineStringData { // @ts-expect-error return data.children[0]; @@ -375,7 +375,7 @@ export function getMultiPolygonChild(data: MultiPolygonData): PolygonData { } export function getMultiLineStringResolvedOffsets( - data: MultiLineStringData + data: MultiLineStringData, ): Int32Array { const geomOffsets = data.valueOffsets; const lineStringData = getMultiLineStringChild(data); @@ -407,7 +407,7 @@ export function getPolygonResolvedOffsets(data: PolygonData): Int32Array { } export function getMultiPolygonResolvedOffsets( - data: MultiPolygonData + data: MultiPolygonData, ): Int32Array { const polygonData = getMultiPolygonChild(data); const ringData = getPolygonChild(polygonData); @@ -428,7 +428,7 @@ export function getMultiPolygonResolvedOffsets( * Invert offsets so that lookup can go in the opposite direction */ export function invertOffsets( - offsets: Int32Array + offsets: Int32Array, ): Uint8Array | Uint16Array | Uint32Array { const largestOffset = offsets[offsets.length - 1]; @@ -436,8 +436,8 @@ export function invertOffsets( offsets.length < Math.pow(2, 8) ? Uint8Array : offsets.length < Math.pow(2, 16) - ? Uint16Array - : Uint32Array; + ? Uint16Array + : Uint32Array; const invertedOffsets = new arrayConstructor(largestOffset); for (let arrayIdx = 0; arrayIdx < offsets.length - 1; arrayIdx++) { @@ -454,7 +454,7 @@ export function invertOffsets( // TODO: better typing export function extractAccessorsFromProps( props: Record, - excludeKeys: string[] + excludeKeys: string[], ): [Record, Record] { const accessors = {}; const otherProps = {}; diff --git a/src/validate.ts b/src/validate.ts index f8c3915..c232a38 100644 --- a/src/validate.ts +++ b/src/validate.ts @@ -4,7 +4,7 @@ import { Coord, LineString, MultiPoint, Polygon } from "./types"; export function validateAccessors( props: Record, - table: arrow.Table + table: arrow.Table, ): void { const vectorAccessors: arrow.Vector[] = []; const colorVectorAccessors: arrow.Vector[] = []; @@ -39,7 +39,7 @@ export function validateAccessors( */ export function validateVectorAccessors( table: arrow.Table, - vectorAccessors: arrow.Vector[] + vectorAccessors: arrow.Vector[], ) { // Check the same number of chunks as the table's batches for (const vectorAccessor of vectorAccessors) { @@ -85,7 +85,7 @@ export function validatePointType(type: arrow.DataType): type is Coord { } export function validateLineStringType( - type: arrow.DataType + type: arrow.DataType, ): type is LineString { // Assert the outer vector is a List assert(arrow.DataType.isList(type)); @@ -108,7 +108,7 @@ export function validatePolygonType(type: arrow.DataType): type is Polygon { // Note: this is the same as validateLineStringType export function validateMultiPointType( - type: arrow.DataType + type: arrow.DataType, ): type is MultiPoint { // Assert the outer vector is a List assert(arrow.DataType.isList(type)); @@ -120,7 +120,7 @@ export function validateMultiPointType( } export function validateMultiLineStringType( - type: arrow.DataType + type: arrow.DataType, ): type is Polygon { // Assert the outer vector is a List assert(arrow.DataType.isList(type)); @@ -132,7 +132,7 @@ export function validateMultiLineStringType( } export function validateMultiPolygonType( - type: arrow.DataType + type: arrow.DataType, ): type is Polygon { // Assert the outer vector is a List assert(arrow.DataType.isList(type));