@loaders.gl/json 4.0.0-alpha.5 → 4.0.0-alpha.6

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 (193) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/dist.min.js +643 -92
  3. package/dist/es5/bundle.js +6 -0
  4. package/dist/es5/bundle.js.map +1 -0
  5. package/dist/es5/geojson-loader.js +157 -0
  6. package/dist/es5/geojson-loader.js.map +1 -0
  7. package/dist/es5/geojson-writer.js +27 -0
  8. package/dist/es5/geojson-writer.js.map +1 -0
  9. package/dist/es5/index.js +69 -0
  10. package/dist/es5/index.js.map +1 -0
  11. package/dist/es5/json-loader.js +67 -0
  12. package/dist/es5/json-loader.js.map +1 -0
  13. package/dist/es5/json-writer.js +42 -0
  14. package/dist/es5/json-writer.js.map +1 -0
  15. package/dist/es5/lib/clarinet/clarinet.js +446 -0
  16. package/dist/es5/lib/clarinet/clarinet.js.map +1 -0
  17. package/dist/es5/lib/encoders/encode-utils.js +42 -0
  18. package/dist/es5/lib/encoders/encode-utils.js.map +1 -0
  19. package/dist/es5/lib/encoders/geojson-encoder.js +178 -0
  20. package/dist/es5/lib/encoders/geojson-encoder.js.map +1 -0
  21. package/dist/es5/lib/encoders/json-encoder.js +30 -0
  22. package/dist/es5/lib/encoders/json-encoder.js.map +1 -0
  23. package/dist/es5/lib/encoders/utf8-encoder.js +54 -0
  24. package/dist/es5/lib/encoders/utf8-encoder.js.map +1 -0
  25. package/dist/es5/lib/json-parser/json-parser.js +140 -0
  26. package/dist/es5/lib/json-parser/json-parser.js.map +1 -0
  27. package/dist/es5/lib/json-parser/streaming-json-parser.js +123 -0
  28. package/dist/es5/lib/json-parser/streaming-json-parser.js.map +1 -0
  29. package/dist/es5/lib/jsonpath/jsonpath.js +119 -0
  30. package/dist/es5/lib/jsonpath/jsonpath.js.map +1 -0
  31. package/dist/es5/lib/parsers/parse-json-in-batches.js +206 -0
  32. package/dist/es5/lib/parsers/parse-json-in-batches.js.map +1 -0
  33. package/dist/es5/lib/parsers/parse-json.js +38 -0
  34. package/dist/es5/lib/parsers/parse-json.js.map +1 -0
  35. package/dist/es5/lib/parsers/parse-ndjson-in-batches.js +114 -0
  36. package/dist/es5/lib/parsers/parse-ndjson-in-batches.js.map +1 -0
  37. package/dist/es5/lib/parsers/parse-ndjson.js +19 -0
  38. package/dist/es5/lib/parsers/parse-ndjson.js.map +1 -0
  39. package/dist/es5/ndgeoson-loader.js +54 -0
  40. package/dist/es5/ndgeoson-loader.js.map +1 -0
  41. package/dist/es5/ndjson-loader.js +44 -0
  42. package/dist/es5/ndjson-loader.js.map +1 -0
  43. package/dist/es5/workers/geojson-worker.js +6 -0
  44. package/dist/es5/workers/geojson-worker.js.map +1 -0
  45. package/dist/esm/bundle.js +4 -0
  46. package/dist/esm/bundle.js.map +1 -0
  47. package/dist/esm/geojson-loader.js +79 -0
  48. package/dist/esm/geojson-loader.js.map +1 -0
  49. package/dist/esm/geojson-writer.js +18 -0
  50. package/dist/esm/geojson-writer.js.map +1 -0
  51. package/dist/esm/index.js +9 -0
  52. package/dist/esm/index.js.map +1 -0
  53. package/dist/esm/json-loader.js +48 -0
  54. package/dist/esm/json-loader.js.map +1 -0
  55. package/dist/esm/json-writer.js +14 -0
  56. package/dist/esm/json-writer.js.map +1 -0
  57. package/dist/esm/lib/clarinet/LICENSE +28 -0
  58. package/dist/esm/lib/clarinet/clarinet.js +415 -0
  59. package/dist/esm/lib/clarinet/clarinet.js.map +1 -0
  60. package/dist/esm/lib/encoders/encode-utils.js +31 -0
  61. package/dist/esm/lib/encoders/encode-utils.js.map +1 -0
  62. package/dist/esm/lib/encoders/geojson-encoder.js +98 -0
  63. package/dist/esm/lib/encoders/geojson-encoder.js.map +1 -0
  64. package/dist/esm/lib/encoders/json-encoder.js +12 -0
  65. package/dist/esm/lib/encoders/json-encoder.js.map +1 -0
  66. package/dist/esm/lib/encoders/utf8-encoder.js +32 -0
  67. package/dist/esm/lib/encoders/utf8-encoder.js.map +1 -0
  68. package/dist/{lib/parser → esm/lib/json-parser}/json-parser.js +4 -22
  69. package/dist/esm/lib/json-parser/json-parser.js.map +1 -0
  70. package/dist/{lib/parser → esm/lib/json-parser}/streaming-json-parser.js +2 -23
  71. package/dist/esm/lib/json-parser/streaming-json-parser.js.map +1 -0
  72. package/dist/esm/lib/jsonpath/jsonpath.js +67 -0
  73. package/dist/esm/lib/jsonpath/jsonpath.js.map +1 -0
  74. package/dist/{lib → esm/lib/parsers}/parse-json-in-batches.js +5 -18
  75. package/dist/esm/lib/parsers/parse-json-in-batches.js.map +1 -0
  76. package/dist/{lib → esm/lib/parsers}/parse-json.js +4 -9
  77. package/dist/esm/lib/parsers/parse-json.js.map +1 -0
  78. package/dist/{lib → esm/lib/parsers}/parse-ndjson-in-batches.js +3 -6
  79. package/dist/esm/lib/parsers/parse-ndjson-in-batches.js.map +1 -0
  80. package/dist/esm/lib/parsers/parse-ndjson.js +13 -0
  81. package/dist/esm/lib/parsers/parse-ndjson.js.map +1 -0
  82. package/dist/esm/ndgeoson-loader.js +27 -0
  83. package/dist/esm/ndgeoson-loader.js.map +1 -0
  84. package/dist/esm/ndjson-loader.js +18 -0
  85. package/dist/esm/ndjson-loader.js.map +1 -0
  86. package/dist/esm/workers/geojson-worker.js +4 -0
  87. package/dist/esm/workers/geojson-worker.js.map +1 -0
  88. package/dist/geojson-loader.d.ts +2 -2
  89. package/dist/geojson-loader.d.ts.map +1 -1
  90. package/dist/geojson-loader.js +65 -69
  91. package/dist/geojson-worker.js +251 -68
  92. package/dist/geojson-writer.d.ts +6 -0
  93. package/dist/geojson-writer.d.ts.map +1 -0
  94. package/dist/geojson-writer.js +22 -0
  95. package/dist/index.d.ts +5 -1
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +24 -7
  98. package/dist/json-loader.d.ts +10 -7
  99. package/dist/json-loader.d.ts.map +1 -1
  100. package/dist/json-loader.js +33 -38
  101. package/dist/json-writer.d.ts +6 -0
  102. package/dist/json-writer.d.ts.map +1 -0
  103. package/dist/json-writer.js +18 -0
  104. package/dist/lib/clarinet/clarinet.d.ts +3 -3
  105. package/dist/lib/clarinet/clarinet.d.ts.map +1 -1
  106. package/dist/lib/clarinet/clarinet.js +510 -493
  107. package/dist/lib/encoders/encode-utils.d.ts +19 -0
  108. package/dist/lib/encoders/encode-utils.d.ts.map +1 -0
  109. package/dist/lib/encoders/encode-utils.js +47 -0
  110. package/dist/lib/encoders/geojson-encoder.d.ts +14 -0
  111. package/dist/lib/encoders/geojson-encoder.d.ts.map +1 -0
  112. package/dist/lib/encoders/geojson-encoder.js +104 -0
  113. package/dist/lib/encoders/json-encoder.d.ts +16 -0
  114. package/dist/lib/encoders/json-encoder.d.ts.map +1 -0
  115. package/dist/lib/encoders/json-encoder.js +22 -0
  116. package/dist/lib/encoders/utf8-encoder.d.ts +12 -0
  117. package/dist/lib/encoders/utf8-encoder.d.ts.map +1 -0
  118. package/dist/lib/encoders/utf8-encoder.js +32 -0
  119. package/dist/lib/json-parser/json-parser.d.ts.map +1 -0
  120. package/dist/lib/json-parser/json-parser.js +98 -0
  121. package/dist/lib/json-parser/streaming-json-parser.d.ts.map +1 -0
  122. package/dist/lib/json-parser/streaming-json-parser.js +100 -0
  123. package/dist/lib/jsonpath/jsonpath.js +81 -78
  124. package/dist/lib/parsers/parse-json-in-batches.d.ts +5 -0
  125. package/dist/lib/parsers/parse-json-in-batches.d.ts.map +1 -0
  126. package/dist/lib/parsers/parse-json-in-batches.js +100 -0
  127. package/dist/lib/parsers/parse-json.d.ts +4 -0
  128. package/dist/lib/parsers/parse-json.d.ts.map +1 -0
  129. package/dist/lib/parsers/parse-json.js +32 -0
  130. package/dist/lib/{parse-ndjson-in-batches.d.ts → parsers/parse-ndjson-in-batches.d.ts} +1 -1
  131. package/dist/lib/parsers/parse-ndjson-in-batches.d.ts.map +1 -0
  132. package/dist/lib/parsers/parse-ndjson-in-batches.js +36 -0
  133. package/dist/lib/parsers/parse-ndjson.d.ts +3 -0
  134. package/dist/lib/parsers/parse-ndjson.d.ts.map +1 -0
  135. package/dist/lib/parsers/parse-ndjson.js +17 -0
  136. package/dist/ndgeoson-loader.d.ts +34 -0
  137. package/dist/ndgeoson-loader.d.ts.map +1 -0
  138. package/dist/ndgeoson-loader.js +37 -0
  139. package/dist/ndjson-loader.d.ts +3 -21
  140. package/dist/ndjson-loader.d.ts.map +1 -1
  141. package/dist/ndjson-loader.js +26 -31
  142. package/dist/workers/geojson-worker.js +5 -4
  143. package/package.json +7 -7
  144. package/src/geojson-loader.ts +10 -6
  145. package/src/geojson-writer.ts +27 -0
  146. package/src/index.ts +9 -1
  147. package/src/json-loader.ts +15 -24
  148. package/src/json-writer.ts +24 -0
  149. package/src/lib/encoders/encode-utils.ts +54 -0
  150. package/src/lib/encoders/geojson-encoder.ts +139 -0
  151. package/src/lib/encoders/json-encoder.ts +30 -0
  152. package/src/lib/encoders/utf8-encoder.ts +35 -0
  153. package/src/lib/{parse-json-in-batches.ts → parsers/parse-json-in-batches.ts} +8 -8
  154. package/src/lib/{parse-json.ts → parsers/parse-json.ts} +7 -3
  155. package/src/lib/{parse-ndjson-in-batches.ts → parsers/parse-ndjson-in-batches.ts} +1 -1
  156. package/src/lib/parsers/parse-ndjson.ts +15 -0
  157. package/src/ndgeoson-loader.ts +48 -0
  158. package/src/ndjson-loader.ts +20 -27
  159. package/dist/bundle.js.map +0 -1
  160. package/dist/geojson-loader.js.map +0 -1
  161. package/dist/index.js.map +0 -1
  162. package/dist/json-loader.js.map +0 -1
  163. package/dist/jsonl-loader.d.ts +0 -1
  164. package/dist/jsonl-loader.d.ts.map +0 -1
  165. package/dist/jsonl-loader.js +0 -2
  166. package/dist/jsonl-loader.js.map +0 -1
  167. package/dist/lib/clarinet/clarinet.js.map +0 -1
  168. package/dist/lib/jsonpath/jsonpath.js.map +0 -1
  169. package/dist/lib/parse-json-in-batches.d.ts +0 -5
  170. package/dist/lib/parse-json-in-batches.d.ts.map +0 -1
  171. package/dist/lib/parse-json-in-batches.js.map +0 -1
  172. package/dist/lib/parse-json.d.ts +0 -3
  173. package/dist/lib/parse-json.d.ts.map +0 -1
  174. package/dist/lib/parse-json.js.map +0 -1
  175. package/dist/lib/parse-ndjson-in-batches.d.ts.map +0 -1
  176. package/dist/lib/parse-ndjson-in-batches.js.map +0 -1
  177. package/dist/lib/parse-ndjson.d.ts +0 -2
  178. package/dist/lib/parse-ndjson.d.ts.map +0 -1
  179. package/dist/lib/parse-ndjson.js +0 -11
  180. package/dist/lib/parse-ndjson.js.map +0 -1
  181. package/dist/lib/parser/json-parser.d.ts.map +0 -1
  182. package/dist/lib/parser/json-parser.js.map +0 -1
  183. package/dist/lib/parser/streaming-json-parser.d.ts.map +0 -1
  184. package/dist/lib/parser/streaming-json-parser.js.map +0 -1
  185. package/dist/ndjson-loader.js.map +0 -1
  186. package/dist/workers/geojson-worker.js.map +0 -1
  187. package/src/jsonl-loader.ts +0 -53
  188. package/src/lib/parse-ndjson.ts +0 -10
  189. /package/dist/{lib → es5/lib}/clarinet/LICENSE +0 -0
  190. /package/dist/lib/{parser → json-parser}/json-parser.d.ts +0 -0
  191. /package/dist/lib/{parser → json-parser}/streaming-json-parser.d.ts +0 -0
  192. /package/src/lib/{parser → json-parser}/json-parser.ts +0 -0
  193. /package/src/lib/{parser → json-parser}/streaming-json-parser.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndjson-loader.js","names":["parseNDJSONSync","parseNDJSONInBatches","VERSION","NDJSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parse","arrayBuffer","TextDecoder","decode","parseTextSync","parseInBatches","options"],"sources":["../../src/ndjson-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {ObjectRowTable, ArrayRowTable, TableBatch} from '@loaders.gl/schema';\nimport {parseNDJSONSync} from './lib/parsers/parse-ndjson';\nimport {parseNDJSONInBatches} from './lib/parsers/parse-ndjson-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 const NDJSONLoader: LoaderWithParser<\n ObjectRowTable | ArrayRowTable,\n TableBatch,\n LoaderOptions\n> = {\n name: 'NDJSON',\n id: 'ndjson',\n module: 'json',\n version: VERSION,\n extensions: ['ndjson', 'jsonl'],\n mimeTypes: [\n 'application/x-ndjson',\n 'application/jsonlines', // https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html#cm-batch\n 'application/json-seq'\n ],\n category: 'table',\n text: true,\n parse: async (arrayBuffer: ArrayBuffer) => parseNDJSONSync(new TextDecoder().decode(arrayBuffer)),\n parseTextSync: parseNDJSONSync,\n parseInBatches: parseNDJSONInBatches,\n options: {}\n};\n"],"mappings":"AAIA,SAAQA,eAAe,QAAO,4BAA4B;AAC1D,SAAQC,oBAAoB,QAAO,uCAAuC;AAI1E,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAE3E,OAAO,MAAMC,YAIZ,GAAG;EACFC,IAAI,EAAE,QAAQ;EACdC,EAAE,EAAE,QAAQ;EACZC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;EAC/BC,SAAS,EAAE,CACT,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CACvB;EACDC,QAAQ,EAAE,OAAO;EACjBC,IAAI,EAAE,IAAI;EACVC,KAAK,EAAE,MAAOC,WAAwB,IAAKb,eAAe,CAAC,IAAIc,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,WAAW,CAAC,CAAC;EACjGG,aAAa,EAAEhB,eAAe;EAC9BiB,cAAc,EAAEhB,oBAAoB;EACpCiB,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
+ import { GeoJSONLoader } from '../geojson-loader';
3
+ createLoaderWorker(GeoJSONLoader);
4
+ //# sourceMappingURL=geojson-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geojson-worker.js","names":["createLoaderWorker","GeoJSONLoader"],"sources":["../../../src/workers/geojson-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {GeoJSONLoader} from '../geojson-loader';\n\ncreateLoaderWorker(GeoJSONLoader);\n"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,0BAA0B;AAC3D,SAAQC,aAAa,QAAO,mBAAmB;AAE/CD,kBAAkB,CAACC,aAAa,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import type { Loader, LoaderWithParser } from '@loaders.gl/loader-utils';
2
2
  import type { JSONLoaderOptions } from './json-loader';
3
- export declare type GeoJSONLoaderOptions = JSONLoaderOptions & {
3
+ export type GeoJSONLoaderOptions = JSONLoaderOptions & {
4
4
  geojson?: {
5
5
  shape?: 'object-row-table';
6
6
  };
7
7
  gis?: {
8
- format: 'geojson';
8
+ format?: 'geojson' | 'binary';
9
9
  };
10
10
  };
11
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"geojson-loader.d.ts","sourceRoot":"","sources":["../src/geojson-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AASrD,oBAAY,oBAAoB,GAAG,iBAAiB,GAAG;IACrD,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,kBAAkB,CAAC;KAC5B,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,MAAM,EAAE,SAAS,CAAC;KACnB,CAAC;CACH,CAAC;AAcF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAWjC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,gBAK3B,CAAC"}
1
+ {"version":3,"file":"geojson-loader.d.ts","sourceRoot":"","sources":["../src/geojson-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAUrD,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG;IACrD,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,kBAAkB,CAAC;KAC5B,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;KAC/B,CAAC;CACH,CAAC;AAcF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAWjC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,gBAK3B,CAAC"}
@@ -1,81 +1,77 @@
1
- import { geojsonToBinary } from '@loaders.gl/gis';
2
- import parseJSONSync from './lib/parse-json';
3
- import parseJSONInBatches from './lib/parse-json-in-batches';
4
- const VERSION = typeof "4.0.0-alpha.5" !== 'undefined' ? "4.0.0-alpha.5" : 'latest';
1
+ "use strict";
2
+ // loaders.gl, MIT license
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.GeoJSONLoader = exports.GeoJSONWorkerLoader = void 0;
5
+ const gis_1 = require("@loaders.gl/gis");
6
+ const parse_json_1 = require("./lib/parsers/parse-json");
7
+ const parse_json_in_batches_1 = require("./lib/parsers/parse-json-in-batches");
8
+ // __VERSION__ is injected by babel-plugin-version-inline
9
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
10
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
5
11
  const DEFAULT_GEOJSON_LOADER_OPTIONS = {
6
- geojson: {
7
- shape: 'object-row-table'
8
- },
9
- json: {
10
- jsonpaths: ['$', '$.features']
11
- },
12
- gis: {
13
- format: 'geojson'
14
- }
12
+ geojson: {
13
+ shape: 'object-row-table'
14
+ },
15
+ json: {
16
+ jsonpaths: ['$', '$.features']
17
+ },
18
+ gis: {
19
+ format: 'geojson'
20
+ }
15
21
  };
16
- export const GeoJSONWorkerLoader = {
17
- name: 'GeoJSON',
18
- id: 'geojson',
19
- module: 'geojson',
20
- version: VERSION,
21
- worker: true,
22
- extensions: ['geojson'],
23
- mimeTypes: ['application/geo+json'],
24
- category: 'geometry',
25
- text: true,
26
- options: DEFAULT_GEOJSON_LOADER_OPTIONS
22
+ /**
23
+ * GeoJSON loader
24
+ */
25
+ exports.GeoJSONWorkerLoader = {
26
+ name: 'GeoJSON',
27
+ id: 'geojson',
28
+ module: 'geojson',
29
+ version: VERSION,
30
+ worker: true,
31
+ extensions: ['geojson'],
32
+ mimeTypes: ['application/geo+json'],
33
+ category: 'geometry',
34
+ text: true,
35
+ options: DEFAULT_GEOJSON_LOADER_OPTIONS
27
36
  };
28
- export const GeoJSONLoader = { ...GeoJSONWorkerLoader,
29
- parse,
30
- parseTextSync,
31
- parseInBatches
37
+ exports.GeoJSONLoader = {
38
+ ...exports.GeoJSONWorkerLoader,
39
+ parse,
40
+ parseTextSync,
41
+ parseInBatches
32
42
  };
33
-
34
43
  async function parse(arrayBuffer, options) {
35
- return parseTextSync(new TextDecoder().decode(arrayBuffer), options);
44
+ return parseTextSync(new TextDecoder().decode(arrayBuffer), options);
36
45
  }
37
-
38
46
  function parseTextSync(text, options) {
39
- options = { ...DEFAULT_GEOJSON_LOADER_OPTIONS,
40
- ...options
41
- };
42
- options.json = { ...DEFAULT_GEOJSON_LOADER_OPTIONS.geojson,
43
- ...options.geojson
44
- };
45
- options.gis = options.gis || {};
46
- const json = parseJSONSync(text, options);
47
-
48
- switch (options.gis.format) {
49
- case 'binary':
50
- return geojsonToBinary(json);
51
-
52
- default:
53
- return json;
54
- }
47
+ // Apps can call the parse method directly, we so apply default options here
48
+ options = { ...DEFAULT_GEOJSON_LOADER_OPTIONS, ...options };
49
+ options.json = { ...DEFAULT_GEOJSON_LOADER_OPTIONS.geojson, ...options.geojson };
50
+ options.gis = options.gis || {};
51
+ const table = (0, parse_json_1.parseJSONSync)(text, options);
52
+ table.shape = 'geojson-row-table';
53
+ switch (options.gis.format) {
54
+ case 'binary':
55
+ return (0, gis_1.geojsonToBinary)(table.data);
56
+ default:
57
+ return table;
58
+ }
55
59
  }
56
-
57
60
  function parseInBatches(asyncIterator, options) {
58
- options = { ...DEFAULT_GEOJSON_LOADER_OPTIONS,
59
- ...options
60
- };
61
- options.json = { ...DEFAULT_GEOJSON_LOADER_OPTIONS.geojson,
62
- ...options.geojson
63
- };
64
- const geojsonIterator = parseJSONInBatches(asyncIterator, options);
65
-
66
- switch (options.gis.format) {
67
- case 'binary':
68
- return makeBinaryGeometryIterator(geojsonIterator);
69
-
70
- default:
71
- return geojsonIterator;
72
- }
61
+ // Apps can call the parse method directly, we so apply default options here
62
+ options = { ...DEFAULT_GEOJSON_LOADER_OPTIONS, ...options };
63
+ options.json = { ...DEFAULT_GEOJSON_LOADER_OPTIONS.geojson, ...options.geojson };
64
+ const geojsonIterator = (0, parse_json_in_batches_1.parseJSONInBatches)(asyncIterator, options);
65
+ switch (options.gis.format) {
66
+ case 'binary':
67
+ return makeBinaryGeometryIterator(geojsonIterator);
68
+ default:
69
+ return geojsonIterator;
70
+ }
73
71
  }
74
-
75
72
  async function* makeBinaryGeometryIterator(geojsonIterator) {
76
- for await (const batch of geojsonIterator) {
77
- batch.data = geojsonToBinary(batch.data);
78
- yield batch;
79
- }
73
+ for await (const batch of geojsonIterator) {
74
+ batch.data = (0, gis_1.geojsonToBinary)(batch.data);
75
+ yield batch;
76
+ }
80
77
  }
81
- //# sourceMappingURL=geojson-loader.js.map
@@ -35,16 +35,33 @@
35
35
  }
36
36
 
37
37
  // ../worker-utils/src/lib/worker-farm/worker-body.ts
38
+ function getParentPort() {
39
+ let parentPort;
40
+ try {
41
+ eval("globalThis.parentPort = require('worker_threads').parentPort");
42
+ parentPort = globalThis.parentPort;
43
+ } catch {
44
+ }
45
+ return parentPort;
46
+ }
38
47
  var onMessageWrapperMap = new Map();
39
48
  var WorkerBody = class {
49
+ static inWorkerThread() {
50
+ return typeof self !== "undefined" || Boolean(getParentPort());
51
+ }
40
52
  static set onmessage(onMessage) {
41
- self.onmessage = (message) => {
42
- if (!isKnownMessage(message)) {
43
- return;
44
- }
45
- const { type, payload } = message.data;
53
+ function handleMessage(message) {
54
+ const parentPort3 = getParentPort();
55
+ const { type, payload } = parentPort3 ? message : message.data;
46
56
  onMessage(type, payload);
47
- };
57
+ }
58
+ const parentPort2 = getParentPort();
59
+ if (parentPort2) {
60
+ parentPort2.on("message", handleMessage);
61
+ parentPort2.on("exit", () => console.debug("Node worker closing"));
62
+ } else {
63
+ globalThis.onmessage = handleMessage;
64
+ }
48
65
  }
49
66
  static addEventListener(onMessage) {
50
67
  let onMessageWrapper = onMessageWrapperMap.get(onMessage);
@@ -53,22 +70,36 @@
53
70
  if (!isKnownMessage(message)) {
54
71
  return;
55
72
  }
56
- const { type, payload } = message.data;
73
+ const parentPort3 = getParentPort();
74
+ const { type, payload } = parentPort3 ? message : message.data;
57
75
  onMessage(type, payload);
58
76
  };
59
77
  }
60
- self.addEventListener("message", onMessageWrapper);
78
+ const parentPort2 = getParentPort();
79
+ if (parentPort2) {
80
+ console.error("not implemented");
81
+ } else {
82
+ globalThis.addEventListener("message", onMessageWrapper);
83
+ }
61
84
  }
62
85
  static removeEventListener(onMessage) {
63
86
  const onMessageWrapper = onMessageWrapperMap.get(onMessage);
64
87
  onMessageWrapperMap.delete(onMessage);
65
- self.removeEventListener("message", onMessageWrapper);
88
+ const parentPort2 = getParentPort();
89
+ if (parentPort2) {
90
+ console.error("not implemented");
91
+ } else {
92
+ globalThis.removeEventListener("message", onMessageWrapper);
93
+ }
66
94
  }
67
95
  static postMessage(type, payload) {
68
- if (self) {
69
- const data = { source: "loaders.gl", type, payload };
70
- const transferList = getTransferList(payload);
71
- self.postMessage(data, transferList);
96
+ const data = { source: "loaders.gl", type, payload };
97
+ const transferList = getTransferList(payload);
98
+ const parentPort2 = getParentPort();
99
+ if (parentPort2) {
100
+ parentPort2.postMessage(data, transferList);
101
+ } else {
102
+ globalThis.postMessage(data, transferList);
72
103
  }
73
104
  }
74
105
  };
@@ -80,19 +111,20 @@
80
111
  // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
81
112
  var requestId = 0;
82
113
  function createLoaderWorker(loader) {
83
- if (typeof self === "undefined") {
114
+ if (!WorkerBody.inWorkerThread()) {
84
115
  return;
85
116
  }
86
117
  WorkerBody.onmessage = async (type, payload) => {
87
118
  switch (type) {
88
119
  case "process":
89
120
  try {
90
- const { input, options = {} } = payload;
121
+ const { input, options = {}, context = {} } = payload;
91
122
  const result = await parseData({
92
123
  loader,
93
124
  arrayBuffer: input,
94
125
  options,
95
126
  context: {
127
+ ...context,
96
128
  parse: parseOnMainThread
97
129
  }
98
130
  });
@@ -175,11 +207,10 @@
175
207
  }
176
208
 
177
209
  // ../../node_modules/@math.gl/polygon/dist/esm/earcut.js
178
- function earcut(data, holeIndices, dim, areas) {
179
- dim = dim || 2;
210
+ function earcut(positions, holeIndices, dim = 2, areas) {
180
211
  const hasHoles = holeIndices && holeIndices.length;
181
- const outerLen = hasHoles ? holeIndices[0] * dim : data.length;
182
- let outerNode = linkedList(data, 0, outerLen, dim, true, areas && areas[0]);
212
+ const outerLen = hasHoles ? holeIndices[0] * dim : positions.length;
213
+ let outerNode = linkedList(positions, 0, outerLen, dim, true, areas && areas[0]);
183
214
  const triangles = [];
184
215
  if (!outerNode || outerNode.next === outerNode.prev)
185
216
  return triangles;
@@ -191,13 +222,13 @@
191
222
  let x;
192
223
  let y;
193
224
  if (hasHoles)
194
- outerNode = eliminateHoles(data, holeIndices, outerNode, dim, areas);
195
- if (data.length > 80 * dim) {
196
- minX = maxX = data[0];
197
- minY = maxY = data[1];
225
+ outerNode = eliminateHoles(positions, holeIndices, outerNode, dim, areas);
226
+ if (positions.length > 80 * dim) {
227
+ minX = maxX = positions[0];
228
+ minY = maxY = positions[1];
198
229
  for (let i = dim; i < outerLen; i += dim) {
199
- x = data[i];
200
- y = data[i + 1];
230
+ x = positions[i];
231
+ y = positions[i + 1];
201
232
  if (x < minX)
202
233
  minX = x;
203
234
  if (y < minY)
@@ -1073,36 +1104,9 @@
1073
1104
  });
1074
1105
  }
1075
1106
 
1076
- // src/lib/parse-json.ts
1077
- function parseJSONSync(jsonText, options) {
1078
- try {
1079
- const json = JSON.parse(jsonText);
1080
- if (options.json?.table) {
1081
- return getFirstArray(json) || json;
1082
- }
1083
- return json;
1084
- } catch (error) {
1085
- throw new Error("JSONLoader: failed to parse JSON");
1086
- }
1087
- }
1088
- function getFirstArray(json) {
1089
- if (Array.isArray(json)) {
1090
- return json;
1091
- }
1092
- if (json && typeof json === "object") {
1093
- for (const value of Object.values(json)) {
1094
- const array = getFirstArray(value);
1095
- if (array) {
1096
- return array;
1097
- }
1098
- }
1099
- }
1100
- return null;
1101
- }
1102
-
1103
- // ../schema/src/lib/batches/base-table-batch-aggregator.ts
1107
+ // ../schema/src/lib/table/batches/base-table-batch-aggregator.ts
1104
1108
  var DEFAULT_ROW_COUNT = 100;
1105
- var RowTableBatchAggregator = class {
1109
+ var BaseTableBatchAggregator = class {
1106
1110
  constructor(schema, options) {
1107
1111
  this.length = 0;
1108
1112
  this.rows = null;
@@ -1155,7 +1159,7 @@
1155
1159
  }
1156
1160
  };
1157
1161
 
1158
- // ../schema/src/lib/utils/row-utils.ts
1162
+ // ../schema/src/lib/table/simple-table/row-utils.ts
1159
1163
  function convertToObjectRow(arrayRow, headers) {
1160
1164
  if (!arrayRow) {
1161
1165
  throw new Error("null row");
@@ -1183,9 +1187,9 @@
1183
1187
  return arrayRow;
1184
1188
  }
1185
1189
 
1186
- // ../schema/src/lib/batches/row-table-batch-aggregator.ts
1190
+ // ../schema/src/lib/table/batches/row-table-batch-aggregator.ts
1187
1191
  var DEFAULT_ROW_COUNT2 = 100;
1188
- var RowTableBatchAggregator2 = class {
1192
+ var RowTableBatchAggregator = class {
1189
1193
  constructor(schema, options) {
1190
1194
  this.length = 0;
1191
1195
  this.objectRows = null;
@@ -1255,7 +1259,7 @@
1255
1259
  }
1256
1260
  };
1257
1261
 
1258
- // ../schema/src/lib/batches/columnar-table-batch-aggregator.ts
1262
+ // ../schema/src/lib/table/batches/columnar-table-batch-aggregator.ts
1259
1263
  var DEFAULT_ROW_COUNT3 = 100;
1260
1264
  var ColumnarTableBatchAggregator = class {
1261
1265
  constructor(schema, options) {
@@ -1331,7 +1335,7 @@
1331
1335
  }
1332
1336
  };
1333
1337
 
1334
- // ../schema/src/lib/batches/table-batch-builder.ts
1338
+ // ../schema/src/lib/table/batches/table-batch-builder.ts
1335
1339
  var DEFAULT_OPTIONS = {
1336
1340
  shape: "array-row-table",
1337
1341
  batchSize: "auto",
@@ -1443,10 +1447,10 @@
1443
1447
  _getTableBatchType() {
1444
1448
  switch (this.options.shape) {
1445
1449
  case "row-table":
1446
- return RowTableBatchAggregator;
1450
+ return BaseTableBatchAggregator;
1447
1451
  case "array-row-table":
1448
1452
  case "object-row-table":
1449
- return RowTableBatchAggregator2;
1453
+ return RowTableBatchAggregator;
1450
1454
  case "columnar-table":
1451
1455
  return ColumnarTableBatchAggregator;
1452
1456
  case "arrow-table":
@@ -1460,6 +1464,184 @@
1460
1464
  }
1461
1465
  };
1462
1466
 
1467
+ // ../schema/src/lib/table/simple-table/data-type.ts
1468
+ function getDataTypeFromValue(value, defaultNumberType = "float32") {
1469
+ if (value instanceof Date) {
1470
+ return "date-millisecond";
1471
+ }
1472
+ if (value instanceof Number) {
1473
+ return defaultNumberType;
1474
+ }
1475
+ if (typeof value === "string") {
1476
+ return "utf8";
1477
+ }
1478
+ if (value === null || value === "undefined") {
1479
+ return "null";
1480
+ }
1481
+ return "null";
1482
+ }
1483
+ function getDataTypeFromArray(array) {
1484
+ let type = getDataTypeFromTypedArray(array);
1485
+ if (type !== "null") {
1486
+ return { type, nullable: false };
1487
+ }
1488
+ if (array.length > 0) {
1489
+ type = getDataTypeFromValue(array[0]);
1490
+ return { type, nullable: true };
1491
+ }
1492
+ return { type: "null", nullable: true };
1493
+ }
1494
+ function getDataTypeFromTypedArray(array) {
1495
+ switch (array.constructor) {
1496
+ case Int8Array:
1497
+ return "int8";
1498
+ case Uint8Array:
1499
+ case Uint8ClampedArray:
1500
+ return "uint8";
1501
+ case Int16Array:
1502
+ return "int16";
1503
+ case Uint16Array:
1504
+ return "uint16";
1505
+ case Int32Array:
1506
+ return "int32";
1507
+ case Uint32Array:
1508
+ return "uint32";
1509
+ case Float32Array:
1510
+ return "float32";
1511
+ case Float64Array:
1512
+ return "float64";
1513
+ default:
1514
+ return "null";
1515
+ }
1516
+ }
1517
+
1518
+ // ../schema/src/lib/table/simple-table/table-schema.ts
1519
+ function deduceTableSchema(table) {
1520
+ switch (table.shape) {
1521
+ case "array-row-table":
1522
+ case "object-row-table":
1523
+ return deduceSchemaFromRows(table.data);
1524
+ case "columnar-table":
1525
+ return deduceSchemaFromColumns(table.data);
1526
+ case "arrow-table":
1527
+ default:
1528
+ throw new Error("Deduce schema");
1529
+ }
1530
+ }
1531
+ function deduceSchemaFromColumns(columnarTable) {
1532
+ const fields = [];
1533
+ for (const [columnName, column] of Object.entries(columnarTable)) {
1534
+ const field = deduceFieldFromColumn(column, columnName);
1535
+ fields.push(field);
1536
+ }
1537
+ return { fields, metadata: {} };
1538
+ }
1539
+ function deduceSchemaFromRows(rowTable) {
1540
+ if (!rowTable.length) {
1541
+ throw new Error("deduce from empty table");
1542
+ }
1543
+ const fields = [];
1544
+ const row0 = rowTable[0];
1545
+ for (const [columnName, value] of Object.entries(row0)) {
1546
+ fields.push(deduceFieldFromValue(value, columnName));
1547
+ }
1548
+ return { fields, metadata: {} };
1549
+ }
1550
+ function deduceFieldFromColumn(column, name) {
1551
+ if (ArrayBuffer.isView(column)) {
1552
+ const type = getDataTypeFromArray(column);
1553
+ return {
1554
+ name,
1555
+ type: type.type || "null",
1556
+ nullable: type.nullable
1557
+ };
1558
+ }
1559
+ if (Array.isArray(column) && column.length > 0) {
1560
+ const value = column[0];
1561
+ const type = getDataTypeFromValue(value);
1562
+ return {
1563
+ name,
1564
+ type,
1565
+ nullable: true
1566
+ };
1567
+ }
1568
+ throw new Error("empty table");
1569
+ }
1570
+ function deduceFieldFromValue(value, name) {
1571
+ const type = getDataTypeFromValue(value);
1572
+ return {
1573
+ name,
1574
+ type,
1575
+ nullable: true
1576
+ };
1577
+ }
1578
+
1579
+ // ../schema/src/lib/table/simple-table/make-table.ts
1580
+ function makeTableFromData(data) {
1581
+ let table;
1582
+ switch (getTableShapeFromData(data)) {
1583
+ case "array-row-table":
1584
+ table = { shape: "array-row-table", data };
1585
+ break;
1586
+ case "object-row-table":
1587
+ table = { shape: "object-row-table", data };
1588
+ break;
1589
+ case "columnar-table":
1590
+ table = { shape: "columnar-table", data };
1591
+ break;
1592
+ default:
1593
+ throw new Error("table");
1594
+ }
1595
+ const schema = deduceTableSchema(table);
1596
+ return { ...table, schema };
1597
+ }
1598
+ function getTableShapeFromData(data) {
1599
+ if (Array.isArray(data)) {
1600
+ if (data.length === 0) {
1601
+ throw new Error("cannot deduce type of empty table");
1602
+ }
1603
+ const firstRow = data[0];
1604
+ if (Array.isArray(firstRow)) {
1605
+ return "array-row-table";
1606
+ }
1607
+ if (firstRow && typeof firstRow === "object") {
1608
+ return "object-row-table";
1609
+ }
1610
+ }
1611
+ if (data && typeof data === "object") {
1612
+ return "columnar-table";
1613
+ }
1614
+ throw new Error("invalid table");
1615
+ }
1616
+
1617
+ // src/lib/parsers/parse-json.ts
1618
+ function parseJSONSync(jsonText, options) {
1619
+ try {
1620
+ const json = JSON.parse(jsonText);
1621
+ if (options.json?.table) {
1622
+ const data = getFirstArray(json) || json;
1623
+ return makeTableFromData(data);
1624
+ }
1625
+ return json;
1626
+ } catch (error) {
1627
+ throw new Error("JSONLoader: failed to parse JSON");
1628
+ }
1629
+ }
1630
+ function getFirstArray(json) {
1631
+ if (Array.isArray(json)) {
1632
+ return json;
1633
+ }
1634
+ if (json && typeof json === "object") {
1635
+ for (const value of Object.values(json)) {
1636
+ const array = getFirstArray(value);
1637
+ if (array) {
1638
+ return array;
1639
+ }
1640
+ }
1641
+ }
1642
+ return null;
1643
+ }
1644
+
1463
1645
  // src/lib/clarinet/clarinet.ts
1464
1646
  var MAX_BUFFER_LENGTH = Number.MAX_SAFE_INTEGER;
1465
1647
  var STATE;
@@ -2016,7 +2198,7 @@ Char: ${this.c}`;
2016
2198
  }
2017
2199
  };
2018
2200
 
2019
- // src/lib/parser/json-parser.ts
2201
+ // src/lib/json-parser/json-parser.ts
2020
2202
  var JSONParser = class {
2021
2203
  constructor(options) {
2022
2204
  this.result = void 0;
@@ -2104,7 +2286,7 @@ Char: ${this.c}`;
2104
2286
  }
2105
2287
  };
2106
2288
 
2107
- // src/lib/parser/streaming-json-parser.ts
2289
+ // src/lib/json-parser/streaming-json-parser.ts
2108
2290
  var StreamingJSONParser = class extends JSONParser {
2109
2291
  constructor(options = {}) {
2110
2292
  super({
@@ -2172,7 +2354,7 @@ Char: ${this.c}`;
2172
2354
  }
2173
2355
  };
2174
2356
 
2175
- // src/lib/parse-json-in-batches.ts
2357
+ // src/lib/parsers/parse-json-in-batches.ts
2176
2358
  async function* parseJSONInBatches(binaryAsyncIterator, options) {
2177
2359
  const asyncIterator = makeTextDecoderIterator(binaryAsyncIterator);
2178
2360
  const { metadata } = options;
@@ -2235,7 +2417,7 @@ Char: ${this.c}`;
2235
2417
  }
2236
2418
 
2237
2419
  // src/geojson-loader.ts
2238
- var VERSION = true ? "4.0.0-alpha.5" : "latest";
2420
+ var VERSION = true ? "4.0.0-alpha.6" : "latest";
2239
2421
  var DEFAULT_GEOJSON_LOADER_OPTIONS = {
2240
2422
  geojson: {
2241
2423
  shape: "object-row-table"
@@ -2272,12 +2454,13 @@ Char: ${this.c}`;
2272
2454
  options = { ...DEFAULT_GEOJSON_LOADER_OPTIONS, ...options };
2273
2455
  options.json = { ...DEFAULT_GEOJSON_LOADER_OPTIONS.geojson, ...options.geojson };
2274
2456
  options.gis = options.gis || {};
2275
- const json = parseJSONSync(text, options);
2457
+ const table = parseJSONSync(text, options);
2458
+ table.shape = "geojson-row-table";
2276
2459
  switch (options.gis.format) {
2277
2460
  case "binary":
2278
- return geojsonToBinary(json);
2461
+ return geojsonToBinary(table.data);
2279
2462
  default:
2280
- return json;
2463
+ return table;
2281
2464
  }
2282
2465
  }
2283
2466
  function parseInBatches(asyncIterator, options) {
@@ -0,0 +1,6 @@
1
+ import type { Writer } from '@loaders.gl/loader-utils';
2
+ import type { Table, TableBatch } from '@loaders.gl/schema';
3
+ import type { GeoJSONWriterOptions } from './lib/encoders/geojson-encoder';
4
+ export type { GeoJSONWriterOptions };
5
+ export declare const GeoJSONWriter: Writer<Table, TableBatch, GeoJSONWriterOptions>;
6
+ //# sourceMappingURL=geojson-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geojson-writer.d.ts","sourceRoot":"","sources":["../src/geojson-writer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAC,KAAK,EAAE,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAGzE,YAAY,EAAC,oBAAoB,EAAC,CAAC;AAEnC,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,oBAAoB,CAgBzE,CAAC"}