@loaders.gl/json 4.0.0-alpha.24 → 4.0.0-alpha.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +96 -56
- package/dist/es5/geojson-loader.js +14 -5
- package/dist/es5/geojson-loader.js.map +1 -1
- package/dist/es5/geojson-writer.js.map +1 -1
- package/dist/es5/json-loader.js +1 -1
- package/dist/es5/json-writer.js +1 -1
- package/dist/es5/json-writer.js.map +1 -1
- package/dist/es5/lib/encoder-utils/encode-table-row.js +54 -0
- package/dist/es5/lib/encoder-utils/encode-table-row.js.map +1 -0
- package/dist/es5/lib/encoder-utils/encode-utils.js.map +1 -0
- package/dist/es5/lib/encoder-utils/utf8-encoder.js.map +1 -0
- package/dist/es5/lib/encoders/geojson-encoder.js +47 -84
- package/dist/es5/lib/encoders/geojson-encoder.js.map +1 -1
- package/dist/es5/lib/encoders/json-encoder.js +3 -3
- package/dist/es5/lib/encoders/json-encoder.js.map +1 -1
- package/dist/es5/ndgeoson-loader.js +1 -1
- package/dist/es5/ndjson-loader.js +1 -1
- package/dist/esm/geojson-loader.js +14 -5
- package/dist/esm/geojson-loader.js.map +1 -1
- package/dist/esm/geojson-writer.js.map +1 -1
- package/dist/esm/json-loader.js +1 -1
- package/dist/esm/json-writer.js +1 -1
- package/dist/esm/json-writer.js.map +1 -1
- package/dist/esm/lib/encoder-utils/encode-table-row.js +44 -0
- package/dist/esm/lib/encoder-utils/encode-table-row.js.map +1 -0
- package/dist/esm/lib/encoder-utils/encode-utils.js.map +1 -0
- package/dist/esm/lib/encoder-utils/utf8-encoder.js.map +1 -0
- package/dist/esm/lib/encoders/geojson-encoder.js +9 -52
- package/dist/esm/lib/encoders/geojson-encoder.js.map +1 -1
- package/dist/esm/lib/encoders/json-encoder.js +3 -3
- package/dist/esm/lib/encoders/json-encoder.js.map +1 -1
- package/dist/esm/ndgeoson-loader.js +1 -1
- package/dist/esm/ndjson-loader.js +1 -1
- package/dist/geojson-loader.d.ts.map +1 -1
- package/dist/geojson-worker.js +13 -182
- package/dist/geojson-writer.d.ts +8 -3
- package/dist/geojson-writer.d.ts.map +1 -1
- package/dist/json-writer.d.ts +13 -3
- package/dist/json-writer.d.ts.map +1 -1
- package/dist/lib/encoder-utils/encode-table-row.d.ts +7 -0
- package/dist/lib/encoder-utils/encode-table-row.d.ts.map +1 -0
- package/dist/lib/encoder-utils/encode-utils.d.ts.map +1 -0
- package/dist/lib/encoder-utils/utf8-encoder.d.ts.map +1 -0
- package/dist/lib/encoders/geojson-encoder.d.ts +2 -8
- package/dist/lib/encoders/geojson-encoder.d.ts.map +1 -1
- package/dist/lib/encoders/json-encoder.d.ts +1 -10
- package/dist/lib/encoders/json-encoder.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/geojson-loader.ts +19 -5
- package/src/geojson-writer.ts +8 -3
- package/src/json-writer.ts +12 -4
- package/src/lib/encoder-utils/encode-table-row.ts +69 -0
- package/src/lib/encoders/geojson-encoder.ts +15 -78
- package/src/lib/encoders/json-encoder.ts +3 -11
- package/dist/es5/lib/encoders/encode-utils.js.map +0 -1
- package/dist/es5/lib/encoders/utf8-encoder.js.map +0 -1
- package/dist/esm/lib/encoders/encode-utils.js.map +0 -1
- package/dist/esm/lib/encoders/utf8-encoder.js.map +0 -1
- package/dist/lib/encoders/encode-utils.d.ts.map +0 -1
- package/dist/lib/encoders/utf8-encoder.d.ts.map +0 -1
- /package/dist/es5/lib/{encoders → encoder-utils}/encode-utils.js +0 -0
- /package/dist/es5/lib/{encoders → encoder-utils}/utf8-encoder.js +0 -0
- /package/dist/esm/lib/{encoders → encoder-utils}/encode-utils.js +0 -0
- /package/dist/esm/lib/{encoders → encoder-utils}/utf8-encoder.js +0 -0
- /package/dist/lib/{encoders → encoder-utils}/encode-utils.d.ts +0 -0
- /package/dist/lib/{encoders → encoder-utils}/utf8-encoder.d.ts +0 -0
- /package/src/lib/{encoders → encoder-utils}/encode-utils.ts +0 -0
- /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("
|
|
15
|
-
var
|
|
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,
|
|
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 =
|
|
45
|
+
_context.prev = 9;
|
|
45
46
|
_iterator = _asyncIterator(batchIterator);
|
|
46
|
-
case
|
|
47
|
-
_context.next =
|
|
47
|
+
case 11:
|
|
48
|
+
_context.next = 13;
|
|
48
49
|
return (0, _awaitAsyncGenerator2.default)(_iterator.next());
|
|
49
|
-
case
|
|
50
|
+
case 13:
|
|
50
51
|
if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) {
|
|
51
|
-
_context.next =
|
|
52
|
+
_context.next = 37;
|
|
52
53
|
break;
|
|
53
54
|
}
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
tableBatch = _step.value;
|
|
56
|
+
end = start + (0, _schema.getTableLength)(tableBatch);
|
|
56
57
|
if (!geometryColumn) {
|
|
57
|
-
geometryColumn = geometryColumn || (0, _encodeUtils.detectGeometryColumnIndex)(
|
|
58
|
+
geometryColumn = geometryColumn || (0, _encodeUtils.detectGeometryColumnIndex)(tableBatch);
|
|
58
59
|
}
|
|
59
60
|
rowIndex = start;
|
|
60
|
-
case
|
|
61
|
+
case 18:
|
|
61
62
|
if (!(rowIndex < end)) {
|
|
62
|
-
_context.next =
|
|
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
|
-
|
|
71
|
+
(0, _encodeTableRow.encodeTableRow)(tableBatch, rowIndex, geometryColumn, utf8Encoder);
|
|
71
72
|
if (!utf8Encoder.isFull()) {
|
|
72
|
-
_context.next =
|
|
73
|
+
_context.next = 26;
|
|
73
74
|
break;
|
|
74
75
|
}
|
|
75
|
-
_context.next =
|
|
76
|
+
_context.next = 26;
|
|
76
77
|
return utf8Encoder.getArrayBufferBatch();
|
|
77
|
-
case
|
|
78
|
+
case 26:
|
|
79
|
+
start = end;
|
|
80
|
+
case 27:
|
|
78
81
|
++rowIndex;
|
|
79
|
-
_context.next =
|
|
82
|
+
_context.next = 18;
|
|
80
83
|
break;
|
|
81
|
-
case
|
|
84
|
+
case 30:
|
|
82
85
|
arrayBufferBatch = utf8Encoder.getArrayBufferBatch();
|
|
83
86
|
if (!(arrayBufferBatch.byteLength > 0)) {
|
|
84
|
-
_context.next =
|
|
87
|
+
_context.next = 34;
|
|
85
88
|
break;
|
|
86
89
|
}
|
|
87
|
-
_context.next =
|
|
90
|
+
_context.next = 34;
|
|
88
91
|
return arrayBufferBatch;
|
|
89
|
-
case
|
|
92
|
+
case 34:
|
|
90
93
|
_iteratorAbruptCompletion = false;
|
|
91
|
-
_context.next =
|
|
92
|
-
break;
|
|
93
|
-
case 35:
|
|
94
|
-
_context.next = 41;
|
|
94
|
+
_context.next = 11;
|
|
95
95
|
break;
|
|
96
96
|
case 37:
|
|
97
|
-
_context.
|
|
98
|
-
|
|
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
|
|
102
|
-
_context.prev =
|
|
103
|
-
_context.prev =
|
|
104
|
+
case 43:
|
|
105
|
+
_context.prev = 43;
|
|
106
|
+
_context.prev = 44;
|
|
104
107
|
if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
|
|
105
|
-
_context.next =
|
|
108
|
+
_context.next = 48;
|
|
106
109
|
break;
|
|
107
110
|
}
|
|
108
|
-
_context.next =
|
|
111
|
+
_context.next = 48;
|
|
109
112
|
return (0, _awaitAsyncGenerator2.default)(_iterator.return());
|
|
110
|
-
case
|
|
111
|
-
_context.prev =
|
|
113
|
+
case 48:
|
|
114
|
+
_context.prev = 48;
|
|
112
115
|
if (!_didIteratorError) {
|
|
113
|
-
_context.next =
|
|
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 =
|
|
130
|
+
_context.next = 58;
|
|
128
131
|
return utf8Encoder.getArrayBufferBatch();
|
|
129
|
-
case
|
|
132
|
+
case 58:
|
|
130
133
|
case "end":
|
|
131
134
|
return _context.stop();
|
|
132
135
|
}
|
|
133
|
-
}, _callee, null, [[
|
|
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":";;;;;;;;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAAsD,SAAAG,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,SAgB/BkB,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,yBAAA,EAAAC,iBAAA,EAAAC,cAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,KAAA,EAAAC,KAAA,EAAAC,KAAA,EAAAC,UAAA,EAAAC,GAAA,EAAAC,QAAA,EAAAC,gBAAA;MAAA,OAAAlB,YAAA,CAAAzC,OAAA,CAAA4D,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAApC,IAAA;UAAA;YAE9BkB,OAAuC,GAAArD,aAAA;cAAIyE,OAAO,EAAE,CAAC,CAAC;cAAEC,SAAS,EAAE;YAAK,GAAK1B,SAAS;YAEtFM,WAAW,GAAG,IAAIqB,mCAAsB,CAACtB,OAAO,CAACqB,SAAS,CAAC;YAEjE,IAAI,CAACrB,OAAO,CAACoB,OAAO,CAACG,YAAY,EAAE;cACjCtB,WAAW,CAACxD,IAAI,CAAC,KAAK,EAAE,gCAAgC,EAAE,eAAe,CAAC;YAC5E;YACAwD,WAAW,CAACxD,IAAI,CAAC,GAAG,CAAC;YAEjByD,cAAc,GAAGF,OAAO,CAACoB,OAAO,CAAClB,cAAc;YAE/CC,WAAW,GAAG,IAAI;YAAAC,yBAAA;YAAAC,iBAAA;YAAAa,QAAA,CAAAC,IAAA;YAAAZ,SAAA,GAAA/C,cAAA,CAEIkC,aAAa;UAAA;YAAAwB,QAAA,CAAApC,IAAA;YAAA,WAAA0C,qBAAA,CAAApE,OAAA,EAAAmD,SAAA,CAAAzB,IAAA;UAAA;YAAA,MAAAsB,yBAAA,KAAAI,KAAA,GAAAU,QAAA,CAAAO,IAAA,EAAAhD,IAAA;cAAAyC,QAAA,CAAApC,IAAA;cAAA;YAAA;YAAtB2B,KAAK,GAAAD,KAAA,CAAA7B,KAAA;YACb+B,KAAK,GAAsDD,KAAK,CAAhEC,KAAK,EAAEC,KAAK,GAA+CF,KAAK,CAAzDE,KAAK,EAAAC,UAAA,GAA+CH,KAAK,CAAlDI,GAAG,EAAHA,GAAG,GAAAD,UAAA,cAAG,IAAAc,sBAAc,EAACjB,KAAK,CAACC,KAAK,CAAC,GAAGC,KAAK,GAAAC,UAAA;YAG9D,IAAI,CAACV,cAAc,EAAE;cACnBA,cAAc,GAAGA,cAAc,IAAI,IAAAyB,sCAAyB,EAACjB,KAAK,CAAC;YACrE;YAESI,QAAQ,GAAGH,KAAK;UAAA;YAAA,MAAEG,QAAQ,GAAGD,GAAG;cAAAK,QAAA,CAAApC,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;YAEnByB,SAAS,CAAClB,KAAK,EAAEI,QAAQ,EAAEZ,cAAc,EAAED,WAAW,CAAC;YAAC,KAGpDA,WAAW,CAAC4B,MAAM,CAAC,CAAC;cAAAX,QAAA,CAAApC,IAAA;cAAA;YAAA;YAAAoC,QAAA,CAAApC,IAAA;YACtB,OAAMmB,WAAW,CAAC6B,mBAAmB,CAAC,CAAC;UAAA;YAZA,EAAEhB,QAAQ;YAAAI,QAAA,CAAApC,IAAA;YAAA;UAAA;YAe/CiC,gBAAgB,GAAGd,WAAW,CAAC6B,mBAAmB,CAAC,CAAC;YAAA,MACtDf,gBAAgB,CAACgB,UAAU,GAAG,CAAC;cAAAb,QAAA,CAAApC,IAAA;cAAA;YAAA;YAAAoC,QAAA,CAAApC,IAAA;YACjC,OAAMiC,gBAAgB;UAAA;YAAAX,yBAAA;YAAAc,QAAA,CAAApC,IAAA;YAAA;UAAA;YAAAoC,QAAA,CAAApC,IAAA;YAAA;UAAA;YAAAoC,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAc,EAAA,GAAAd,QAAA;YAAAb,iBAAA;YAAAC,cAAA,GAAAY,QAAA,CAAAc,EAAA;UAAA;YAAAd,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAC,IAAA;YAAA,MAAAf,yBAAA,IAAAG,SAAA,CAAAvB,MAAA;cAAAkC,QAAA,CAAApC,IAAA;cAAA;YAAA;YAAAoC,QAAA,CAAApC,IAAA;YAAA,WAAA0C,qBAAA,CAAApE,OAAA,EAAAmD,SAAA,CAAAvB,MAAA;UAAA;YAAAkC,QAAA,CAAAC,IAAA;YAAA,KAAAd,iBAAA;cAAAa,QAAA,CAAApC,IAAA;cAAA;YAAA;YAAA,MAAAwB,cAAA;UAAA;YAAA,OAAAY,QAAA,CAAAe,MAAA;UAAA;YAAA,OAAAf,QAAA,CAAAe,MAAA;UAAA;YAI1BhC,WAAW,CAACxD,IAAI,CAAC,IAAI,CAAC;YAGtBwD,WAAW,CAACxD,IAAI,CAAC,KAAK,CAAC;YACvB,IAAI,CAACuD,OAAO,CAACoB,OAAO,CAACG,YAAY,EAAE;cACjCtB,WAAW,CAACxD,IAAI,CAAC,GAAG,CAAC;YACvB;YAACyE,QAAA,CAAApC,IAAA;YAGD,OAAMmB,WAAW,CAAC6B,mBAAmB,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAZ,QAAA,CAAAgB,IAAA;QAAA;MAAA,GAAAnC,OAAA;IAAA;EAAA,CACxC;EAAA,OAAAP,8BAAA,CAAA9C,KAAA,OAAAI,SAAA;AAAA;AAOD,SAAS8E,SAASA,CAChBlB,KAAY,EACZI,QAAgB,EAChBqB,mBAA2B,EAC3BlC,WAAmC,EAC7B;EACN,IAAMmC,GAAG,GAAG,IAAAC,2BAAmB,EAAC3B,KAAK,EAAEI,QAAQ,CAAC;EAChD,IAAI,CAACsB,GAAG,EAAE;EACV,IAAME,qBAAqB,GAAGC,iBAAiB,CAAC7B,KAAK,EAAE0B,GAAG,EAAED,mBAAmB,CAAC;EAChF,IAAMK,aAAa,GAAGC,IAAI,CAACC,SAAS,CAACJ,qBAAqB,CAAC;EAC3DrC,WAAW,CAACxD,IAAI,CAAC+F,aAAa,CAAC;AACjC;AAKA,SAASD,iBAAiBA,CAAC7B,KAAY,EAAE0B,GAAQ,EAAED,mBAA2B,EAAW;EAAA,IAAAQ,aAAA,EAAAC,kBAAA,EAAAC,mBAAA;EAEvF,IAAMC,UAAU,GAAG,IAAAC,iCAAoB,EAACrC,KAAK,EAAE0B,GAAG,EAAE,CAACD,mBAAmB,CAAC,CAAC;EAG1E,IAAMa,UAAU,IAAAL,aAAA,GAAGjC,KAAK,CAACuC,MAAM,cAAAN,aAAA,uBAAZA,aAAA,CAAcO,MAAM,CAACf,mBAAmB,CAAC,CAACgB,IAAI;EACjE,IAAIC,iBAAiB,GACnBJ,UAAU,IAAKZ,GAAG,CAACY,UAAU,CAA0D;EAGzF,IAAI,CAACI,iBAAiB,EAAE;IAEtB,OAAO;MAACC,IAAI,EAAE,SAAS;MAAEC,QAAQ,EAAE,IAAI;MAAER,UAAU,EAAVA;IAAU,CAAC;EACtD;EAKA,IAAI,OAAOM,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,IAAAC,QAAA,CAAAtG,OAAA,EAAOgG,iBAAiB,MAAK,QAAQ,IAAI,SAAAR,kBAAA,GAAOQ,iBAAiB,cAAAR,kBAAA,uBAAjBA,kBAAA,CAAmBS,IAAI,MAAK,QAAQ,EAAE;IACxF,MAAM,IAAII,KAAK,CAAC,+BAA+B,CAAC;EAClD;EAEA,IAAI,EAAAZ,mBAAA,GAAAO,iBAAiB,cAAAP,mBAAA,uBAAjBA,mBAAA,CAAmBQ,IAAI,MAAK,SAAS,EAAE;IAEzC,OAAA1G,aAAA,CAAAA,aAAA,KAAWyG,iBAAiB;MAAEN,UAAU,EAAVA;IAAU;EAC1C;EAGA,OAAO;IAACO,IAAI,EAAE,SAAS;IAAEC,QAAQ,EAAEF,iBAAiB;IAAEN,UAAU,EAAVA;EAAU,CAAC;AACnE"}
|
|
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":"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"}
|
|
@@ -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
|
|
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","
|
|
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.
|
|
12
|
+
var VERSION = typeof "4.0.0-alpha.26" !== 'undefined' ? "4.0.0-alpha.26" : '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.
|
|
12
|
+
var VERSION = typeof "4.0.0-alpha.26" !== 'undefined' ? "4.0.0-alpha.26" : '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.
|
|
3
|
+
const VERSION = typeof "4.0.0-alpha.26" !== 'undefined' ? "4.0.0-alpha.26" : '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
|
-
|
|
48
|
-
|
|
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.
|
|
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","
|
|
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":"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"}
|
|
@@ -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
|
|
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"}
|
package/dist/esm/json-loader.js
CHANGED
|
@@ -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.
|
|
3
|
+
const VERSION = typeof "4.0.0-alpha.26" !== 'undefined' ? "4.0.0-alpha.26" : 'latest';
|
|
4
4
|
const DEFAULT_JSON_LOADER_OPTIONS = {
|
|
5
5
|
json: {
|
|
6
6
|
shape: 'object-row-table',
|
package/dist/esm/json-writer.js
CHANGED
|
@@ -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
|
-
|
|
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","
|
|
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 {
|
|
3
|
-
import {
|
|
4
|
-
import { Utf8ArrayBufferEncoder } from '
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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(
|
|
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
|
-
|
|
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
|