@loaders.gl/flatgeobuf 3.1.7 → 3.2.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dist.min.js CHANGED
@@ -44,7 +44,9 @@
44
44
  mimeTypes: ["application/octet-stream"],
45
45
  category: "geometry",
46
46
  options: {
47
- flatgeobuf: {}
47
+ flatgeobuf: {
48
+ shape: "geojson"
49
+ }
48
50
  }
49
51
  };
50
52
  }
@@ -9340,19 +9342,33 @@
9340
9342
  return parsedGeometry;
9341
9343
  }
9342
9344
  function parseFlatGeobuf(arrayBuffer, options) {
9343
- if (arrayBuffer.byteLength === 0) {
9344
- return [];
9345
- }
9346
- if (options && options.gis && options.gis.format === "binary") {
9347
- return parseFlatGeobufToBinary(arrayBuffer, options);
9345
+ const shape = options?.gis?.format || options?.flatgeobuf?.shape;
9346
+ switch (shape) {
9347
+ case "geojson-row-table": {
9348
+ const table = {
9349
+ shape: "geojson-row-table",
9350
+ data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
9351
+ };
9352
+ return table;
9353
+ }
9354
+ case "columnar-table":
9355
+ return { shape: "columnar-table", data: parseFlatGeobufToBinary(arrayBuffer, options) };
9356
+ case "geojson":
9357
+ return parseFlatGeobufToGeoJSON(arrayBuffer, options);
9358
+ case "binary":
9359
+ return parseFlatGeobufToBinary(arrayBuffer, options);
9360
+ default:
9361
+ throw new Error(shape);
9348
9362
  }
9349
- return parseFlatGeobufToGeoJSON(arrayBuffer, options);
9350
9363
  }
9351
9364
  function parseFlatGeobufToBinary(arrayBuffer, options) {
9352
- const arr = new Uint8Array(arrayBuffer);
9353
- return (0, import_generic.deserialize)(arr, binaryFromFeature);
9365
+ const array = new Uint8Array(arrayBuffer);
9366
+ return (0, import_generic.deserialize)(array, binaryFromFeature);
9354
9367
  }
9355
9368
  function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
9369
+ if (arrayBuffer.byteLength === 0) {
9370
+ return [];
9371
+ }
9356
9372
  const { reproject = false, _targetCrs = "WGS84" } = options && options.gis || {};
9357
9373
  const arr = new Uint8Array(arrayBuffer);
9358
9374
  let headerMeta;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports._typecheckFlatGeobufLoader = exports.FlatGeobufLoader = void 0;
7
- var VERSION = typeof "3.1.7" !== 'undefined' ? "3.1.7" : 'latest';
7
+ var VERSION = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
8
8
  var FlatGeobufLoader = {
9
9
  id: 'flatgeobuf',
10
10
  name: 'FlatGeobuf',
@@ -15,7 +15,9 @@ var FlatGeobufLoader = {
15
15
  mimeTypes: ['application/octet-stream'],
16
16
  category: 'geometry',
17
17
  options: {
18
- flatgeobuf: {}
18
+ flatgeobuf: {
19
+ shape: 'geojson'
20
+ }
19
21
  }
20
22
  };
21
23
  exports.FlatGeobufLoader = FlatGeobufLoader;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/flatgeobuf-loader.ts"],"names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","_typecheckFlatGeobufLoader"],"mappings":";;;;;;AAIA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;AAEO,IAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,EAAE,EAAE,YAD0B;AAE9BC,EAAAA,IAAI,EAAE,YAFwB;AAG9BC,EAAAA,MAAM,EAAE,YAHsB;AAI9BC,EAAAA,OAAO,EAAEL,OAJqB;AAK9BM,EAAAA,MAAM,EAAE,IALsB;AAM9BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANkB;AAO9BC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAPmB;AAQ9BC,EAAAA,QAAQ,EAAE,UARoB;AAS9BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AADL;AATqB,CAAzB;;AAcA,IAAMC,0BAAkC,GAAGX,gBAA3C","sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport const FlatGeobufLoader = {\n id: 'flatgeobuf',\n name: 'FlatGeobuf',\n module: 'flatgeobuf',\n version: VERSION,\n worker: true,\n extensions: ['fgb'],\n mimeTypes: ['application/octet-stream'],\n category: 'geometry',\n options: {\n flatgeobuf: {}\n }\n};\n\nexport const _typecheckFlatGeobufLoader: Loader = FlatGeobufLoader;\n"],"file":"flatgeobuf-loader.js"}
1
+ {"version":3,"sources":["../../src/flatgeobuf-loader.ts"],"names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","shape","_typecheckFlatGeobufLoader"],"mappings":";;;;;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAEO,IAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,EAAE,EAAE,YAD0B;AAE9BC,EAAAA,IAAI,EAAE,YAFwB;AAG9BC,EAAAA,MAAM,EAAE,YAHsB;AAI9BC,EAAAA,OAAO,EAAEL,OAJqB;AAK9BM,EAAAA,MAAM,EAAE,IALsB;AAM9BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANkB;AAO9BC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAPmB;AAQ9BC,EAAAA,QAAQ,EAAE,UARoB;AAS9BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AAEVC,MAAAA,KAAK,EAAE;AAFG;AADL;AATqB,CAAzB;;AAiBA,IAAMC,0BAAkC,GAAGZ,gBAA3C","sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport const FlatGeobufLoader = {\n id: 'flatgeobuf',\n name: 'FlatGeobuf',\n module: 'flatgeobuf',\n version: VERSION,\n worker: true,\n extensions: ['fgb'],\n mimeTypes: ['application/octet-stream'],\n category: 'geometry',\n options: {\n flatgeobuf: {\n // Set to GeoJSON for backwards compatibility\n shape: 'geojson'\n }\n }\n};\n\nexport const _typecheckFlatGeobufLoader: Loader = FlatGeobufLoader;\n"],"file":"flatgeobuf-loader.js"}
@@ -37,23 +37,47 @@ function binaryFromFeature(feature, header) {
37
37
  }
38
38
 
39
39
  function parseFlatGeobuf(arrayBuffer, options) {
40
- if (arrayBuffer.byteLength === 0) {
41
- return [];
42
- }
40
+ var _options$gis, _options$flatgeobuf;
41
+
42
+ var shape = (options === null || options === void 0 ? void 0 : (_options$gis = options.gis) === null || _options$gis === void 0 ? void 0 : _options$gis.format) || (options === null || options === void 0 ? void 0 : (_options$flatgeobuf = options.flatgeobuf) === null || _options$flatgeobuf === void 0 ? void 0 : _options$flatgeobuf.shape);
43
+
44
+ switch (shape) {
45
+ case 'geojson-row-table':
46
+ {
47
+ var table = {
48
+ shape: 'geojson-row-table',
49
+ data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
50
+ };
51
+ return table;
52
+ }
43
53
 
44
- if (options && options.gis && options.gis.format === 'binary') {
45
- return parseFlatGeobufToBinary(arrayBuffer, options);
46
- }
54
+ case 'columnar-table':
55
+ return {
56
+ shape: 'columnar-table',
57
+ data: parseFlatGeobufToBinary(arrayBuffer, options)
58
+ };
59
+
60
+ case 'geojson':
61
+ return parseFlatGeobufToGeoJSON(arrayBuffer, options);
47
62
 
48
- return parseFlatGeobufToGeoJSON(arrayBuffer, options);
63
+ case 'binary':
64
+ return parseFlatGeobufToBinary(arrayBuffer, options);
65
+
66
+ default:
67
+ throw new Error(shape);
68
+ }
49
69
  }
50
70
 
51
71
  function parseFlatGeobufToBinary(arrayBuffer, options) {
52
- var arr = new Uint8Array(arrayBuffer);
53
- return (0, _generic.deserialize)(arr, binaryFromFeature);
72
+ var array = new Uint8Array(arrayBuffer);
73
+ return (0, _generic.deserialize)(array, binaryFromFeature);
54
74
  }
55
75
 
56
76
  function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
77
+ if (arrayBuffer.byteLength === 0) {
78
+ return [];
79
+ }
80
+
57
81
  var _ref = options && options.gis || {},
58
82
  _ref$reproject = _ref.reproject,
59
83
  reproject = _ref$reproject === void 0 ? false : _ref$reproject,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/parse-flatgeobuf.ts"],"names":["binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","byteLength","gis","format","parseFlatGeobufToBinary","parseFlatGeobufToGeoJSON","arr","Uint8Array","reproject","_targetCrs","headerMeta","features","crs","projection","Proj4Projection","from","wkt","to","e","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","iterator","firstRecord"],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport {Proj4Projection} from '@math.gl/proj4';\nimport {transformGeoJsonCoords} from '@loaders.gl/gis';\n\nimport {deserialize as deserializeGeoJson} from 'flatgeobuf/lib/cjs/geojson';\nimport {deserialize as deserializeGeneric} from 'flatgeobuf/lib/cjs/generic';\nimport {parseProperties as parsePropertiesBinary} from 'flatgeobuf/lib/cjs/generic/feature';\n\nimport {fromGeometry as binaryFromGeometry} from './binary-geometries';\n\n// TODO: reproject binary features\nfunction binaryFromFeature(feature, header) {\n const geometry = feature.geometry();\n\n // FlatGeobuf files can only hold a single geometry type per file, otherwise\n // GeometryType is GeometryCollection\n // I believe geometry.type() is null (0) except when the geometry type isn't\n // known in the header?\n const geometryType = header.geometryType || geometry.type();\n const parsedGeometry = binaryFromGeometry(geometry, geometryType);\n parsedGeometry.properties = parsePropertiesBinary(feature, header.columns);\n\n // TODO: wrap binary data either in points, lines, or polygons key\n return parsedGeometry;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param arrayBuffer A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object\n */\nexport function parseFlatGeobuf(arrayBuffer, options) {\n if (arrayBuffer.byteLength === 0) {\n return [];\n }\n\n if (options && options.gis && options.gis.format === 'binary') {\n return parseFlatGeobufToBinary(arrayBuffer, options);\n }\n\n return parseFlatGeobufToGeoJSON(arrayBuffer, options);\n}\n\nfunction parseFlatGeobufToBinary(arrayBuffer, options) {\n // TODO: reproject binary features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const arr = new Uint8Array(arrayBuffer);\n return deserializeGeneric(arr, binaryFromFeature);\n}\n\nfunction parseFlatGeobufToGeoJSON(arrayBuffer, options) {\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const arr = new Uint8Array(arrayBuffer);\n\n let headerMeta;\n const {features} = deserializeGeoJson(arr, false, (header) => {\n headerMeta = header;\n });\n\n const crs = headerMeta && headerMeta.crs;\n let projection;\n if (reproject && crs) {\n // Constructing the projection may fail for some invalid WKT strings\n try {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n } catch (e) {\n // no op\n }\n }\n\n if (projection) {\n return transformGeoJsonCoords(features, (coords) => projection.project(coords));\n }\n\n return features;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param {ReadableStream} _ A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object iterator\n */\n// eslint-disable-next-line complexity\nexport function parseFlatGeobufInBatches(stream, options) {\n if (options && options.gis && options.gis.format === 'binary') {\n return parseFlatGeobufInBatchesToBinary(stream, options);\n }\n\n return parseFlatGeobufInBatchesToGeoJSON(stream, options);\n}\n\nfunction parseFlatGeobufInBatchesToBinary(stream, options) {\n // TODO: reproject binary streaming features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const iterator = deserializeGeneric(stream, binaryFromFeature);\n return iterator;\n}\n\n// eslint-disable-next-line complexity\nasync function* parseFlatGeobufInBatchesToGeoJSON(stream, options) {\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n let headerMeta;\n const iterator = deserializeGeoJson(stream, false, (header) => {\n headerMeta = header;\n });\n\n let projection;\n let firstRecord = true;\n for await (const feature of iterator) {\n if (firstRecord) {\n const crs = headerMeta && headerMeta.crs;\n if (reproject && crs) {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n }\n\n firstRecord = false;\n }\n\n if (reproject && projection) {\n // eslint-disable-next-line\n yield transformGeoJsonCoords([feature], (coords) => projection.project(coords));\n } else {\n yield feature;\n }\n }\n}\n"],"file":"parse-flatgeobuf.js"}
1
+ {"version":3,"sources":["../../../src/lib/parse-flatgeobuf.ts"],"names":["binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","shape","gis","format","flatgeobuf","table","data","parseFlatGeobufToGeoJSON","parseFlatGeobufToBinary","Error","array","Uint8Array","byteLength","reproject","_targetCrs","arr","headerMeta","features","crs","projection","Proj4Projection","from","wkt","to","e","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","iterator","firstRecord"],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport {Proj4Projection} from '@math.gl/proj4';\nimport {transformGeoJsonCoords} from '@loaders.gl/gis';\n\nimport {deserialize as deserializeGeoJson} from 'flatgeobuf/lib/cjs/geojson';\nimport {deserialize as deserializeGeneric} from 'flatgeobuf/lib/cjs/generic';\nimport {parseProperties as parsePropertiesBinary} from 'flatgeobuf/lib/cjs/generic/feature';\n\nimport {fromGeometry as binaryFromGeometry} from './binary-geometries';\nimport {FlatGeobufLoaderOptions} from './types';\nimport {GeoJSONRowTable, Feature} from '@loaders.gl/schema';\n\n// TODO: reproject binary features\nfunction binaryFromFeature(feature, header) {\n const geometry = feature.geometry();\n\n // FlatGeobuf files can only hold a single geometry type per file, otherwise\n // GeometryType is GeometryCollection\n // I believe geometry.type() is null (0) except when the geometry type isn't\n // known in the header?\n const geometryType = header.geometryType || geometry.type();\n const parsedGeometry = binaryFromGeometry(geometry, geometryType);\n parsedGeometry.properties = parsePropertiesBinary(feature, header.columns);\n\n // TODO: wrap binary data either in points, lines, or polygons key\n return parsedGeometry;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param arrayBuffer A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object\n */\nexport function parseFlatGeobuf(arrayBuffer: ArrayBuffer, options?: FlatGeobufLoaderOptions) {\n const shape = options?.gis?.format || options?.flatgeobuf?.shape;\n\n switch (shape) {\n case 'geojson-row-table': {\n const table: GeoJSONRowTable = {\n shape: 'geojson-row-table',\n data: parseFlatGeobufToGeoJSON(arrayBuffer, options)\n };\n return table;\n }\n case 'columnar-table': // binary + some JS arrays\n return {shape: 'columnar-table', data: parseFlatGeobufToBinary(arrayBuffer, options)};\n case 'geojson':\n return parseFlatGeobufToGeoJSON(arrayBuffer, options);\n case 'binary':\n return parseFlatGeobufToBinary(arrayBuffer, options);\n default:\n throw new Error(shape);\n }\n}\n\nfunction parseFlatGeobufToBinary(arrayBuffer: ArrayBuffer, options: FlatGeobufLoaderOptions) {\n // TODO: reproject binary features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const array = new Uint8Array(arrayBuffer);\n return deserializeGeneric(array, binaryFromFeature);\n}\n\nfunction parseFlatGeobufToGeoJSON(\n arrayBuffer: ArrayBuffer,\n options: FlatGeobufLoaderOptions\n): Feature[] {\n if (arrayBuffer.byteLength === 0) {\n return [];\n }\n\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const arr = new Uint8Array(arrayBuffer);\n\n let headerMeta;\n const {features} = deserializeGeoJson(arr, false, (header) => {\n headerMeta = header;\n });\n\n const crs = headerMeta && headerMeta.crs;\n let projection;\n if (reproject && crs) {\n // Constructing the projection may fail for some invalid WKT strings\n try {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n } catch (e) {\n // no op\n }\n }\n\n if (projection) {\n return transformGeoJsonCoords(features, (coords) => projection.project(coords));\n }\n\n return features;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param {ReadableStream} _ A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object iterator\n */\n// eslint-disable-next-line complexity\nexport function parseFlatGeobufInBatches(stream, options: FlatGeobufLoaderOptions) {\n if (options && options.gis && options.gis.format === 'binary') {\n return parseFlatGeobufInBatchesToBinary(stream, options);\n }\n\n return parseFlatGeobufInBatchesToGeoJSON(stream, options);\n}\n\nfunction parseFlatGeobufInBatchesToBinary(stream, options: FlatGeobufLoaderOptions) {\n // TODO: reproject binary streaming features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const iterator = deserializeGeneric(stream, binaryFromFeature);\n return iterator;\n}\n\n// eslint-disable-next-line complexity\nasync function* parseFlatGeobufInBatchesToGeoJSON(stream, options: FlatGeobufLoaderOptions) {\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n let headerMeta;\n const iterator = deserializeGeoJson(stream, false, (header) => {\n headerMeta = header;\n });\n\n let projection;\n let firstRecord = true;\n for await (const feature of iterator) {\n if (firstRecord) {\n const crs = headerMeta && headerMeta.crs;\n if (reproject && crs) {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n }\n\n firstRecord = false;\n }\n\n if (reproject && projection) {\n // eslint-disable-next-line\n yield transformGeoJsonCoords([feature], (coords) => projection.project(coords));\n } else {\n yield feature;\n }\n }\n}\n"],"file":"parse-flatgeobuf.js"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "3.1.7" !== 'undefined' ? "3.1.7" : 'latest';
1
+ const VERSION = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
2
2
  export const FlatGeobufLoader = {
3
3
  id: 'flatgeobuf',
4
4
  name: 'FlatGeobuf',
@@ -9,7 +9,9 @@ export const FlatGeobufLoader = {
9
9
  mimeTypes: ['application/octet-stream'],
10
10
  category: 'geometry',
11
11
  options: {
12
- flatgeobuf: {}
12
+ flatgeobuf: {
13
+ shape: 'geojson'
14
+ }
13
15
  }
14
16
  };
15
17
  export const _typecheckFlatGeobufLoader = FlatGeobufLoader;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/flatgeobuf-loader.ts"],"names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","_typecheckFlatGeobufLoader"],"mappings":"AAIA,MAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;AAEA,OAAO,MAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,EAAE,EAAE,YAD0B;AAE9BC,EAAAA,IAAI,EAAE,YAFwB;AAG9BC,EAAAA,MAAM,EAAE,YAHsB;AAI9BC,EAAAA,OAAO,EAAEL,OAJqB;AAK9BM,EAAAA,MAAM,EAAE,IALsB;AAM9BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANkB;AAO9BC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAPmB;AAQ9BC,EAAAA,QAAQ,EAAE,UARoB;AAS9BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AADL;AATqB,CAAzB;AAcP,OAAO,MAAMC,0BAAkC,GAAGX,gBAA3C","sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport const FlatGeobufLoader = {\n id: 'flatgeobuf',\n name: 'FlatGeobuf',\n module: 'flatgeobuf',\n version: VERSION,\n worker: true,\n extensions: ['fgb'],\n mimeTypes: ['application/octet-stream'],\n category: 'geometry',\n options: {\n flatgeobuf: {}\n }\n};\n\nexport const _typecheckFlatGeobufLoader: Loader = FlatGeobufLoader;\n"],"file":"flatgeobuf-loader.js"}
1
+ {"version":3,"sources":["../../src/flatgeobuf-loader.ts"],"names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","shape","_typecheckFlatGeobufLoader"],"mappings":"AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAEA,OAAO,MAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,EAAE,EAAE,YAD0B;AAE9BC,EAAAA,IAAI,EAAE,YAFwB;AAG9BC,EAAAA,MAAM,EAAE,YAHsB;AAI9BC,EAAAA,OAAO,EAAEL,OAJqB;AAK9BM,EAAAA,MAAM,EAAE,IALsB;AAM9BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANkB;AAO9BC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAPmB;AAQ9BC,EAAAA,QAAQ,EAAE,UARoB;AAS9BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AAEVC,MAAAA,KAAK,EAAE;AAFG;AADL;AATqB,CAAzB;AAiBP,OAAO,MAAMC,0BAAkC,GAAGZ,gBAA3C","sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport const FlatGeobufLoader = {\n id: 'flatgeobuf',\n name: 'FlatGeobuf',\n module: 'flatgeobuf',\n version: VERSION,\n worker: true,\n extensions: ['fgb'],\n mimeTypes: ['application/octet-stream'],\n category: 'geometry',\n options: {\n flatgeobuf: {\n // Set to GeoJSON for backwards compatibility\n shape: 'geojson'\n }\n }\n};\n\nexport const _typecheckFlatGeobufLoader: Loader = FlatGeobufLoader;\n"],"file":"flatgeobuf-loader.js"}
@@ -14,23 +14,47 @@ function binaryFromFeature(feature, header) {
14
14
  }
15
15
 
16
16
  export function parseFlatGeobuf(arrayBuffer, options) {
17
- if (arrayBuffer.byteLength === 0) {
18
- return [];
19
- }
17
+ var _options$gis, _options$flatgeobuf;
18
+
19
+ const shape = (options === null || options === void 0 ? void 0 : (_options$gis = options.gis) === null || _options$gis === void 0 ? void 0 : _options$gis.format) || (options === null || options === void 0 ? void 0 : (_options$flatgeobuf = options.flatgeobuf) === null || _options$flatgeobuf === void 0 ? void 0 : _options$flatgeobuf.shape);
20
+
21
+ switch (shape) {
22
+ case 'geojson-row-table':
23
+ {
24
+ const table = {
25
+ shape: 'geojson-row-table',
26
+ data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
27
+ };
28
+ return table;
29
+ }
20
30
 
21
- if (options && options.gis && options.gis.format === 'binary') {
22
- return parseFlatGeobufToBinary(arrayBuffer, options);
23
- }
31
+ case 'columnar-table':
32
+ return {
33
+ shape: 'columnar-table',
34
+ data: parseFlatGeobufToBinary(arrayBuffer, options)
35
+ };
36
+
37
+ case 'geojson':
38
+ return parseFlatGeobufToGeoJSON(arrayBuffer, options);
24
39
 
25
- return parseFlatGeobufToGeoJSON(arrayBuffer, options);
40
+ case 'binary':
41
+ return parseFlatGeobufToBinary(arrayBuffer, options);
42
+
43
+ default:
44
+ throw new Error(shape);
45
+ }
26
46
  }
27
47
 
28
48
  function parseFlatGeobufToBinary(arrayBuffer, options) {
29
- const arr = new Uint8Array(arrayBuffer);
30
- return deserializeGeneric(arr, binaryFromFeature);
49
+ const array = new Uint8Array(arrayBuffer);
50
+ return deserializeGeneric(array, binaryFromFeature);
31
51
  }
32
52
 
33
53
  function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
54
+ if (arrayBuffer.byteLength === 0) {
55
+ return [];
56
+ }
57
+
34
58
  const {
35
59
  reproject = false,
36
60
  _targetCrs = 'WGS84'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/parse-flatgeobuf.ts"],"names":["Proj4Projection","transformGeoJsonCoords","deserialize","deserializeGeoJson","deserializeGeneric","parseProperties","parsePropertiesBinary","fromGeometry","binaryFromGeometry","binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","byteLength","gis","format","parseFlatGeobufToBinary","parseFlatGeobufToGeoJSON","arr","Uint8Array","reproject","_targetCrs","headerMeta","features","crs","projection","from","wkt","to","e","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","iterator","firstRecord"],"mappings":"AACA,SAAQA,eAAR,QAA8B,gBAA9B;AACA,SAAQC,sBAAR,QAAqC,iBAArC;AAEA,SAAQC,WAAW,IAAIC,kBAAvB,QAAgD,4BAAhD;AACA,SAAQD,WAAW,IAAIE,kBAAvB,QAAgD,4BAAhD;AACA,SAAQC,eAAe,IAAIC,qBAA3B,QAAuD,oCAAvD;AAEA,SAAQC,YAAY,IAAIC,kBAAxB,QAAiD,qBAAjD;;AAGA,SAASC,iBAAT,CAA2BC,OAA3B,EAAoCC,MAApC,EAA4C;AAC1C,QAAMC,QAAQ,GAAGF,OAAO,CAACE,QAAR,EAAjB;AAMA,QAAMC,YAAY,GAAGF,MAAM,CAACE,YAAP,IAAuBD,QAAQ,CAACE,IAAT,EAA5C;AACA,QAAMC,cAAc,GAAGP,kBAAkB,CAACI,QAAD,EAAWC,YAAX,CAAzC;AACAE,EAAAA,cAAc,CAACC,UAAf,GAA4BV,qBAAqB,CAACI,OAAD,EAAUC,MAAM,CAACM,OAAjB,CAAjD;AAGA,SAAOF,cAAP;AACD;;AAQD,OAAO,SAASG,eAAT,CAAyBC,WAAzB,EAAsCC,OAAtC,EAA+C;AACpD,MAAID,WAAW,CAACE,UAAZ,KAA2B,CAA/B,EAAkC;AAChC,WAAO,EAAP;AACD;;AAED,MAAID,OAAO,IAAIA,OAAO,CAACE,GAAnB,IAA0BF,OAAO,CAACE,GAAR,CAAYC,MAAZ,KAAuB,QAArD,EAA+D;AAC7D,WAAOC,uBAAuB,CAACL,WAAD,EAAcC,OAAd,CAA9B;AACD;;AAED,SAAOK,wBAAwB,CAACN,WAAD,EAAcC,OAAd,CAA/B;AACD;;AAED,SAASI,uBAAT,CAAiCL,WAAjC,EAA8CC,OAA9C,EAAuD;AAIrD,QAAMM,GAAG,GAAG,IAAIC,UAAJ,CAAeR,WAAf,CAAZ;AACA,SAAOf,kBAAkB,CAACsB,GAAD,EAAMjB,iBAAN,CAAzB;AACD;;AAED,SAASgB,wBAAT,CAAkCN,WAAlC,EAA+CC,OAA/C,EAAwD;AACtD,QAAM;AAACQ,IAAAA,SAAS,GAAG,KAAb;AAAoBC,IAAAA,UAAU,GAAG;AAAjC,MAA6CT,OAAO,IAAIA,OAAO,CAACE,GAApB,IAA4B,EAA9E;AAEA,QAAMI,GAAG,GAAG,IAAIC,UAAJ,CAAeR,WAAf,CAAZ;AAEA,MAAIW,UAAJ;AACA,QAAM;AAACC,IAAAA;AAAD,MAAa5B,kBAAkB,CAACuB,GAAD,EAAM,KAAN,EAAcf,MAAD,IAAY;AAC5DmB,IAAAA,UAAU,GAAGnB,MAAb;AACD,GAFoC,CAArC;AAIA,QAAMqB,GAAG,GAAGF,UAAU,IAAIA,UAAU,CAACE,GAArC;AACA,MAAIC,UAAJ;;AACA,MAAIL,SAAS,IAAII,GAAjB,EAAsB;AAEpB,QAAI;AACFC,MAAAA,UAAU,GAAG,IAAIjC,eAAJ,CAAoB;AAACkC,QAAAA,IAAI,EAAEF,GAAG,CAACG,GAAX;AAAgBC,QAAAA,EAAE,EAAEP;AAApB,OAApB,CAAb;AACD,KAFD,CAEE,OAAOQ,CAAP,EAAU,CAEX;AACF;;AAED,MAAIJ,UAAJ,EAAgB;AACd,WAAOhC,sBAAsB,CAAC8B,QAAD,EAAYO,MAAD,IAAYL,UAAU,CAACM,OAAX,CAAmBD,MAAnB,CAAvB,CAA7B;AACD;;AAED,SAAOP,QAAP;AACD;;AASD,OAAO,SAASS,wBAAT,CAAkCC,MAAlC,EAA0CrB,OAA1C,EAAmD;AACxD,MAAIA,OAAO,IAAIA,OAAO,CAACE,GAAnB,IAA0BF,OAAO,CAACE,GAAR,CAAYC,MAAZ,KAAuB,QAArD,EAA+D;AAC7D,WAAOmB,gCAAgC,CAACD,MAAD,EAASrB,OAAT,CAAvC;AACD;;AAED,SAAOuB,iCAAiC,CAACF,MAAD,EAASrB,OAAT,CAAxC;AACD;;AAED,SAASsB,gCAAT,CAA0CD,MAA1C,EAAkDrB,OAAlD,EAA2D;AAIzD,QAAMwB,QAAQ,GAAGxC,kBAAkB,CAACqC,MAAD,EAAShC,iBAAT,CAAnC;AACA,SAAOmC,QAAP;AACD;;AAGD,gBAAgBD,iCAAhB,CAAkDF,MAAlD,EAA0DrB,OAA1D,EAAmE;AACjE,QAAM;AAACQ,IAAAA,SAAS,GAAG,KAAb;AAAoBC,IAAAA,UAAU,GAAG;AAAjC,MAA6CT,OAAO,IAAIA,OAAO,CAACE,GAApB,IAA4B,EAA9E;AAEA,MAAIQ,UAAJ;AACA,QAAMc,QAAQ,GAAGzC,kBAAkB,CAACsC,MAAD,EAAS,KAAT,EAAiB9B,MAAD,IAAY;AAC7DmB,IAAAA,UAAU,GAAGnB,MAAb;AACD,GAFkC,CAAnC;AAIA,MAAIsB,UAAJ;AACA,MAAIY,WAAW,GAAG,IAAlB;;AACA,aAAW,MAAMnC,OAAjB,IAA4BkC,QAA5B,EAAsC;AACpC,QAAIC,WAAJ,EAAiB;AACf,YAAMb,GAAG,GAAGF,UAAU,IAAIA,UAAU,CAACE,GAArC;;AACA,UAAIJ,SAAS,IAAII,GAAjB,EAAsB;AACpBC,QAAAA,UAAU,GAAG,IAAIjC,eAAJ,CAAoB;AAACkC,UAAAA,IAAI,EAAEF,GAAG,CAACG,GAAX;AAAgBC,UAAAA,EAAE,EAAEP;AAApB,SAApB,CAAb;AACD;;AAEDgB,MAAAA,WAAW,GAAG,KAAd;AACD;;AAED,QAAIjB,SAAS,IAAIK,UAAjB,EAA6B;AAE3B,YAAMhC,sBAAsB,CAAC,CAACS,OAAD,CAAD,EAAa4B,MAAD,IAAYL,UAAU,CAACM,OAAX,CAAmBD,MAAnB,CAAxB,CAA5B;AACD,KAHD,MAGO;AACL,YAAM5B,OAAN;AACD;AACF;AACF","sourcesContent":["// @ts-nocheck\nimport {Proj4Projection} from '@math.gl/proj4';\nimport {transformGeoJsonCoords} from '@loaders.gl/gis';\n\nimport {deserialize as deserializeGeoJson} from 'flatgeobuf/lib/cjs/geojson';\nimport {deserialize as deserializeGeneric} from 'flatgeobuf/lib/cjs/generic';\nimport {parseProperties as parsePropertiesBinary} from 'flatgeobuf/lib/cjs/generic/feature';\n\nimport {fromGeometry as binaryFromGeometry} from './binary-geometries';\n\n// TODO: reproject binary features\nfunction binaryFromFeature(feature, header) {\n const geometry = feature.geometry();\n\n // FlatGeobuf files can only hold a single geometry type per file, otherwise\n // GeometryType is GeometryCollection\n // I believe geometry.type() is null (0) except when the geometry type isn't\n // known in the header?\n const geometryType = header.geometryType || geometry.type();\n const parsedGeometry = binaryFromGeometry(geometry, geometryType);\n parsedGeometry.properties = parsePropertiesBinary(feature, header.columns);\n\n // TODO: wrap binary data either in points, lines, or polygons key\n return parsedGeometry;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param arrayBuffer A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object\n */\nexport function parseFlatGeobuf(arrayBuffer, options) {\n if (arrayBuffer.byteLength === 0) {\n return [];\n }\n\n if (options && options.gis && options.gis.format === 'binary') {\n return parseFlatGeobufToBinary(arrayBuffer, options);\n }\n\n return parseFlatGeobufToGeoJSON(arrayBuffer, options);\n}\n\nfunction parseFlatGeobufToBinary(arrayBuffer, options) {\n // TODO: reproject binary features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const arr = new Uint8Array(arrayBuffer);\n return deserializeGeneric(arr, binaryFromFeature);\n}\n\nfunction parseFlatGeobufToGeoJSON(arrayBuffer, options) {\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const arr = new Uint8Array(arrayBuffer);\n\n let headerMeta;\n const {features} = deserializeGeoJson(arr, false, (header) => {\n headerMeta = header;\n });\n\n const crs = headerMeta && headerMeta.crs;\n let projection;\n if (reproject && crs) {\n // Constructing the projection may fail for some invalid WKT strings\n try {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n } catch (e) {\n // no op\n }\n }\n\n if (projection) {\n return transformGeoJsonCoords(features, (coords) => projection.project(coords));\n }\n\n return features;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param {ReadableStream} _ A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object iterator\n */\n// eslint-disable-next-line complexity\nexport function parseFlatGeobufInBatches(stream, options) {\n if (options && options.gis && options.gis.format === 'binary') {\n return parseFlatGeobufInBatchesToBinary(stream, options);\n }\n\n return parseFlatGeobufInBatchesToGeoJSON(stream, options);\n}\n\nfunction parseFlatGeobufInBatchesToBinary(stream, options) {\n // TODO: reproject binary streaming features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const iterator = deserializeGeneric(stream, binaryFromFeature);\n return iterator;\n}\n\n// eslint-disable-next-line complexity\nasync function* parseFlatGeobufInBatchesToGeoJSON(stream, options) {\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n let headerMeta;\n const iterator = deserializeGeoJson(stream, false, (header) => {\n headerMeta = header;\n });\n\n let projection;\n let firstRecord = true;\n for await (const feature of iterator) {\n if (firstRecord) {\n const crs = headerMeta && headerMeta.crs;\n if (reproject && crs) {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n }\n\n firstRecord = false;\n }\n\n if (reproject && projection) {\n // eslint-disable-next-line\n yield transformGeoJsonCoords([feature], (coords) => projection.project(coords));\n } else {\n yield feature;\n }\n }\n}\n"],"file":"parse-flatgeobuf.js"}
1
+ {"version":3,"sources":["../../../src/lib/parse-flatgeobuf.ts"],"names":["Proj4Projection","transformGeoJsonCoords","deserialize","deserializeGeoJson","deserializeGeneric","parseProperties","parsePropertiesBinary","fromGeometry","binaryFromGeometry","binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","shape","gis","format","flatgeobuf","table","data","parseFlatGeobufToGeoJSON","parseFlatGeobufToBinary","Error","array","Uint8Array","byteLength","reproject","_targetCrs","arr","headerMeta","features","crs","projection","from","wkt","to","e","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","iterator","firstRecord"],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport {Proj4Projection} from '@math.gl/proj4';\nimport {transformGeoJsonCoords} from '@loaders.gl/gis';\n\nimport {deserialize as deserializeGeoJson} from 'flatgeobuf/lib/cjs/geojson';\nimport {deserialize as deserializeGeneric} from 'flatgeobuf/lib/cjs/generic';\nimport {parseProperties as parsePropertiesBinary} from 'flatgeobuf/lib/cjs/generic/feature';\n\nimport {fromGeometry as binaryFromGeometry} from './binary-geometries';\nimport {FlatGeobufLoaderOptions} from './types';\nimport {GeoJSONRowTable, Feature} from '@loaders.gl/schema';\n\n// TODO: reproject binary features\nfunction binaryFromFeature(feature, header) {\n const geometry = feature.geometry();\n\n // FlatGeobuf files can only hold a single geometry type per file, otherwise\n // GeometryType is GeometryCollection\n // I believe geometry.type() is null (0) except when the geometry type isn't\n // known in the header?\n const geometryType = header.geometryType || geometry.type();\n const parsedGeometry = binaryFromGeometry(geometry, geometryType);\n parsedGeometry.properties = parsePropertiesBinary(feature, header.columns);\n\n // TODO: wrap binary data either in points, lines, or polygons key\n return parsedGeometry;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param arrayBuffer A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object\n */\nexport function parseFlatGeobuf(arrayBuffer: ArrayBuffer, options?: FlatGeobufLoaderOptions) {\n const shape = options?.gis?.format || options?.flatgeobuf?.shape;\n\n switch (shape) {\n case 'geojson-row-table': {\n const table: GeoJSONRowTable = {\n shape: 'geojson-row-table',\n data: parseFlatGeobufToGeoJSON(arrayBuffer, options)\n };\n return table;\n }\n case 'columnar-table': // binary + some JS arrays\n return {shape: 'columnar-table', data: parseFlatGeobufToBinary(arrayBuffer, options)};\n case 'geojson':\n return parseFlatGeobufToGeoJSON(arrayBuffer, options);\n case 'binary':\n return parseFlatGeobufToBinary(arrayBuffer, options);\n default:\n throw new Error(shape);\n }\n}\n\nfunction parseFlatGeobufToBinary(arrayBuffer: ArrayBuffer, options: FlatGeobufLoaderOptions) {\n // TODO: reproject binary features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const array = new Uint8Array(arrayBuffer);\n return deserializeGeneric(array, binaryFromFeature);\n}\n\nfunction parseFlatGeobufToGeoJSON(\n arrayBuffer: ArrayBuffer,\n options: FlatGeobufLoaderOptions\n): Feature[] {\n if (arrayBuffer.byteLength === 0) {\n return [];\n }\n\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const arr = new Uint8Array(arrayBuffer);\n\n let headerMeta;\n const {features} = deserializeGeoJson(arr, false, (header) => {\n headerMeta = header;\n });\n\n const crs = headerMeta && headerMeta.crs;\n let projection;\n if (reproject && crs) {\n // Constructing the projection may fail for some invalid WKT strings\n try {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n } catch (e) {\n // no op\n }\n }\n\n if (projection) {\n return transformGeoJsonCoords(features, (coords) => projection.project(coords));\n }\n\n return features;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param {ReadableStream} _ A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object iterator\n */\n// eslint-disable-next-line complexity\nexport function parseFlatGeobufInBatches(stream, options: FlatGeobufLoaderOptions) {\n if (options && options.gis && options.gis.format === 'binary') {\n return parseFlatGeobufInBatchesToBinary(stream, options);\n }\n\n return parseFlatGeobufInBatchesToGeoJSON(stream, options);\n}\n\nfunction parseFlatGeobufInBatchesToBinary(stream, options: FlatGeobufLoaderOptions) {\n // TODO: reproject binary streaming features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const iterator = deserializeGeneric(stream, binaryFromFeature);\n return iterator;\n}\n\n// eslint-disable-next-line complexity\nasync function* parseFlatGeobufInBatchesToGeoJSON(stream, options: FlatGeobufLoaderOptions) {\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n let headerMeta;\n const iterator = deserializeGeoJson(stream, false, (header) => {\n headerMeta = header;\n });\n\n let projection;\n let firstRecord = true;\n for await (const feature of iterator) {\n if (firstRecord) {\n const crs = headerMeta && headerMeta.crs;\n if (reproject && crs) {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n }\n\n firstRecord = false;\n }\n\n if (reproject && projection) {\n // eslint-disable-next-line\n yield transformGeoJsonCoords([feature], (coords) => projection.project(coords));\n } else {\n yield feature;\n }\n }\n}\n"],"file":"parse-flatgeobuf.js"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
@@ -9,7 +9,9 @@ export declare const FlatGeobufLoader: {
9
9
  mimeTypes: string[];
10
10
  category: string;
11
11
  options: {
12
- flatgeobuf: {};
12
+ flatgeobuf: {
13
+ shape: string;
14
+ };
13
15
  };
14
16
  };
15
17
  export declare const _typecheckFlatGeobufLoader: Loader;
@@ -1 +1 @@
1
- {"version":3,"file":"flatgeobuf-loader.d.ts","sourceRoot":"","sources":["../src/flatgeobuf-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAMrD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;CAY5B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAyB,CAAC"}
1
+ {"version":3,"file":"flatgeobuf-loader.d.ts","sourceRoot":"","sources":["../src/flatgeobuf-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAMrD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;CAe5B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAyB,CAAC"}
@@ -14,7 +14,10 @@ exports.FlatGeobufLoader = {
14
14
  mimeTypes: ['application/octet-stream'],
15
15
  category: 'geometry',
16
16
  options: {
17
- flatgeobuf: {}
17
+ flatgeobuf: {
18
+ // Set to GeoJSON for backwards compatibility
19
+ shape: 'geojson'
20
+ }
18
21
  }
19
22
  };
20
23
  exports._typecheckFlatGeobufLoader = exports.FlatGeobufLoader;
@@ -3246,16 +3246,33 @@
3246
3246
  }
3247
3247
 
3248
3248
  // ../worker-utils/src/lib/worker-farm/worker-body.ts
3249
+ function getParentPort() {
3250
+ let parentPort;
3251
+ try {
3252
+ eval("globalThis.parentPort = require('worker_threads').parentPort");
3253
+ parentPort = globalThis.parentPort;
3254
+ } catch {
3255
+ }
3256
+ return parentPort;
3257
+ }
3249
3258
  var onMessageWrapperMap = new Map();
3250
3259
  var WorkerBody = class {
3260
+ static inWorkerThread() {
3261
+ return typeof self !== "undefined" || Boolean(getParentPort());
3262
+ }
3251
3263
  static set onmessage(onMessage) {
3252
- self.onmessage = (message) => {
3253
- if (!isKnownMessage(message)) {
3254
- return;
3255
- }
3256
- const { type, payload } = message.data;
3264
+ function handleMessage(message) {
3265
+ const parentPort3 = getParentPort();
3266
+ const { type, payload } = parentPort3 ? message : message.data;
3257
3267
  onMessage(type, payload);
3258
- };
3268
+ }
3269
+ const parentPort2 = getParentPort();
3270
+ if (parentPort2) {
3271
+ parentPort2.on("message", handleMessage);
3272
+ parentPort2.on("exit", () => console.debug("Node worker closing"));
3273
+ } else {
3274
+ globalThis.onmessage = handleMessage;
3275
+ }
3259
3276
  }
3260
3277
  static addEventListener(onMessage) {
3261
3278
  let onMessageWrapper = onMessageWrapperMap.get(onMessage);
@@ -3264,22 +3281,36 @@
3264
3281
  if (!isKnownMessage(message)) {
3265
3282
  return;
3266
3283
  }
3267
- const { type, payload } = message.data;
3284
+ const parentPort3 = getParentPort();
3285
+ const { type, payload } = parentPort3 ? message : message.data;
3268
3286
  onMessage(type, payload);
3269
3287
  };
3270
3288
  }
3271
- self.addEventListener("message", onMessageWrapper);
3289
+ const parentPort2 = getParentPort();
3290
+ if (parentPort2) {
3291
+ console.error("not implemented");
3292
+ } else {
3293
+ globalThis.addEventListener("message", onMessageWrapper);
3294
+ }
3272
3295
  }
3273
3296
  static removeEventListener(onMessage) {
3274
3297
  const onMessageWrapper = onMessageWrapperMap.get(onMessage);
3275
3298
  onMessageWrapperMap.delete(onMessage);
3276
- self.removeEventListener("message", onMessageWrapper);
3299
+ const parentPort2 = getParentPort();
3300
+ if (parentPort2) {
3301
+ console.error("not implemented");
3302
+ } else {
3303
+ globalThis.removeEventListener("message", onMessageWrapper);
3304
+ }
3277
3305
  }
3278
3306
  static postMessage(type, payload) {
3279
- if (self) {
3280
- const data = { source: "loaders.gl", type, payload };
3281
- const transferList = getTransferList(payload);
3282
- self.postMessage(data, transferList);
3307
+ const data = { source: "loaders.gl", type, payload };
3308
+ const transferList = getTransferList(payload);
3309
+ const parentPort2 = getParentPort();
3310
+ if (parentPort2) {
3311
+ parentPort2.postMessage(data, transferList);
3312
+ } else {
3313
+ globalThis.postMessage(data, transferList);
3283
3314
  }
3284
3315
  }
3285
3316
  };
@@ -3291,7 +3322,7 @@
3291
3322
  // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
3292
3323
  var requestId = 0;
3293
3324
  function createLoaderWorker(loader) {
3294
- if (typeof self === "undefined") {
3325
+ if (!WorkerBody.inWorkerThread()) {
3295
3326
  return;
3296
3327
  }
3297
3328
  WorkerBody.onmessage = async (type, payload) => {
@@ -3363,7 +3394,7 @@
3363
3394
  }
3364
3395
 
3365
3396
  // src/flatgeobuf-loader.ts
3366
- var VERSION = true ? "3.1.7" : "latest";
3397
+ var VERSION = true ? "3.2.0-alpha.2" : "latest";
3367
3398
  var FlatGeobufLoader = {
3368
3399
  id: "flatgeobuf",
3369
3400
  name: "FlatGeobuf",
@@ -3374,7 +3405,9 @@
3374
3405
  mimeTypes: ["application/octet-stream"],
3375
3406
  category: "geometry",
3376
3407
  options: {
3377
- flatgeobuf: {}
3408
+ flatgeobuf: {
3409
+ shape: "geojson"
3410
+ }
3378
3411
  }
3379
3412
  };
3380
3413
 
@@ -8848,19 +8881,33 @@
8848
8881
  return parsedGeometry;
8849
8882
  }
8850
8883
  function parseFlatGeobuf(arrayBuffer, options) {
8851
- if (arrayBuffer.byteLength === 0) {
8852
- return [];
8853
- }
8854
- if (options && options.gis && options.gis.format === "binary") {
8855
- return parseFlatGeobufToBinary(arrayBuffer, options);
8884
+ const shape = options?.gis?.format || options?.flatgeobuf?.shape;
8885
+ switch (shape) {
8886
+ case "geojson-row-table": {
8887
+ const table = {
8888
+ shape: "geojson-row-table",
8889
+ data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
8890
+ };
8891
+ return table;
8892
+ }
8893
+ case "columnar-table":
8894
+ return { shape: "columnar-table", data: parseFlatGeobufToBinary(arrayBuffer, options) };
8895
+ case "geojson":
8896
+ return parseFlatGeobufToGeoJSON(arrayBuffer, options);
8897
+ case "binary":
8898
+ return parseFlatGeobufToBinary(arrayBuffer, options);
8899
+ default:
8900
+ throw new Error(shape);
8856
8901
  }
8857
- return parseFlatGeobufToGeoJSON(arrayBuffer, options);
8858
8902
  }
8859
8903
  function parseFlatGeobufToBinary(arrayBuffer, options) {
8860
- const arr = new Uint8Array(arrayBuffer);
8861
- return (0, import_generic.deserialize)(arr, binaryFromFeature);
8904
+ const array = new Uint8Array(arrayBuffer);
8905
+ return (0, import_generic.deserialize)(array, binaryFromFeature);
8862
8906
  }
8863
8907
  function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
8908
+ if (arrayBuffer.byteLength === 0) {
8909
+ return [];
8910
+ }
8864
8911
  const { reproject = false, _targetCrs = "WGS84" } = options && options.gis || {};
8865
8912
  const arr = new Uint8Array(arrayBuffer);
8866
8913
  let headerMeta;
package/dist/index.d.ts CHANGED
@@ -3,7 +3,10 @@ import { FlatGeobufLoader as FlatGeobufWorkerLoader } from './flatgeobuf-loader'
3
3
  import { parseFlatGeobuf, parseFlatGeobufInBatches } from './lib/parse-flatgeobuf';
4
4
  export { FlatGeobufWorkerLoader };
5
5
  export declare const FlatGeobufLoader: {
6
- parse: (arrayBuffer: any, options: any) => Promise<any>;
6
+ parse: (arrayBuffer: any, options: any) => Promise<any[] | import("@loaders.gl/schema").GeoJSONRowTable | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown> | {
7
+ shape: string;
8
+ data: any[] | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown>;
9
+ }>;
7
10
  parseSync: typeof parseFlatGeobuf;
8
11
  parseInBatchesFromStream: typeof parseFlatGeobufInBatches;
9
12
  binary: boolean;
@@ -16,7 +19,9 @@ export declare const FlatGeobufLoader: {
16
19
  mimeTypes: string[];
17
20
  category: string;
18
21
  options: {
19
- flatgeobuf: {};
22
+ flatgeobuf: {
23
+ shape: string;
24
+ };
20
25
  };
21
26
  };
22
27
  export declare const _typecheckFlatGeobufLoader: LoaderWithParser;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAC,gBAAgB,IAAI,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAC,eAAe,EAAE,wBAAwB,EAAC,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EAAC,sBAAsB,EAAC,CAAC;AAEhC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAM5B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAC,gBAAgB,IAAI,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAC,eAAe,EAAE,wBAAwB,EAAC,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EAAC,sBAAsB,EAAC,CAAC;AAEhC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;CAM5B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAmC,CAAC"}
@@ -1,3 +1,8 @@
1
- export declare function parseFlatGeobuf(arrayBuffer: any, options: any): any;
2
- export declare function parseFlatGeobufInBatches(stream: any, options: any): any[] | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown> | AsyncGenerator<any, void, unknown>;
1
+ import { FlatGeobufLoaderOptions } from './types';
2
+ import { GeoJSONRowTable } from '@loaders.gl/schema';
3
+ export declare function parseFlatGeobuf(arrayBuffer: ArrayBuffer, options?: FlatGeobufLoaderOptions): any[] | GeoJSONRowTable | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown> | {
4
+ shape: string;
5
+ data: any[] | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown>;
6
+ };
7
+ export declare function parseFlatGeobufInBatches(stream: any, options: FlatGeobufLoaderOptions): any[] | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown> | AsyncGenerator<any, void, unknown>;
3
8
  //# sourceMappingURL=parse-flatgeobuf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-flatgeobuf.d.ts","sourceRoot":"","sources":["../../src/lib/parse-flatgeobuf.ts"],"names":[],"mappings":"AAgCA,wBAAgB,eAAe,CAAC,WAAW,KAAA,EAAE,OAAO,KAAA,OAUnD;AA6CD,wBAAgB,wBAAwB,CAAC,MAAM,KAAA,EAAE,OAAO,KAAA,oIAMvD"}
1
+ {"version":3,"file":"parse-flatgeobuf.d.ts","sourceRoot":"","sources":["../../src/lib/parse-flatgeobuf.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,uBAAuB,EAAC,MAAM,SAAS,CAAC;AAChD,OAAO,EAAC,eAAe,EAAU,MAAM,oBAAoB,CAAC;AAwB5D,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,uBAAuB;;;EAoB1F;AAoDD,wBAAgB,wBAAwB,CAAC,MAAM,KAAA,EAAE,OAAO,EAAE,uBAAuB,oIAMhF"}
@@ -28,22 +28,36 @@ function binaryFromFeature(feature, header) {
28
28
  * @return A GeoJSON geometry object
29
29
  */
30
30
  function parseFlatGeobuf(arrayBuffer, options) {
31
- if (arrayBuffer.byteLength === 0) {
32
- return [];
33
- }
34
- if (options && options.gis && options.gis.format === 'binary') {
35
- return parseFlatGeobufToBinary(arrayBuffer, options);
31
+ const shape = options?.gis?.format || options?.flatgeobuf?.shape;
32
+ switch (shape) {
33
+ case 'geojson-row-table': {
34
+ const table = {
35
+ shape: 'geojson-row-table',
36
+ data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
37
+ };
38
+ return table;
39
+ }
40
+ case 'columnar-table': // binary + some JS arrays
41
+ return { shape: 'columnar-table', data: parseFlatGeobufToBinary(arrayBuffer, options) };
42
+ case 'geojson':
43
+ return parseFlatGeobufToGeoJSON(arrayBuffer, options);
44
+ case 'binary':
45
+ return parseFlatGeobufToBinary(arrayBuffer, options);
46
+ default:
47
+ throw new Error(shape);
36
48
  }
37
- return parseFlatGeobufToGeoJSON(arrayBuffer, options);
38
49
  }
39
50
  exports.parseFlatGeobuf = parseFlatGeobuf;
40
51
  function parseFlatGeobufToBinary(arrayBuffer, options) {
41
52
  // TODO: reproject binary features
42
53
  // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
43
- const arr = new Uint8Array(arrayBuffer);
44
- return (0, generic_1.deserialize)(arr, binaryFromFeature);
54
+ const array = new Uint8Array(arrayBuffer);
55
+ return (0, generic_1.deserialize)(array, binaryFromFeature);
45
56
  }
46
57
  function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
58
+ if (arrayBuffer.byteLength === 0) {
59
+ return [];
60
+ }
47
61
  const { reproject = false, _targetCrs = 'WGS84' } = (options && options.gis) || {};
48
62
  const arr = new Uint8Array(arrayBuffer);
49
63
  let headerMeta;
@@ -0,0 +1,13 @@
1
+ import type { LoaderOptions } from '@loaders.gl/loader-utils';
2
+ export declare type FlatGeobufLoaderOptions = LoaderOptions & {
3
+ flatgeobuf?: {
4
+ shape?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';
5
+ };
6
+ gis?: {
7
+ reproject?: boolean;
8
+ _targetCrs?: string;
9
+ /** @deprecated Use options.flatgeobuf.shape */
10
+ format?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';
11
+ };
12
+ };
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE5D,oBAAY,uBAAuB,GAAG,aAAa,GAAG;IACpD,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,SAAS,GAAG,QAAQ,CAAC;KACvE,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,+CAA+C;QAC/C,MAAM,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,SAAS,GAAG,QAAQ,CAAC;KACxE,CAAC;CACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@loaders.gl/flatgeobuf",
3
3
  "description": "Loader for FlatGeobuf",
4
- "version": "3.1.7",
4
+ "version": "3.2.0-alpha.2",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://github.com/uber-web/loaders.gl"
11
+ "url": "https://github.com/visgl/loaders.gl"
12
12
  },
13
13
  "keywords": [
14
14
  "geometry",
@@ -32,10 +32,10 @@
32
32
  "build-worker": "esbuild src/workers/flatgeobuf-worker.ts --bundle --outfile=dist/flatgeobuf-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
33
33
  },
34
34
  "dependencies": {
35
- "@loaders.gl/gis": "4.0.0-alpha.1",
36
- "@loaders.gl/loader-utils": "3.1.7",
35
+ "@loaders.gl/gis": "3.2.0-alpha.2",
36
+ "@loaders.gl/loader-utils": "3.2.0-alpha.2",
37
37
  "@math.gl/proj4": "^3.3.1",
38
38
  "flatgeobuf": "3.6.5"
39
39
  },
40
- "gitHead": "e48d29e426e9f23879875763e73efc5c58345be1"
40
+ "gitHead": "52a602739cbfce60fc314f474efc984d199dff78"
41
41
  }
@@ -14,7 +14,10 @@ export const FlatGeobufLoader = {
14
14
  mimeTypes: ['application/octet-stream'],
15
15
  category: 'geometry',
16
16
  options: {
17
- flatgeobuf: {}
17
+ flatgeobuf: {
18
+ // Set to GeoJSON for backwards compatibility
19
+ shape: 'geojson'
20
+ }
18
21
  }
19
22
  };
20
23
 
@@ -7,6 +7,8 @@ import {deserialize as deserializeGeneric} from 'flatgeobuf/lib/cjs/generic';
7
7
  import {parseProperties as parsePropertiesBinary} from 'flatgeobuf/lib/cjs/generic/feature';
8
8
 
9
9
  import {fromGeometry as binaryFromGeometry} from './binary-geometries';
10
+ import {FlatGeobufLoaderOptions} from './types';
11
+ import {GeoJSONRowTable, Feature} from '@loaders.gl/schema';
10
12
 
11
13
  // TODO: reproject binary features
12
14
  function binaryFromFeature(feature, header) {
@@ -30,27 +32,44 @@ function binaryFromFeature(feature, header) {
30
32
  * @param arrayBuffer A FlatGeobuf arrayBuffer
31
33
  * @return A GeoJSON geometry object
32
34
  */
33
- export function parseFlatGeobuf(arrayBuffer, options) {
34
- if (arrayBuffer.byteLength === 0) {
35
- return [];
36
- }
37
-
38
- if (options && options.gis && options.gis.format === 'binary') {
39
- return parseFlatGeobufToBinary(arrayBuffer, options);
35
+ export function parseFlatGeobuf(arrayBuffer: ArrayBuffer, options?: FlatGeobufLoaderOptions) {
36
+ const shape = options?.gis?.format || options?.flatgeobuf?.shape;
37
+
38
+ switch (shape) {
39
+ case 'geojson-row-table': {
40
+ const table: GeoJSONRowTable = {
41
+ shape: 'geojson-row-table',
42
+ data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
43
+ };
44
+ return table;
45
+ }
46
+ case 'columnar-table': // binary + some JS arrays
47
+ return {shape: 'columnar-table', data: parseFlatGeobufToBinary(arrayBuffer, options)};
48
+ case 'geojson':
49
+ return parseFlatGeobufToGeoJSON(arrayBuffer, options);
50
+ case 'binary':
51
+ return parseFlatGeobufToBinary(arrayBuffer, options);
52
+ default:
53
+ throw new Error(shape);
40
54
  }
41
-
42
- return parseFlatGeobufToGeoJSON(arrayBuffer, options);
43
55
  }
44
56
 
45
- function parseFlatGeobufToBinary(arrayBuffer, options) {
57
+ function parseFlatGeobufToBinary(arrayBuffer: ArrayBuffer, options: FlatGeobufLoaderOptions) {
46
58
  // TODO: reproject binary features
47
59
  // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
48
60
 
49
- const arr = new Uint8Array(arrayBuffer);
50
- return deserializeGeneric(arr, binaryFromFeature);
61
+ const array = new Uint8Array(arrayBuffer);
62
+ return deserializeGeneric(array, binaryFromFeature);
51
63
  }
52
64
 
53
- function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
65
+ function parseFlatGeobufToGeoJSON(
66
+ arrayBuffer: ArrayBuffer,
67
+ options: FlatGeobufLoaderOptions
68
+ ): Feature[] {
69
+ if (arrayBuffer.byteLength === 0) {
70
+ return [];
71
+ }
72
+
54
73
  const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
55
74
 
56
75
  const arr = new Uint8Array(arrayBuffer);
@@ -85,7 +104,7 @@ function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
85
104
  * @return A GeoJSON geometry object iterator
86
105
  */
87
106
  // eslint-disable-next-line complexity
88
- export function parseFlatGeobufInBatches(stream, options) {
107
+ export function parseFlatGeobufInBatches(stream, options: FlatGeobufLoaderOptions) {
89
108
  if (options && options.gis && options.gis.format === 'binary') {
90
109
  return parseFlatGeobufInBatchesToBinary(stream, options);
91
110
  }
@@ -93,7 +112,7 @@ export function parseFlatGeobufInBatches(stream, options) {
93
112
  return parseFlatGeobufInBatchesToGeoJSON(stream, options);
94
113
  }
95
114
 
96
- function parseFlatGeobufInBatchesToBinary(stream, options) {
115
+ function parseFlatGeobufInBatchesToBinary(stream, options: FlatGeobufLoaderOptions) {
97
116
  // TODO: reproject binary streaming features
98
117
  // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
99
118
 
@@ -102,7 +121,7 @@ function parseFlatGeobufInBatchesToBinary(stream, options) {
102
121
  }
103
122
 
104
123
  // eslint-disable-next-line complexity
105
- async function* parseFlatGeobufInBatchesToGeoJSON(stream, options) {
124
+ async function* parseFlatGeobufInBatchesToGeoJSON(stream, options: FlatGeobufLoaderOptions) {
106
125
  const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
107
126
 
108
127
  let headerMeta;
@@ -0,0 +1,13 @@
1
+ import type {LoaderOptions} from '@loaders.gl/loader-utils';
2
+
3
+ export type FlatGeobufLoaderOptions = LoaderOptions & {
4
+ flatgeobuf?: {
5
+ shape?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';
6
+ };
7
+ gis?: {
8
+ reproject?: boolean;
9
+ _targetCrs?: string;
10
+ /** @deprecated Use options.flatgeobuf.shape */
11
+ format?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';
12
+ };
13
+ };