@loaders.gl/json 4.0.0-alpha.24 → 4.0.0-alpha.25

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 (68) hide show
  1. package/dist/dist.min.js +86 -50
  2. package/dist/es5/geojson-loader.js +14 -5
  3. package/dist/es5/geojson-loader.js.map +1 -1
  4. package/dist/es5/geojson-writer.js.map +1 -1
  5. package/dist/es5/json-loader.js +1 -1
  6. package/dist/es5/json-writer.js +1 -1
  7. package/dist/es5/json-writer.js.map +1 -1
  8. package/dist/es5/lib/encoder-utils/encode-table-row.js +54 -0
  9. package/dist/es5/lib/encoder-utils/encode-table-row.js.map +1 -0
  10. package/dist/es5/lib/encoder-utils/encode-utils.js.map +1 -0
  11. package/dist/es5/lib/encoder-utils/utf8-encoder.js.map +1 -0
  12. package/dist/es5/lib/encoders/geojson-encoder.js +47 -84
  13. package/dist/es5/lib/encoders/geojson-encoder.js.map +1 -1
  14. package/dist/es5/lib/encoders/json-encoder.js +3 -3
  15. package/dist/es5/lib/encoders/json-encoder.js.map +1 -1
  16. package/dist/es5/ndgeoson-loader.js +1 -1
  17. package/dist/es5/ndjson-loader.js +1 -1
  18. package/dist/esm/geojson-loader.js +14 -5
  19. package/dist/esm/geojson-loader.js.map +1 -1
  20. package/dist/esm/geojson-writer.js.map +1 -1
  21. package/dist/esm/json-loader.js +1 -1
  22. package/dist/esm/json-writer.js +1 -1
  23. package/dist/esm/json-writer.js.map +1 -1
  24. package/dist/esm/lib/encoder-utils/encode-table-row.js +44 -0
  25. package/dist/esm/lib/encoder-utils/encode-table-row.js.map +1 -0
  26. package/dist/esm/lib/encoder-utils/encode-utils.js.map +1 -0
  27. package/dist/esm/lib/encoder-utils/utf8-encoder.js.map +1 -0
  28. package/dist/esm/lib/encoders/geojson-encoder.js +9 -52
  29. package/dist/esm/lib/encoders/geojson-encoder.js.map +1 -1
  30. package/dist/esm/lib/encoders/json-encoder.js +3 -3
  31. package/dist/esm/lib/encoders/json-encoder.js.map +1 -1
  32. package/dist/esm/ndgeoson-loader.js +1 -1
  33. package/dist/esm/ndjson-loader.js +1 -1
  34. package/dist/geojson-loader.d.ts.map +1 -1
  35. package/dist/geojson-worker.js +13 -182
  36. package/dist/geojson-writer.d.ts +8 -3
  37. package/dist/geojson-writer.d.ts.map +1 -1
  38. package/dist/json-writer.d.ts +13 -3
  39. package/dist/json-writer.d.ts.map +1 -1
  40. package/dist/lib/encoder-utils/encode-table-row.d.ts +7 -0
  41. package/dist/lib/encoder-utils/encode-table-row.d.ts.map +1 -0
  42. package/dist/lib/encoder-utils/encode-utils.d.ts.map +1 -0
  43. package/dist/lib/encoder-utils/utf8-encoder.d.ts.map +1 -0
  44. package/dist/lib/encoders/geojson-encoder.d.ts +2 -8
  45. package/dist/lib/encoders/geojson-encoder.d.ts.map +1 -1
  46. package/dist/lib/encoders/json-encoder.d.ts +1 -10
  47. package/dist/lib/encoders/json-encoder.d.ts.map +1 -1
  48. package/package.json +5 -5
  49. package/src/geojson-loader.ts +19 -5
  50. package/src/geojson-writer.ts +8 -3
  51. package/src/json-writer.ts +12 -4
  52. package/src/lib/encoder-utils/encode-table-row.ts +69 -0
  53. package/src/lib/encoders/geojson-encoder.ts +15 -78
  54. package/src/lib/encoders/json-encoder.ts +3 -11
  55. package/dist/es5/lib/encoders/encode-utils.js.map +0 -1
  56. package/dist/es5/lib/encoders/utf8-encoder.js.map +0 -1
  57. package/dist/esm/lib/encoders/encode-utils.js.map +0 -1
  58. package/dist/esm/lib/encoders/utf8-encoder.js.map +0 -1
  59. package/dist/lib/encoders/encode-utils.d.ts.map +0 -1
  60. package/dist/lib/encoders/utf8-encoder.d.ts.map +0 -1
  61. /package/dist/es5/lib/{encoders → encoder-utils}/encode-utils.js +0 -0
  62. /package/dist/es5/lib/{encoders → encoder-utils}/utf8-encoder.js +0 -0
  63. /package/dist/esm/lib/{encoders → encoder-utils}/encode-utils.js +0 -0
  64. /package/dist/esm/lib/{encoders → encoder-utils}/utf8-encoder.js +0 -0
  65. /package/dist/lib/{encoders → encoder-utils}/encode-utils.d.ts +0 -0
  66. /package/dist/lib/{encoders → encoder-utils}/utf8-encoder.d.ts +0 -0
  67. /package/src/lib/{encoders → encoder-utils}/encode-utils.ts +0 -0
  68. /package/src/lib/{encoders → encoder-utils}/utf8-encoder.ts +0 -0
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.encodeTableAsGeojsonInBatches = encodeTableAsGeojsonInBatches;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
10
  var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
12
11
  var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
13
12
  var _schema = require("@loaders.gl/schema");
14
- var _encodeUtils = require("./encode-utils");
15
- var _utf8Encoder = require("./utf8-encoder");
13
+ var _encodeUtils = require("../encoder-utils/encode-utils");
14
+ var _encodeTableRow = require("../encoder-utils/encode-table-row");
15
+ var _utf8Encoder = require("../encoder-utils/utf8-encoder");
16
16
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
17
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
18
  function _asyncIterator(iterable) { var method, async, sync, retry = 2; for ("undefined" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) { if (async && null != (method = iterable[async])) return method.call(iterable); if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable)); async = "@@asyncIterator", sync = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
@@ -24,7 +24,7 @@ function _encodeTableAsGeojsonInBatches() {
24
24
  _encodeTableAsGeojsonInBatches = (0, _wrapAsyncGenerator2.default)(function (batchIterator) {
25
25
  var inputOpts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
26
26
  return _regenerator.default.mark(function _callee() {
27
- var options, utf8Encoder, geometryColumn, isFirstLine, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, batch, table, start, _batch$end, end, rowIndex, arrayBufferBatch;
27
+ var options, utf8Encoder, geometryColumn, isFirstLine, start, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, tableBatch, end, rowIndex, arrayBufferBatch;
28
28
  return _regenerator.default.wrap(function _callee$(_context) {
29
29
  while (1) switch (_context.prev = _context.next) {
30
30
  case 0:
@@ -39,27 +39,28 @@ function _encodeTableAsGeojsonInBatches() {
39
39
  utf8Encoder.push('[');
40
40
  geometryColumn = options.geojson.geometryColumn;
41
41
  isFirstLine = true;
42
+ start = 0;
42
43
  _iteratorAbruptCompletion = false;
43
44
  _didIteratorError = false;
44
- _context.prev = 8;
45
+ _context.prev = 9;
45
46
  _iterator = _asyncIterator(batchIterator);
46
- case 10:
47
- _context.next = 12;
47
+ case 11:
48
+ _context.next = 13;
48
49
  return (0, _awaitAsyncGenerator2.default)(_iterator.next());
49
- case 12:
50
+ case 13:
50
51
  if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) {
51
- _context.next = 35;
52
+ _context.next = 37;
52
53
  break;
53
54
  }
54
- batch = _step.value;
55
- table = batch.table, start = batch.start, _batch$end = batch.end, end = _batch$end === void 0 ? (0, _schema.getTableLength)(batch.table) - start : _batch$end;
55
+ tableBatch = _step.value;
56
+ end = start + (0, _schema.getTableLength)(tableBatch);
56
57
  if (!geometryColumn) {
57
- geometryColumn = geometryColumn || (0, _encodeUtils.detectGeometryColumnIndex)(table);
58
+ geometryColumn = geometryColumn || (0, _encodeUtils.detectGeometryColumnIndex)(tableBatch);
58
59
  }
59
60
  rowIndex = start;
60
- case 17:
61
+ case 18:
61
62
  if (!(rowIndex < end)) {
62
- _context.next = 28;
63
+ _context.next = 30;
63
64
  break;
64
65
  }
65
66
  if (!isFirstLine) {
@@ -67,112 +68,74 @@ function _encodeTableAsGeojsonInBatches() {
67
68
  }
68
69
  utf8Encoder.push('\n');
69
70
  isFirstLine = false;
70
- encodeRow(table, rowIndex, geometryColumn, utf8Encoder);
71
+ (0, _encodeTableRow.encodeTableRow)(tableBatch, rowIndex, geometryColumn, utf8Encoder);
71
72
  if (!utf8Encoder.isFull()) {
72
- _context.next = 25;
73
+ _context.next = 26;
73
74
  break;
74
75
  }
75
- _context.next = 25;
76
+ _context.next = 26;
76
77
  return utf8Encoder.getArrayBufferBatch();
77
- case 25:
78
+ case 26:
79
+ start = end;
80
+ case 27:
78
81
  ++rowIndex;
79
- _context.next = 17;
82
+ _context.next = 18;
80
83
  break;
81
- case 28:
84
+ case 30:
82
85
  arrayBufferBatch = utf8Encoder.getArrayBufferBatch();
83
86
  if (!(arrayBufferBatch.byteLength > 0)) {
84
- _context.next = 32;
87
+ _context.next = 34;
85
88
  break;
86
89
  }
87
- _context.next = 32;
90
+ _context.next = 34;
88
91
  return arrayBufferBatch;
89
- case 32:
92
+ case 34:
90
93
  _iteratorAbruptCompletion = false;
91
- _context.next = 10;
92
- break;
93
- case 35:
94
- _context.next = 41;
94
+ _context.next = 11;
95
95
  break;
96
96
  case 37:
97
- _context.prev = 37;
98
- _context.t0 = _context["catch"](8);
97
+ _context.next = 43;
98
+ break;
99
+ case 39:
100
+ _context.prev = 39;
101
+ _context.t0 = _context["catch"](9);
99
102
  _didIteratorError = true;
100
103
  _iteratorError = _context.t0;
101
- case 41:
102
- _context.prev = 41;
103
- _context.prev = 42;
104
+ case 43:
105
+ _context.prev = 43;
106
+ _context.prev = 44;
104
107
  if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
105
- _context.next = 46;
108
+ _context.next = 48;
106
109
  break;
107
110
  }
108
- _context.next = 46;
111
+ _context.next = 48;
109
112
  return (0, _awaitAsyncGenerator2.default)(_iterator.return());
110
- case 46:
111
- _context.prev = 46;
113
+ case 48:
114
+ _context.prev = 48;
112
115
  if (!_didIteratorError) {
113
- _context.next = 49;
116
+ _context.next = 51;
114
117
  break;
115
118
  }
116
119
  throw _iteratorError;
117
- case 49:
118
- return _context.finish(46);
119
- case 50:
120
- return _context.finish(41);
121
120
  case 51:
121
+ return _context.finish(48);
122
+ case 52:
123
+ return _context.finish(43);
124
+ case 53:
122
125
  utf8Encoder.push('\n');
123
126
  utf8Encoder.push(']\n');
124
127
  if (!options.geojson.featureArray) {
125
128
  utf8Encoder.push('}');
126
129
  }
127
- _context.next = 56;
130
+ _context.next = 58;
128
131
  return utf8Encoder.getArrayBufferBatch();
129
- case 56:
132
+ case 58:
130
133
  case "end":
131
134
  return _context.stop();
132
135
  }
133
- }, _callee, null, [[8, 37, 41, 51], [42,, 46, 50]]);
136
+ }, _callee, null, [[9, 39, 43, 53], [44,, 48, 52]]);
134
137
  })();
135
138
  });
136
139
  return _encodeTableAsGeojsonInBatches.apply(this, arguments);
137
140
  }
138
- function encodeRow(table, rowIndex, geometryColumnIndex, utf8Encoder) {
139
- var row = (0, _schema.getTableRowAsObject)(table, rowIndex);
140
- if (!row) return;
141
- var featureWithProperties = getFeatureFromRow(table, row, geometryColumnIndex);
142
- var featureString = JSON.stringify(featureWithProperties);
143
- utf8Encoder.push(featureString);
144
- }
145
- function getFeatureFromRow(table, row, geometryColumnIndex) {
146
- var _table$schema, _featureOrGeometry, _featureOrGeometry2;
147
- var properties = (0, _encodeUtils.getRowPropertyObject)(table, row, [geometryColumnIndex]);
148
- var columnName = (_table$schema = table.schema) === null || _table$schema === void 0 ? void 0 : _table$schema.fields[geometryColumnIndex].name;
149
- var featureOrGeometry = columnName && row[columnName];
150
- if (!featureOrGeometry) {
151
- return {
152
- type: 'Feature',
153
- geometry: null,
154
- properties: properties
155
- };
156
- }
157
- if (typeof featureOrGeometry === 'string') {
158
- try {
159
- featureOrGeometry = JSON.parse(featureOrGeometry);
160
- } catch (err) {
161
- throw new Error('Invalid string geometry');
162
- }
163
- }
164
- if ((0, _typeof2.default)(featureOrGeometry) !== 'object' || typeof ((_featureOrGeometry = featureOrGeometry) === null || _featureOrGeometry === void 0 ? void 0 : _featureOrGeometry.type) !== 'string') {
165
- throw new Error('invalid geometry column value');
166
- }
167
- if (((_featureOrGeometry2 = featureOrGeometry) === null || _featureOrGeometry2 === void 0 ? void 0 : _featureOrGeometry2.type) === 'Feature') {
168
- return _objectSpread(_objectSpread({}, featureOrGeometry), {}, {
169
- properties: properties
170
- });
171
- }
172
- return {
173
- type: 'Feature',
174
- geometry: featureOrGeometry,
175
- properties: properties
176
- };
177
- }
178
141
  //# sourceMappingURL=geojson-encoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"geojson-encoder.js","names":["_schema","require","_encodeUtils","_utf8Encoder","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_asyncIterator","iterable","method","async","sync","retry","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","s","AsyncFromSyncIteratorContinuation","r","Promise","reject","done","resolve","value","then","n","next","prototype","return","_return","ret","throw","_throw","thr","encodeTableAsGeojsonInBatches","_x","_encodeTableAsGeojsonInBatches","_wrapAsyncGenerator2","batchIterator","inputOpts","undefined","_regenerator","mark","_callee","options","utf8Encoder","geometryColumn","isFirstLine","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","batch","table","start","_batch$end","end","rowIndex","arrayBufferBatch","wrap","_callee$","_context","prev","geojson","chunkSize","Utf8ArrayBufferEncoder","featureArray","_awaitAsyncGenerator2","sent","getTableLength","detectGeometryColumnIndex","encodeRow","isFull","getArrayBufferBatch","byteLength","t0","finish","stop","geometryColumnIndex","row","getTableRowAsObject","featureWithProperties","getFeatureFromRow","featureString","JSON","stringify","_table$schema","_featureOrGeometry","_featureOrGeometry2","properties","getRowPropertyObject","columnName","schema","fields","name","featureOrGeometry","type","geometry","parse","err","Error","_typeof2"],"sources":["../../../../src/lib/encoders/geojson-encoder.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Feature, getTableLength} from '@loaders.gl/schema';\nimport {Table, TableBatch, getTableRowAsObject} from '@loaders.gl/schema';\nimport {detectGeometryColumnIndex, getRowPropertyObject} from './encode-utils';\nimport {Utf8ArrayBufferEncoder} from './utf8-encoder';\n\ntype Row = {[key: string]: unknown};\n\nexport type GeoJSONWriterOptions = {\n geojson?: {\n featureArray?: boolean;\n geometryColumn?: number | null;\n };\n chunkSize?: number;\n};\n\n/**\n * Encode a table as GeoJSON\n */\n// eslint-disable-next-line max-statements\nexport async function* encodeTableAsGeojsonInBatches(\n batchIterator: AsyncIterable<TableBatch>, // | Iterable<TableBatch>,\n inputOpts: GeoJSONWriterOptions = {}\n): AsyncIterable<ArrayBuffer> {\n const options: Required<GeoJSONWriterOptions> = {geojson: {}, chunkSize: 10000, ...inputOpts};\n\n const utf8Encoder = new Utf8ArrayBufferEncoder(options.chunkSize);\n\n if (!options.geojson.featureArray) {\n utf8Encoder.push('{\\n', '\"type\": \"FeatureCollection\",\\n', '\"features\":\\n');\n }\n utf8Encoder.push('['); // Note no newline\n\n let geometryColumn = options.geojson.geometryColumn;\n\n let isFirstLine = true;\n\n for await (const batch of batchIterator) {\n const {table, start, end = getTableLength(batch.table) - start} = batch;\n\n // Deduce geometry column if not already done\n if (!geometryColumn) {\n geometryColumn = geometryColumn || detectGeometryColumnIndex(table);\n }\n\n for (let rowIndex = start; rowIndex < end; ++rowIndex) {\n // Add a comma except on final feature\n if (!isFirstLine) {\n utf8Encoder.push(',');\n }\n utf8Encoder.push('\\n');\n isFirstLine = false;\n\n encodeRow(table, rowIndex, geometryColumn, utf8Encoder);\n\n // eslint-disable-next-line max-depth\n if (utf8Encoder.isFull()) {\n yield utf8Encoder.getArrayBufferBatch();\n }\n }\n const arrayBufferBatch = utf8Encoder.getArrayBufferBatch();\n if (arrayBufferBatch.byteLength > 0) {\n yield arrayBufferBatch;\n }\n }\n\n utf8Encoder.push('\\n');\n\n // Add completing rows and emit final batch\n utf8Encoder.push(']\\n');\n if (!options.geojson.featureArray) {\n utf8Encoder.push('}');\n }\n\n // Note: Since we pushed a few final lines, the last batch will always exist, no need to check first\n yield utf8Encoder.getArrayBufferBatch();\n}\n\n// Helpers\n\n/**\n * Encode a row. Currently this ignores properties in the geometry column.\n */\nfunction encodeRow(\n table: Table,\n rowIndex: number,\n geometryColumnIndex: number,\n utf8Encoder: Utf8ArrayBufferEncoder\n): void {\n const row = getTableRowAsObject(table, rowIndex);\n if (!row) return;\n const featureWithProperties = getFeatureFromRow(table, row, geometryColumnIndex);\n const featureString = JSON.stringify(featureWithProperties);\n utf8Encoder.push(featureString);\n}\n\n/**\n * Encode a row as a Feature. Currently this ignores properties objects in the geometry column.\n */\nfunction getFeatureFromRow(table: Table, row: Row, geometryColumnIndex: number): Feature {\n // Extract non-feature/geometry properties\n const properties = getRowPropertyObject(table, row, [geometryColumnIndex]);\n\n // Extract geometry feature\n const columnName = table.schema?.fields[geometryColumnIndex].name;\n let featureOrGeometry =\n columnName && (row[columnName] as {[key: string]: unknown} | string | null | undefined);\n\n // GeoJSON support null geometries\n if (!featureOrGeometry) {\n // @ts-ignore Feature type does not support null geometries\n return {type: 'Feature', geometry: null, properties};\n }\n\n // Support string geometries?\n // TODO: This assumes GeoJSON strings, which may not be the correct format\n // (could be WKT, encoded WKB...)\n if (typeof featureOrGeometry === 'string') {\n try {\n featureOrGeometry = JSON.parse(featureOrGeometry);\n } catch (err) {\n throw new Error('Invalid string geometry');\n }\n }\n\n if (typeof featureOrGeometry !== 'object' || typeof featureOrGeometry?.type !== 'string') {\n throw new Error('invalid geometry column value');\n }\n\n if (featureOrGeometry?.type === 'Feature') {\n // @ts-ignore Feature type does not support null geometries\n return {...featureOrGeometry, properties};\n }\n\n // @ts-ignore Feature type does not support null geometries\n return {type: 'Feature', geometry: featureOrGeometry, properties};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"geojson-encoder.js","names":["_schema","require","_encodeUtils","_encodeTableRow","_utf8Encoder","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_asyncIterator","iterable","method","async","sync","retry","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","s","AsyncFromSyncIteratorContinuation","r","Promise","reject","done","resolve","value","then","n","next","prototype","return","_return","ret","throw","_throw","thr","encodeTableAsGeojsonInBatches","_x","_encodeTableAsGeojsonInBatches","_wrapAsyncGenerator2","batchIterator","inputOpts","undefined","_regenerator","mark","_callee","options","utf8Encoder","geometryColumn","isFirstLine","start","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","tableBatch","end","rowIndex","arrayBufferBatch","wrap","_callee$","_context","prev","geojson","chunkSize","Utf8ArrayBufferEncoder","featureArray","_awaitAsyncGenerator2","sent","getTableLength","detectGeometryColumnIndex","encodeTableRow","isFull","getArrayBufferBatch","byteLength","t0","finish","stop"],"sources":["../../../../src/lib/encoders/geojson-encoder.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport type {TableBatch} from '@loaders.gl/schema';\nimport {getTableLength} from '@loaders.gl/schema';\nimport {detectGeometryColumnIndex} from '../encoder-utils/encode-utils';\nimport {encodeTableRow} from '../encoder-utils/encode-table-row';\nimport {Utf8ArrayBufferEncoder} from '../encoder-utils/utf8-encoder';\nimport type {GeoJSONWriterOptions} from '../../geojson-writer';\n\n/**\n * Encode a table as GeoJSON\n */\n// eslint-disable-next-line max-statements\nexport async function* encodeTableAsGeojsonInBatches(\n batchIterator: AsyncIterable<TableBatch>, // | Iterable<TableBatch>,\n inputOpts: GeoJSONWriterOptions = {}\n): AsyncIterable<ArrayBuffer> {\n // @ts-expect-error\n const options: Required<GeoJSONWriterOptions> = {geojson: {}, chunkSize: 10000, ...inputOpts};\n\n const utf8Encoder = new Utf8ArrayBufferEncoder(options.chunkSize);\n\n if (!options.geojson.featureArray) {\n utf8Encoder.push('{\\n', '\"type\": \"FeatureCollection\",\\n', '\"features\":\\n');\n }\n utf8Encoder.push('['); // Note no newline\n\n let geometryColumn = options.geojson.geometryColumn;\n\n let isFirstLine = true;\n\n let start = 0;\n for await (const tableBatch of batchIterator) {\n const end = start + getTableLength(tableBatch);\n\n // Deduce geometry column if not already done\n if (!geometryColumn) {\n geometryColumn = geometryColumn || detectGeometryColumnIndex(tableBatch);\n }\n\n for (let rowIndex = start; rowIndex < end; ++rowIndex) {\n // Add a comma except on final feature\n if (!isFirstLine) {\n utf8Encoder.push(',');\n }\n utf8Encoder.push('\\n');\n isFirstLine = false;\n\n encodeTableRow(tableBatch, rowIndex, geometryColumn, utf8Encoder);\n\n // eslint-disable-next-line max-depth\n if (utf8Encoder.isFull()) {\n yield utf8Encoder.getArrayBufferBatch();\n }\n\n start = end;\n }\n\n const arrayBufferBatch = utf8Encoder.getArrayBufferBatch();\n if (arrayBufferBatch.byteLength > 0) {\n yield arrayBufferBatch;\n }\n }\n\n utf8Encoder.push('\\n');\n\n // Add completing rows and emit final batch\n utf8Encoder.push(']\\n');\n if (!options.geojson.featureArray) {\n utf8Encoder.push('}');\n }\n\n // Note: Since we pushed a few final lines, the last batch will always exist, no need to check first\n yield utf8Encoder.getArrayBufferBatch();\n}\n"],"mappings":";;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAAqE,SAAAI,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAAA,SAAAY,eAAAC,QAAA,QAAAC,MAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,KAAA,iCAAAC,MAAA,KAAAH,KAAA,GAAAG,MAAA,CAAAC,aAAA,EAAAH,IAAA,GAAAE,MAAA,CAAAE,QAAA,GAAAH,KAAA,WAAAF,KAAA,aAAAD,MAAA,GAAAD,QAAA,CAAAE,KAAA,WAAAD,MAAA,CAAAO,IAAA,CAAAR,QAAA,OAAAG,IAAA,aAAAF,MAAA,GAAAD,QAAA,CAAAG,IAAA,eAAAM,qBAAA,CAAAR,MAAA,CAAAO,IAAA,CAAAR,QAAA,IAAAE,KAAA,sBAAAC,IAAA,6BAAAO,SAAA;AAAA,SAAAD,sBAAAE,CAAA,aAAAC,kCAAAC,CAAA,QAAApC,MAAA,CAAAoC,CAAA,MAAAA,CAAA,SAAAC,OAAA,CAAAC,MAAA,KAAAL,SAAA,CAAAG,CAAA,+BAAAG,IAAA,GAAAH,CAAA,CAAAG,IAAA,SAAAF,OAAA,CAAAG,OAAA,CAAAJ,CAAA,CAAAK,KAAA,EAAAC,IAAA,WAAAD,KAAA,aAAAA,KAAA,EAAAA,KAAA,EAAAF,IAAA,EAAAA,IAAA,iBAAAP,qBAAA,YAAAA,sBAAAE,CAAA,SAAAA,CAAA,GAAAA,CAAA,OAAAS,CAAA,GAAAT,CAAA,CAAAU,IAAA,KAAAZ,qBAAA,CAAAa,SAAA,KAAAX,CAAA,QAAAS,CAAA,QAAAC,IAAA,WAAAA,KAAA,WAAAT,iCAAA,MAAAQ,CAAA,CAAAnC,KAAA,MAAA0B,CAAA,EAAAtB,SAAA,OAAAkC,MAAA,WAAAC,QAAAN,KAAA,QAAAO,GAAA,QAAAd,CAAA,CAAAY,MAAA,oBAAAE,GAAA,GAAAX,OAAA,CAAAG,OAAA,GAAAC,KAAA,EAAAA,KAAA,EAAAF,IAAA,UAAAJ,iCAAA,CAAAa,GAAA,CAAAxC,KAAA,MAAA0B,CAAA,EAAAtB,SAAA,OAAAqC,KAAA,WAAAC,OAAAT,KAAA,QAAAU,GAAA,QAAAjB,CAAA,CAAAY,MAAA,oBAAAK,GAAA,GAAAd,OAAA,CAAAC,MAAA,CAAAG,KAAA,IAAAN,iCAAA,CAAAgB,GAAA,CAAA3C,KAAA,MAAA0B,CAAA,EAAAtB,SAAA,aAAAoB,qBAAA,CAAAE,CAAA;AAAA,SAO9CkB,6BAA6BA,CAAAC,EAAA;EAAA,OAAAC,8BAAA,CAAA9C,KAAA,OAAAI,SAAA;AAAA;AAAA,SAAA0C,+BAAA;EAAAA,8BAAA,OAAAC,oBAAA,CAAArC,OAAA,EAA7C,UACLsC,aAAwC;IAAA,IACxCC,SAA+B,GAAA7C,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA8C,SAAA,GAAA9C,SAAA,MAAG,CAAC,CAAC;IAAA,OAAA+C,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,UAAAC,QAAA;MAAA,IAAAC,OAAA,EAAAC,WAAA,EAAAC,cAAA,EAAAC,WAAA,EAAAC,KAAA,EAAAC,yBAAA,EAAAC,iBAAA,EAAAC,cAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,UAAA,EAAAC,GAAA,EAAAC,QAAA,EAAAC,gBAAA;MAAA,OAAAhB,YAAA,CAAAzC,OAAA,CAAA0D,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAlC,IAAA;UAAA;YAG9BkB,OAAuC,GAAArD,aAAA;cAAIuE,OAAO,EAAE,CAAC,CAAC;cAAEC,SAAS,EAAE;YAAK,GAAKxB,SAAS;YAEtFM,WAAW,GAAG,IAAImB,mCAAsB,CAACpB,OAAO,CAACmB,SAAS,CAAC;YAEjE,IAAI,CAACnB,OAAO,CAACkB,OAAO,CAACG,YAAY,EAAE;cACjCpB,WAAW,CAACxD,IAAI,CAAC,KAAK,EAAE,gCAAgC,EAAE,eAAe,CAAC;YAC5E;YACAwD,WAAW,CAACxD,IAAI,CAAC,GAAG,CAAC;YAEjByD,cAAc,GAAGF,OAAO,CAACkB,OAAO,CAAChB,cAAc;YAE/CC,WAAW,GAAG,IAAI;YAElBC,KAAK,GAAG,CAAC;YAAAC,yBAAA;YAAAC,iBAAA;YAAAU,QAAA,CAAAC,IAAA;YAAAT,SAAA,GAAAhD,cAAA,CACkBkC,aAAa;UAAA;YAAAsB,QAAA,CAAAlC,IAAA;YAAA,WAAAwC,qBAAA,CAAAlE,OAAA,EAAAoD,SAAA,CAAA1B,IAAA;UAAA;YAAA,MAAAuB,yBAAA,KAAAI,KAAA,GAAAO,QAAA,CAAAO,IAAA,EAAA9C,IAAA;cAAAuC,QAAA,CAAAlC,IAAA;cAAA;YAAA;YAA3B4B,UAAU,GAAAD,KAAA,CAAA9B,KAAA;YACnBgC,GAAG,GAAGP,KAAK,GAAG,IAAAoB,sBAAc,EAACd,UAAU,CAAC;YAG9C,IAAI,CAACR,cAAc,EAAE;cACnBA,cAAc,GAAGA,cAAc,IAAI,IAAAuB,sCAAyB,EAACf,UAAU,CAAC;YAC1E;YAESE,QAAQ,GAAGR,KAAK;UAAA;YAAA,MAAEQ,QAAQ,GAAGD,GAAG;cAAAK,QAAA,CAAAlC,IAAA;cAAA;YAAA;YAEvC,IAAI,CAACqB,WAAW,EAAE;cAChBF,WAAW,CAACxD,IAAI,CAAC,GAAG,CAAC;YACvB;YACAwD,WAAW,CAACxD,IAAI,CAAC,IAAI,CAAC;YACtB0D,WAAW,GAAG,KAAK;YAEnB,IAAAuB,8BAAc,EAAChB,UAAU,EAAEE,QAAQ,EAAEV,cAAc,EAAED,WAAW,CAAC;YAAC,KAG9DA,WAAW,CAAC0B,MAAM,CAAC,CAAC;cAAAX,QAAA,CAAAlC,IAAA;cAAA;YAAA;YAAAkC,QAAA,CAAAlC,IAAA;YACtB,OAAMmB,WAAW,CAAC2B,mBAAmB,CAAC,CAAC;UAAA;YAGzCxB,KAAK,GAAGO,GAAG;UAAC;YAf6B,EAAEC,QAAQ;YAAAI,QAAA,CAAAlC,IAAA;YAAA;UAAA;YAkB/C+B,gBAAgB,GAAGZ,WAAW,CAAC2B,mBAAmB,CAAC,CAAC;YAAA,MACtDf,gBAAgB,CAACgB,UAAU,GAAG,CAAC;cAAAb,QAAA,CAAAlC,IAAA;cAAA;YAAA;YAAAkC,QAAA,CAAAlC,IAAA;YACjC,OAAM+B,gBAAgB;UAAA;YAAAR,yBAAA;YAAAW,QAAA,CAAAlC,IAAA;YAAA;UAAA;YAAAkC,QAAA,CAAAlC,IAAA;YAAA;UAAA;YAAAkC,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAc,EAAA,GAAAd,QAAA;YAAAV,iBAAA;YAAAC,cAAA,GAAAS,QAAA,CAAAc,EAAA;UAAA;YAAAd,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAC,IAAA;YAAA,MAAAZ,yBAAA,IAAAG,SAAA,CAAAxB,MAAA;cAAAgC,QAAA,CAAAlC,IAAA;cAAA;YAAA;YAAAkC,QAAA,CAAAlC,IAAA;YAAA,WAAAwC,qBAAA,CAAAlE,OAAA,EAAAoD,SAAA,CAAAxB,MAAA;UAAA;YAAAgC,QAAA,CAAAC,IAAA;YAAA,KAAAX,iBAAA;cAAAU,QAAA,CAAAlC,IAAA;cAAA;YAAA;YAAA,MAAAyB,cAAA;UAAA;YAAA,OAAAS,QAAA,CAAAe,MAAA;UAAA;YAAA,OAAAf,QAAA,CAAAe,MAAA;UAAA;YAI1B9B,WAAW,CAACxD,IAAI,CAAC,IAAI,CAAC;YAGtBwD,WAAW,CAACxD,IAAI,CAAC,KAAK,CAAC;YACvB,IAAI,CAACuD,OAAO,CAACkB,OAAO,CAACG,YAAY,EAAE;cACjCpB,WAAW,CAACxD,IAAI,CAAC,GAAG,CAAC;YACvB;YAACuE,QAAA,CAAAlC,IAAA;YAGD,OAAMmB,WAAW,CAAC2B,mBAAmB,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAZ,QAAA,CAAAgB,IAAA;QAAA;MAAA,GAAAjC,OAAA;IAAA;EAAA,CACxC;EAAA,OAAAP,8BAAA,CAAA9C,KAAA,OAAAI,SAAA;AAAA"}
@@ -8,9 +8,9 @@ var _schema = require("@loaders.gl/schema");
8
8
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
9
9
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
10
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
- function encodeTableAsJSON(table) {
12
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13
- var shape = options.shape || 'object-row-table';
11
+ function encodeTableAsJSON(table, options) {
12
+ var _options$json;
13
+ var shape = (options === null || options === void 0 ? void 0 : (_options$json = options.json) === null || _options$json === void 0 ? void 0 : _options$json.shape) || 'object-row-table';
14
14
  var strings = [];
15
15
  var rowIterator = (0, _schema.makeRowIterator)(table, shape);
16
16
  var _iterator = _createForOfIteratorHelper(rowIterator),
@@ -1 +1 @@
1
- {"version":3,"file":"json-encoder.js","names":["_schema","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","encodeTableAsJSON","table","options","arguments","undefined","shape","strings","rowIterator","makeRowIterator","_iterator","_step","row","push","JSON","stringify","concat","join"],"sources":["../../../../src/lib/encoders/json-encoder.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Table, makeRowIterator} from '@loaders.gl/schema';\n\ntype RowArray = unknown[];\ntype RowObject = {[key: string]: unknown};\ntype TableJSON = RowArray[] | RowObject[];\n\nexport type JSONWriterOptions = {\n shape?: 'object-row-table' | 'array-row-table';\n wrapper?: (table: TableJSON) => unknown;\n};\n\n/**\n * Encode a table as a JSON string\n */\nexport function encodeTableAsJSON(table: Table, options: JSONWriterOptions = {}): string {\n const shape = options.shape || 'object-row-table';\n\n const strings: string[] = [];\n const rowIterator = makeRowIterator(table, shape);\n for (const row of rowIterator) {\n // Round elements etc\n // processRow(wrappedRow, table.schema);\n // const wrappedRow = options.wrapper ? options.wrapper(row) : row;\n strings.push(JSON.stringify(row));\n }\n return `[${strings.join(',')}]`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"json-encoder.js","names":["_schema","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","encodeTableAsJSON","table","options","_options$json","shape","json","strings","rowIterator","makeRowIterator","_iterator","_step","row","push","JSON","stringify","concat","join"],"sources":["../../../../src/lib/encoders/json-encoder.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Table, makeRowIterator} from '@loaders.gl/schema';\nimport type {JSONWriterOptions} from '../../json-writer';\n\n/**\n * Encode a table as a JSON string\n */\nexport function encodeTableAsJSON(table: Table, options?: JSONWriterOptions): string {\n const shape = options?.json?.shape || 'object-row-table';\n\n const strings: string[] = [];\n const rowIterator = makeRowIterator(table, shape);\n for (const row of rowIterator) {\n // Round elements etc\n // processRow(wrappedRow, table.schema);\n // const wrappedRow = options.wrapper ? options.wrapper(row) : row;\n strings.push(JSON.stringify(row));\n }\n return `[${strings.join(',')}]`;\n}\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseNdjson = require("./lib/parsers/parse-ndjson");
11
11
  var _parseNdjsonInBatches = require("./lib/parsers/parse-ndjson-in-batches");
12
- var VERSION = typeof "4.0.0-alpha.24" !== 'undefined' ? "4.0.0-alpha.24" : 'latest';
12
+ var VERSION = typeof "4.0.0-alpha.25" !== 'undefined' ? "4.0.0-alpha.25" : 'latest';
13
13
  var NDJSONLoader = {
14
14
  name: 'NDJSON',
15
15
  id: 'ndjson',
@@ -9,7 +9,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseNdjson = require("./lib/parsers/parse-ndjson");
11
11
  var _parseNdjsonInBatches = require("./lib/parsers/parse-ndjson-in-batches");
12
- var VERSION = typeof "4.0.0-alpha.24" !== 'undefined' ? "4.0.0-alpha.24" : 'latest';
12
+ var VERSION = typeof "4.0.0-alpha.25" !== 'undefined' ? "4.0.0-alpha.25" : 'latest';
13
13
  var NDJSONLoader = {
14
14
  name: 'NDJSON',
15
15
  id: 'ndjson',
@@ -1,7 +1,6 @@
1
1
  import { geojsonToBinary } from '@loaders.gl/gis';
2
- import { parseJSONSync } from './lib/parsers/parse-json';
3
2
  import { parseJSONInBatches } from './lib/parsers/parse-json-in-batches';
4
- const VERSION = typeof "4.0.0-alpha.24" !== 'undefined' ? "4.0.0-alpha.24" : 'latest';
3
+ const VERSION = typeof "4.0.0-alpha.25" !== 'undefined' ? "4.0.0-alpha.25" : 'latest';
5
4
  export const GeoJSONWorkerLoader = {
6
5
  name: 'GeoJSON',
7
6
  id: 'geojson',
@@ -35,6 +34,7 @@ async function parse(arrayBuffer, options) {
35
34
  return parseTextSync(new TextDecoder().decode(arrayBuffer), options);
36
35
  }
37
36
  function parseTextSync(text, options) {
37
+ var _geojson;
38
38
  options = {
39
39
  ...GeoJSONLoader.options,
40
40
  ...options
@@ -44,11 +44,20 @@ function parseTextSync(text, options) {
44
44
  ...options.geojson
45
45
  };
46
46
  options.gis = options.gis || {};
47
- const table = parseJSONSync(text, options);
48
- table.shape = 'geojson-row-table';
47
+ let geojson;
48
+ try {
49
+ geojson = JSON.parse(text);
50
+ } catch {
51
+ geojson = {};
52
+ }
53
+ const table = {
54
+ shape: 'geojson-table',
55
+ type: 'FeatureCollection',
56
+ features: ((_geojson = geojson) === null || _geojson === void 0 ? void 0 : _geojson.features) || []
57
+ };
49
58
  switch (options.gis.format) {
50
59
  case 'binary':
51
- return geojsonToBinary(table.data);
60
+ return geojsonToBinary(table.features);
52
61
  default:
53
62
  return table;
54
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"geojson-loader.js","names":["geojsonToBinary","parseJSONSync","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","table","data","asyncIterator","geojsonIterator","makeBinaryGeometryIterator","batch"],"sources":["../../src/geojson-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {GeoJSON, GeoJSONRowTable, TableBatch} from '@loaders.gl/schema';\nimport type {JSONLoaderOptions} from './json-loader';\nimport {geojsonToBinary} from '@loaders.gl/gis';\nimport {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 const table = parseJSONSync(text, options) as GeoJSONRowTable;\n table.shape = 'geojson-row-table';\n switch (options.gis.format) {\n case 'binary':\n return geojsonToBinary(table.data);\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":"AAKA,SAAQA,eAAe,QAAO,iBAAiB;AAC/C,SAAQC,aAAa,QAAO,0BAA0B;AACtD,SAAQC,kBAAkB,QAAO,qCAAqC;AAItE,MAAMC,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAc3E,OAAO,MAAMC,mBAAsE,GAAG;EACpFC,IAAI,EAAE,SAAS;EACfC,EAAE,EAAE,SAAS;EACbC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEL,OAAO;EAChBM,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;EAEnEA,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;EAC/B,MAAMS,KAAK,GAAG3B,aAAa,CAACY,IAAI,EAAEC,OAAO,CAAoB;EAC7Dc,KAAK,CAACZ,KAAK,GAAG,mBAAmB;EACjC,QAAQF,OAAO,CAACK,GAAG,CAACC,MAAM;IACxB,KAAK,QAAQ;MACX,OAAOpB,eAAe,CAAC4B,KAAK,CAACC,IAAI,CAAC;IACpC;MACE,OAAOD,KAAK;EAChB;AACF;AAEA,SAASJ,cAAcA,CAACM,aAAa,EAAEhB,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,MAAMgB,eAAe,GAAG7B,kBAAkB,CAAC4B,aAAa,EAAEhB,OAAO,CAAC;EAElE,QAAQA,OAAO,CAACK,GAAG,CAACC,MAAM;IACxB,KAAK,QAAQ;MACX,OAAOY,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,CAACJ,IAAI,GAAG7B,eAAe,CAACiC,KAAK,CAACJ,IAAI,CAAC;IACxC,MAAMI,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, MIT license\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":"AAKA,SAAQA,eAAe,QAAO,iBAAiB;AAE/C,SAAQC,kBAAkB,QAAO,qCAAqC;AAItE,MAAMC,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAc3E,OAAO,MAAMC,mBAAsE,GAAG;EACpFC,IAAI,EAAE,SAAS;EACfC,EAAE,EAAE,SAAS;EACbC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEL,OAAO;EAChBM,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,OAAOnB,eAAe,CAAC6B,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,GAAGhC,kBAAkB,CAAC+B,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,GAAGpC,eAAe,CAACmC,KAAK,CAACC,IAAI,CAAC;IACxC,MAAMD,KAAK;EACb;AACF"}
@@ -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 Foursquare, Inc 20222\n\nimport type {Writer} from '@loaders.gl/loader-utils';\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport type {GeoJSONWriterOptions} from './lib/encoders/geojson-encoder';\nimport {encodeTableAsGeojsonInBatches} from './lib/encoders/geojson-encoder';\n\nexport type {GeoJSONWriterOptions};\n\nexport const GeoJSONWriter: Writer<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":"AAMA,SAAQA,6BAA6B,QAAO,gCAAgC;AAI5E,OAAO,MAAMC,aAA8D,GAAG;EAC5EC,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":["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 Foursquare, Inc 20222\n\nimport type {Writer, 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: Writer<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":"AAKA,SAAQA,6BAA6B,QAAO,gCAAgC;AAU5E,OAAO,MAAMC,aAA8D,GAAG;EAC5EC,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,6 +1,6 @@
1
1
  import { parseJSONSync } from './lib/parsers/parse-json';
2
2
  import { parseJSONInBatches } from './lib/parsers/parse-json-in-batches';
3
- const VERSION = typeof "4.0.0-alpha.24" !== 'undefined' ? "4.0.0-alpha.24" : 'latest';
3
+ const VERSION = typeof "4.0.0-alpha.25" !== 'undefined' ? "4.0.0-alpha.25" : 'latest';
4
4
  const DEFAULT_JSON_LOADER_OPTIONS = {
5
5
  json: {
6
6
  shape: 'object-row-table',
@@ -9,6 +9,6 @@ export const JSONWriter = {
9
9
  options: {},
10
10
  text: true,
11
11
  encode: async (table, options) => new TextEncoder().encode(encodeTableAsJSON(table, options)).buffer,
12
- encodeText: (table, options) => encodeTableAsJSON(table, options)
12
+ encodeTextSync: (table, options) => encodeTableAsJSON(table, options)
13
13
  };
14
14
  //# sourceMappingURL=json-writer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-writer.js","names":["encodeTableAsJSON","JSONWriter","id","version","module","name","extensions","mimeTypes","options","text","encode","table","TextEncoder","buffer","encodeText"],"sources":["../../src/json-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\n/* global TextEncoder */\nimport type {Writer} from '@loaders.gl/loader-utils';\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport type {JSONWriterOptions} from './lib/encoders/json-encoder';\nimport {encodeTableAsJSON} from './lib/encoders/json-encoder';\n\nexport type {JSONWriterOptions};\n\nexport const JSONWriter: Writer<Table, TableBatch, JSONWriterOptions> = {\n id: 'json',\n version: 'latest',\n module: 'json',\n name: 'JSON',\n extensions: ['json'],\n mimeTypes: ['application/json'],\n options: {},\n text: true,\n encode: async (table: Table, options: JSONWriterOptions) =>\n new TextEncoder().encode(encodeTableAsJSON(table, options)).buffer,\n encodeText: (table: Table, options: JSONWriterOptions) => encodeTableAsJSON(table, options)\n};\n"],"mappings":"AAOA,SAAQA,iBAAiB,QAAO,6BAA6B;AAI7D,OAAO,MAAMC,UAAwD,GAAG;EACtEC,EAAE,EAAE,MAAM;EACVC,OAAO,EAAE,QAAQ;EACjBC,MAAM,EAAE,MAAM;EACdC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,OAAO,EAAE,CAAC,CAAC;EACXC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,MAAAA,CAAOC,KAAY,EAAEH,OAA0B,KACrD,IAAII,WAAW,CAAC,CAAC,CAACF,MAAM,CAACV,iBAAiB,CAACW,KAAK,EAAEH,OAAO,CAAC,CAAC,CAACK,MAAM;EACpEC,UAAU,EAAEA,CAACH,KAAY,EAAEH,OAA0B,KAAKR,iBAAiB,CAACW,KAAK,EAAEH,OAAO;AAC5F,CAAC"}
1
+ {"version":3,"file":"json-writer.js","names":["encodeTableAsJSON","JSONWriter","id","version","module","name","extensions","mimeTypes","options","text","encode","table","TextEncoder","buffer","encodeTextSync"],"sources":["../../src/json-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\n/* global TextEncoder */\nimport type {Writer, WriterOptions} from '@loaders.gl/loader-utils';\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport {encodeTableAsJSON} from './lib/encoders/json-encoder';\n\nexport type JSONWriterOptions = WriterOptions & {\n json?: {\n shape?: 'object-row-table' | 'array-row-table';\n wrapper?: (table: TableJSON) => unknown;\n };\n};\n\ntype RowArray = unknown[];\ntype RowObject = {[key: string]: unknown};\ntype TableJSON = RowArray[] | RowObject[];\n\nexport const JSONWriter: Writer<Table, TableBatch, JSONWriterOptions> = {\n id: 'json',\n version: 'latest',\n module: 'json',\n name: 'JSON',\n extensions: ['json'],\n mimeTypes: ['application/json'],\n options: {},\n text: true,\n encode: async (table: Table, options: JSONWriterOptions) =>\n new TextEncoder().encode(encodeTableAsJSON(table, options)).buffer,\n encodeTextSync: (table: Table, options: JSONWriterOptions) => encodeTableAsJSON(table, options)\n};\n"],"mappings":"AAMA,SAAQA,iBAAiB,QAAO,6BAA6B;AAa7D,OAAO,MAAMC,UAAwD,GAAG;EACtEC,EAAE,EAAE,MAAM;EACVC,OAAO,EAAE,QAAQ;EACjBC,MAAM,EAAE,MAAM;EACdC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,OAAO,EAAE,CAAC,CAAC;EACXC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,MAAAA,CAAOC,KAAY,EAAEH,OAA0B,KACrD,IAAII,WAAW,CAAC,CAAC,CAACF,MAAM,CAACV,iBAAiB,CAACW,KAAK,EAAEH,OAAO,CAAC,CAAC,CAACK,MAAM;EACpEC,cAAc,EAAEA,CAACH,KAAY,EAAEH,OAA0B,KAAKR,iBAAiB,CAACW,KAAK,EAAEH,OAAO;AAChG,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { getTableRowAsObject } from '@loaders.gl/schema';
2
+ import { getRowPropertyObject } from './encode-utils';
3
+ export function encodeTableRow(table, rowIndex, geometryColumnIndex, utf8Encoder) {
4
+ const row = getTableRowAsObject(table, rowIndex);
5
+ if (!row) return;
6
+ const featureWithProperties = getFeatureFromRow(table, row, geometryColumnIndex);
7
+ const featureString = JSON.stringify(featureWithProperties);
8
+ utf8Encoder.push(featureString);
9
+ }
10
+ function getFeatureFromRow(table, row, geometryColumnIndex) {
11
+ var _table$schema, _featureOrGeometry, _featureOrGeometry2;
12
+ const properties = getRowPropertyObject(table, row, [geometryColumnIndex]);
13
+ const columnName = (_table$schema = table.schema) === null || _table$schema === void 0 ? void 0 : _table$schema.fields[geometryColumnIndex].name;
14
+ let featureOrGeometry = columnName && row[columnName];
15
+ if (!featureOrGeometry) {
16
+ return {
17
+ type: 'Feature',
18
+ geometry: null,
19
+ properties
20
+ };
21
+ }
22
+ if (typeof featureOrGeometry === 'string') {
23
+ try {
24
+ featureOrGeometry = JSON.parse(featureOrGeometry);
25
+ } catch (err) {
26
+ throw new Error('Invalid string geometry');
27
+ }
28
+ }
29
+ if (typeof featureOrGeometry !== 'object' || typeof ((_featureOrGeometry = featureOrGeometry) === null || _featureOrGeometry === void 0 ? void 0 : _featureOrGeometry.type) !== 'string') {
30
+ throw new Error('invalid geometry column value');
31
+ }
32
+ if (((_featureOrGeometry2 = featureOrGeometry) === null || _featureOrGeometry2 === void 0 ? void 0 : _featureOrGeometry2.type) === 'Feature') {
33
+ return {
34
+ ...featureOrGeometry,
35
+ properties
36
+ };
37
+ }
38
+ return {
39
+ type: 'Feature',
40
+ geometry: featureOrGeometry,
41
+ properties
42
+ };
43
+ }
44
+ //# sourceMappingURL=encode-table-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-table-row.js","names":["getTableRowAsObject","getRowPropertyObject","encodeTableRow","table","rowIndex","geometryColumnIndex","utf8Encoder","row","featureWithProperties","getFeatureFromRow","featureString","JSON","stringify","push","_table$schema","_featureOrGeometry","_featureOrGeometry2","properties","columnName","schema","fields","name","featureOrGeometry","type","geometry","parse","err","Error"],"sources":["../../../../src/lib/encoder-utils/encode-table-row.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Feature} from '@loaders.gl/schema';\nimport {Table, getTableRowAsObject} from '@loaders.gl/schema';\nimport {getRowPropertyObject} from './encode-utils';\nimport {Utf8ArrayBufferEncoder} from './utf8-encoder';\n\ntype Row = {[key: string]: unknown};\n\n// Helpers\n\n/**\n * Encode a row. Currently this ignores properties in the geometry column.\n */\nexport function encodeTableRow(\n table: Table,\n rowIndex: number,\n geometryColumnIndex: number,\n utf8Encoder: Utf8ArrayBufferEncoder\n): void {\n const row = getTableRowAsObject(table, rowIndex);\n if (!row) return;\n const featureWithProperties = getFeatureFromRow(table, row, geometryColumnIndex);\n const featureString = JSON.stringify(featureWithProperties);\n utf8Encoder.push(featureString);\n}\n\n/**\n * Encode a row as a Feature. Currently this ignores properties objects in the geometry column.\n */\nfunction getFeatureFromRow(table: Table, row: Row, geometryColumnIndex: number): Feature {\n // Extract non-feature/geometry properties\n const properties = getRowPropertyObject(table, row, [geometryColumnIndex]);\n\n // Extract geometry feature\n const columnName = table.schema?.fields[geometryColumnIndex].name;\n let featureOrGeometry =\n columnName && (row[columnName] as {[key: string]: unknown} | string | null | undefined);\n\n // GeoJSON support null geometries\n if (!featureOrGeometry) {\n // @ts-ignore Feature type does not support null geometries\n return {type: 'Feature', geometry: null, properties};\n }\n\n // Support string geometries?\n // TODO: This assumes GeoJSON strings, which may not be the correct format\n // (could be WKT, encoded WKB...)\n if (typeof featureOrGeometry === 'string') {\n try {\n featureOrGeometry = JSON.parse(featureOrGeometry);\n } catch (err) {\n throw new Error('Invalid string geometry');\n }\n }\n\n if (typeof featureOrGeometry !== 'object' || typeof featureOrGeometry?.type !== 'string') {\n throw new Error('invalid geometry column value');\n }\n\n if (featureOrGeometry?.type === 'Feature') {\n // @ts-ignore Feature type does not support null geometries\n return {...featureOrGeometry, properties};\n }\n\n // @ts-ignore Feature type does not support null geometries\n return {type: 'Feature', geometry: featureOrGeometry, properties};\n}\n"],"mappings":"AAIA,SAAeA,mBAAmB,QAAO,oBAAoB;AAC7D,SAAQC,oBAAoB,QAAO,gBAAgB;AAUnD,OAAO,SAASC,cAAcA,CAC5BC,KAAY,EACZC,QAAgB,EAChBC,mBAA2B,EAC3BC,WAAmC,EAC7B;EACN,MAAMC,GAAG,GAAGP,mBAAmB,CAACG,KAAK,EAAEC,QAAQ,CAAC;EAChD,IAAI,CAACG,GAAG,EAAE;EACV,MAAMC,qBAAqB,GAAGC,iBAAiB,CAACN,KAAK,EAAEI,GAAG,EAAEF,mBAAmB,CAAC;EAChF,MAAMK,aAAa,GAAGC,IAAI,CAACC,SAAS,CAACJ,qBAAqB,CAAC;EAC3DF,WAAW,CAACO,IAAI,CAACH,aAAa,CAAC;AACjC;AAKA,SAASD,iBAAiBA,CAACN,KAAY,EAAEI,GAAQ,EAAEF,mBAA2B,EAAW;EAAA,IAAAS,aAAA,EAAAC,kBAAA,EAAAC,mBAAA;EAEvF,MAAMC,UAAU,GAAGhB,oBAAoB,CAACE,KAAK,EAAEI,GAAG,EAAE,CAACF,mBAAmB,CAAC,CAAC;EAG1E,MAAMa,UAAU,IAAAJ,aAAA,GAAGX,KAAK,CAACgB,MAAM,cAAAL,aAAA,uBAAZA,aAAA,CAAcM,MAAM,CAACf,mBAAmB,CAAC,CAACgB,IAAI;EACjE,IAAIC,iBAAiB,GACnBJ,UAAU,IAAKX,GAAG,CAACW,UAAU,CAA0D;EAGzF,IAAI,CAACI,iBAAiB,EAAE;IAEtB,OAAO;MAACC,IAAI,EAAE,SAAS;MAAEC,QAAQ,EAAE,IAAI;MAAEP;IAAU,CAAC;EACtD;EAKA,IAAI,OAAOK,iBAAiB,KAAK,QAAQ,EAAE;IACzC,IAAI;MACFA,iBAAiB,GAAGX,IAAI,CAACc,KAAK,CAACH,iBAAiB,CAAC;IACnD,CAAC,CAAC,OAAOI,GAAG,EAAE;MACZ,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;IAC5C;EACF;EAEA,IAAI,OAAOL,iBAAiB,KAAK,QAAQ,IAAI,SAAAP,kBAAA,GAAOO,iBAAiB,cAAAP,kBAAA,uBAAjBA,kBAAA,CAAmBQ,IAAI,MAAK,QAAQ,EAAE;IACxF,MAAM,IAAII,KAAK,CAAC,+BAA+B,CAAC;EAClD;EAEA,IAAI,EAAAX,mBAAA,GAAAM,iBAAiB,cAAAN,mBAAA,uBAAjBA,mBAAA,CAAmBO,IAAI,MAAK,SAAS,EAAE;IAEzC,OAAO;MAAC,GAAGD,iBAAiB;MAAEL;IAAU,CAAC;EAC3C;EAGA,OAAO;IAACM,IAAI,EAAE,SAAS;IAAEC,QAAQ,EAAEF,iBAAiB;IAAEL;EAAU,CAAC;AACnE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-utils.js","names":["getTableLength","getTableNumCols","getTableRowAsArray","detectGeometryColumnIndex","table","_table$schema$fields$","_table$schema","geometryIndex","schema","fields","findIndex","field","name","row","columnIndex","value","Error","getRowPropertyObject","excludeColumnIndices","arguments","length","undefined","properties","_table$schema2","columnName","includes"],"sources":["../../../../src/lib/encoder-utils/encode-utils.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Table, getTableLength, getTableNumCols, getTableRowAsArray} from '@loaders.gl/schema';\n\ntype Row = {[key: string]: unknown};\n\n/**\n * Attempts to identify which column contains geometry\n * Currently just returns name (key) of first object-valued column\n * @todo look for hints in schema metadata\n * @todo look for WKB\n */\nexport function detectGeometryColumnIndex(table: Table): number {\n // TODO - look for hints in schema metadata\n\n // look for a column named geometry\n const geometryIndex = table.schema?.fields.findIndex((field) => field.name === 'geometry') ?? -1;\n if (geometryIndex > -1) {\n return geometryIndex;\n }\n\n // look at the data\n // TODO - this drags in the indices\n if (getTableLength(table) > 0) {\n const row = getTableRowAsArray(table, 0);\n for (let columnIndex = 0; columnIndex < getTableNumCols(table); columnIndex++) {\n const value = row?.[columnIndex];\n if (value && typeof value === 'object') {\n return columnIndex;\n }\n }\n }\n\n throw new Error('Failed to detect geometry column');\n}\n\n/**\n * Return a row as a property (key/value) object, excluding selected columns\n */\nexport function getRowPropertyObject(\n table: Table,\n row: Row,\n excludeColumnIndices: number[] = []\n): {[columnName: string]: unknown} {\n const properties = {};\n for (let columnIndex = 0; columnIndex < getTableNumCols(table); ++columnIndex) {\n const columnName = table.schema?.fields[columnIndex].name;\n if (columnName && !excludeColumnIndices.includes(columnIndex)) {\n properties[columnName] = row[columnName];\n }\n }\n return properties;\n}\n"],"mappings":"AAGA,SAAeA,cAAc,EAAEC,eAAe,EAAEC,kBAAkB,QAAO,oBAAoB;AAU7F,OAAO,SAASC,yBAAyBA,CAACC,KAAY,EAAU;EAAA,IAAAC,qBAAA,EAAAC,aAAA;EAI9D,MAAMC,aAAa,IAAAF,qBAAA,IAAAC,aAAA,GAAGF,KAAK,CAACI,MAAM,cAAAF,aAAA,uBAAZA,aAAA,CAAcG,MAAM,CAACC,SAAS,CAAEC,KAAK,IAAKA,KAAK,CAACC,IAAI,KAAK,UAAU,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;EAChG,IAAIE,aAAa,GAAG,CAAC,CAAC,EAAE;IACtB,OAAOA,aAAa;EACtB;EAIA,IAAIP,cAAc,CAACI,KAAK,CAAC,GAAG,CAAC,EAAE;IAC7B,MAAMS,GAAG,GAAGX,kBAAkB,CAACE,KAAK,EAAE,CAAC,CAAC;IACxC,KAAK,IAAIU,WAAW,GAAG,CAAC,EAAEA,WAAW,GAAGb,eAAe,CAACG,KAAK,CAAC,EAAEU,WAAW,EAAE,EAAE;MAC7E,MAAMC,KAAK,GAAGF,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAGC,WAAW,CAAC;MAChC,IAAIC,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QACtC,OAAOD,WAAW;MACpB;IACF;EACF;EAEA,MAAM,IAAIE,KAAK,CAAC,kCAAkC,CAAC;AACrD;AAKA,OAAO,SAASC,oBAAoBA,CAClCb,KAAY,EACZS,GAAQ,EAEyB;EAAA,IADjCK,oBAA8B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAEnC,MAAMG,UAAU,GAAG,CAAC,CAAC;EACrB,KAAK,IAAIR,WAAW,GAAG,CAAC,EAAEA,WAAW,GAAGb,eAAe,CAACG,KAAK,CAAC,EAAE,EAAEU,WAAW,EAAE;IAAA,IAAAS,cAAA;IAC7E,MAAMC,UAAU,IAAAD,cAAA,GAAGnB,KAAK,CAACI,MAAM,cAAAe,cAAA,uBAAZA,cAAA,CAAcd,MAAM,CAACK,WAAW,CAAC,CAACF,IAAI;IACzD,IAAIY,UAAU,IAAI,CAACN,oBAAoB,CAACO,QAAQ,CAACX,WAAW,CAAC,EAAE;MAC7DQ,UAAU,CAACE,UAAU,CAAC,GAAGX,GAAG,CAACW,UAAU,CAAC;IAC1C;EACF;EACA,OAAOF,UAAU;AACnB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utf8-encoder.js","names":["Utf8ArrayBufferEncoder","constructor","chunkSize","_defineProperty","TextEncoder","push","_len","arguments","length","strings","Array","_key","string","totalLength","isFull","getArrayBufferBatch","textEncoder","encode","getStringBatch","buffer","stringChunk","join"],"sources":["../../../../src/lib/encoder-utils/utf8-encoder.ts"],"sourcesContent":["// loaders.gl, MIT License\n\n/* global TextEncoder */\nexport class Utf8ArrayBufferEncoder {\n private readonly chunkSize: number;\n private strings: string[] = [];\n private totalLength = 0;\n private textEncoder: TextEncoder = new TextEncoder();\n\n constructor(chunkSize: number) {\n this.chunkSize = chunkSize;\n }\n\n push(...strings: string[]): void {\n for (const string of strings) {\n this.strings.push(string);\n this.totalLength += string.length;\n }\n }\n\n isFull(): boolean {\n return this.totalLength >= this.chunkSize;\n }\n\n getArrayBufferBatch(): ArrayBufferLike {\n return this.textEncoder.encode(this.getStringBatch()).buffer;\n }\n\n getStringBatch(): string {\n const stringChunk = this.strings.join('');\n this.strings = [];\n this.totalLength = 0;\n return stringChunk;\n }\n}\n"],"mappings":";AAGA,OAAO,MAAMA,sBAAsB,CAAC;EAMlCC,WAAWA,CAACC,SAAiB,EAAE;IAAAC,eAAA;IAAAA,eAAA,kBAJH,EAAE;IAAAA,eAAA,sBACR,CAAC;IAAAA,eAAA,sBACY,IAAIC,WAAW,CAAC,CAAC;IAGlD,IAAI,CAACF,SAAS,GAAGA,SAAS;EAC5B;EAEAG,IAAIA,CAAA,EAA6B;IAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAzBC,OAAO,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAPF,OAAO,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IACb,KAAK,MAAMC,MAAM,IAAIH,OAAO,EAAE;MAC5B,IAAI,CAACA,OAAO,CAACJ,IAAI,CAACO,MAAM,CAAC;MACzB,IAAI,CAACC,WAAW,IAAID,MAAM,CAACJ,MAAM;IACnC;EACF;EAEAM,MAAMA,CAAA,EAAY;IAChB,OAAO,IAAI,CAACD,WAAW,IAAI,IAAI,CAACX,SAAS;EAC3C;EAEAa,mBAAmBA,CAAA,EAAoB;IACrC,OAAO,IAAI,CAACC,WAAW,CAACC,MAAM,CAAC,IAAI,CAACC,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM;EAC9D;EAEAD,cAAcA,CAAA,EAAW;IACvB,MAAME,WAAW,GAAG,IAAI,CAACX,OAAO,CAACY,IAAI,CAAC,EAAE,CAAC;IACzC,IAAI,CAACZ,OAAO,GAAG,EAAE;IACjB,IAAI,CAACI,WAAW,GAAG,CAAC;IACpB,OAAOO,WAAW;EACpB;AACF"}
@@ -1,7 +1,7 @@
1
1
  import { getTableLength } from '@loaders.gl/schema';
2
- import { getTableRowAsObject } from '@loaders.gl/schema';
3
- import { detectGeometryColumnIndex, getRowPropertyObject } from './encode-utils';
4
- import { Utf8ArrayBufferEncoder } from './utf8-encoder';
2
+ import { detectGeometryColumnIndex } from '../encoder-utils/encode-utils';
3
+ import { encodeTableRow } from '../encoder-utils/encode-table-row';
4
+ import { Utf8ArrayBufferEncoder } from '../encoder-utils/utf8-encoder';
5
5
  export function encodeTableAsGeojsonInBatches(batchIterator) {
6
6
  try {
7
7
  let inputOpts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -18,14 +18,11 @@ export function encodeTableAsGeojsonInBatches(batchIterator) {
18
18
  utf8Encoder.push('[');
19
19
  let geometryColumn = options.geojson.geometryColumn;
20
20
  let isFirstLine = true;
21
- for await (const batch of batchIterator) {
22
- const {
23
- table,
24
- start,
25
- end = getTableLength(batch.table) - start
26
- } = batch;
21
+ let start = 0;
22
+ for await (const tableBatch of batchIterator) {
23
+ const end = start + getTableLength(tableBatch);
27
24
  if (!geometryColumn) {
28
- geometryColumn = geometryColumn || detectGeometryColumnIndex(table);
25
+ geometryColumn = geometryColumn || detectGeometryColumnIndex(tableBatch);
29
26
  }
30
27
  for (let rowIndex = start; rowIndex < end; ++rowIndex) {
31
28
  if (!isFirstLine) {
@@ -33,10 +30,11 @@ export function encodeTableAsGeojsonInBatches(batchIterator) {
33
30
  }
34
31
  utf8Encoder.push('\n');
35
32
  isFirstLine = false;
36
- encodeRow(table, rowIndex, geometryColumn, utf8Encoder);
33
+ encodeTableRow(tableBatch, rowIndex, geometryColumn, utf8Encoder);
37
34
  if (utf8Encoder.isFull()) {
38
35
  yield utf8Encoder.getArrayBufferBatch();
39
36
  }
37
+ start = end;
40
38
  }
41
39
  const arrayBufferBatch = utf8Encoder.getArrayBufferBatch();
42
40
  if (arrayBufferBatch.byteLength > 0) {
@@ -54,45 +52,4 @@ export function encodeTableAsGeojsonInBatches(batchIterator) {
54
52
  return Promise.reject(e);
55
53
  }
56
54
  }
57
- function encodeRow(table, rowIndex, geometryColumnIndex, utf8Encoder) {
58
- const row = getTableRowAsObject(table, rowIndex);
59
- if (!row) return;
60
- const featureWithProperties = getFeatureFromRow(table, row, geometryColumnIndex);
61
- const featureString = JSON.stringify(featureWithProperties);
62
- utf8Encoder.push(featureString);
63
- }
64
- function getFeatureFromRow(table, row, geometryColumnIndex) {
65
- var _table$schema, _featureOrGeometry, _featureOrGeometry2;
66
- const properties = getRowPropertyObject(table, row, [geometryColumnIndex]);
67
- const columnName = (_table$schema = table.schema) === null || _table$schema === void 0 ? void 0 : _table$schema.fields[geometryColumnIndex].name;
68
- let featureOrGeometry = columnName && row[columnName];
69
- if (!featureOrGeometry) {
70
- return {
71
- type: 'Feature',
72
- geometry: null,
73
- properties
74
- };
75
- }
76
- if (typeof featureOrGeometry === 'string') {
77
- try {
78
- featureOrGeometry = JSON.parse(featureOrGeometry);
79
- } catch (err) {
80
- throw new Error('Invalid string geometry');
81
- }
82
- }
83
- if (typeof featureOrGeometry !== 'object' || typeof ((_featureOrGeometry = featureOrGeometry) === null || _featureOrGeometry === void 0 ? void 0 : _featureOrGeometry.type) !== 'string') {
84
- throw new Error('invalid geometry column value');
85
- }
86
- if (((_featureOrGeometry2 = featureOrGeometry) === null || _featureOrGeometry2 === void 0 ? void 0 : _featureOrGeometry2.type) === 'Feature') {
87
- return {
88
- ...featureOrGeometry,
89
- properties
90
- };
91
- }
92
- return {
93
- type: 'Feature',
94
- geometry: featureOrGeometry,
95
- properties
96
- };
97
- }
98
55
  //# sourceMappingURL=geojson-encoder.js.map