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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/dist.min.js +643 -92
  3. package/dist/es5/bundle.js +6 -0
  4. package/dist/es5/bundle.js.map +1 -0
  5. package/dist/es5/geojson-loader.js +157 -0
  6. package/dist/es5/geojson-loader.js.map +1 -0
  7. package/dist/es5/geojson-writer.js +27 -0
  8. package/dist/es5/geojson-writer.js.map +1 -0
  9. package/dist/es5/index.js +69 -0
  10. package/dist/es5/index.js.map +1 -0
  11. package/dist/es5/json-loader.js +67 -0
  12. package/dist/es5/json-loader.js.map +1 -0
  13. package/dist/es5/json-writer.js +42 -0
  14. package/dist/es5/json-writer.js.map +1 -0
  15. package/dist/es5/lib/clarinet/clarinet.js +446 -0
  16. package/dist/es5/lib/clarinet/clarinet.js.map +1 -0
  17. package/dist/es5/lib/encoders/encode-utils.js +42 -0
  18. package/dist/es5/lib/encoders/encode-utils.js.map +1 -0
  19. package/dist/es5/lib/encoders/geojson-encoder.js +178 -0
  20. package/dist/es5/lib/encoders/geojson-encoder.js.map +1 -0
  21. package/dist/es5/lib/encoders/json-encoder.js +30 -0
  22. package/dist/es5/lib/encoders/json-encoder.js.map +1 -0
  23. package/dist/es5/lib/encoders/utf8-encoder.js +54 -0
  24. package/dist/es5/lib/encoders/utf8-encoder.js.map +1 -0
  25. package/dist/es5/lib/json-parser/json-parser.js +140 -0
  26. package/dist/es5/lib/json-parser/json-parser.js.map +1 -0
  27. package/dist/es5/lib/json-parser/streaming-json-parser.js +123 -0
  28. package/dist/es5/lib/json-parser/streaming-json-parser.js.map +1 -0
  29. package/dist/es5/lib/jsonpath/jsonpath.js +119 -0
  30. package/dist/es5/lib/jsonpath/jsonpath.js.map +1 -0
  31. package/dist/es5/lib/parsers/parse-json-in-batches.js +206 -0
  32. package/dist/es5/lib/parsers/parse-json-in-batches.js.map +1 -0
  33. package/dist/es5/lib/parsers/parse-json.js +38 -0
  34. package/dist/es5/lib/parsers/parse-json.js.map +1 -0
  35. package/dist/es5/lib/parsers/parse-ndjson-in-batches.js +114 -0
  36. package/dist/es5/lib/parsers/parse-ndjson-in-batches.js.map +1 -0
  37. package/dist/es5/lib/parsers/parse-ndjson.js +19 -0
  38. package/dist/es5/lib/parsers/parse-ndjson.js.map +1 -0
  39. package/dist/es5/ndgeoson-loader.js +54 -0
  40. package/dist/es5/ndgeoson-loader.js.map +1 -0
  41. package/dist/es5/ndjson-loader.js +44 -0
  42. package/dist/es5/ndjson-loader.js.map +1 -0
  43. package/dist/es5/workers/geojson-worker.js +6 -0
  44. package/dist/es5/workers/geojson-worker.js.map +1 -0
  45. package/dist/esm/bundle.js +4 -0
  46. package/dist/esm/bundle.js.map +1 -0
  47. package/dist/esm/geojson-loader.js +79 -0
  48. package/dist/esm/geojson-loader.js.map +1 -0
  49. package/dist/esm/geojson-writer.js +18 -0
  50. package/dist/esm/geojson-writer.js.map +1 -0
  51. package/dist/esm/index.js +9 -0
  52. package/dist/esm/index.js.map +1 -0
  53. package/dist/esm/json-loader.js +48 -0
  54. package/dist/esm/json-loader.js.map +1 -0
  55. package/dist/esm/json-writer.js +14 -0
  56. package/dist/esm/json-writer.js.map +1 -0
  57. package/dist/esm/lib/clarinet/LICENSE +28 -0
  58. package/dist/esm/lib/clarinet/clarinet.js +415 -0
  59. package/dist/esm/lib/clarinet/clarinet.js.map +1 -0
  60. package/dist/esm/lib/encoders/encode-utils.js +31 -0
  61. package/dist/esm/lib/encoders/encode-utils.js.map +1 -0
  62. package/dist/esm/lib/encoders/geojson-encoder.js +98 -0
  63. package/dist/esm/lib/encoders/geojson-encoder.js.map +1 -0
  64. package/dist/esm/lib/encoders/json-encoder.js +12 -0
  65. package/dist/esm/lib/encoders/json-encoder.js.map +1 -0
  66. package/dist/esm/lib/encoders/utf8-encoder.js +32 -0
  67. package/dist/esm/lib/encoders/utf8-encoder.js.map +1 -0
  68. package/dist/{lib/parser → esm/lib/json-parser}/json-parser.js +4 -22
  69. package/dist/esm/lib/json-parser/json-parser.js.map +1 -0
  70. package/dist/{lib/parser → esm/lib/json-parser}/streaming-json-parser.js +2 -23
  71. package/dist/esm/lib/json-parser/streaming-json-parser.js.map +1 -0
  72. package/dist/esm/lib/jsonpath/jsonpath.js +67 -0
  73. package/dist/esm/lib/jsonpath/jsonpath.js.map +1 -0
  74. package/dist/{lib → esm/lib/parsers}/parse-json-in-batches.js +5 -18
  75. package/dist/esm/lib/parsers/parse-json-in-batches.js.map +1 -0
  76. package/dist/{lib → esm/lib/parsers}/parse-json.js +4 -9
  77. package/dist/esm/lib/parsers/parse-json.js.map +1 -0
  78. package/dist/{lib → esm/lib/parsers}/parse-ndjson-in-batches.js +3 -6
  79. package/dist/esm/lib/parsers/parse-ndjson-in-batches.js.map +1 -0
  80. package/dist/esm/lib/parsers/parse-ndjson.js +13 -0
  81. package/dist/esm/lib/parsers/parse-ndjson.js.map +1 -0
  82. package/dist/esm/ndgeoson-loader.js +27 -0
  83. package/dist/esm/ndgeoson-loader.js.map +1 -0
  84. package/dist/esm/ndjson-loader.js +18 -0
  85. package/dist/esm/ndjson-loader.js.map +1 -0
  86. package/dist/esm/workers/geojson-worker.js +4 -0
  87. package/dist/esm/workers/geojson-worker.js.map +1 -0
  88. package/dist/geojson-loader.d.ts +2 -2
  89. package/dist/geojson-loader.d.ts.map +1 -1
  90. package/dist/geojson-loader.js +65 -69
  91. package/dist/geojson-worker.js +251 -68
  92. package/dist/geojson-writer.d.ts +6 -0
  93. package/dist/geojson-writer.d.ts.map +1 -0
  94. package/dist/geojson-writer.js +22 -0
  95. package/dist/index.d.ts +5 -1
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +24 -7
  98. package/dist/json-loader.d.ts +10 -7
  99. package/dist/json-loader.d.ts.map +1 -1
  100. package/dist/json-loader.js +33 -38
  101. package/dist/json-writer.d.ts +6 -0
  102. package/dist/json-writer.d.ts.map +1 -0
  103. package/dist/json-writer.js +18 -0
  104. package/dist/lib/clarinet/clarinet.d.ts +3 -3
  105. package/dist/lib/clarinet/clarinet.d.ts.map +1 -1
  106. package/dist/lib/clarinet/clarinet.js +510 -493
  107. package/dist/lib/encoders/encode-utils.d.ts +19 -0
  108. package/dist/lib/encoders/encode-utils.d.ts.map +1 -0
  109. package/dist/lib/encoders/encode-utils.js +47 -0
  110. package/dist/lib/encoders/geojson-encoder.d.ts +14 -0
  111. package/dist/lib/encoders/geojson-encoder.d.ts.map +1 -0
  112. package/dist/lib/encoders/geojson-encoder.js +104 -0
  113. package/dist/lib/encoders/json-encoder.d.ts +16 -0
  114. package/dist/lib/encoders/json-encoder.d.ts.map +1 -0
  115. package/dist/lib/encoders/json-encoder.js +22 -0
  116. package/dist/lib/encoders/utf8-encoder.d.ts +12 -0
  117. package/dist/lib/encoders/utf8-encoder.d.ts.map +1 -0
  118. package/dist/lib/encoders/utf8-encoder.js +32 -0
  119. package/dist/lib/json-parser/json-parser.d.ts.map +1 -0
  120. package/dist/lib/json-parser/json-parser.js +98 -0
  121. package/dist/lib/json-parser/streaming-json-parser.d.ts.map +1 -0
  122. package/dist/lib/json-parser/streaming-json-parser.js +100 -0
  123. package/dist/lib/jsonpath/jsonpath.js +81 -78
  124. package/dist/lib/parsers/parse-json-in-batches.d.ts +5 -0
  125. package/dist/lib/parsers/parse-json-in-batches.d.ts.map +1 -0
  126. package/dist/lib/parsers/parse-json-in-batches.js +100 -0
  127. package/dist/lib/parsers/parse-json.d.ts +4 -0
  128. package/dist/lib/parsers/parse-json.d.ts.map +1 -0
  129. package/dist/lib/parsers/parse-json.js +32 -0
  130. package/dist/lib/{parse-ndjson-in-batches.d.ts → parsers/parse-ndjson-in-batches.d.ts} +1 -1
  131. package/dist/lib/parsers/parse-ndjson-in-batches.d.ts.map +1 -0
  132. package/dist/lib/parsers/parse-ndjson-in-batches.js +36 -0
  133. package/dist/lib/parsers/parse-ndjson.d.ts +3 -0
  134. package/dist/lib/parsers/parse-ndjson.d.ts.map +1 -0
  135. package/dist/lib/parsers/parse-ndjson.js +17 -0
  136. package/dist/ndgeoson-loader.d.ts +34 -0
  137. package/dist/ndgeoson-loader.d.ts.map +1 -0
  138. package/dist/ndgeoson-loader.js +37 -0
  139. package/dist/ndjson-loader.d.ts +3 -21
  140. package/dist/ndjson-loader.d.ts.map +1 -1
  141. package/dist/ndjson-loader.js +26 -31
  142. package/dist/workers/geojson-worker.js +5 -4
  143. package/package.json +7 -7
  144. package/src/geojson-loader.ts +10 -6
  145. package/src/geojson-writer.ts +27 -0
  146. package/src/index.ts +9 -1
  147. package/src/json-loader.ts +15 -24
  148. package/src/json-writer.ts +24 -0
  149. package/src/lib/encoders/encode-utils.ts +54 -0
  150. package/src/lib/encoders/geojson-encoder.ts +139 -0
  151. package/src/lib/encoders/json-encoder.ts +30 -0
  152. package/src/lib/encoders/utf8-encoder.ts +35 -0
  153. package/src/lib/{parse-json-in-batches.ts → parsers/parse-json-in-batches.ts} +8 -8
  154. package/src/lib/{parse-json.ts → parsers/parse-json.ts} +7 -3
  155. package/src/lib/{parse-ndjson-in-batches.ts → parsers/parse-ndjson-in-batches.ts} +1 -1
  156. package/src/lib/parsers/parse-ndjson.ts +15 -0
  157. package/src/ndgeoson-loader.ts +48 -0
  158. package/src/ndjson-loader.ts +20 -27
  159. package/dist/bundle.js.map +0 -1
  160. package/dist/geojson-loader.js.map +0 -1
  161. package/dist/index.js.map +0 -1
  162. package/dist/json-loader.js.map +0 -1
  163. package/dist/jsonl-loader.d.ts +0 -1
  164. package/dist/jsonl-loader.d.ts.map +0 -1
  165. package/dist/jsonl-loader.js +0 -2
  166. package/dist/jsonl-loader.js.map +0 -1
  167. package/dist/lib/clarinet/clarinet.js.map +0 -1
  168. package/dist/lib/jsonpath/jsonpath.js.map +0 -1
  169. package/dist/lib/parse-json-in-batches.d.ts +0 -5
  170. package/dist/lib/parse-json-in-batches.d.ts.map +0 -1
  171. package/dist/lib/parse-json-in-batches.js.map +0 -1
  172. package/dist/lib/parse-json.d.ts +0 -3
  173. package/dist/lib/parse-json.d.ts.map +0 -1
  174. package/dist/lib/parse-json.js.map +0 -1
  175. package/dist/lib/parse-ndjson-in-batches.d.ts.map +0 -1
  176. package/dist/lib/parse-ndjson-in-batches.js.map +0 -1
  177. package/dist/lib/parse-ndjson.d.ts +0 -2
  178. package/dist/lib/parse-ndjson.d.ts.map +0 -1
  179. package/dist/lib/parse-ndjson.js +0 -11
  180. package/dist/lib/parse-ndjson.js.map +0 -1
  181. package/dist/lib/parser/json-parser.d.ts.map +0 -1
  182. package/dist/lib/parser/json-parser.js.map +0 -1
  183. package/dist/lib/parser/streaming-json-parser.d.ts.map +0 -1
  184. package/dist/lib/parser/streaming-json-parser.js.map +0 -1
  185. package/dist/ndjson-loader.js.map +0 -1
  186. package/dist/workers/geojson-worker.js.map +0 -1
  187. package/src/jsonl-loader.ts +0 -53
  188. package/src/lib/parse-ndjson.ts +0 -10
  189. /package/dist/{lib → es5/lib}/clarinet/LICENSE +0 -0
  190. /package/dist/lib/{parser → json-parser}/json-parser.d.ts +0 -0
  191. /package/dist/lib/{parser → json-parser}/streaming-json-parser.d.ts +0 -0
  192. /package/src/lib/{parser → json-parser}/json-parser.ts +0 -0
  193. /package/src/lib/{parser → json-parser}/streaming-json-parser.ts +0 -0
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.encodeTableAsGeojsonInBatches = encodeTableAsGeojsonInBatches;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
12
+ var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
13
+ var _schema = require("@loaders.gl/schema");
14
+ var _encodeUtils = require("./encode-utils");
15
+ var _utf8Encoder = require("./utf8-encoder");
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
+ 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
+ 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"); }
19
+ function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s, this.n = s.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(value) { var ret = this.s.return; return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, throw: function _throw(value) { var thr = this.s.return; return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(s); }
20
+ function encodeTableAsGeojsonInBatches(_x) {
21
+ return _encodeTableAsGeojsonInBatches.apply(this, arguments);
22
+ }
23
+ function _encodeTableAsGeojsonInBatches() {
24
+ _encodeTableAsGeojsonInBatches = (0, _wrapAsyncGenerator2.default)(function (batchIterator) {
25
+ var inputOpts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
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;
28
+ return _regenerator.default.wrap(function _callee$(_context) {
29
+ while (1) switch (_context.prev = _context.next) {
30
+ case 0:
31
+ options = _objectSpread({
32
+ geojson: {},
33
+ chunkSize: 10000
34
+ }, inputOpts);
35
+ utf8Encoder = new _utf8Encoder.Utf8ArrayBufferEncoder(options.chunkSize);
36
+ if (!options.geojson.featureArray) {
37
+ utf8Encoder.push('{\n', '"type": "FeatureCollection",\n', '"features":\n');
38
+ }
39
+ utf8Encoder.push('[');
40
+ geometryColumn = options.geojson.geometryColumn;
41
+ isFirstLine = true;
42
+ _iteratorAbruptCompletion = false;
43
+ _didIteratorError = false;
44
+ _context.prev = 8;
45
+ _iterator = _asyncIterator(batchIterator);
46
+ case 10:
47
+ _context.next = 12;
48
+ return (0, _awaitAsyncGenerator2.default)(_iterator.next());
49
+ case 12:
50
+ if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) {
51
+ _context.next = 35;
52
+ break;
53
+ }
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;
56
+ if (!geometryColumn) {
57
+ geometryColumn = geometryColumn || (0, _encodeUtils.detectGeometryColumnIndex)(table);
58
+ }
59
+ rowIndex = start;
60
+ case 17:
61
+ if (!(rowIndex < end)) {
62
+ _context.next = 28;
63
+ break;
64
+ }
65
+ if (!isFirstLine) {
66
+ utf8Encoder.push(',');
67
+ }
68
+ utf8Encoder.push('\n');
69
+ isFirstLine = false;
70
+ encodeRow(table, rowIndex, geometryColumn, utf8Encoder);
71
+ if (!utf8Encoder.isFull()) {
72
+ _context.next = 25;
73
+ break;
74
+ }
75
+ _context.next = 25;
76
+ return utf8Encoder.getArrayBufferBatch();
77
+ case 25:
78
+ ++rowIndex;
79
+ _context.next = 17;
80
+ break;
81
+ case 28:
82
+ arrayBufferBatch = utf8Encoder.getArrayBufferBatch();
83
+ if (!(arrayBufferBatch.byteLength > 0)) {
84
+ _context.next = 32;
85
+ break;
86
+ }
87
+ _context.next = 32;
88
+ return arrayBufferBatch;
89
+ case 32:
90
+ _iteratorAbruptCompletion = false;
91
+ _context.next = 10;
92
+ break;
93
+ case 35:
94
+ _context.next = 41;
95
+ break;
96
+ case 37:
97
+ _context.prev = 37;
98
+ _context.t0 = _context["catch"](8);
99
+ _didIteratorError = true;
100
+ _iteratorError = _context.t0;
101
+ case 41:
102
+ _context.prev = 41;
103
+ _context.prev = 42;
104
+ if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
105
+ _context.next = 46;
106
+ break;
107
+ }
108
+ _context.next = 46;
109
+ return (0, _awaitAsyncGenerator2.default)(_iterator.return());
110
+ case 46:
111
+ _context.prev = 46;
112
+ if (!_didIteratorError) {
113
+ _context.next = 49;
114
+ break;
115
+ }
116
+ throw _iteratorError;
117
+ case 49:
118
+ return _context.finish(46);
119
+ case 50:
120
+ return _context.finish(41);
121
+ case 51:
122
+ utf8Encoder.push('\n');
123
+ utf8Encoder.push(']\n');
124
+ if (!options.geojson.featureArray) {
125
+ utf8Encoder.push('}');
126
+ }
127
+ _context.next = 56;
128
+ return utf8Encoder.getArrayBufferBatch();
129
+ case 56:
130
+ case "end":
131
+ return _context.stop();
132
+ }
133
+ }, _callee, null, [[8, 37, 41, 51], [42,, 46, 50]]);
134
+ })();
135
+ });
136
+ return _encodeTableAsGeojsonInBatches.apply(this, arguments);
137
+ }
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
+ //# sourceMappingURL=geojson-encoder.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.encodeTableAsJSON = encodeTableAsJSON;
7
+ var _schema = require("@loaders.gl/schema");
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
+ 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
+ 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';
14
+ var strings = [];
15
+ var rowIterator = (0, _schema.makeRowIterator)(table, shape);
16
+ var _iterator = _createForOfIteratorHelper(rowIterator),
17
+ _step;
18
+ try {
19
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
20
+ var row = _step.value;
21
+ strings.push(JSON.stringify(row));
22
+ }
23
+ } catch (err) {
24
+ _iterator.e(err);
25
+ } finally {
26
+ _iterator.f();
27
+ }
28
+ return "[".concat(strings.join(','), "]");
29
+ }
30
+ //# sourceMappingURL=json-encoder.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Utf8ArrayBufferEncoder = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var Utf8ArrayBufferEncoder = function () {
12
+ function Utf8ArrayBufferEncoder(chunkSize) {
13
+ (0, _classCallCheck2.default)(this, Utf8ArrayBufferEncoder);
14
+ (0, _defineProperty2.default)(this, "chunkSize", void 0);
15
+ (0, _defineProperty2.default)(this, "strings", []);
16
+ (0, _defineProperty2.default)(this, "totalLength", 0);
17
+ (0, _defineProperty2.default)(this, "textEncoder", new TextEncoder());
18
+ this.chunkSize = chunkSize;
19
+ }
20
+ (0, _createClass2.default)(Utf8ArrayBufferEncoder, [{
21
+ key: "push",
22
+ value: function push() {
23
+ for (var _len = arguments.length, strings = new Array(_len), _key = 0; _key < _len; _key++) {
24
+ strings[_key] = arguments[_key];
25
+ }
26
+ for (var _i = 0, _strings = strings; _i < _strings.length; _i++) {
27
+ var string = _strings[_i];
28
+ this.strings.push(string);
29
+ this.totalLength += string.length;
30
+ }
31
+ }
32
+ }, {
33
+ key: "isFull",
34
+ value: function isFull() {
35
+ return this.totalLength >= this.chunkSize;
36
+ }
37
+ }, {
38
+ key: "getArrayBufferBatch",
39
+ value: function getArrayBufferBatch() {
40
+ return this.textEncoder.encode(this.getStringBatch()).buffer;
41
+ }
42
+ }, {
43
+ key: "getStringBatch",
44
+ value: function getStringBatch() {
45
+ var stringChunk = this.strings.join('');
46
+ this.strings = [];
47
+ this.totalLength = 0;
48
+ return stringChunk;
49
+ }
50
+ }]);
51
+ return Utf8ArrayBufferEncoder;
52
+ }();
53
+ exports.Utf8ArrayBufferEncoder = Utf8ArrayBufferEncoder;
54
+ //# sourceMappingURL=utf8-encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utf8-encoder.js","names":["Utf8ArrayBufferEncoder","chunkSize","_classCallCheck2","default","_defineProperty2","TextEncoder","_createClass2","key","value","push","_len","arguments","length","strings","Array","_key","_i","_strings","string","totalLength","isFull","getArrayBufferBatch","textEncoder","encode","getStringBatch","buffer","stringChunk","join","exports"],"sources":["../../../../src/lib/encoders/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":";;;;;;;;;;IAGaA,sBAAsB;EAMjC,SAAAA,uBAAYC,SAAiB,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAH,sBAAA;IAAA,IAAAI,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA,mBAJH,EAAE;IAAA,IAAAC,gBAAA,CAAAD,OAAA,uBACR,CAAC;IAAA,IAAAC,gBAAA,CAAAD,OAAA,uBACY,IAAIE,WAAW,CAAC,CAAC;IAGlD,IAAI,CAACJ,SAAS,GAAGA,SAAS;EAC5B;EAAC,IAAAK,aAAA,CAAAH,OAAA,EAAAH,sBAAA;IAAAO,GAAA;IAAAC,KAAA,EAED,SAAAC,KAAA,EAAiC;MAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAzBC,OAAO,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;QAAPF,OAAO,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;MAAA;MACb,SAAAC,EAAA,MAAAC,QAAA,GAAqBJ,OAAO,EAAAG,EAAA,GAAAC,QAAA,CAAAL,MAAA,EAAAI,EAAA,IAAE;QAAzB,IAAME,MAAM,GAAAD,QAAA,CAAAD,EAAA;QACf,IAAI,CAACH,OAAO,CAACJ,IAAI,CAACS,MAAM,CAAC;QACzB,IAAI,CAACC,WAAW,IAAID,MAAM,CAACN,MAAM;MACnC;IACF;EAAC;IAAAL,GAAA;IAAAC,KAAA,EAED,SAAAY,OAAA,EAAkB;MAChB,OAAO,IAAI,CAACD,WAAW,IAAI,IAAI,CAAClB,SAAS;IAC3C;EAAC;IAAAM,GAAA;IAAAC,KAAA,EAED,SAAAa,oBAAA,EAAuC;MACrC,OAAO,IAAI,CAACC,WAAW,CAACC,MAAM,CAAC,IAAI,CAACC,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM;IAC9D;EAAC;IAAAlB,GAAA;IAAAC,KAAA,EAED,SAAAgB,eAAA,EAAyB;MACvB,IAAME,WAAW,GAAG,IAAI,CAACb,OAAO,CAACc,IAAI,CAAC,EAAE,CAAC;MACzC,IAAI,CAACd,OAAO,GAAG,EAAE;MACjB,IAAI,CAACM,WAAW,GAAG,CAAC;MACpB,OAAOO,WAAW;IACpB;EAAC;EAAA,OAAA1B,sBAAA;AAAA;AAAA4B,OAAA,CAAA5B,sBAAA,GAAAA,sBAAA"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _clarinet = _interopRequireDefault(require("../clarinet/clarinet"));
12
+ var _jsonpath = _interopRequireDefault(require("../jsonpath/jsonpath"));
13
+ 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; }
14
+ 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; }
15
+ var JSONParser = function () {
16
+ function JSONParser(options) {
17
+ var _this = this;
18
+ (0, _classCallCheck2.default)(this, JSONParser);
19
+ (0, _defineProperty2.default)(this, "parser", void 0);
20
+ (0, _defineProperty2.default)(this, "result", undefined);
21
+ (0, _defineProperty2.default)(this, "previousStates", []);
22
+ (0, _defineProperty2.default)(this, "currentState", Object.freeze({
23
+ container: [],
24
+ key: null
25
+ }));
26
+ (0, _defineProperty2.default)(this, "jsonpath", new _jsonpath.default());
27
+ this.reset();
28
+ this.parser = new _clarinet.default(_objectSpread({
29
+ onready: function onready() {
30
+ _this.jsonpath = new _jsonpath.default();
31
+ _this.previousStates.length = 0;
32
+ _this.currentState.container.length = 0;
33
+ },
34
+ onopenobject: function onopenobject(name) {
35
+ _this._openObject({});
36
+ if (typeof name !== 'undefined') {
37
+ _this.parser.emit('onkey', name);
38
+ }
39
+ },
40
+ onkey: function onkey(name) {
41
+ _this.jsonpath.set(name);
42
+ _this.currentState.key = name;
43
+ },
44
+ oncloseobject: function oncloseobject() {
45
+ _this._closeObject();
46
+ },
47
+ onopenarray: function onopenarray() {
48
+ _this._openArray();
49
+ },
50
+ onclosearray: function onclosearray() {
51
+ _this._closeArray();
52
+ },
53
+ onvalue: function onvalue(value) {
54
+ _this._pushOrSet(value);
55
+ },
56
+ onerror: function onerror(error) {
57
+ throw error;
58
+ },
59
+ onend: function onend() {
60
+ _this.result = _this.currentState.container.pop();
61
+ }
62
+ }, options));
63
+ }
64
+ (0, _createClass2.default)(JSONParser, [{
65
+ key: "reset",
66
+ value: function reset() {
67
+ this.result = undefined;
68
+ this.previousStates = [];
69
+ this.currentState = Object.freeze({
70
+ container: [],
71
+ key: null
72
+ });
73
+ this.jsonpath = new _jsonpath.default();
74
+ }
75
+ }, {
76
+ key: "write",
77
+ value: function write(chunk) {
78
+ this.parser.write(chunk);
79
+ }
80
+ }, {
81
+ key: "close",
82
+ value: function close() {
83
+ this.parser.close();
84
+ }
85
+ }, {
86
+ key: "_pushOrSet",
87
+ value: function _pushOrSet(value) {
88
+ var _this$currentState = this.currentState,
89
+ container = _this$currentState.container,
90
+ key = _this$currentState.key;
91
+ if (key !== null) {
92
+ container[key] = value;
93
+ this.currentState.key = null;
94
+ } else {
95
+ container.push(value);
96
+ }
97
+ }
98
+ }, {
99
+ key: "_openArray",
100
+ value: function _openArray() {
101
+ var newContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
102
+ this.jsonpath.push(null);
103
+ this._pushOrSet(newContainer);
104
+ this.previousStates.push(this.currentState);
105
+ this.currentState = {
106
+ container: newContainer,
107
+ isArray: true,
108
+ key: null
109
+ };
110
+ }
111
+ }, {
112
+ key: "_closeArray",
113
+ value: function _closeArray() {
114
+ this.jsonpath.pop();
115
+ this.currentState = this.previousStates.pop();
116
+ }
117
+ }, {
118
+ key: "_openObject",
119
+ value: function _openObject() {
120
+ var newContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
121
+ this.jsonpath.push(null);
122
+ this._pushOrSet(newContainer);
123
+ this.previousStates.push(this.currentState);
124
+ this.currentState = {
125
+ container: newContainer,
126
+ isArray: false,
127
+ key: null
128
+ };
129
+ }
130
+ }, {
131
+ key: "_closeObject",
132
+ value: function _closeObject() {
133
+ this.jsonpath.pop();
134
+ this.currentState = this.previousStates.pop();
135
+ }
136
+ }]);
137
+ return JSONParser;
138
+ }();
139
+ exports.default = JSONParser;
140
+ //# sourceMappingURL=json-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-parser.js","names":["_clarinet","_interopRequireDefault","require","_jsonpath","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","JSONParser","options","_this","_classCallCheck2","undefined","freeze","container","JSONPath","reset","parser","ClarinetParser","onready","jsonpath","previousStates","currentState","onopenobject","name","_openObject","emit","onkey","set","oncloseobject","_closeObject","onopenarray","_openArray","onclosearray","_closeArray","onvalue","value","_pushOrSet","onerror","error","onend","result","pop","_createClass2","write","chunk","close","_this$currentState","newContainer","isArray","exports"],"sources":["../../../../src/lib/json-parser/json-parser.ts"],"sourcesContent":["// @ts-nocheck\n\nimport ClarinetParser, {ClarinetParserOptions} from '../clarinet/clarinet';\nimport JSONPath from '../jsonpath/jsonpath';\n\n// JSONParser builds a JSON object using the events emitted by the Clarinet parser\n\nexport default class JSONParser {\n readonly parser: ClarinetParser;\n result = undefined;\n previousStates = [];\n currentState = Object.freeze({container: [], key: null});\n jsonpath: JSONPath = new JSONPath();\n\n constructor(options: ClarinetParserOptions) {\n this.reset();\n this.parser = new ClarinetParser({\n onready: () => {\n this.jsonpath = new JSONPath();\n this.previousStates.length = 0;\n this.currentState.container.length = 0;\n },\n\n onopenobject: (name) => {\n this._openObject({});\n if (typeof name !== 'undefined') {\n this.parser.emit('onkey', name);\n }\n },\n\n onkey: (name) => {\n this.jsonpath.set(name);\n this.currentState.key = name;\n },\n\n oncloseobject: () => {\n this._closeObject();\n },\n\n onopenarray: () => {\n this._openArray();\n },\n\n onclosearray: () => {\n this._closeArray();\n },\n\n onvalue: (value) => {\n this._pushOrSet(value);\n },\n\n onerror: (error) => {\n throw error;\n },\n\n onend: () => {\n this.result = this.currentState.container.pop();\n },\n\n ...options\n });\n }\n\n reset(): void {\n this.result = undefined;\n this.previousStates = [];\n this.currentState = Object.freeze({container: [], key: null});\n this.jsonpath = new JSONPath();\n }\n\n write(chunk): void {\n this.parser.write(chunk);\n }\n\n close(): void {\n this.parser.close();\n }\n\n // PRIVATE METHODS\n\n _pushOrSet(value): void {\n const {container, key} = this.currentState;\n if (key !== null) {\n container[key] = value;\n this.currentState.key = null;\n } else {\n container.push(value);\n }\n }\n\n _openArray(newContainer = []): void {\n this.jsonpath.push(null);\n this._pushOrSet(newContainer);\n this.previousStates.push(this.currentState);\n this.currentState = {container: newContainer, isArray: true, key: null};\n }\n\n _closeArray(): void {\n this.jsonpath.pop();\n this.currentState = this.previousStates.pop();\n }\n\n _openObject(newContainer = {}): void {\n this.jsonpath.push(null);\n this._pushOrSet(newContainer);\n this.previousStates.push(this.currentState);\n this.currentState = {container: newContainer, isArray: false, key: null};\n }\n\n _closeObject(): void {\n this.jsonpath.pop();\n this.currentState = this.previousStates.pop();\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
12
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+ var _jsonParser = _interopRequireDefault(require("./json-parser"));
18
+ var _jsonpath = _interopRequireDefault(require("../jsonpath/jsonpath"));
19
+ 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; } } }; }
20
+ 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); }
21
+ 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; }
22
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
24
+ var StreamingJSONParser = function (_JSONParser) {
25
+ (0, _inherits2.default)(StreamingJSONParser, _JSONParser);
26
+ var _super = _createSuper(StreamingJSONParser);
27
+ function StreamingJSONParser() {
28
+ var _this;
29
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
30
+ (0, _classCallCheck2.default)(this, StreamingJSONParser);
31
+ _this = _super.call(this, {
32
+ onopenarray: function onopenarray() {
33
+ if (!_this.streamingArray) {
34
+ if (_this._matchJSONPath()) {
35
+ _this.streamingJsonPath = _this.getJsonPath().clone();
36
+ _this.streamingArray = [];
37
+ _this._openArray(_this.streamingArray);
38
+ return;
39
+ }
40
+ }
41
+ _this._openArray();
42
+ },
43
+ onopenobject: function onopenobject(name) {
44
+ if (!_this.topLevelObject) {
45
+ _this.topLevelObject = {};
46
+ _this._openObject(_this.topLevelObject);
47
+ } else {
48
+ _this._openObject({});
49
+ }
50
+ if (typeof name !== 'undefined') {
51
+ _this.parser.emit('onkey', name);
52
+ }
53
+ }
54
+ });
55
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "jsonPaths", void 0);
56
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "streamingJsonPath", null);
57
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "streamingArray", null);
58
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "topLevelObject", null);
59
+ var jsonpaths = options.jsonpaths || [];
60
+ _this.jsonPaths = jsonpaths.map(function (jsonpath) {
61
+ return new _jsonpath.default(jsonpath);
62
+ });
63
+ return _this;
64
+ }
65
+ (0, _createClass2.default)(StreamingJSONParser, [{
66
+ key: "write",
67
+ value: function write(chunk) {
68
+ (0, _get2.default)((0, _getPrototypeOf2.default)(StreamingJSONParser.prototype), "write", this).call(this, chunk);
69
+ var array = [];
70
+ if (this.streamingArray) {
71
+ array = (0, _toConsumableArray2.default)(this.streamingArray);
72
+ this.streamingArray.length = 0;
73
+ }
74
+ return array;
75
+ }
76
+ }, {
77
+ key: "getPartialResult",
78
+ value: function getPartialResult() {
79
+ return this.topLevelObject;
80
+ }
81
+ }, {
82
+ key: "getStreamingJsonPath",
83
+ value: function getStreamingJsonPath() {
84
+ return this.streamingJsonPath;
85
+ }
86
+ }, {
87
+ key: "getStreamingJsonPathAsString",
88
+ value: function getStreamingJsonPathAsString() {
89
+ return this.streamingJsonPath && this.streamingJsonPath.toString();
90
+ }
91
+ }, {
92
+ key: "getJsonPath",
93
+ value: function getJsonPath() {
94
+ return this.jsonpath;
95
+ }
96
+ }, {
97
+ key: "_matchJSONPath",
98
+ value: function _matchJSONPath() {
99
+ var currentPath = this.getJsonPath();
100
+ if (this.jsonPaths.length === 0) {
101
+ return true;
102
+ }
103
+ var _iterator = _createForOfIteratorHelper(this.jsonPaths),
104
+ _step;
105
+ try {
106
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
107
+ var jsonPath = _step.value;
108
+ if (jsonPath.equals(currentPath)) {
109
+ return true;
110
+ }
111
+ }
112
+ } catch (err) {
113
+ _iterator.e(err);
114
+ } finally {
115
+ _iterator.f();
116
+ }
117
+ return false;
118
+ }
119
+ }]);
120
+ return StreamingJSONParser;
121
+ }(_jsonParser.default);
122
+ exports.default = StreamingJSONParser;
123
+ //# sourceMappingURL=streaming-json-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-json-parser.js","names":["_jsonParser","_interopRequireDefault","require","_jsonpath","_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","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","StreamingJSONParser","_JSONParser","_inherits2","_super","_this","options","undefined","_classCallCheck2","onopenarray","streamingArray","_matchJSONPath","streamingJsonPath","getJsonPath","clone","_openArray","onopenobject","topLevelObject","_openObject","parser","emit","_defineProperty2","_assertThisInitialized2","jsonpaths","jsonPaths","map","jsonpath","JSONPath","_createClass2","key","write","chunk","_get2","array","_toConsumableArray2","getPartialResult","getStreamingJsonPath","getStreamingJsonPathAsString","currentPath","_iterator","_step","jsonPath","equals","JSONParser","exports"],"sources":["../../../../src/lib/json-parser/streaming-json-parser.ts"],"sourcesContent":["import {default as JSONParser} from './json-parser';\nimport JSONPath from '../jsonpath/jsonpath';\n\n/**\n * The `StreamingJSONParser` looks for the first array in the JSON structure.\n * and emits an array of chunks\n */\nexport default class StreamingJSONParser extends JSONParser {\n private jsonPaths: JSONPath[];\n private streamingJsonPath: JSONPath | null = null;\n private streamingArray: any[] | null = null;\n private topLevelObject: object | null = null;\n\n constructor(options: {[key: string]: any} = {}) {\n super({\n onopenarray: () => {\n if (!this.streamingArray) {\n if (this._matchJSONPath()) {\n // @ts-ignore\n this.streamingJsonPath = this.getJsonPath().clone();\n this.streamingArray = [];\n this._openArray(this.streamingArray as []);\n return;\n }\n }\n\n this._openArray();\n },\n\n // Redefine onopenarray to inject value for top-level object\n onopenobject: (name) => {\n if (!this.topLevelObject) {\n this.topLevelObject = {};\n this._openObject(this.topLevelObject);\n } else {\n this._openObject({});\n }\n if (typeof name !== 'undefined') {\n this.parser.emit('onkey', name);\n }\n }\n });\n const jsonpaths = options.jsonpaths || [];\n this.jsonPaths = jsonpaths.map((jsonpath) => new JSONPath(jsonpath));\n }\n\n /**\n * write REDEFINITION\n * - super.write() chunk to parser\n * - get the contents (so far) of \"topmost-level\" array as batch of rows\n * - clear top-level array\n * - return the batch of rows\\\n */\n write(chunk) {\n super.write(chunk);\n let array: any[] = [];\n if (this.streamingArray) {\n array = [...this.streamingArray];\n this.streamingArray.length = 0;\n }\n return array;\n }\n\n /**\n * Returns a partially formed result object\n * Useful for returning the \"wrapper\" object when array is not top level\n * e.g. GeoJSON\n */\n getPartialResult() {\n return this.topLevelObject;\n }\n\n getStreamingJsonPath() {\n return this.streamingJsonPath;\n }\n\n getStreamingJsonPathAsString() {\n return this.streamingJsonPath && this.streamingJsonPath.toString();\n }\n\n getJsonPath() {\n return this.jsonpath;\n }\n\n // PRIVATE METHODS\n\n /**\n * Checks is this.getJsonPath matches the jsonpaths provided in options\n */\n _matchJSONPath() {\n const currentPath = this.getJsonPath();\n // console.debug(`Testing JSONPath`, currentPath);\n\n // Backwards compatibility, match any array\n // TODO implement using wildcard once that is supported\n if (this.jsonPaths.length === 0) {\n return true;\n }\n\n for (const jsonPath of this.jsonPaths) {\n if (jsonPath.equals(currentPath)) {\n return true;\n }\n }\n\n return false;\n }\n}\n"],"mappings":"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"}