@loaders.gl/arrow 4.1.0-alpha.1 → 4.1.0-alpha.10

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.
Files changed (98) hide show
  1. package/dist/arrow-loader.d.ts +1 -0
  2. package/dist/arrow-loader.d.ts.map +1 -1
  3. package/dist/arrow-loader.js +1 -1
  4. package/dist/arrow-loader.js.map +1 -1
  5. package/dist/arrow-worker.js +5 -2
  6. package/dist/arrow-writer.js +1 -1
  7. package/dist/arrow-writer.js.map +1 -1
  8. package/dist/dist.dev.js +117 -50
  9. package/dist/geoarrow/convert-geoarrow-to-binary-geometry.d.ts +4 -2
  10. package/dist/geoarrow/convert-geoarrow-to-binary-geometry.d.ts.map +1 -1
  11. package/dist/geoarrow/convert-geoarrow-to-binary-geometry.js +25 -23
  12. package/dist/geoarrow/convert-geoarrow-to-binary-geometry.js.map +1 -1
  13. package/dist/geoarrow/convert-geoarrow-to-geojson-geometry.d.ts.map +1 -1
  14. package/dist/geoarrow/convert-geoarrow-to-geojson-geometry.js.map +1 -1
  15. package/dist/geoarrow/get-arrow-bounds.d.ts.map +1 -1
  16. package/dist/geoarrow/get-arrow-bounds.js.map +1 -1
  17. package/dist/geoarrow-loader.d.ts.map +1 -1
  18. package/dist/geoarrow-loader.js.map +1 -1
  19. package/dist/geoarrow-writer.js +1 -1
  20. package/dist/geoarrow-writer.js.map +1 -1
  21. package/dist/index.cjs +77 -17
  22. package/dist/index.d.ts +4 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +3 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/lib/arrow-table-batch.d.ts.map +1 -1
  27. package/dist/lib/arrow-table-batch.js.map +1 -1
  28. package/dist/lib/arrow-table.d.ts.map +1 -1
  29. package/dist/lib/arrow-table.js.map +1 -1
  30. package/dist/lib/encode-arrow.d.ts.map +1 -1
  31. package/dist/lib/encode-arrow.js.map +1 -1
  32. package/dist/lib/encode-geoarrow.d.ts.map +1 -1
  33. package/dist/lib/encode-geoarrow.js.map +1 -1
  34. package/dist/parsers/parse-arrow-in-batches.d.ts +2 -1
  35. package/dist/parsers/parse-arrow-in-batches.d.ts.map +1 -1
  36. package/dist/parsers/parse-arrow-in-batches.js +8 -1
  37. package/dist/parsers/parse-arrow-in-batches.js.map +1 -1
  38. package/dist/parsers/parse-arrow-sync.d.ts.map +1 -1
  39. package/dist/parsers/parse-arrow-sync.js.map +1 -1
  40. package/dist/parsers/parse-geoarrow-in-batches.d.ts.map +1 -1
  41. package/dist/parsers/parse-geoarrow-in-batches.js.map +1 -1
  42. package/dist/parsers/parse-geoarrow-sync.d.ts.map +1 -1
  43. package/dist/parsers/parse-geoarrow-sync.js.map +1 -1
  44. package/dist/schema/arrow-type-utils.d.ts.map +1 -1
  45. package/dist/schema/arrow-type-utils.js.map +1 -1
  46. package/dist/schema/convert-arrow-schema.d.ts.map +1 -1
  47. package/dist/schema/convert-arrow-schema.js.map +1 -1
  48. package/dist/tables/convert-arrow-to-columnar-table.d.ts.map +1 -1
  49. package/dist/tables/convert-arrow-to-columnar-table.js.map +1 -1
  50. package/dist/tables/convert-arrow-to-geojson-table.d.ts.map +1 -1
  51. package/dist/tables/convert-arrow-to-geojson-table.js.map +1 -1
  52. package/dist/tables/convert-columnar-to-row-table.d.ts.map +1 -1
  53. package/dist/tables/convert-columnar-to-row-table.js.map +1 -1
  54. package/dist/tables/convert-table-to-arrow.d.ts.map +1 -1
  55. package/dist/tables/convert-table-to-arrow.js.map +1 -1
  56. package/dist/triangulate-on-worker.d.ts +39 -5
  57. package/dist/triangulate-on-worker.d.ts.map +1 -1
  58. package/dist/triangulate-on-worker.js +12 -2
  59. package/dist/triangulate-on-worker.js.map +1 -1
  60. package/dist/triangulation-worker.js +11672 -10
  61. package/dist/types.d.ts.map +1 -1
  62. package/dist/types.js.map +1 -1
  63. package/dist/workers/arrow-worker.js.map +1 -1
  64. package/dist/workers/hard-clone.d.ts +23 -0
  65. package/dist/workers/hard-clone.d.ts.map +1 -0
  66. package/dist/workers/hard-clone.js +57 -0
  67. package/dist/workers/hard-clone.js.map +1 -0
  68. package/dist/workers/triangulation-worker-node.d.ts.map +1 -1
  69. package/dist/workers/triangulation-worker-node.js.map +1 -1
  70. package/dist/workers/triangulation-worker.js +34 -1
  71. package/dist/workers/triangulation-worker.js.map +1 -1
  72. package/package.json +8 -8
  73. package/src/arrow-loader.ts +3 -1
  74. package/src/geoarrow/convert-geoarrow-to-binary-geometry.ts +28 -20
  75. package/src/geoarrow/convert-geoarrow-to-geojson-geometry.ts +2 -1
  76. package/src/geoarrow/get-arrow-bounds.ts +2 -1
  77. package/src/geoarrow-loader.ts +2 -1
  78. package/src/index.ts +10 -3
  79. package/src/lib/arrow-table-batch.ts +2 -1
  80. package/src/lib/arrow-table.ts +2 -1
  81. package/src/lib/encode-arrow.ts +2 -1
  82. package/src/lib/encode-geoarrow.ts +2 -1
  83. package/src/parsers/parse-arrow-in-batches.ts +9 -2
  84. package/src/parsers/parse-arrow-sync.ts +2 -1
  85. package/src/parsers/parse-geoarrow-in-batches.ts +2 -1
  86. package/src/parsers/parse-geoarrow-sync.ts +2 -1
  87. package/src/schema/arrow-type-utils.ts +2 -1
  88. package/src/schema/convert-arrow-schema.ts +2 -1
  89. package/src/tables/convert-arrow-to-columnar-table.ts +2 -1
  90. package/src/tables/convert-arrow-to-geojson-table.ts +2 -1
  91. package/src/tables/convert-columnar-to-row-table.ts +2 -1
  92. package/src/tables/convert-table-to-arrow.ts +2 -1
  93. package/src/triangulate-on-worker.ts +52 -8
  94. package/src/types.ts +2 -1
  95. package/src/workers/arrow-worker.ts +2 -1
  96. package/src/workers/hard-clone.ts +162 -0
  97. package/src/workers/triangulation-worker-node.ts +2 -1
  98. package/src/workers/triangulation-worker.ts +58 -3
@@ -4,6 +4,7 @@ import type { ArrowTable } from './lib/arrow-table';
4
4
  export type ArrowLoaderOptions = LoaderOptions & {
5
5
  arrow?: {
6
6
  shape: 'arrow-table' | 'columnar-table' | 'array-row-table' | 'object-row-table';
7
+ batchDebounceMs?: number;
7
8
  };
8
9
  };
9
10
  /** ArrowJS table loader */
@@ -1 +1 @@
1
- {"version":3,"file":"arrow-loader.d.ts","sourceRoot":"","sources":["../src/arrow-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAQlD,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;KAClF,CAAC;CACH,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,kBAAkB,CAoB3E,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,WAAW,EAAE,gBAAgB,CACxC,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,EAC3D,eAAe,EACf,kBAAkB,CAQnB,CAAC"}
1
+ {"version":3,"file":"arrow-loader.d.ts","sourceRoot":"","sources":["../src/arrow-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAQlD,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;QACjF,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,kBAAkB,CAoB3E,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,WAAW,EAAE,gBAAgB,CACxC,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,EAC3D,eAAe,EACf,kBAAkB,CAQnB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { parseArrowSync } from "./parsers/parse-arrow-sync.js";
2
2
  import { parseArrowInBatches } from "./parsers/parse-arrow-in-batches.js";
3
- const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
3
+ const VERSION = typeof "4.1.0-alpha.10" !== 'undefined' ? "4.1.0-alpha.10" : 'latest';
4
4
  export const ArrowWorkerLoader = {
5
5
  name: 'Apache Arrow',
6
6
  id: 'arrow',
@@ -1 +1 @@
1
- {"version":3,"file":"arrow-loader.js","names":["parseArrowSync","parseArrowInBatches","VERSION","__VERSION__","ArrowWorkerLoader","name","id","module","version","category","extensions","mimeTypes","binary","tests","options","arrow","shape","ArrowLoader","parse","arraybuffer","parseSync","parseInBatches"],"sources":["../src/arrow-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {\n ArrayRowTable,\n ArrowTableBatch,\n ColumnarTable,\n ObjectRowTable\n} from '@loaders.gl/schema';\nimport type {ArrowTable} from './lib/arrow-table';\nimport {parseArrowSync} from './parsers/parse-arrow-sync';\nimport {parseArrowInBatches} from './parsers/parse-arrow-in-batches';\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 type ArrowLoaderOptions = LoaderOptions & {\n arrow?: {\n shape: 'arrow-table' | 'columnar-table' | 'array-row-table' | 'object-row-table';\n };\n};\n\n/** ArrowJS table loader */\nexport const ArrowWorkerLoader: Loader<ArrowTable, never, ArrowLoaderOptions> = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n // worker: true,\n category: 'table',\n extensions: ['arrow', 'feather'],\n mimeTypes: [\n 'application/vnd.apache.arrow.file',\n 'application/vnd.apache.arrow.stream',\n 'application/octet-stream'\n ],\n binary: true,\n tests: ['ARROW'],\n options: {\n arrow: {\n shape: 'columnar-table'\n }\n }\n};\n\n/** ArrowJS table loader */\nexport const ArrowLoader: LoaderWithParser<\n ArrowTable | ColumnarTable | ObjectRowTable | ArrayRowTable,\n ArrowTableBatch,\n ArrowLoaderOptions\n> = {\n ...ArrowWorkerLoader,\n parse: async (arraybuffer: ArrayBuffer, options?: ArrowLoaderOptions) =>\n parseArrowSync(arraybuffer, options?.arrow),\n parseSync: (arraybuffer: ArrayBuffer, options?: ArrowLoaderOptions) =>\n parseArrowSync(arraybuffer, options?.arrow),\n parseInBatches: parseArrowInBatches\n};\n"],"mappings":"SAWQA,cAAc;AAAA,SACdC,mBAAmB;AAI3B,MAAMC,OAAO,GAAG,OAAOC,WAAW,KAAK,WAAW,GAAGA,WAAW,GAAG,QAAQ;AAS3E,OAAO,MAAMC,iBAAgE,GAAG;EAC9EC,IAAI,EAAE,cAAc;EACpBC,EAAE,EAAE,OAAO;EACXC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAEN,OAAO;EAEhBO,QAAQ,EAAE,OAAO;EACjBC,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;EAChCC,SAAS,EAAE,CACT,mCAAmC,EACnC,qCAAqC,EACrC,0BAA0B,CAC3B;EACDC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,OAAO,CAAC;EAChBC,OAAO,EAAE;IACPC,KAAK,EAAE;MACLC,KAAK,EAAE;IACT;EACF;AACF,CAAC;AAGD,OAAO,MAAMC,WAIZ,GAAG;EACF,GAAGb,iBAAiB;EACpBc,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEL,OAA4B,KAClEd,cAAc,CAACmB,WAAW,EAAEL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,KAAK,CAAC;EAC7CK,SAAS,EAAEA,CAACD,WAAwB,EAAEL,OAA4B,KAChEd,cAAc,CAACmB,WAAW,EAAEL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,KAAK,CAAC;EAC7CM,cAAc,EAAEpB;AAClB,CAAC"}
1
+ {"version":3,"file":"arrow-loader.js","names":["parseArrowSync","parseArrowInBatches","VERSION","ArrowWorkerLoader","name","id","module","version","category","extensions","mimeTypes","binary","tests","options","arrow","shape","ArrowLoader","parse","arraybuffer","parseSync","parseInBatches"],"sources":["../src/arrow-loader.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {\n ArrayRowTable,\n ArrowTableBatch,\n ColumnarTable,\n ObjectRowTable\n} from '@loaders.gl/schema';\nimport type {ArrowTable} from './lib/arrow-table';\nimport {parseArrowSync} from './parsers/parse-arrow-sync';\nimport {parseArrowInBatches} from './parsers/parse-arrow-in-batches';\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 type ArrowLoaderOptions = LoaderOptions & {\n arrow?: {\n shape: 'arrow-table' | 'columnar-table' | 'array-row-table' | 'object-row-table';\n batchDebounceMs?: number;\n };\n};\n\n/** ArrowJS table loader */\nexport const ArrowWorkerLoader: Loader<ArrowTable, never, ArrowLoaderOptions> = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n // worker: true,\n category: 'table',\n extensions: ['arrow', 'feather'],\n mimeTypes: [\n 'application/vnd.apache.arrow.file',\n 'application/vnd.apache.arrow.stream',\n 'application/octet-stream'\n ],\n binary: true,\n tests: ['ARROW'],\n options: {\n arrow: {\n shape: 'columnar-table'\n }\n }\n};\n\n/** ArrowJS table loader */\nexport const ArrowLoader: LoaderWithParser<\n ArrowTable | ColumnarTable | ObjectRowTable | ArrayRowTable,\n ArrowTableBatch,\n ArrowLoaderOptions\n> = {\n ...ArrowWorkerLoader,\n parse: async (arraybuffer: ArrayBuffer, options?: ArrowLoaderOptions) =>\n parseArrowSync(arraybuffer, options?.arrow),\n parseSync: (arraybuffer: ArrayBuffer, options?: ArrowLoaderOptions) =>\n parseArrowSync(arraybuffer, options?.arrow),\n parseInBatches: parseArrowInBatches\n};\n"],"mappings":"SAYQA,cAAc;AAAA,SACdC,mBAAmB;AAI3B,MAAMC,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAU3E,OAAO,MAAMC,iBAAgE,GAAG;EAC9EC,IAAI,EAAE,cAAc;EACpBC,EAAE,EAAE,OAAO;EACXC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAEL,OAAO;EAEhBM,QAAQ,EAAE,OAAO;EACjBC,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;EAChCC,SAAS,EAAE,CACT,mCAAmC,EACnC,qCAAqC,EACrC,0BAA0B,CAC3B;EACDC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,OAAO,CAAC;EAChBC,OAAO,EAAE;IACPC,KAAK,EAAE;MACLC,KAAK,EAAE;IACT;EACF;AACF,CAAC;AAGD,OAAO,MAAMC,WAIZ,GAAG;EACF,GAAGb,iBAAiB;EACpBc,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEL,OAA4B,KAClEb,cAAc,CAACkB,WAAW,EAAEL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,KAAK,CAAC;EAC7CK,SAAS,EAAEA,CAACD,WAAwB,EAAEL,OAA4B,KAChEb,cAAc,CAACkB,WAAW,EAAEL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,KAAK,CAAC;EAC7CM,cAAc,EAAEnB;AAClB,CAAC"}
@@ -12154,11 +12154,14 @@ return true;`);
12154
12154
  }
12155
12155
 
12156
12156
  // src/parsers/parse-arrow-in-batches.ts
12157
- function parseArrowInBatches(asyncIterator) {
12157
+ function parseArrowInBatches(asyncIterator, options) {
12158
12158
  async function* makeArrowAsyncIterator() {
12159
12159
  const readers = RecordBatchReader.readAll(asyncIterator);
12160
12160
  for await (const reader of readers) {
12161
12161
  for await (const recordBatch of reader) {
12162
+ if (options?.arrow?.batchDebounceMs !== void 0 && options?.arrow?.batchDebounceMs > 0) {
12163
+ await new Promise((resolve) => setTimeout(resolve, options.arrow?.batchDebounceMs || 0));
12164
+ }
12162
12165
  const arrowTabledBatch = {
12163
12166
  shape: "arrow-table",
12164
12167
  batchType: "data",
@@ -12174,7 +12177,7 @@ return true;`);
12174
12177
  }
12175
12178
 
12176
12179
  // src/arrow-loader.ts
12177
- var VERSION = true ? "4.1.0-alpha.1" : "latest";
12180
+ var VERSION = true ? "4.1.0-alpha.10" : "latest";
12178
12181
  var ArrowWorkerLoader = {
12179
12182
  name: "Apache Arrow",
12180
12183
  id: "arrow",
@@ -1,5 +1,5 @@
1
1
  import { encodeArrowSync } from "./lib/encode-arrow.js";
2
- const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
2
+ const VERSION = typeof "4.1.0-alpha.10" !== 'undefined' ? "4.1.0-alpha.10" : 'latest';
3
3
  export const ArrowWriter = {
4
4
  name: 'Apache Arrow',
5
5
  id: 'arrow',
@@ -1 +1 @@
1
- {"version":3,"file":"arrow-writer.js","names":["encodeArrowSync","VERSION","__VERSION__","ArrowWriter","name","id","module","version","extensions","mimeTypes","binary","options","encode","encodeArrow","data","encodeSync"],"sources":["../src/arrow-writer.ts"],"sourcesContent":["// import type {} from '@loaders.gl/loader-utils';\n\nimport type {WriterWithEncoder, WriterOptions} from '@loaders.gl/loader-utils';\nimport {ColumnarTable} from './lib/encode-arrow';\nimport {encodeArrowSync} from './lib/encode-arrow';\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\ntype ArrowWriterOptions = WriterOptions & {\n arrow?: {};\n};\n\n/** Apache Arrow writer */\nexport const ArrowWriter: WriterWithEncoder<ColumnarTable, never, ArrowWriterOptions> = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n extensions: ['arrow', 'feather'],\n mimeTypes: [\n 'application/vnd.apache.arrow.file',\n 'application/vnd.apache.arrow.stream',\n 'application/octet-stream'\n ],\n binary: true,\n options: {},\n encode: async function encodeArrow(data, options?): Promise<ArrayBuffer> {\n return encodeArrowSync(data);\n },\n encodeSync(data, options?) {\n return encodeArrowSync(data);\n }\n};\n"],"mappings":"SAIQA,eAAe;AAIvB,MAAMC,OAAO,GAAG,OAAOC,WAAW,KAAK,WAAW,GAAGA,WAAW,GAAG,QAAQ;AAO3E,OAAO,MAAMC,WAAwE,GAAG;EACtFC,IAAI,EAAE,cAAc;EACpBC,EAAE,EAAE,OAAO;EACXC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAEN,OAAO;EAChBO,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;EAChCC,SAAS,EAAE,CACT,mCAAmC,EACnC,qCAAqC,EACrC,0BAA0B,CAC3B;EACDC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE,CAAC,CAAC;EACXC,MAAM,EAAE,eAAeC,WAAWA,CAACC,IAAI,EAAEH,OAAQ,EAAwB;IACvE,OAAOX,eAAe,CAACc,IAAI,CAAC;EAC9B,CAAC;EACDC,UAAUA,CAACD,IAAI,EAAEH,OAAQ,EAAE;IACzB,OAAOX,eAAe,CAACc,IAAI,CAAC;EAC9B;AACF,CAAC"}
1
+ {"version":3,"file":"arrow-writer.js","names":["encodeArrowSync","VERSION","ArrowWriter","name","id","module","version","extensions","mimeTypes","binary","options","encode","encodeArrow","data","encodeSync"],"sources":["../src/arrow-writer.ts"],"sourcesContent":["// import type {} from '@loaders.gl/loader-utils';\n\nimport type {WriterWithEncoder, WriterOptions} from '@loaders.gl/loader-utils';\nimport {ColumnarTable} from './lib/encode-arrow';\nimport {encodeArrowSync} from './lib/encode-arrow';\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\ntype ArrowWriterOptions = WriterOptions & {\n arrow?: {};\n};\n\n/** Apache Arrow writer */\nexport const ArrowWriter: WriterWithEncoder<ColumnarTable, never, ArrowWriterOptions> = {\n name: 'Apache Arrow',\n id: 'arrow',\n module: 'arrow',\n version: VERSION,\n extensions: ['arrow', 'feather'],\n mimeTypes: [\n 'application/vnd.apache.arrow.file',\n 'application/vnd.apache.arrow.stream',\n 'application/octet-stream'\n ],\n binary: true,\n options: {},\n encode: async function encodeArrow(data, options?): Promise<ArrayBuffer> {\n return encodeArrowSync(data);\n },\n encodeSync(data, options?) {\n return encodeArrowSync(data);\n }\n};\n"],"mappings":"SAIQA,eAAe;AAIvB,MAAMC,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAO3E,OAAO,MAAMC,WAAwE,GAAG;EACtFC,IAAI,EAAE,cAAc;EACpBC,EAAE,EAAE,OAAO;EACXC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;EAChCC,SAAS,EAAE,CACT,mCAAmC,EACnC,qCAAqC,EACrC,0BAA0B,CAC3B;EACDC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE,CAAC,CAAC;EACXC,MAAM,EAAE,eAAeC,WAAWA,CAACC,IAAI,EAAEH,OAAQ,EAAwB;IACvE,OAAOV,eAAe,CAACa,IAAI,CAAC;EAC9B,CAAC;EACDC,UAAUA,CAACD,IAAI,EAAEH,OAAQ,EAAE;IACzB,OAAOV,eAAe,CAACa,IAAI,CAAC;EAC9B;AACF,CAAC"}
package/dist/dist.dev.js CHANGED
@@ -30,7 +30,6 @@ var __exports__ = (() => {
30
30
  ArrowLoader: () => ArrowLoader,
31
31
  ArrowWorkerLoader: () => ArrowWorkerLoader,
32
32
  ArrowWriter: () => ArrowWriter,
33
- BINARY_GEOMETRY_TEMPLATE: () => BINARY_GEOMETRY_TEMPLATE,
34
33
  GeoArrowLoader: () => GeoArrowLoader,
35
34
  GeoArrowWorkerLoader: () => GeoArrowWorkerLoader,
36
35
  TriangulationWorker: () => TriangulationWorker,
@@ -42,8 +41,11 @@ var __exports__ = (() => {
42
41
  deserializeArrowType: () => deserializeArrowType,
43
42
  getArrowType: () => getArrowType,
44
43
  getBinaryGeometriesFromArrow: () => getBinaryGeometriesFromArrow,
44
+ getBinaryGeometryTemplate: () => getBinaryGeometryTemplate,
45
45
  getMeanCentersFromBinaryGeometries: () => getMeanCentersFromBinaryGeometries,
46
46
  getTriangleIndices: () => getTriangleIndices,
47
+ hardClone: () => hardClone,
48
+ parseGeoArrowOnWorker: () => parseGeoArrowOnWorker,
47
49
  parseGeometryFromArrow: () => parseGeometryFromArrow,
48
50
  serializeArrowField: () => serializeArrowField,
49
51
  serializeArrowMetadata: () => serializeArrowMetadata,
@@ -77,6 +79,7 @@ var __exports__ = (() => {
77
79
  if (Number.isFinite(cursor)) {
78
80
  this.cursor = cursor;
79
81
  }
82
+ this.shape = "array-row-table";
80
83
  this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);
81
84
  this.rows[this.length] = row;
82
85
  this.length++;
@@ -85,6 +88,7 @@ var __exports__ = (() => {
85
88
  if (Number.isFinite(cursor)) {
86
89
  this.cursor = cursor;
87
90
  }
91
+ this.shape = "object-row-table";
88
92
  this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);
89
93
  this.rows[this.length] = row;
90
94
  this.length++;
@@ -97,7 +101,7 @@ var __exports__ = (() => {
97
101
  rows = rows.slice(0, this.length);
98
102
  this.rows = null;
99
103
  const batch = {
100
- shape: this.options.shape,
104
+ shape: this.shape || "array-row-table",
101
105
  batchType: "data",
102
106
  data: rows,
103
107
  length: this.length,
@@ -113,12 +117,16 @@ var __exports__ = (() => {
113
117
  if (!arrayRow) {
114
118
  throw new Error("null row");
115
119
  }
116
- if (!headers) {
117
- throw new Error("no headers");
118
- }
119
120
  const objectRow = {};
120
- for (let i = 0; i < headers.length; i++) {
121
- objectRow[headers[i]] = arrayRow[i];
121
+ if (headers) {
122
+ for (let i = 0; i < headers.length; i++) {
123
+ objectRow[headers[i]] = arrayRow[i];
124
+ }
125
+ } else {
126
+ for (let i = 0; i < arrayRow.length; i++) {
127
+ const columnName = `column-${i}`;
128
+ objectRow[columnName] = arrayRow[i];
129
+ }
122
130
  }
123
131
  return objectRow;
124
132
  }
@@ -126,14 +134,25 @@ var __exports__ = (() => {
126
134
  if (!objectRow) {
127
135
  throw new Error("null row");
128
136
  }
129
- if (!headers) {
130
- throw new Error("no headers");
137
+ if (headers) {
138
+ const arrayRow = new Array(headers.length);
139
+ for (let i = 0; i < headers.length; i++) {
140
+ arrayRow[i] = objectRow[headers[i]];
141
+ }
142
+ return arrayRow;
131
143
  }
132
- const arrayRow = new Array(headers.length);
133
- for (let i = 0; i < headers.length; i++) {
134
- arrayRow[i] = objectRow[headers[i]];
144
+ return Object.values(objectRow);
145
+ }
146
+ function inferHeadersFromArrayRow(arrayRow) {
147
+ const headers = [];
148
+ for (let i = 0; i < arrayRow.length; i++) {
149
+ const columnName = `column-${i}`;
150
+ headers.push(columnName);
135
151
  }
136
- return arrayRow;
152
+ return headers;
153
+ }
154
+ function inferHeadersFromObjectRow(row) {
155
+ return Object.keys(row);
137
156
  }
138
157
 
139
158
  // ../schema/src/lib/table/batches/row-table-batch-aggregator.ts
@@ -143,11 +162,11 @@ var __exports__ = (() => {
143
162
  objectRows = null;
144
163
  arrayRows = null;
145
164
  cursor = 0;
146
- _headers = [];
165
+ _headers = null;
147
166
  constructor(schema, options) {
148
167
  this.options = options;
149
168
  this.schema = schema;
150
- if (!Array.isArray(schema)) {
169
+ if (schema) {
151
170
  this._headers = [];
152
171
  for (const key in schema) {
153
172
  this._headers[schema[key].index] = schema[key].name;
@@ -161,6 +180,7 @@ var __exports__ = (() => {
161
180
  if (Number.isFinite(cursor)) {
162
181
  this.cursor = cursor;
163
182
  }
183
+ this._headers ||= inferHeadersFromArrayRow(row);
164
184
  switch (this.options.shape) {
165
185
  case "object-row-table":
166
186
  const rowObject = convertToObjectRow(row, this._headers);
@@ -177,6 +197,7 @@ var __exports__ = (() => {
177
197
  if (Number.isFinite(cursor)) {
178
198
  this.cursor = cursor;
179
199
  }
200
+ this._headers ||= inferHeadersFromObjectRow(row);
180
201
  switch (this.options.shape) {
181
202
  case "array-row-table":
182
203
  const rowArray = convertToArrayRow(row, this._headers);
@@ -286,7 +307,7 @@ var __exports__ = (() => {
286
307
 
287
308
  // ../schema/src/lib/table/batches/table-batch-builder.ts
288
309
  var DEFAULT_OPTIONS = {
289
- shape: "array-row-table",
310
+ shape: void 0,
290
311
  batchSize: "auto",
291
312
  batchDebounceMs: 0,
292
313
  limit: 0,
@@ -398,8 +419,6 @@ var __exports__ = (() => {
398
419
  }
399
420
  _getTableBatchType() {
400
421
  switch (this.options.shape) {
401
- case "row-table":
402
- return BaseTableBatchAggregator;
403
422
  case "array-row-table":
404
423
  case "object-row-table":
405
424
  return RowTableBatchAggregator;
@@ -411,7 +430,7 @@ var __exports__ = (() => {
411
430
  }
412
431
  return TableBatchBuilder.ArrowBatch;
413
432
  default:
414
- throw new Error(ERR_MESSAGE);
433
+ return BaseTableBatchAggregator;
415
434
  }
416
435
  }
417
436
  };
@@ -12717,11 +12736,14 @@ return true;`);
12717
12736
  }
12718
12737
 
12719
12738
  // src/parsers/parse-arrow-in-batches.ts
12720
- function parseArrowInBatches(asyncIterator) {
12739
+ function parseArrowInBatches(asyncIterator, options) {
12721
12740
  async function* makeArrowAsyncIterator() {
12722
12741
  const readers = RecordBatchReader.readAll(asyncIterator);
12723
12742
  for await (const reader of readers) {
12724
12743
  for await (const recordBatch of reader) {
12744
+ if (options?.arrow?.batchDebounceMs !== void 0 && options?.arrow?.batchDebounceMs > 0) {
12745
+ await new Promise((resolve) => setTimeout(resolve, options.arrow?.batchDebounceMs || 0));
12746
+ }
12725
12747
  const arrowTabledBatch = {
12726
12748
  shape: "arrow-table",
12727
12749
  batchType: "data",
@@ -12737,7 +12759,7 @@ return true;`);
12737
12759
  }
12738
12760
 
12739
12761
  // src/arrow-loader.ts
12740
- var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
12762
+ var VERSION = true ? "4.1.0-alpha.10" : "latest";
12741
12763
  var ArrowWorkerLoader = {
12742
12764
  name: "Apache Arrow",
12743
12765
  id: "arrow",
@@ -12783,7 +12805,7 @@ return true;`);
12783
12805
  }
12784
12806
 
12785
12807
  // src/arrow-writer.ts
12786
- var VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
12808
+ var VERSION2 = true ? "4.1.0-alpha.10" : "latest";
12787
12809
  var ArrowWriter = {
12788
12810
  name: "Apache Arrow",
12789
12811
  id: "arrow",
@@ -13603,31 +13625,33 @@ return true;`);
13603
13625
  BinaryGeometryType2["polygons"] = "polygons";
13604
13626
  return BinaryGeometryType2;
13605
13627
  }(BinaryGeometryType || {});
13606
- var BINARY_GEOMETRY_TEMPLATE = {
13607
- globalFeatureIds: {
13608
- value: new Uint32Array(0),
13609
- size: 1
13610
- },
13611
- positions: {
13612
- value: new Float32Array(0),
13613
- size: 2
13614
- },
13615
- properties: [],
13616
- numericProps: {},
13617
- featureIds: {
13618
- value: new Uint32Array(0),
13619
- size: 1
13620
- }
13621
- };
13628
+ function getBinaryGeometryTemplate() {
13629
+ return {
13630
+ globalFeatureIds: {
13631
+ value: new Uint32Array(0),
13632
+ size: 1
13633
+ },
13634
+ positions: {
13635
+ value: new Float32Array(0),
13636
+ size: 2
13637
+ },
13638
+ properties: [],
13639
+ numericProps: {},
13640
+ featureIds: {
13641
+ value: new Uint32Array(0),
13642
+ size: 1
13643
+ }
13644
+ };
13645
+ }
13622
13646
  function getBinaryGeometriesFromArrow(geoColumn, geoEncoding, options) {
13623
13647
  const featureTypes = {
13624
13648
  polygon: geoEncoding === "geoarrow.multipolygon" || geoEncoding === "geoarrow.polygon",
13625
13649
  point: geoEncoding === "geoarrow.multipoint" || geoEncoding === "geoarrow.point",
13626
13650
  line: geoEncoding === "geoarrow.multilinestring" || geoEncoding === "geoarrow.linestring"
13627
13651
  };
13628
- const chunks = options?.chunkIndex ? [geoColumn.data[options?.chunkIndex]] : geoColumn.data;
13652
+ const chunks = options?.chunkIndex !== void 0 && options?.chunkIndex >= 0 ? [geoColumn.data[options?.chunkIndex]] : geoColumn.data;
13629
13653
  let bounds = [Infinity, Infinity, -Infinity, -Infinity];
13630
- let globalFeatureIdOffset = 0;
13654
+ let globalFeatureIdOffset = options?.chunkOffset || 0;
13631
13655
  const binaryGeometries = [];
13632
13656
  chunks.forEach((chunk) => {
13633
13657
  const {
@@ -13663,12 +13687,12 @@ return true;`);
13663
13687
  shape: "binary-feature-collection",
13664
13688
  points: {
13665
13689
  type: "Point",
13666
- ...BINARY_GEOMETRY_TEMPLATE,
13690
+ ...getBinaryGeometryTemplate(),
13667
13691
  ...featureTypes.point ? binaryContent : {}
13668
13692
  },
13669
13693
  lines: {
13670
13694
  type: "LineString",
13671
- ...BINARY_GEOMETRY_TEMPLATE,
13695
+ ...getBinaryGeometryTemplate(),
13672
13696
  ...featureTypes.line ? binaryContent : {},
13673
13697
  pathIndices: {
13674
13698
  value: featureTypes.line ? geomOffset : new Uint16Array(0),
@@ -13677,7 +13701,7 @@ return true;`);
13677
13701
  },
13678
13702
  polygons: {
13679
13703
  type: "Polygon",
13680
- ...BINARY_GEOMETRY_TEMPLATE,
13704
+ ...getBinaryGeometryTemplate(),
13681
13705
  ...featureTypes.polygon ? binaryContent : {},
13682
13706
  polygonIndices: {
13683
13707
  value: featureTypes.polygon ? geomOffset : new Uint16Array(0),
@@ -13791,7 +13815,7 @@ return true;`);
13791
13815
  }
13792
13816
  const triangleIndices = earcut(slicedFlatCoords, holeIndices.length > 0 ? holeIndices : void 0, nDim);
13793
13817
  if (triangleIndices.length === 0) {
13794
- throw Error("can not tesselate invalid polygon");
13818
+ throw Error("earcut failed e.g. invalid polygon");
13795
13819
  }
13796
13820
  for (let j = 0; j < triangleIndices.length; j++) {
13797
13821
  triangles.push(triangleIndices[j] + startIdx);
@@ -13833,8 +13857,8 @@ return true;`);
13833
13857
  const triangles = options?.triangulate ? getTriangleIndices(geometryIndicies, geomOffset, flatCoordinateArray, nDim) : null;
13834
13858
  return {
13835
13859
  featureIds,
13836
- flatCoordinateArray,
13837
13860
  nDim,
13861
+ flatCoordinateArray,
13838
13862
  geomOffset,
13839
13863
  geometryIndicies,
13840
13864
  ...options?.triangulate && triangles ? {
@@ -13913,7 +13937,7 @@ return true;`);
13913
13937
  }
13914
13938
 
13915
13939
  // ../wkt/src/lib/utils/version.ts
13916
- var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
13940
+ var VERSION3 = true ? "4.1.0-alpha.10" : "latest";
13917
13941
 
13918
13942
  // ../wkt/src/lib/parse-wkt.ts
13919
13943
  var numberRegexp = /[-+]?([0-9]*\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;
@@ -14709,16 +14733,50 @@ return true;`);
14709
14733
  };
14710
14734
  }
14711
14735
 
14736
+ // src/workers/hard-clone.ts
14737
+ function hardClone(data, force = false) {
14738
+ if ("data" in data) {
14739
+ return new Vector(data.data.map((data2) => hardClone(data2, force)));
14740
+ }
14741
+ const clonedChildren = [];
14742
+ for (const childData of data.children) {
14743
+ clonedChildren.push(hardClone(childData, force));
14744
+ }
14745
+ let clonedDictionary;
14746
+ if (data.dictionary !== void 0) {
14747
+ clonedDictionary = hardClone(data.dictionary, force);
14748
+ }
14749
+ const clonedBuffers = {
14750
+ [BufferType.OFFSET]: cloneBuffer(data.buffers[BufferType.OFFSET], force),
14751
+ [BufferType.DATA]: cloneBuffer(data.buffers[BufferType.DATA], force),
14752
+ [BufferType.VALIDITY]: cloneBuffer(data.buffers[BufferType.VALIDITY], force),
14753
+ [BufferType.TYPE]: cloneBuffer(data.buffers[BufferType.TYPE], force)
14754
+ };
14755
+ return new Data(data.type, data.offset, data.length, data._nullCount, clonedBuffers, clonedChildren, clonedDictionary);
14756
+ }
14757
+ function isTypedArraySliced(arr) {
14758
+ return !(arr.byteOffset === 0 && arr.byteLength === arr.buffer.byteLength);
14759
+ }
14760
+ function cloneBuffer(arr, force) {
14761
+ if (arr === void 0) {
14762
+ return arr;
14763
+ }
14764
+ if (!force && !isTypedArraySliced(arr)) {
14765
+ return arr;
14766
+ }
14767
+ return arr.slice();
14768
+ }
14769
+
14712
14770
  // ../worker-utils/src/lib/env-utils/version.ts
14713
14771
  var NPM_TAG = "latest";
14714
14772
  function getVersion() {
14715
14773
  if (!globalThis._loadersgl_?.version) {
14716
14774
  globalThis._loadersgl_ = globalThis._loadersgl_ || {};
14717
- if (typeof __VERSION__ === "undefined") {
14775
+ if (false) {
14718
14776
  console.warn("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
14719
14777
  globalThis._loadersgl_.version = NPM_TAG;
14720
14778
  } else {
14721
- globalThis._loadersgl_.version = __VERSION__;
14779
+ globalThis._loadersgl_.version = "4.1.0-alpha.10";
14722
14780
  }
14723
14781
  }
14724
14782
  return globalThis._loadersgl_.version;
@@ -15260,7 +15318,7 @@ return true;`);
15260
15318
  }
15261
15319
 
15262
15320
  // src/triangulate-on-worker.ts
15263
- var VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
15321
+ var VERSION5 = true ? "4.1.0-alpha.10" : "latest";
15264
15322
  var TriangulationWorker = {
15265
15323
  id: "triangulation",
15266
15324
  name: "Triangulate",
@@ -15269,7 +15327,16 @@ return true;`);
15269
15327
  options: {}
15270
15328
  };
15271
15329
  function triangulateOnWorker(data, options = {}) {
15272
- return processOnWorker(TriangulationWorker, data, options);
15330
+ return processOnWorker(TriangulationWorker, {
15331
+ ...data,
15332
+ operation: "triangulate"
15333
+ }, options);
15334
+ }
15335
+ function parseGeoArrowOnWorker(data, options = {}) {
15336
+ return processOnWorker(TriangulationWorker, {
15337
+ ...data,
15338
+ operation: "parse-geoarrow"
15339
+ }, options);
15273
15340
  }
15274
15341
 
15275
15342
  // src/index.ts
@@ -21,7 +21,7 @@ export type BinaryDataFromGeoArrow = {
21
21
  /**
22
22
  * binary geometry template, see deck.gl BinaryGeometry
23
23
  */
24
- export declare const BINARY_GEOMETRY_TEMPLATE: {
24
+ export declare function getBinaryGeometryTemplate(): {
25
25
  globalFeatureIds: {
26
26
  value: Uint32Array;
27
27
  size: number;
@@ -40,6 +40,8 @@ export declare const BINARY_GEOMETRY_TEMPLATE: {
40
40
  export type BinaryGeometriesFromArrowOptions = {
41
41
  /** option to specify which chunk to get binary geometries from, for progressive rendering */
42
42
  chunkIndex?: number;
43
+ /** The offset (beginning index of rows) of input chunk. Used for reconstructing globalFeatureIds in web workers */
44
+ chunkOffset?: number;
43
45
  /** option to get mean centers from geometries, for polygon filtering */
44
46
  calculateMeanCenters?: boolean;
45
47
  /** option to compute the triangle indices by tesselating polygons */
@@ -66,7 +68,7 @@ export declare function getMeanCentersFromBinaryGeometries(binaryGeometries: Bin
66
68
  * @param primitivePolygonIndices Indices within positions of the start of each primitive Polygon/ring
67
69
  * @param flatCoordinateArray Array of x, y or x, y, z positions
68
70
  * @param nDim - number of dimensions per position
69
- * @returns
71
+ * @returns triangle indices or null if invalid polygon and earcut fails
70
72
  */
71
73
  export declare function getTriangleIndices(polygonIndices: Uint16Array, primitivePolygonIndices: Int32Array, flatCoordinateArray: Float64Array, nDim: number): Uint32Array | null;
72
74
  //# sourceMappingURL=convert-geoarrow-to-binary-geometry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert-geoarrow-to-binary-geometry.d.ts","sourceRoot":"","sources":["../../src/geoarrow/convert-geoarrow-to-binary-geometry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAC,uBAAuB,IAAI,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAajD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,oEAAoE;IACpE,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,wCAAwC;IACxC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,6CAA6C;IAC7C,YAAY,EAAE;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAC,CAAC;IAChE,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC1B,CAAC;AAsBF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;CAMpC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,KAAK,CAAC,MAAM,EACvB,WAAW,EAAE,gBAAgB,EAC7B,OAAO,CAAC,EAAE,gCAAgC,GACzC,sBAAsB,CA6ExB;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,gBAAgB,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,EAAE,CAiCjG;AA2ED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,WAAW,EAC3B,uBAAuB,EAAE,UAAU,EACnC,mBAAmB,EAAE,YAAY,EACjC,IAAI,EAAE,MAAM,GACX,WAAW,GAAG,IAAI,CA0CpB"}
1
+ {"version":3,"file":"convert-geoarrow-to-binary-geometry.d.ts","sourceRoot":"","sources":["../../src/geoarrow/convert-geoarrow-to-binary-geometry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAC,uBAAuB,IAAI,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAajD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,oEAAoE;IACpE,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,wCAAwC;IACxC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,6CAA6C;IAC7C,YAAY,EAAE;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAC,CAAC;IAChE,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC1B,CAAC;AAsBF;;GAEG;AACH,wBAAgB,yBAAyB;;;;;;;;;;;;;;;EAQxC;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC7C,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mHAAmH;IACnH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,KAAK,CAAC,MAAM,EACvB,WAAW,EAAE,gBAAgB,EAC7B,OAAO,CAAC,EAAE,gCAAgC,GACzC,sBAAsB,CAiFxB;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,gBAAgB,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,EAAE,CAiCjG;AA2ED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,WAAW,EAC3B,uBAAuB,EAAE,UAAU,EACnC,mBAAmB,EAAE,YAAY,EACjC,IAAI,EAAE,MAAM,GACX,WAAW,GAAG,IAAI,CAyCpB"}
@@ -6,31 +6,33 @@ var BinaryGeometryType = function (BinaryGeometryType) {
6
6
  BinaryGeometryType["polygons"] = "polygons";
7
7
  return BinaryGeometryType;
8
8
  }(BinaryGeometryType || {});
9
- export const BINARY_GEOMETRY_TEMPLATE = {
10
- globalFeatureIds: {
11
- value: new Uint32Array(0),
12
- size: 1
13
- },
14
- positions: {
15
- value: new Float32Array(0),
16
- size: 2
17
- },
18
- properties: [],
19
- numericProps: {},
20
- featureIds: {
21
- value: new Uint32Array(0),
22
- size: 1
23
- }
24
- };
9
+ export function getBinaryGeometryTemplate() {
10
+ return {
11
+ globalFeatureIds: {
12
+ value: new Uint32Array(0),
13
+ size: 1
14
+ },
15
+ positions: {
16
+ value: new Float32Array(0),
17
+ size: 2
18
+ },
19
+ properties: [],
20
+ numericProps: {},
21
+ featureIds: {
22
+ value: new Uint32Array(0),
23
+ size: 1
24
+ }
25
+ };
26
+ }
25
27
  export function getBinaryGeometriesFromArrow(geoColumn, geoEncoding, options) {
26
28
  const featureTypes = {
27
29
  polygon: geoEncoding === 'geoarrow.multipolygon' || geoEncoding === 'geoarrow.polygon',
28
30
  point: geoEncoding === 'geoarrow.multipoint' || geoEncoding === 'geoarrow.point',
29
31
  line: geoEncoding === 'geoarrow.multilinestring' || geoEncoding === 'geoarrow.linestring'
30
32
  };
31
- const chunks = options !== null && options !== void 0 && options.chunkIndex ? [geoColumn.data[options === null || options === void 0 ? void 0 : options.chunkIndex]] : geoColumn.data;
33
+ const chunks = (options === null || options === void 0 ? void 0 : options.chunkIndex) !== undefined && (options === null || options === void 0 ? void 0 : options.chunkIndex) >= 0 ? [geoColumn.data[options === null || options === void 0 ? void 0 : options.chunkIndex]] : geoColumn.data;
32
34
  let bounds = [Infinity, Infinity, -Infinity, -Infinity];
33
- let globalFeatureIdOffset = 0;
35
+ let globalFeatureIdOffset = (options === null || options === void 0 ? void 0 : options.chunkOffset) || 0;
34
36
  const binaryGeometries = [];
35
37
  chunks.forEach(chunk => {
36
38
  const {
@@ -66,12 +68,12 @@ export function getBinaryGeometriesFromArrow(geoColumn, geoEncoding, options) {
66
68
  shape: 'binary-feature-collection',
67
69
  points: {
68
70
  type: 'Point',
69
- ...BINARY_GEOMETRY_TEMPLATE,
71
+ ...getBinaryGeometryTemplate(),
70
72
  ...(featureTypes.point ? binaryContent : {})
71
73
  },
72
74
  lines: {
73
75
  type: 'LineString',
74
- ...BINARY_GEOMETRY_TEMPLATE,
76
+ ...getBinaryGeometryTemplate(),
75
77
  ...(featureTypes.line ? binaryContent : {}),
76
78
  pathIndices: {
77
79
  value: featureTypes.line ? geomOffset : new Uint16Array(0),
@@ -80,7 +82,7 @@ export function getBinaryGeometriesFromArrow(geoColumn, geoEncoding, options) {
80
82
  },
81
83
  polygons: {
82
84
  type: 'Polygon',
83
- ...BINARY_GEOMETRY_TEMPLATE,
85
+ ...getBinaryGeometryTemplate(),
84
86
  ...(featureTypes.polygon ? binaryContent : {}),
85
87
  polygonIndices: {
86
88
  value: featureTypes.polygon ? geomOffset : new Uint16Array(0),
@@ -195,7 +197,7 @@ export function getTriangleIndices(polygonIndices, primitivePolygonIndices, flat
195
197
  }
196
198
  const triangleIndices = earcut(slicedFlatCoords, holeIndices.length > 0 ? holeIndices : undefined, nDim);
197
199
  if (triangleIndices.length === 0) {
198
- throw Error('can not tesselate invalid polygon');
200
+ throw Error('earcut failed e.g. invalid polygon');
199
201
  }
200
202
  for (let j = 0; j < triangleIndices.length; j++) {
201
203
  triangles.push(triangleIndices[j] + startIdx);
@@ -237,8 +239,8 @@ function getBinaryPolygonsFromChunk(chunk, geoEncoding, options) {
237
239
  const triangles = options !== null && options !== void 0 && options.triangulate ? getTriangleIndices(geometryIndicies, geomOffset, flatCoordinateArray, nDim) : null;
238
240
  return {
239
241
  featureIds,
240
- flatCoordinateArray,
241
242
  nDim,
243
+ flatCoordinateArray,
242
244
  geomOffset,
243
245
  geometryIndicies,
244
246
  ...(options !== null && options !== void 0 && options.triangulate && triangles ? {