@loaders.gl/json 4.1.0-alpha.2 → 4.1.0-alpha.3

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 (57) hide show
  1. package/dist/dist.dev.js +79 -40
  2. package/dist/geojson-loader.d.ts.map +1 -1
  3. package/dist/geojson-loader.js +1 -1
  4. package/dist/geojson-loader.js.map +1 -1
  5. package/dist/geojson-worker.js +41 -26
  6. package/dist/geojson-writer.d.ts +1 -1
  7. package/dist/geojson-writer.d.ts.map +1 -1
  8. package/dist/geojson-writer.js +7 -1
  9. package/dist/geojson-writer.js.map +1 -1
  10. package/dist/index.cjs +24 -20
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/json-loader.d.ts +15 -8
  14. package/dist/json-loader.d.ts.map +1 -1
  15. package/dist/json-loader.js +11 -12
  16. package/dist/json-loader.js.map +1 -1
  17. package/dist/json-writer.d.ts.map +1 -1
  18. package/dist/json-writer.js.map +1 -1
  19. package/dist/lib/clarinet/clarinet.d.ts.map +1 -1
  20. package/dist/lib/clarinet/clarinet.js.map +1 -1
  21. package/dist/lib/encoder-utils/encode-table-row.d.ts.map +1 -1
  22. package/dist/lib/encoder-utils/encode-table-row.js.map +1 -1
  23. package/dist/lib/encoder-utils/encode-utils.d.ts.map +1 -1
  24. package/dist/lib/encoder-utils/encode-utils.js.map +1 -1
  25. package/dist/lib/encoder-utils/utf8-encoder.d.ts.map +1 -1
  26. package/dist/lib/encoder-utils/utf8-encoder.js.map +1 -1
  27. package/dist/lib/encoders/geojson-encoder.d.ts +1 -1
  28. package/dist/lib/encoders/geojson-encoder.d.ts.map +1 -1
  29. package/dist/lib/encoders/geojson-encoder.js.map +1 -1
  30. package/dist/lib/encoders/json-encoder.d.ts.map +1 -1
  31. package/dist/lib/encoders/json-encoder.js.map +1 -1
  32. package/dist/lib/parsers/parse-json-in-batches.d.ts +2 -2
  33. package/dist/lib/parsers/parse-json-in-batches.d.ts.map +1 -1
  34. package/dist/lib/parsers/parse-json-in-batches.js +4 -8
  35. package/dist/lib/parsers/parse-json-in-batches.js.map +1 -1
  36. package/dist/lib/parsers/parse-json.d.ts.map +1 -1
  37. package/dist/lib/parsers/parse-json.js.map +1 -1
  38. package/dist/ndgeoson-loader.js +1 -1
  39. package/dist/ndgeoson-loader.js.map +1 -1
  40. package/dist/ndjson-loader.d.ts.map +1 -1
  41. package/dist/ndjson-loader.js +1 -1
  42. package/dist/ndjson-loader.js.map +1 -1
  43. package/package.json +5 -5
  44. package/src/geojson-loader.ts +3 -2
  45. package/src/geojson-writer.ts +16 -4
  46. package/src/index.ts +2 -1
  47. package/src/json-loader.ts +34 -22
  48. package/src/json-writer.ts +2 -1
  49. package/src/lib/clarinet/clarinet.ts +2 -1
  50. package/src/lib/encoder-utils/encode-table-row.ts +2 -1
  51. package/src/lib/encoder-utils/encode-utils.ts +2 -1
  52. package/src/lib/encoder-utils/utf8-encoder.ts +2 -1
  53. package/src/lib/encoders/geojson-encoder.ts +3 -2
  54. package/src/lib/encoders/json-encoder.ts +2 -1
  55. package/src/lib/parsers/parse-json-in-batches.ts +9 -14
  56. package/src/lib/parsers/parse-json.ts +2 -1
  57. package/src/ndjson-loader.ts +2 -1
package/dist/dist.dev.js CHANGED
@@ -62,6 +62,7 @@ var __exports__ = (() => {
62
62
  if (Number.isFinite(cursor)) {
63
63
  this.cursor = cursor;
64
64
  }
65
+ this.shape = "array-row-table";
65
66
  this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);
66
67
  this.rows[this.length] = row;
67
68
  this.length++;
@@ -70,6 +71,7 @@ var __exports__ = (() => {
70
71
  if (Number.isFinite(cursor)) {
71
72
  this.cursor = cursor;
72
73
  }
74
+ this.shape = "object-row-table";
73
75
  this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);
74
76
  this.rows[this.length] = row;
75
77
  this.length++;
@@ -82,7 +84,7 @@ var __exports__ = (() => {
82
84
  rows = rows.slice(0, this.length);
83
85
  this.rows = null;
84
86
  const batch = {
85
- shape: this.options.shape,
87
+ shape: this.shape || "array-row-table",
86
88
  batchType: "data",
87
89
  data: rows,
88
90
  length: this.length,
@@ -98,12 +100,16 @@ var __exports__ = (() => {
98
100
  if (!arrayRow) {
99
101
  throw new Error("null row");
100
102
  }
101
- if (!headers) {
102
- throw new Error("no headers");
103
- }
104
103
  const objectRow = {};
105
- for (let i = 0; i < headers.length; i++) {
106
- objectRow[headers[i]] = arrayRow[i];
104
+ if (headers) {
105
+ for (let i = 0; i < headers.length; i++) {
106
+ objectRow[headers[i]] = arrayRow[i];
107
+ }
108
+ } else {
109
+ for (let i = 0; i < arrayRow.length; i++) {
110
+ const columnName = `column-${i}`;
111
+ objectRow[columnName] = arrayRow[i];
112
+ }
107
113
  }
108
114
  return objectRow;
109
115
  }
@@ -111,14 +117,25 @@ var __exports__ = (() => {
111
117
  if (!objectRow) {
112
118
  throw new Error("null row");
113
119
  }
114
- if (!headers) {
115
- throw new Error("no headers");
120
+ if (headers) {
121
+ const arrayRow = new Array(headers.length);
122
+ for (let i = 0; i < headers.length; i++) {
123
+ arrayRow[i] = objectRow[headers[i]];
124
+ }
125
+ return arrayRow;
116
126
  }
117
- const arrayRow = new Array(headers.length);
118
- for (let i = 0; i < headers.length; i++) {
119
- arrayRow[i] = objectRow[headers[i]];
127
+ return Object.values(objectRow);
128
+ }
129
+ function inferHeadersFromArrayRow(arrayRow) {
130
+ const headers = [];
131
+ for (let i = 0; i < arrayRow.length; i++) {
132
+ const columnName = `column-${i}`;
133
+ headers.push(columnName);
120
134
  }
121
- return arrayRow;
135
+ return headers;
136
+ }
137
+ function inferHeadersFromObjectRow(row) {
138
+ return Object.keys(row);
122
139
  }
123
140
 
124
141
  // ../schema/src/lib/table/batches/row-table-batch-aggregator.ts
@@ -128,11 +145,11 @@ var __exports__ = (() => {
128
145
  objectRows = null;
129
146
  arrayRows = null;
130
147
  cursor = 0;
131
- _headers = [];
148
+ _headers = null;
132
149
  constructor(schema, options) {
133
150
  this.options = options;
134
151
  this.schema = schema;
135
- if (!Array.isArray(schema)) {
152
+ if (schema) {
136
153
  this._headers = [];
137
154
  for (const key in schema) {
138
155
  this._headers[schema[key].index] = schema[key].name;
@@ -146,6 +163,7 @@ var __exports__ = (() => {
146
163
  if (Number.isFinite(cursor)) {
147
164
  this.cursor = cursor;
148
165
  }
166
+ this._headers ||= inferHeadersFromArrayRow(row);
149
167
  switch (this.options.shape) {
150
168
  case "object-row-table":
151
169
  const rowObject = convertToObjectRow(row, this._headers);
@@ -162,6 +180,7 @@ var __exports__ = (() => {
162
180
  if (Number.isFinite(cursor)) {
163
181
  this.cursor = cursor;
164
182
  }
183
+ this._headers ||= inferHeadersFromObjectRow(row);
165
184
  switch (this.options.shape) {
166
185
  case "array-row-table":
167
186
  const rowArray = convertToArrayRow(row, this._headers);
@@ -271,7 +290,7 @@ var __exports__ = (() => {
271
290
 
272
291
  // ../schema/src/lib/table/batches/table-batch-builder.ts
273
292
  var DEFAULT_OPTIONS = {
274
- shape: "array-row-table",
293
+ shape: void 0,
275
294
  batchSize: "auto",
276
295
  batchDebounceMs: 0,
277
296
  limit: 0,
@@ -383,8 +402,6 @@ var __exports__ = (() => {
383
402
  }
384
403
  _getTableBatchType() {
385
404
  switch (this.options.shape) {
386
- case "row-table":
387
- return BaseTableBatchAggregator;
388
405
  case "array-row-table":
389
406
  case "object-row-table":
390
407
  return RowTableBatchAggregator;
@@ -396,7 +413,7 @@ var __exports__ = (() => {
396
413
  }
397
414
  return TableBatchBuilder.ArrowBatch;
398
415
  default:
399
- throw new Error(ERR_MESSAGE);
416
+ return BaseTableBatchAggregator;
400
417
  }
401
418
  }
402
419
  };
@@ -781,6 +798,19 @@ var __exports__ = (() => {
781
798
  }
782
799
  }
783
800
 
801
+ // ../loader-utils/src/lib/binary-utils/array-buffer-utils.ts
802
+ function concatenateArrayBuffers(...sources) {
803
+ const sourceArrays = sources.map((source2) => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2);
804
+ const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);
805
+ const result = new Uint8Array(byteLength);
806
+ let offset = 0;
807
+ for (const sourceArray of sourceArrays) {
808
+ result.set(sourceArray, offset);
809
+ offset += sourceArray.byteLength;
810
+ }
811
+ return result.buffer;
812
+ }
813
+
784
814
  // ../loader-utils/src/lib/iterators/text-iterators.ts
785
815
  async function* makeTextDecoderIterator(arrayBufferIterator, options = {}) {
786
816
  const textDecoder = new TextDecoder(void 0, options);
@@ -816,6 +846,15 @@ var __exports__ = (() => {
816
846
  }
817
847
  }
818
848
 
849
+ // ../loader-utils/src/lib/iterators/async-iteration.ts
850
+ async function concatenateArrayBuffersAsync(asyncIterator) {
851
+ const arrayBuffers = [];
852
+ for await (const chunk of asyncIterator) {
853
+ arrayBuffers.push(chunk);
854
+ }
855
+ return concatenateArrayBuffers(...arrayBuffers);
856
+ }
857
+
819
858
  // ../../node_modules/@babel/runtime/helpers/esm/typeof.js
820
859
  function _typeof(obj) {
821
860
  "@babel/helpers - typeof";
@@ -1605,11 +1644,7 @@ Char: ${this.c}`;
1605
1644
  } = options.json || {};
1606
1645
  let isFirstChunk = true;
1607
1646
  const schema = null;
1608
- const shape = options?.json?.shape || "object-row-table";
1609
- const tableBatchBuilder = new TableBatchBuilder(schema, {
1610
- ...options,
1611
- shape
1612
- });
1647
+ const tableBatchBuilder = new TableBatchBuilder(schema, options);
1613
1648
  const parser = new StreamingJSONParser({
1614
1649
  jsonpaths
1615
1650
  });
@@ -1619,7 +1654,7 @@ Char: ${this.c}`;
1619
1654
  if (rows.length > 0 && isFirstChunk) {
1620
1655
  if (metadata) {
1621
1656
  const initialBatch = {
1622
- shape,
1657
+ shape: options?.json?.shape || "array-row-table",
1623
1658
  batchType: "partial-result",
1624
1659
  data: [],
1625
1660
  length: 0,
@@ -1657,7 +1692,7 @@ Char: ${this.c}`;
1657
1692
  }
1658
1693
  if (metadata) {
1659
1694
  const finalBatch = {
1660
- shape,
1695
+ shape: "json",
1661
1696
  batchType: "final-result",
1662
1697
  container: parser.getPartialResult(),
1663
1698
  jsonpath: parser.getStreamingJsonPathAsString(),
@@ -1682,14 +1717,7 @@ Char: ${this.c}`;
1682
1717
  }
1683
1718
 
1684
1719
  // src/json-loader.ts
1685
- var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
1686
- var DEFAULT_JSON_LOADER_OPTIONS = {
1687
- json: {
1688
- shape: "object-row-table",
1689
- table: false,
1690
- jsonpaths: []
1691
- }
1692
- };
1720
+ var VERSION = true ? "4.1.0-alpha.3" : "latest";
1693
1721
  var JSONLoader = {
1694
1722
  name: "JSON",
1695
1723
  id: "json",
@@ -1699,10 +1727,16 @@ Char: ${this.c}`;
1699
1727
  mimeTypes: ["application/json"],
1700
1728
  category: "table",
1701
1729
  text: true,
1730
+ options: {
1731
+ json: {
1732
+ shape: void 0,
1733
+ table: false,
1734
+ jsonpaths: []
1735
+ }
1736
+ },
1702
1737
  parse,
1703
1738
  parseTextSync,
1704
- parseInBatches,
1705
- options: DEFAULT_JSON_LOADER_OPTIONS
1739
+ parseInBatches
1706
1740
  };
1707
1741
  async function parse(arrayBuffer, options) {
1708
1742
  return parseTextSync(new TextDecoder().decode(arrayBuffer), options);
@@ -1711,7 +1745,7 @@ Char: ${this.c}`;
1711
1745
  const jsonOptions = {
1712
1746
  ...options,
1713
1747
  json: {
1714
- ...DEFAULT_JSON_LOADER_OPTIONS.json,
1748
+ ...JSONLoader.options.json,
1715
1749
  ...options?.json
1716
1750
  }
1717
1751
  };
@@ -1721,7 +1755,7 @@ Char: ${this.c}`;
1721
1755
  const jsonOptions = {
1722
1756
  ...options,
1723
1757
  json: {
1724
- ...DEFAULT_JSON_LOADER_OPTIONS.json,
1758
+ ...JSONLoader.options.json,
1725
1759
  ...options?.json
1726
1760
  }
1727
1761
  };
@@ -1775,7 +1809,7 @@ Char: ${this.c}`;
1775
1809
  }
1776
1810
 
1777
1811
  // src/ndjson-loader.ts
1778
- var VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
1812
+ var VERSION2 = true ? "4.1.0-alpha.3" : "latest";
1779
1813
  var NDJSONLoader = {
1780
1814
  name: "NDJSON",
1781
1815
  id: "ndjson",
@@ -2844,7 +2878,7 @@ Char: ${this.c}`;
2844
2878
  }
2845
2879
 
2846
2880
  // src/geojson-loader.ts
2847
- var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
2881
+ var VERSION3 = true ? "4.1.0-alpha.3" : "latest";
2848
2882
  var GeoJSONWorkerLoader = {
2849
2883
  name: "GeoJSON",
2850
2884
  id: "geojson",
@@ -3081,13 +3115,18 @@ Char: ${this.c}`;
3081
3115
  name: "GeoJSON",
3082
3116
  extensions: ["geojson"],
3083
3117
  mimeTypes: ["application/geo+json"],
3118
+ text: true,
3084
3119
  options: {
3085
3120
  geojson: {
3086
3121
  featureArray: false,
3087
3122
  geometryColumn: null
3088
3123
  }
3089
3124
  },
3090
- text: true,
3125
+ async encode(table, options) {
3126
+ const tableIterator = [table];
3127
+ const batches = encodeTableAsGeojsonInBatches(tableIterator, options);
3128
+ return await concatenateArrayBuffersAsync(batches);
3129
+ },
3091
3130
  encodeInBatches: (tableIterator, options) => encodeTableAsGeojsonInBatches(tableIterator, options)
3092
3131
  };
3093
3132
  return __toCommonJS(src_exports);
@@ -1 +1 @@
1
- {"version":3,"file":"geojson-loader.d.ts","sourceRoot":"","sources":["../src/geojson-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAC,OAAO,EAAgB,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AASrD,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;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,oBAAoB,CAsBjF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,oBAAoB,CAOrF,CAAC"}
1
+ {"version":3,"file":"geojson-loader.d.ts","sourceRoot":"","sources":["../src/geojson-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAC,OAAO,EAAgB,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AASrD,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;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,oBAAoB,CAsBjF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,oBAAoB,CAOrF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { geojsonToBinary } from '@loaders.gl/gis';
2
2
  import { parseJSONInBatches } from "./lib/parsers/parse-json-in-batches.js";
3
- const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
3
+ const VERSION = typeof "4.1.0-alpha.3" !== 'undefined' ? "4.1.0-alpha.3" : 'latest';
4
4
  export const GeoJSONWorkerLoader = {
5
5
  name: 'GeoJSON',
6
6
  id: 'geojson',
@@ -1 +1 @@
1
- {"version":3,"file":"geojson-loader.js","names":["geojsonToBinary","parseJSONInBatches","VERSION","__VERSION__","GeoJSONWorkerLoader","name","id","module","version","worker","extensions","mimeTypes","category","text","options","geojson","shape","json","jsonpaths","gis","format","GeoJSONLoader","parse","parseTextSync","parseInBatches","arrayBuffer","TextDecoder","decode","_geojson","JSON","table","type","features","asyncIterator","geojsonIterator","makeBinaryGeometryIterator","batch","data"],"sources":["../src/geojson-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {GeoJSON, GeoJSONTable, TableBatch} from '@loaders.gl/schema';\nimport type {JSONLoaderOptions} from './json-loader';\nimport {geojsonToBinary} from '@loaders.gl/gis';\n// import {parseJSONSync} from './lib/parsers/parse-json';\nimport {parseJSONInBatches} from './lib/parsers/parse-json-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 GeoJSONLoaderOptions = JSONLoaderOptions & {\n geojson?: {\n shape?: 'object-row-table';\n };\n gis?: {\n format?: 'geojson' | 'binary';\n };\n};\n\n/**\n * GeoJSON loader\n */\nexport const GeoJSONWorkerLoader: Loader<GeoJSON, TableBatch, GeoJSONLoaderOptions> = {\n name: 'GeoJSON',\n id: 'geojson',\n module: 'geojson',\n version: VERSION,\n worker: true,\n extensions: ['geojson'],\n mimeTypes: ['application/geo+json'],\n category: 'geometry',\n text: true,\n options: {\n geojson: {\n shape: 'object-row-table'\n },\n json: {\n shape: 'object-row-table',\n jsonpaths: ['$', '$.features']\n },\n gis: {\n format: 'geojson'\n }\n }\n};\n\nexport const GeoJSONLoader: LoaderWithParser<GeoJSON, TableBatch, GeoJSONLoaderOptions> = {\n ...GeoJSONWorkerLoader,\n // @ts-expect-error\n parse,\n // @ts-expect-error\n parseTextSync,\n parseInBatches\n};\n\nasync function parse(arrayBuffer: ArrayBuffer, options?: GeoJSONLoaderOptions) {\n return parseTextSync(new TextDecoder().decode(arrayBuffer), options);\n}\n\nfunction parseTextSync(text: string, options?: GeoJSONLoaderOptions) {\n // Apps can call the parse method directly, we so apply default options here\n options = {...GeoJSONLoader.options, ...options};\n options.geojson = {...GeoJSONLoader.options.geojson, ...options.geojson};\n options.gis = options.gis || {};\n\n let geojson;\n try {\n geojson = JSON.parse(text);\n } catch {\n geojson = {};\n }\n\n const table: GeoJSONTable = {\n shape: 'geojson-table',\n // TODO - deduce schema from geojson\n // TODO check that parsed data is of type FeatureCollection\n type: 'FeatureCollection',\n features: geojson?.features || []\n };\n\n switch (options.gis.format) {\n case 'binary':\n return geojsonToBinary(table.features);\n default:\n return table;\n }\n}\n\nfunction parseInBatches(asyncIterator, options): AsyncIterable<TableBatch> {\n // Apps can call the parse method directly, we so apply default options here\n options = {...GeoJSONLoader.options, ...options};\n options.json = {...GeoJSONLoader.options.geojson, ...options.geojson};\n\n const geojsonIterator = parseJSONInBatches(asyncIterator, options);\n\n switch (options.gis.format) {\n case 'binary':\n return makeBinaryGeometryIterator(geojsonIterator);\n default:\n return geojsonIterator;\n }\n}\n\nasync function* makeBinaryGeometryIterator(geojsonIterator) {\n for await (const batch of geojsonIterator) {\n batch.data = geojsonToBinary(batch.data);\n yield batch;\n }\n}\n"],"mappings":"AAMA,SAAQA,eAAe,QAAO,iBAAiB;AAAC,SAExCC,kBAAkB;AAI1B,MAAMC,OAAO,GAAG,OAAOC,WAAW,KAAK,WAAW,GAAGA,WAAW,GAAG,QAAQ;AAc3E,OAAO,MAAMC,mBAAsE,GAAG;EACpFC,IAAI,EAAE,SAAS;EACfC,EAAE,EAAE,SAAS;EACbC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEN,OAAO;EAChBO,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,sBAAsB,CAAC;EACnCC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE,IAAI;EACVC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,KAAK,EAAE;IACT,CAAC;IACDC,IAAI,EAAE;MACJD,KAAK,EAAE,kBAAkB;MACzBE,SAAS,EAAE,CAAC,GAAG,EAAE,YAAY;IAC/B,CAAC;IACDC,GAAG,EAAE;MACHC,MAAM,EAAE;IACV;EACF;AACF,CAAC;AAED,OAAO,MAAMC,aAA0E,GAAG;EACxF,GAAGjB,mBAAmB;EAEtBkB,KAAK;EAELC,aAAa;EACbC;AACF,CAAC;AAED,eAAeF,KAAKA,CAACG,WAAwB,EAAEX,OAA8B,EAAE;EAC7E,OAAOS,aAAa,CAAC,IAAIG,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,WAAW,CAAC,EAAEX,OAAO,CAAC;AACtE;AAEA,SAASS,aAAaA,CAACV,IAAY,EAAEC,OAA8B,EAAE;EAAA,IAAAc,QAAA;EAEnEd,OAAO,GAAG;IAAC,GAAGO,aAAa,CAACP,OAAO;IAAE,GAAGA;EAAO,CAAC;EAChDA,OAAO,CAACC,OAAO,GAAG;IAAC,GAAGM,aAAa,CAACP,OAAO,CAACC,OAAO;IAAE,GAAGD,OAAO,CAACC;EAAO,CAAC;EACxED,OAAO,CAACK,GAAG,GAAGL,OAAO,CAACK,GAAG,IAAI,CAAC,CAAC;EAE/B,IAAIJ,OAAO;EACX,IAAI;IACFA,OAAO,GAAGc,IAAI,CAACP,KAAK,CAACT,IAAI,CAAC;EAC5B,CAAC,CAAC,MAAM;IACNE,OAAO,GAAG,CAAC,CAAC;EACd;EAEA,MAAMe,KAAmB,GAAG;IAC1Bd,KAAK,EAAE,eAAe;IAGtBe,IAAI,EAAE,mBAAmB;IACzBC,QAAQ,EAAE,EAAAJ,QAAA,GAAAb,OAAO,cAAAa,QAAA,uBAAPA,QAAA,CAASI,QAAQ,KAAI;EACjC,CAAC;EAED,QAAQlB,OAAO,CAACK,GAAG,CAACC,MAAM;IACxB,KAAK,QAAQ;MACX,OAAOpB,eAAe,CAAC8B,KAAK,CAACE,QAAQ,CAAC;IACxC;MACE,OAAOF,KAAK;EAChB;AACF;AAEA,SAASN,cAAcA,CAACS,aAAa,EAAEnB,OAAO,EAA6B;EAEzEA,OAAO,GAAG;IAAC,GAAGO,aAAa,CAACP,OAAO;IAAE,GAAGA;EAAO,CAAC;EAChDA,OAAO,CAACG,IAAI,GAAG;IAAC,GAAGI,aAAa,CAACP,OAAO,CAACC,OAAO;IAAE,GAAGD,OAAO,CAACC;EAAO,CAAC;EAErE,MAAMmB,eAAe,GAAGjC,kBAAkB,CAACgC,aAAa,EAAEnB,OAAO,CAAC;EAElE,QAAQA,OAAO,CAACK,GAAG,CAACC,MAAM;IACxB,KAAK,QAAQ;MACX,OAAOe,0BAA0B,CAACD,eAAe,CAAC;IACpD;MACE,OAAOA,eAAe;EAC1B;AACF;AAEA,gBAAgBC,0BAA0BA,CAACD,eAAe,EAAE;EAC1D,WAAW,MAAME,KAAK,IAAIF,eAAe,EAAE;IACzCE,KAAK,CAACC,IAAI,GAAGrC,eAAe,CAACoC,KAAK,CAACC,IAAI,CAAC;IACxC,MAAMD,KAAK;EACb;AACF"}
1
+ {"version":3,"file":"geojson-loader.js","names":["geojsonToBinary","parseJSONInBatches","VERSION","GeoJSONWorkerLoader","name","id","module","version","worker","extensions","mimeTypes","category","text","options","geojson","shape","json","jsonpaths","gis","format","GeoJSONLoader","parse","parseTextSync","parseInBatches","arrayBuffer","TextDecoder","decode","_geojson","JSON","table","type","features","asyncIterator","geojsonIterator","makeBinaryGeometryIterator","batch","data"],"sources":["../src/geojson-loader.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {GeoJSON, GeoJSONTable, TableBatch} from '@loaders.gl/schema';\nimport type {JSONLoaderOptions} from './json-loader';\nimport {geojsonToBinary} from '@loaders.gl/gis';\n// import {parseJSONSync} from './lib/parsers/parse-json';\nimport {parseJSONInBatches} from './lib/parsers/parse-json-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 GeoJSONLoaderOptions = JSONLoaderOptions & {\n geojson?: {\n shape?: 'object-row-table';\n };\n gis?: {\n format?: 'geojson' | 'binary';\n };\n};\n\n/**\n * GeoJSON loader\n */\nexport const GeoJSONWorkerLoader: Loader<GeoJSON, TableBatch, GeoJSONLoaderOptions> = {\n name: 'GeoJSON',\n id: 'geojson',\n module: 'geojson',\n version: VERSION,\n worker: true,\n extensions: ['geojson'],\n mimeTypes: ['application/geo+json'],\n category: 'geometry',\n text: true,\n options: {\n geojson: {\n shape: 'object-row-table'\n },\n json: {\n shape: 'object-row-table',\n jsonpaths: ['$', '$.features']\n },\n gis: {\n format: 'geojson'\n }\n }\n};\n\nexport const GeoJSONLoader: LoaderWithParser<GeoJSON, TableBatch, GeoJSONLoaderOptions> = {\n ...GeoJSONWorkerLoader,\n // @ts-expect-error\n parse,\n // @ts-expect-error\n parseTextSync,\n parseInBatches\n};\n\nasync function parse(arrayBuffer: ArrayBuffer, options?: GeoJSONLoaderOptions) {\n return parseTextSync(new TextDecoder().decode(arrayBuffer), options);\n}\n\nfunction parseTextSync(text: string, options?: GeoJSONLoaderOptions) {\n // Apps can call the parse method directly, we so apply default options here\n options = {...GeoJSONLoader.options, ...options};\n options.geojson = {...GeoJSONLoader.options.geojson, ...options.geojson};\n options.gis = options.gis || {};\n\n let geojson;\n try {\n geojson = JSON.parse(text);\n } catch {\n geojson = {};\n }\n\n const table: GeoJSONTable = {\n shape: 'geojson-table',\n // TODO - deduce schema from geojson\n // TODO check that parsed data is of type FeatureCollection\n type: 'FeatureCollection',\n features: geojson?.features || []\n };\n\n switch (options.gis.format) {\n case 'binary':\n return geojsonToBinary(table.features);\n default:\n return table;\n }\n}\n\nfunction parseInBatches(asyncIterator, options): AsyncIterable<TableBatch> {\n // Apps can call the parse method directly, we so apply default options here\n options = {...GeoJSONLoader.options, ...options};\n options.json = {...GeoJSONLoader.options.geojson, ...options.geojson};\n\n const geojsonIterator = parseJSONInBatches(asyncIterator, options);\n\n switch (options.gis.format) {\n case 'binary':\n return makeBinaryGeometryIterator(geojsonIterator);\n default:\n return geojsonIterator as AsyncIterable<TableBatch>;\n }\n}\n\nasync function* makeBinaryGeometryIterator(geojsonIterator) {\n for await (const batch of geojsonIterator) {\n batch.data = geojsonToBinary(batch.data);\n yield batch;\n }\n}\n"],"mappings":"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"}
@@ -275,6 +275,7 @@
275
275
  if (Number.isFinite(cursor)) {
276
276
  this.cursor = cursor;
277
277
  }
278
+ this.shape = "array-row-table";
278
279
  this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);
279
280
  this.rows[this.length] = row;
280
281
  this.length++;
@@ -283,6 +284,7 @@
283
284
  if (Number.isFinite(cursor)) {
284
285
  this.cursor = cursor;
285
286
  }
287
+ this.shape = "object-row-table";
286
288
  this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);
287
289
  this.rows[this.length] = row;
288
290
  this.length++;
@@ -295,7 +297,7 @@
295
297
  rows = rows.slice(0, this.length);
296
298
  this.rows = null;
297
299
  const batch = {
298
- shape: this.options.shape,
300
+ shape: this.shape || "array-row-table",
299
301
  batchType: "data",
300
302
  data: rows,
301
303
  length: this.length,
@@ -311,12 +313,16 @@
311
313
  if (!arrayRow) {
312
314
  throw new Error("null row");
313
315
  }
314
- if (!headers) {
315
- throw new Error("no headers");
316
- }
317
316
  const objectRow = {};
318
- for (let i = 0; i < headers.length; i++) {
319
- objectRow[headers[i]] = arrayRow[i];
317
+ if (headers) {
318
+ for (let i = 0; i < headers.length; i++) {
319
+ objectRow[headers[i]] = arrayRow[i];
320
+ }
321
+ } else {
322
+ for (let i = 0; i < arrayRow.length; i++) {
323
+ const columnName = `column-${i}`;
324
+ objectRow[columnName] = arrayRow[i];
325
+ }
320
326
  }
321
327
  return objectRow;
322
328
  }
@@ -324,14 +330,25 @@
324
330
  if (!objectRow) {
325
331
  throw new Error("null row");
326
332
  }
327
- if (!headers) {
328
- throw new Error("no headers");
333
+ if (headers) {
334
+ const arrayRow = new Array(headers.length);
335
+ for (let i = 0; i < headers.length; i++) {
336
+ arrayRow[i] = objectRow[headers[i]];
337
+ }
338
+ return arrayRow;
329
339
  }
330
- const arrayRow = new Array(headers.length);
331
- for (let i = 0; i < headers.length; i++) {
332
- arrayRow[i] = objectRow[headers[i]];
340
+ return Object.values(objectRow);
341
+ }
342
+ function inferHeadersFromArrayRow(arrayRow) {
343
+ const headers = [];
344
+ for (let i = 0; i < arrayRow.length; i++) {
345
+ const columnName = `column-${i}`;
346
+ headers.push(columnName);
333
347
  }
334
- return arrayRow;
348
+ return headers;
349
+ }
350
+ function inferHeadersFromObjectRow(row) {
351
+ return Object.keys(row);
335
352
  }
336
353
 
337
354
  // ../schema/src/lib/table/batches/row-table-batch-aggregator.ts
@@ -342,10 +359,10 @@
342
359
  this.objectRows = null;
343
360
  this.arrayRows = null;
344
361
  this.cursor = 0;
345
- this._headers = [];
362
+ this._headers = null;
346
363
  this.options = options;
347
364
  this.schema = schema;
348
- if (!Array.isArray(schema)) {
365
+ if (schema) {
349
366
  this._headers = [];
350
367
  for (const key in schema) {
351
368
  this._headers[schema[key].index] = schema[key].name;
@@ -359,6 +376,7 @@
359
376
  if (Number.isFinite(cursor)) {
360
377
  this.cursor = cursor;
361
378
  }
379
+ this._headers || (this._headers = inferHeadersFromArrayRow(row));
362
380
  switch (this.options.shape) {
363
381
  case "object-row-table":
364
382
  const rowObject = convertToObjectRow(row, this._headers);
@@ -375,6 +393,7 @@
375
393
  if (Number.isFinite(cursor)) {
376
394
  this.cursor = cursor;
377
395
  }
396
+ this._headers || (this._headers = inferHeadersFromObjectRow(row));
378
397
  switch (this.options.shape) {
379
398
  case "array-row-table":
380
399
  const rowArray = convertToArrayRow(row, this._headers);
@@ -400,6 +419,7 @@
400
419
  batchType: "data",
401
420
  data: rows,
402
421
  length: this.length,
422
+ // @ts-expect-error we should infer a schema
403
423
  schema: this.schema,
404
424
  cursor: this.cursor
405
425
  };
@@ -485,7 +505,7 @@
485
505
 
486
506
  // ../schema/src/lib/table/batches/table-batch-builder.ts
487
507
  var DEFAULT_OPTIONS = {
488
- shape: "array-row-table",
508
+ shape: void 0,
489
509
  batchSize: "auto",
490
510
  batchDebounceMs: 0,
491
511
  limit: 0,
@@ -602,8 +622,6 @@
602
622
  }
603
623
  _getTableBatchType() {
604
624
  switch (this.options.shape) {
605
- case "row-table":
606
- return BaseTableBatchAggregator;
607
625
  case "array-row-table":
608
626
  case "object-row-table":
609
627
  return RowTableBatchAggregator;
@@ -615,7 +633,7 @@
615
633
  }
616
634
  return TableBatchBuilder.ArrowBatch;
617
635
  default:
618
- throw new Error(ERR_MESSAGE);
636
+ return BaseTableBatchAggregator;
619
637
  }
620
638
  }
621
639
  };
@@ -2356,11 +2374,7 @@ Char: ${this.c}`;
2356
2374
  const { jsonpaths } = options.json || {};
2357
2375
  let isFirstChunk = true;
2358
2376
  const schema = null;
2359
- const shape = options?.json?.shape || "object-row-table";
2360
- const tableBatchBuilder = new TableBatchBuilder(schema, {
2361
- ...options,
2362
- shape
2363
- });
2377
+ const tableBatchBuilder = new TableBatchBuilder(schema, options);
2364
2378
  const parser = new StreamingJSONParser({ jsonpaths });
2365
2379
  for await (const chunk of asyncIterator) {
2366
2380
  const rows = parser.write(chunk);
@@ -2369,7 +2383,7 @@ Char: ${this.c}`;
2369
2383
  if (metadata) {
2370
2384
  const initialBatch = {
2371
2385
  // Common fields
2372
- shape,
2386
+ shape: options?.json?.shape || "array-row-table",
2373
2387
  batchType: "partial-result",
2374
2388
  data: [],
2375
2389
  length: 0,
@@ -2402,10 +2416,11 @@ Char: ${this.c}`;
2402
2416
  }
2403
2417
  if (metadata) {
2404
2418
  const finalBatch = {
2405
- shape,
2419
+ shape: "json",
2406
2420
  batchType: "final-result",
2407
2421
  container: parser.getPartialResult(),
2408
2422
  jsonpath: parser.getStreamingJsonPathAsString(),
2423
+ /** Data Just to avoid crashing? */
2409
2424
  data: [],
2410
2425
  length: 0
2411
2426
  // schema: null
@@ -2415,7 +2430,7 @@ Char: ${this.c}`;
2415
2430
  }
2416
2431
 
2417
2432
  // src/geojson-loader.ts
2418
- var VERSION = true ? "4.1.0-alpha.2" : "latest";
2433
+ var VERSION = true ? "4.1.0-alpha.3" : "latest";
2419
2434
  var GeoJSONWorkerLoader = {
2420
2435
  name: "GeoJSON",
2421
2436
  id: "geojson",
@@ -1,4 +1,4 @@
1
- import type { WriterWithEncoder, WriterOptions } from '@loaders.gl/loader-utils';
1
+ import { type WriterWithEncoder, type WriterOptions } from '@loaders.gl/loader-utils';
2
2
  import type { Table, TableBatch } from '@loaders.gl/schema';
3
3
  export type GeoJSONWriterOptions = WriterOptions & {
4
4
  geojson?: {
@@ -1 +1 @@
1
- {"version":3,"file":"geojson-writer.d.ts","sourceRoot":"","sources":["../src/geojson-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAC,KAAK,EAAE,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAG1D,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,oBAAoB,CAgBpF,CAAC"}
1
+ {"version":3,"file":"geojson-writer.d.ts","sourceRoot":"","sources":["../src/geojson-writer.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAC,KAAK,EAAE,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAG1D,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,oBAAoB,CAuBpF,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { concatenateArrayBuffersAsync } from '@loaders.gl/loader-utils';
1
2
  import { encodeTableAsGeojsonInBatches } from "./lib/encoders/geojson-encoder.js";
2
3
  export const GeoJSONWriter = {
3
4
  id: 'geojson',
@@ -6,13 +7,18 @@ export const GeoJSONWriter = {
6
7
  name: 'GeoJSON',
7
8
  extensions: ['geojson'],
8
9
  mimeTypes: ['application/geo+json'],
10
+ text: true,
9
11
  options: {
10
12
  geojson: {
11
13
  featureArray: false,
12
14
  geometryColumn: null
13
15
  }
14
16
  },
15
- text: true,
17
+ async encode(table, options) {
18
+ const tableIterator = [table];
19
+ const batches = encodeTableAsGeojsonInBatches(tableIterator, options);
20
+ return await concatenateArrayBuffersAsync(batches);
21
+ },
16
22
  encodeInBatches: (tableIterator, options) => encodeTableAsGeojsonInBatches(tableIterator, options)
17
23
  };
18
24
  //# sourceMappingURL=geojson-writer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"geojson-writer.js","names":["encodeTableAsGeojsonInBatches","GeoJSONWriter","id","version","module","name","extensions","mimeTypes","options","geojson","featureArray","geometryColumn","text","encodeInBatches","tableIterator"],"sources":["../src/geojson-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n// Copyright Foursquare, Inc 20222\n\nimport type {WriterWithEncoder, WriterOptions} from '@loaders.gl/loader-utils';\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport {encodeTableAsGeojsonInBatches} from './lib/encoders/geojson-encoder';\n\nexport type GeoJSONWriterOptions = WriterOptions & {\n geojson?: {\n featureArray?: boolean;\n geometryColumn?: number | null;\n };\n chunkSize?: number;\n};\n\nexport const GeoJSONWriter: WriterWithEncoder<Table, TableBatch, GeoJSONWriterOptions> = {\n id: 'geojson',\n version: 'latest',\n module: 'geojson',\n name: 'GeoJSON',\n extensions: ['geojson'],\n mimeTypes: ['application/geo+json'],\n options: {\n geojson: {\n featureArray: false,\n geometryColumn: null\n }\n },\n text: true,\n encodeInBatches: (tableIterator: AsyncIterable<TableBatch>, options) =>\n encodeTableAsGeojsonInBatches(tableIterator, options)\n};\n"],"mappings":"SAMQA,6BAA6B;AAUrC,OAAO,MAAMC,aAAyE,GAAG;EACvFC,EAAE,EAAE,SAAS;EACbC,OAAO,EAAE,QAAQ;EACjBC,MAAM,EAAE,SAAS;EACjBC,IAAI,EAAE,SAAS;EACfC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,sBAAsB,CAAC;EACnCC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,YAAY,EAAE,KAAK;MACnBC,cAAc,EAAE;IAClB;EACF,CAAC;EACDC,IAAI,EAAE,IAAI;EACVC,eAAe,EAAEA,CAACC,aAAwC,EAAEN,OAAO,KACjER,6BAA6B,CAACc,aAAa,EAAEN,OAAO;AACxD,CAAC"}
1
+ {"version":3,"file":"geojson-writer.js","names":["concatenateArrayBuffersAsync","encodeTableAsGeojsonInBatches","GeoJSONWriter","id","version","module","name","extensions","mimeTypes","text","options","geojson","featureArray","geometryColumn","encode","table","tableIterator","batches","encodeInBatches"],"sources":["../src/geojson-writer.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// Copyright Foursquare, Inc 20222\n\nimport {\n type WriterWithEncoder,\n type WriterOptions,\n concatenateArrayBuffersAsync\n} from '@loaders.gl/loader-utils';\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport {encodeTableAsGeojsonInBatches} from './lib/encoders/geojson-encoder';\n\nexport type GeoJSONWriterOptions = WriterOptions & {\n geojson?: {\n featureArray?: boolean;\n geometryColumn?: number | null;\n };\n chunkSize?: number;\n};\n\nexport const GeoJSONWriter: WriterWithEncoder<Table, TableBatch, GeoJSONWriterOptions> = {\n id: 'geojson',\n version: 'latest',\n module: 'geojson',\n name: 'GeoJSON',\n extensions: ['geojson'],\n mimeTypes: ['application/geo+json'],\n text: true,\n options: {\n geojson: {\n featureArray: false,\n geometryColumn: null\n }\n },\n\n async encode(table: Table, options: GeoJSONWriterOptions): Promise<ArrayBuffer> {\n const tableIterator = [table] as TableBatch[];\n const batches = encodeTableAsGeojsonInBatches(tableIterator, options);\n return await concatenateArrayBuffersAsync(batches);\n },\n\n encodeInBatches: (tableIterator: AsyncIterable<TableBatch> | Iterable<TableBatch>, options) =>\n encodeTableAsGeojsonInBatches(tableIterator, options)\n};\n"],"mappings":"AAKA,SAGEA,4BAA4B,QACvB,0BAA0B;AAAC,SAE1BC,6BAA6B;AAUrC,OAAO,MAAMC,aAAyE,GAAG;EACvFC,EAAE,EAAE,SAAS;EACbC,OAAO,EAAE,QAAQ;EACjBC,MAAM,EAAE,SAAS;EACjBC,IAAI,EAAE,SAAS;EACfC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,sBAAsB,CAAC;EACnCC,IAAI,EAAE,IAAI;EACVC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,YAAY,EAAE,KAAK;MACnBC,cAAc,EAAE;IAClB;EACF,CAAC;EAED,MAAMC,MAAMA,CAACC,KAAY,EAAEL,OAA6B,EAAwB;IAC9E,MAAMM,aAAa,GAAG,CAACD,KAAK,CAAiB;IAC7C,MAAME,OAAO,GAAGhB,6BAA6B,CAACe,aAAa,EAAEN,OAAO,CAAC;IACrE,OAAO,MAAMV,4BAA4B,CAACiB,OAAO,CAAC;EACpD,CAAC;EAEDC,eAAe,EAAEA,CAACF,aAA+D,EAAEN,OAAO,KACxFT,6BAA6B,CAACe,aAAa,EAAEN,OAAO;AACxD,CAAC"}