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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/dist.min.js +16 -10
  2. package/dist/es5/bundle.js +0 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/geojson-loader.js +34 -82
  5. package/dist/es5/geojson-loader.js.map +1 -1
  6. package/dist/es5/index.js +6 -13
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/json-loader.js +4 -18
  9. package/dist/es5/json-loader.js.map +1 -1
  10. package/dist/es5/lib/clarinet/clarinet.js +19 -91
  11. package/dist/es5/lib/clarinet/clarinet.js.map +1 -1
  12. package/dist/es5/lib/jsonpath/jsonpath.js +8 -28
  13. package/dist/es5/lib/jsonpath/jsonpath.js.map +1 -1
  14. package/dist/es5/lib/parse-json-in-batches.js +59 -126
  15. package/dist/es5/lib/parse-json-in-batches.js.map +1 -1
  16. package/dist/es5/lib/parse-json.js +0 -10
  17. package/dist/es5/lib/parse-json.js.map +1 -1
  18. package/dist/es5/lib/parse-ndjson-in-batches.js +41 -83
  19. package/dist/es5/lib/parse-ndjson-in-batches.js.map +1 -1
  20. package/dist/es5/lib/parse-ndjson.js +0 -1
  21. package/dist/es5/lib/parse-ndjson.js.map +1 -1
  22. package/dist/es5/lib/parser/json-parser.js +8 -24
  23. package/dist/es5/lib/parser/json-parser.js.map +1 -1
  24. package/dist/es5/lib/parser/streaming-json-parser.js +10 -37
  25. package/dist/es5/lib/parser/streaming-json-parser.js.map +1 -1
  26. package/dist/es5/ndjgeoson-loader.js +3 -11
  27. package/dist/es5/ndjgeoson-loader.js.map +1 -1
  28. package/dist/es5/ndjson-loader.js +3 -11
  29. package/dist/es5/ndjson-loader.js.map +1 -1
  30. package/dist/es5/workers/geojson-worker.js +0 -2
  31. package/dist/es5/workers/geojson-worker.js.map +1 -1
  32. package/dist/esm/bundle.js +1 -1
  33. package/dist/esm/bundle.js.map +1 -1
  34. package/dist/esm/geojson-loader.js +13 -14
  35. package/dist/esm/geojson-loader.js.map +1 -1
  36. package/dist/esm/index.js +1 -0
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/json-loader.js +12 -8
  39. package/dist/esm/json-loader.js.map +1 -1
  40. package/dist/esm/lib/clarinet/clarinet.js +19 -108
  41. package/dist/esm/lib/clarinet/clarinet.js.map +1 -1
  42. package/dist/esm/lib/jsonpath/jsonpath.js +2 -18
  43. package/dist/esm/lib/jsonpath/jsonpath.js.map +1 -1
  44. package/dist/esm/lib/parse-json-in-batches.js +5 -10
  45. package/dist/esm/lib/parse-json-in-batches.js.map +1 -1
  46. package/dist/esm/lib/parse-json.js +0 -7
  47. package/dist/esm/lib/parse-json.js.map +1 -1
  48. package/dist/esm/lib/parse-ndjson-in-batches.js +2 -5
  49. package/dist/esm/lib/parse-ndjson-in-batches.js.map +1 -1
  50. package/dist/esm/lib/parse-ndjson.js.map +1 -1
  51. package/dist/esm/lib/parser/json-parser.js +6 -21
  52. package/dist/esm/lib/parser/json-parser.js.map +1 -1
  53. package/dist/esm/lib/parser/streaming-json-parser.js +3 -19
  54. package/dist/esm/lib/parser/streaming-json-parser.js.map +1 -1
  55. package/dist/esm/ndjgeoson-loader.js +4 -2
  56. package/dist/esm/ndjgeoson-loader.js.map +1 -1
  57. package/dist/esm/ndjson-loader.js +4 -2
  58. package/dist/esm/ndjson-loader.js.map +1 -1
  59. package/dist/esm/workers/geojson-worker.js.map +1 -1
  60. package/dist/geojson-worker.js +10 -11
  61. package/package.json +5 -5
@@ -1,25 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
17
-
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
11
+ 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; }
12
+ 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; }
19
13
 
20
14
  var MAX_BUFFER_LENGTH = Number.MAX_SAFE_INTEGER;
21
15
  var STATE;
22
-
23
16
  (function (STATE) {
24
17
  STATE[STATE["BEGIN"] = 0] = "BEGIN";
25
18
  STATE[STATE["VALUE"] = 1] = "VALUE";
@@ -46,24 +39,29 @@ var STATE;
46
39
  STATE[STATE["NUMBER_DECIMAL_POINT"] = 22] = "NUMBER_DECIMAL_POINT";
47
40
  STATE[STATE["NUMBER_DIGIT"] = 23] = "NUMBER_DIGIT";
48
41
  })(STATE || (STATE = {}));
49
-
50
42
  var Char = {
51
43
  tab: 0x09,
52
44
  lineFeed: 0x0a,
53
45
  carriageReturn: 0x0d,
54
46
  space: 0x20,
47
+
55
48
  doubleQuote: 0x22,
56
49
  plus: 0x2b,
57
50
  comma: 0x2c,
58
51
  minus: 0x2d,
59
52
  period: 0x2e,
53
+
60
54
  _0: 0x30,
61
55
  _9: 0x39,
56
+
62
57
  colon: 0x3a,
58
+
63
59
  E: 0x45,
60
+
64
61
  openBracket: 0x5b,
65
62
  backslash: 0x5c,
66
63
  closeBracket: 0x5d,
64
+
67
65
  a: 0x61,
68
66
  b: 0x62,
69
67
  e: 0x65,
@@ -74,9 +72,11 @@ var Char = {
74
72
  s: 0x73,
75
73
  t: 0x74,
76
74
  u: 0x75,
75
+
77
76
  openBrace: 0x7b,
78
77
  closeBrace: 0x7d
79
78
  };
79
+
80
80
  var stringTokenPattern = /[\\"\n]/g;
81
81
  var DEFAULT_OPTIONS = {
82
82
  onready: function onready() {},
@@ -90,8 +90,8 @@ var DEFAULT_OPTIONS = {
90
90
  onend: function onend() {},
91
91
  onchunkparsed: function onchunkparsed() {}
92
92
  };
93
-
94
93
  var ClarinetParser = function () {
94
+
95
95
  function ClarinetParser() {
96
96
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
97
97
  (0, _classCallCheck2.default)(this, ClarinetParser);
@@ -120,14 +120,11 @@ var ClarinetParser = function () {
120
120
  this.numberNode = '';
121
121
  this.emit('onready');
122
122
  }
123
-
124
123
  (0, _createClass2.default)(ClarinetParser, [{
125
124
  key: "end",
126
125
  value: function end() {
127
126
  if (this.state !== STATE.VALUE || this.depth !== 0) this._error('Unexpected end');
128
-
129
127
  this._closeValue();
130
-
131
128
  this.c = '';
132
129
  this.closed = true;
133
130
  this.emit('onend');
@@ -144,64 +141,59 @@ var ClarinetParser = function () {
144
141
  value: function close() {
145
142
  return this.write(null);
146
143
  }
144
+
147
145
  }, {
148
146
  key: "emit",
149
- value: function emit(event, data) {
150
- var _this$options$event, _this$options;
147
+ value:
151
148
 
149
+ function emit(event, data) {
150
+ var _this$options$event, _this$options;
152
151
  (_this$options$event = (_this$options = this.options)[event]) === null || _this$options$event === void 0 ? void 0 : _this$options$event.call(_this$options, data, this);
153
152
  }
154
153
  }, {
155
154
  key: "emitNode",
156
155
  value: function emitNode(event, data) {
157
156
  this._closeValue();
158
-
159
157
  this.emit(event, data);
160
158
  }
159
+
161
160
  }, {
162
161
  key: "write",
163
- value: function write(chunk) {
162
+ value:
163
+ function write(chunk) {
164
164
  if (this.error) {
165
165
  throw this.error;
166
166
  }
167
-
168
167
  if (this.closed) {
169
168
  return this._error('Cannot write after close. Assign an onready handler.');
170
169
  }
171
-
172
170
  if (chunk === null) {
173
171
  return this.end();
174
172
  }
175
-
176
173
  var i = 0;
177
174
  var c = chunk.charCodeAt(0);
178
175
  var p = this.p;
179
-
180
176
  while (c) {
181
177
  p = c;
182
178
  this.c = c = chunk.charCodeAt(i++);
183
-
184
179
  if (p !== c) {
185
180
  this.p = p;
186
181
  } else {
187
182
  p = this.p;
188
183
  }
189
-
190
184
  if (!c) break;
191
- this.position++;
192
185
 
186
+ this.position++;
193
187
  if (c === Char.lineFeed) {
194
188
  this.line++;
195
189
  this.column = 0;
196
190
  } else this.column++;
197
-
198
191
  switch (this.state) {
199
192
  case STATE.BEGIN:
200
193
  if (c === Char.openBrace) this.state = STATE.OPEN_OBJECT;else if (c === Char.openBracket) this.state = STATE.OPEN_ARRAY;else if (!isWhitespace(c)) {
201
194
  this._error('Non-whitespace before {[.');
202
195
  }
203
196
  continue;
204
-
205
197
  case STATE.OPEN_KEY:
206
198
  case STATE.OPEN_OBJECT:
207
199
  if (isWhitespace(c)) continue;
@@ -215,20 +207,15 @@ var ClarinetParser = function () {
215
207
  } else this.stack.push(STATE.CLOSE_OBJECT);
216
208
  if (c === Char.doubleQuote) this.state = STATE.STRING;else this._error('Malformed object key should start with "');
217
209
  continue;
218
-
219
210
  case STATE.CLOSE_KEY:
220
211
  case STATE.CLOSE_OBJECT:
221
212
  if (isWhitespace(c)) continue;
222
-
223
213
  if (c === Char.colon) {
224
214
  if (this.state === STATE.CLOSE_OBJECT) {
225
215
  this.stack.push(STATE.CLOSE_OBJECT);
226
-
227
216
  this._closeValue('onopenobject');
228
-
229
217
  this.depth++;
230
218
  } else this._closeValue('onkey');
231
-
232
219
  this.state = STATE.VALUE;
233
220
  } else if (c === Char.closeBrace) {
234
221
  this.emitNode('oncloseobject');
@@ -236,23 +223,17 @@ var ClarinetParser = function () {
236
223
  this.state = this.stack.pop() || STATE.VALUE;
237
224
  } else if (c === Char.comma) {
238
225
  if (this.state === STATE.CLOSE_OBJECT) this.stack.push(STATE.CLOSE_OBJECT);
239
-
240
226
  this._closeValue();
241
-
242
227
  this.state = STATE.OPEN_KEY;
243
228
  } else this._error('Bad object');
244
-
245
229
  continue;
246
-
247
230
  case STATE.OPEN_ARRAY:
248
231
  case STATE.VALUE:
249
232
  if (isWhitespace(c)) continue;
250
-
251
233
  if (this.state === STATE.OPEN_ARRAY) {
252
234
  this.emit('onopenarray');
253
235
  this.depth++;
254
236
  this.state = STATE.VALUE;
255
-
256
237
  if (c === Char.closeBracket) {
257
238
  this.emit('onclosearray');
258
239
  this.depth--;
@@ -262,7 +243,6 @@ var ClarinetParser = function () {
262
243
  this.stack.push(STATE.CLOSE_ARRAY);
263
244
  }
264
245
  }
265
-
266
246
  if (c === Char.doubleQuote) this.state = STATE.STRING;else if (c === Char.openBrace) this.state = STATE.OPEN_OBJECT;else if (c === Char.openBracket) this.state = STATE.OPEN_ARRAY;else if (c === Char.t) this.state = STATE.TRUE;else if (c === Char.f) this.state = STATE.FALSE;else if (c === Char.n) this.state = STATE.NULL;else if (c === Char.minus) {
267
247
  this.numberNode += '-';
268
248
  } else if (Char._0 <= c && c <= Char._9) {
@@ -270,22 +250,17 @@ var ClarinetParser = function () {
270
250
  this.state = STATE.NUMBER_DIGIT;
271
251
  } else this._error('Bad value');
272
252
  continue;
273
-
274
253
  case STATE.CLOSE_ARRAY:
275
254
  if (c === Char.comma) {
276
255
  this.stack.push(STATE.CLOSE_ARRAY);
277
-
278
256
  this._closeValue('onvalue');
279
-
280
257
  this.state = STATE.VALUE;
281
258
  } else if (c === Char.closeBracket) {
282
259
  this.emitNode('onclosearray');
283
260
  this.depth--;
284
261
  this.state = this.stack.pop() || STATE.VALUE;
285
262
  } else if (isWhitespace(c)) continue;else this._error('Bad array');
286
-
287
263
  continue;
288
-
289
264
  case STATE.STRING:
290
265
  if (this.textNode === undefined) {
291
266
  this.textNode = '';
@@ -294,13 +269,11 @@ var ClarinetParser = function () {
294
269
  var starti = i - 1;
295
270
  var slashed = this.slashed;
296
271
  var unicodeI = this.unicodeI;
297
-
298
272
  STRING_BIGLOOP: while (true) {
299
273
  while (unicodeI > 0) {
300
274
  this.unicodeS += String.fromCharCode(c);
301
275
  c = chunk.charCodeAt(i++);
302
276
  this.position++;
303
-
304
277
  if (unicodeI === 4) {
305
278
  this.textNode += String.fromCharCode(parseInt(this.unicodeS, 16));
306
279
  unicodeI = 0;
@@ -308,17 +281,14 @@ var ClarinetParser = function () {
308
281
  } else {
309
282
  unicodeI++;
310
283
  }
311
-
312
284
  if (!c) break STRING_BIGLOOP;
313
285
  }
314
-
315
286
  if (c === Char.doubleQuote && !slashed) {
316
287
  this.state = this.stack.pop() || STATE.VALUE;
317
288
  this.textNode += chunk.substring(starti, i - 1);
318
289
  this.position += i - 1 - starti;
319
290
  break;
320
291
  }
321
-
322
292
  if (c === Char.backslash && !slashed) {
323
293
  slashed = true;
324
294
  this.textNode += chunk.substring(starti, i - 1);
@@ -327,10 +297,8 @@ var ClarinetParser = function () {
327
297
  this.position++;
328
298
  if (!c) break;
329
299
  }
330
-
331
300
  if (slashed) {
332
301
  slashed = false;
333
-
334
302
  if (c === Char.n) {
335
303
  this.textNode += '\n';
336
304
  } else if (c === Char.r) {
@@ -347,97 +315,75 @@ var ClarinetParser = function () {
347
315
  } else {
348
316
  this.textNode += String.fromCharCode(c);
349
317
  }
350
-
351
318
  c = chunk.charCodeAt(i++);
352
319
  this.position++;
353
320
  starti = i - 1;
354
321
  if (!c) break;else continue;
355
322
  }
356
-
357
323
  stringTokenPattern.lastIndex = i;
358
324
  var reResult = stringTokenPattern.exec(chunk);
359
-
360
325
  if (reResult === null) {
361
326
  i = chunk.length + 1;
362
327
  this.textNode += chunk.substring(starti, i - 1);
363
328
  this.position += i - 1 - starti;
364
329
  break;
365
330
  }
366
-
367
331
  i = reResult.index + 1;
368
332
  c = chunk.charCodeAt(reResult.index);
369
-
370
333
  if (!c) {
371
334
  this.textNode += chunk.substring(starti, i - 1);
372
335
  this.position += i - 1 - starti;
373
336
  break;
374
337
  }
375
338
  }
376
-
377
339
  this.slashed = slashed;
378
340
  this.unicodeI = unicodeI;
379
341
  continue;
380
-
381
342
  case STATE.TRUE:
382
343
  if (c === Char.r) this.state = STATE.TRUE2;else this._error("Invalid true started with t".concat(c));
383
344
  continue;
384
-
385
345
  case STATE.TRUE2:
386
346
  if (c === Char.u) this.state = STATE.TRUE3;else this._error("Invalid true started with tr".concat(c));
387
347
  continue;
388
-
389
348
  case STATE.TRUE3:
390
349
  if (c === Char.e) {
391
350
  this.emit('onvalue', true);
392
351
  this.state = this.stack.pop() || STATE.VALUE;
393
352
  } else this._error("Invalid true started with tru".concat(c));
394
-
395
353
  continue;
396
-
397
354
  case STATE.FALSE:
398
355
  if (c === Char.a) this.state = STATE.FALSE2;else this._error("Invalid false started with f".concat(c));
399
356
  continue;
400
-
401
357
  case STATE.FALSE2:
402
358
  if (c === Char.l) this.state = STATE.FALSE3;else this._error("Invalid false started with fa".concat(c));
403
359
  continue;
404
-
405
360
  case STATE.FALSE3:
406
361
  if (c === Char.s) this.state = STATE.FALSE4;else this._error("Invalid false started with fal".concat(c));
407
362
  continue;
408
-
409
363
  case STATE.FALSE4:
410
364
  if (c === Char.e) {
411
365
  this.emit('onvalue', false);
412
366
  this.state = this.stack.pop() || STATE.VALUE;
413
367
  } else this._error("Invalid false started with fals".concat(c));
414
-
415
368
  continue;
416
-
417
369
  case STATE.NULL:
418
370
  if (c === Char.u) this.state = STATE.NULL2;else this._error("Invalid null started with n".concat(c));
419
371
  continue;
420
-
421
372
  case STATE.NULL2:
422
373
  if (c === Char.l) this.state = STATE.NULL3;else this._error("Invalid null started with nu".concat(c));
423
374
  continue;
424
-
425
375
  case STATE.NULL3:
426
376
  if (c === Char.l) {
427
377
  this.emit('onvalue', null);
428
378
  this.state = this.stack.pop() || STATE.VALUE;
429
379
  } else this._error("Invalid null started with nul".concat(c));
430
-
431
380
  continue;
432
-
433
381
  case STATE.NUMBER_DECIMAL_POINT:
434
382
  if (c === Char.period) {
435
383
  this.numberNode += '.';
436
384
  this.state = STATE.NUMBER_DIGIT;
437
385
  } else this._error('Leading zero not followed by .');
438
-
439
386
  continue;
440
-
441
387
  case STATE.NUMBER_DIGIT:
442
388
  if (Char._0 <= c && c <= Char._9) this.numberNode += String.fromCharCode(c);else if (c === Char.period) {
443
389
  if (this.numberNode.indexOf('.') !== -1) this._error('Invalid number has two dots');
@@ -450,22 +396,17 @@ var ClarinetParser = function () {
450
396
  this.numberNode += String.fromCharCode(c);
451
397
  } else {
452
398
  this._closeNumber();
453
-
454
399
  i--;
455
400
  this.state = this.stack.pop() || STATE.VALUE;
456
401
  }
457
402
  continue;
458
-
459
403
  default:
460
404
  this._error("Unknown state: ".concat(this.state));
461
-
462
405
  }
463
406
  }
464
-
465
407
  if (this.position >= this.bufferCheckPosition) {
466
408
  checkBufferLength(this);
467
409
  }
468
-
469
410
  this.emit('onchunkparsed');
470
411
  return this;
471
412
  }
@@ -473,11 +414,9 @@ var ClarinetParser = function () {
473
414
  key: "_closeValue",
474
415
  value: function _closeValue() {
475
416
  var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'onvalue';
476
-
477
417
  if (this.textNode !== undefined) {
478
418
  this.emit(event, this.textNode);
479
419
  }
480
-
481
420
  this.textNode = undefined;
482
421
  }
483
422
  }, {
@@ -490,9 +429,7 @@ var ClarinetParser = function () {
490
429
  key: "_error",
491
430
  value: function _error() {
492
431
  var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
493
-
494
432
  this._closeValue();
495
-
496
433
  message += "\nLine: ".concat(this.line, "\nColumn: ").concat(this.column, "\nChar: ").concat(this.c);
497
434
  var error = new Error(message);
498
435
  this.error = error;
@@ -501,35 +438,26 @@ var ClarinetParser = function () {
501
438
  }]);
502
439
  return ClarinetParser;
503
440
  }();
504
-
505
441
  exports.default = ClarinetParser;
506
-
507
442
  function isWhitespace(c) {
508
443
  return c === Char.carriageReturn || c === Char.lineFeed || c === Char.space || c === Char.tab;
509
444
  }
510
-
511
445
  function checkBufferLength(parser) {
512
446
  var maxAllowed = Math.max(MAX_BUFFER_LENGTH, 10);
513
447
  var maxActual = 0;
514
-
515
448
  for (var _i = 0, _arr = ['textNode', 'numberNode']; _i < _arr.length; _i++) {
516
449
  var buffer = _arr[_i];
517
450
  var len = parser[buffer] === undefined ? 0 : parser[buffer].length;
518
-
519
451
  if (len > maxAllowed) {
520
452
  switch (buffer) {
521
453
  case 'text':
522
454
  break;
523
-
524
455
  default:
525
456
  parser._error("Max buffer length exceeded: ".concat(buffer));
526
-
527
457
  }
528
458
  }
529
-
530
459
  maxActual = Math.max(maxActual, len);
531
460
  }
532
-
533
461
  parser.bufferCheckPosition = MAX_BUFFER_LENGTH - maxActual + parser.position;
534
462
  }
535
463
  //# sourceMappingURL=clarinet.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/clarinet/clarinet.ts"],"names":["MAX_BUFFER_LENGTH","Number","MAX_SAFE_INTEGER","STATE","Char","tab","lineFeed","carriageReturn","space","doubleQuote","plus","comma","minus","period","_0","_9","colon","E","openBracket","backslash","closeBracket","a","b","e","f","l","n","r","s","t","u","openBrace","closeBrace","stringTokenPattern","DEFAULT_OPTIONS","onready","onopenobject","onkey","oncloseobject","onopenarray","onclosearray","onvalue","onerror","onend","onchunkparsed","ClarinetParser","options","BEGIN","textNode","undefined","numberNode","emit","state","VALUE","depth","_error","_closeValue","c","closed","error","write","event","data","chunk","end","i","charCodeAt","p","position","line","column","OPEN_OBJECT","OPEN_ARRAY","isWhitespace","OPEN_KEY","stack","push","CLOSE_KEY","pop","CLOSE_OBJECT","STRING","emitNode","CLOSE_ARRAY","TRUE","FALSE","NULL","String","fromCharCode","NUMBER_DIGIT","starti","slashed","unicodeI","STRING_BIGLOOP","unicodeS","parseInt","substring","lastIndex","reResult","exec","length","index","TRUE2","TRUE3","FALSE2","FALSE3","FALSE4","NULL2","NULL3","NUMBER_DECIMAL_POINT","indexOf","_closeNumber","bufferCheckPosition","checkBufferLength","parseFloat","message","Error","parser","maxAllowed","Math","max","maxActual","buffer","len"],"mappings":"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","sourcesContent":["// loaders.gl, MIT license\n// This is a fork of the clarinet library, originally BSD license (see LICENSE file)\n// loaders.gl changes:\n// - typescript port\n\nexport type ClarinetEvent =\n | 'onvalue'\n | 'onstring'\n | 'onkey'\n | 'onopenobject'\n | 'oncloseobject'\n | 'onopenarray'\n | 'onclosearray'\n | 'onerror'\n | 'onend'\n | 'onready';\n\n// Removes the MAX_BUFFER_LENGTH, originally set to 64 * 1024\nconst MAX_BUFFER_LENGTH = Number.MAX_SAFE_INTEGER;\n// const DEBUG = false;\n\nenum STATE {\n BEGIN = 0,\n VALUE, // general stuff\n OPEN_OBJECT, // {\n CLOSE_OBJECT, // }\n OPEN_ARRAY, // [\n CLOSE_ARRAY, // ]\n TEXT_ESCAPE, // \\ stuff\n STRING, // \"\"\n BACKSLASH,\n END, // No more stack\n OPEN_KEY, // , \"a\"\n CLOSE_KEY, // :\n TRUE, // r\n TRUE2, // u\n TRUE3, // e\n FALSE, // a\n FALSE2, // l\n FALSE3, // s\n FALSE4, // e\n NULL, // u\n NULL2, // l\n NULL3, // l\n NUMBER_DECIMAL_POINT, // .\n NUMBER_DIGIT // [0-9]\n}\n\nconst Char = {\n tab: 0x09, // \\t\n lineFeed: 0x0a, // \\n\n carriageReturn: 0x0d, // \\r\n space: 0x20, // \" \"\n\n doubleQuote: 0x22, // \"\n plus: 0x2b, // +\n comma: 0x2c, // ,\n minus: 0x2d, // -\n period: 0x2e, // .\n\n _0: 0x30, // 0\n _9: 0x39, // 9\n\n colon: 0x3a, // :\n\n E: 0x45, // E\n\n openBracket: 0x5b, // [\n backslash: 0x5c, // \\\n closeBracket: 0x5d, // ]\n\n a: 0x61, // a\n b: 0x62, // b\n e: 0x65, // e\n f: 0x66, // f\n l: 0x6c, // l\n n: 0x6e, // n\n r: 0x72, // r\n s: 0x73, // s\n t: 0x74, // t\n u: 0x75, // u\n\n openBrace: 0x7b, // {\n closeBrace: 0x7d // }\n};\n\nconst stringTokenPattern = /[\\\\\"\\n]/g;\n\ntype ParserEvent = (parser: ClarinetParser, event: string, data?: any) => void;\n\nexport type ClarinetParserOptions = {\n onready?: ParserEvent;\n onopenobject?: ParserEvent;\n onkey?: ParserEvent;\n oncloseobject?: ParserEvent;\n onopenarray?: ParserEvent;\n onclosearray?: ParserEvent;\n onvalue?: ParserEvent;\n onerror?: ParserEvent;\n onend?: ParserEvent;\n onchunkparsed?: ParserEvent;\n};\n\nconst DEFAULT_OPTIONS: Required<ClarinetParserOptions> = {\n onready: () => {},\n onopenobject: () => {},\n onkey: () => {},\n oncloseobject: () => {},\n onopenarray: () => {},\n onclosearray: () => {},\n onvalue: () => {},\n onerror: () => {},\n onend: () => {},\n onchunkparsed: () => {}\n};\nexport default class ClarinetParser {\n protected options: Required<ClarinetParserOptions> = DEFAULT_OPTIONS;\n\n bufferCheckPosition = MAX_BUFFER_LENGTH;\n q = '';\n c = '';\n p = '';\n closed = false;\n closedRoot = false;\n sawRoot = false;\n // tag = null;\n error: Error | null = null;\n state = STATE.BEGIN;\n stack: STATE[] = [];\n // mostly just for error reporting\n position: number = 0;\n column: number = 0;\n line: number = 1;\n slashed: boolean = false;\n unicodeI: number = 0;\n unicodeS: string | null = null;\n depth: number = 0;\n\n textNode;\n numberNode;\n\n constructor(options: ClarinetParserOptions = {}) {\n this.options = {...DEFAULT_OPTIONS, ...options};\n this.textNode = undefined;\n this.numberNode = '';\n this.emit('onready');\n }\n\n end() {\n if (this.state !== STATE.VALUE || this.depth !== 0) this._error('Unexpected end');\n\n this._closeValue();\n this.c = '';\n this.closed = true;\n this.emit('onend');\n return this;\n }\n\n resume() {\n this.error = null;\n return this;\n }\n\n close() {\n return this.write(null);\n }\n\n // protected\n\n emit(event: string, data?: any): void {\n // if (DEBUG) console.log('-- emit', event, data);\n this.options[event]?.(data, this);\n }\n\n emitNode(event: string, data?: any): void {\n this._closeValue();\n this.emit(event, data);\n }\n\n /* eslint-disable no-continue */\n // eslint-disable-next-line complexity, max-statements\n write(chunk) {\n if (this.error) {\n throw this.error;\n }\n if (this.closed) {\n return this._error('Cannot write after close. Assign an onready handler.');\n }\n if (chunk === null) {\n return this.end();\n }\n let i = 0;\n let c = chunk.charCodeAt(0);\n let p = this.p;\n // if (DEBUG) console.log(`write -> [${ chunk }]`);\n while (c) {\n p = c;\n this.c = c = chunk.charCodeAt(i++);\n // if chunk doesnt have next, like streaming char by char\n // this way we need to check if previous is really previous\n // if not we need to reset to what the this says is the previous\n // from buffer\n if (p !== c) {\n this.p = p;\n } else {\n p = this.p;\n }\n\n if (!c) break;\n\n // if (DEBUG) console.log(i, c, STATE[this.state]);\n this.position++;\n if (c === Char.lineFeed) {\n this.line++;\n this.column = 0;\n } else this.column++;\n\n switch (this.state) {\n case STATE.BEGIN:\n if (c === Char.openBrace) this.state = STATE.OPEN_OBJECT;\n else if (c === Char.openBracket) this.state = STATE.OPEN_ARRAY;\n else if (!isWhitespace(c)) {\n this._error('Non-whitespace before {[.');\n }\n continue;\n\n case STATE.OPEN_KEY:\n case STATE.OPEN_OBJECT:\n if (isWhitespace(c)) continue;\n if (this.state === STATE.OPEN_KEY) this.stack.push(STATE.CLOSE_KEY);\n else if (c === Char.closeBrace) {\n this.emit('onopenobject');\n this.depth++;\n this.emit('oncloseobject');\n this.depth--;\n this.state = this.stack.pop() || STATE.VALUE;\n continue;\n } else this.stack.push(STATE.CLOSE_OBJECT);\n if (c === Char.doubleQuote) this.state = STATE.STRING;\n else this._error('Malformed object key should start with \"');\n continue;\n\n case STATE.CLOSE_KEY:\n case STATE.CLOSE_OBJECT:\n if (isWhitespace(c)) continue;\n // let event = this.state === STATE.CLOSE_KEY ? 'key' : 'object';\n if (c === Char.colon) {\n if (this.state === STATE.CLOSE_OBJECT) {\n this.stack.push(STATE.CLOSE_OBJECT);\n this._closeValue('onopenobject');\n this.depth++;\n } else this._closeValue('onkey');\n this.state = STATE.VALUE;\n } else if (c === Char.closeBrace) {\n this.emitNode('oncloseobject');\n this.depth--;\n this.state = this.stack.pop() || STATE.VALUE;\n } else if (c === Char.comma) {\n if (this.state === STATE.CLOSE_OBJECT) this.stack.push(STATE.CLOSE_OBJECT);\n this._closeValue();\n this.state = STATE.OPEN_KEY;\n } else this._error('Bad object');\n continue;\n\n case STATE.OPEN_ARRAY: // after an array there always a value\n case STATE.VALUE:\n if (isWhitespace(c)) continue;\n if (this.state === STATE.OPEN_ARRAY) {\n this.emit('onopenarray');\n this.depth++;\n this.state = STATE.VALUE;\n if (c === Char.closeBracket) {\n this.emit('onclosearray');\n this.depth--;\n this.state = this.stack.pop() || STATE.VALUE;\n continue;\n } else {\n this.stack.push(STATE.CLOSE_ARRAY);\n }\n }\n if (c === Char.doubleQuote) this.state = STATE.STRING;\n else if (c === Char.openBrace) this.state = STATE.OPEN_OBJECT;\n else if (c === Char.openBracket) this.state = STATE.OPEN_ARRAY;\n else if (c === Char.t) this.state = STATE.TRUE;\n else if (c === Char.f) this.state = STATE.FALSE;\n else if (c === Char.n) this.state = STATE.NULL;\n else if (c === Char.minus) {\n // keep and continue\n this.numberNode += '-';\n } else if (Char._0 <= c && c <= Char._9) {\n this.numberNode += String.fromCharCode(c);\n this.state = STATE.NUMBER_DIGIT;\n } else this._error('Bad value');\n continue;\n\n case STATE.CLOSE_ARRAY:\n if (c === Char.comma) {\n this.stack.push(STATE.CLOSE_ARRAY);\n this._closeValue('onvalue');\n this.state = STATE.VALUE;\n } else if (c === Char.closeBracket) {\n this.emitNode('onclosearray');\n this.depth--;\n this.state = this.stack.pop() || STATE.VALUE;\n } else if (isWhitespace(c)) continue;\n else this._error('Bad array');\n continue;\n\n case STATE.STRING:\n if (this.textNode === undefined) {\n this.textNode = '';\n }\n\n // thanks thejh, this is an about 50% performance improvement.\n let starti = i - 1;\n let slashed = this.slashed;\n let unicodeI = this.unicodeI;\n // eslint-disable-next-line no-constant-condition, no-labels\n STRING_BIGLOOP: while (true) {\n // if (DEBUG) console.log(i, c, STATE[this.state], slashed);\n // zero means \"no unicode active\". 1-4 mean \"parse some more\". end after 4.\n while (unicodeI > 0) {\n this.unicodeS += String.fromCharCode(c);\n c = chunk.charCodeAt(i++);\n this.position++;\n if (unicodeI === 4) {\n // TODO this might be slow? well, probably not used too often anyway\n this.textNode += String.fromCharCode(parseInt(this.unicodeS as string, 16));\n unicodeI = 0;\n starti = i - 1;\n } else {\n unicodeI++;\n }\n // we can just break here: no stuff we skipped that still has to be sliced out or so\n // eslint-disable-next-line no-labels\n if (!c) break STRING_BIGLOOP;\n }\n if (c === Char.doubleQuote && !slashed) {\n this.state = this.stack.pop() || STATE.VALUE;\n this.textNode += chunk.substring(starti, i - 1);\n this.position += i - 1 - starti;\n break;\n }\n if (c === Char.backslash && !slashed) {\n slashed = true;\n this.textNode += chunk.substring(starti, i - 1);\n this.position += i - 1 - starti;\n c = chunk.charCodeAt(i++);\n this.position++;\n if (!c) break;\n }\n if (slashed) {\n slashed = false;\n if (c === Char.n) {\n this.textNode += '\\n';\n } else if (c === Char.r) {\n this.textNode += '\\r';\n } else if (c === Char.t) {\n this.textNode += '\\t';\n } else if (c === Char.f) {\n this.textNode += '\\f';\n } else if (c === Char.b) {\n this.textNode += '\\b';\n } else if (c === Char.u) {\n // \\uxxxx. meh!\n unicodeI = 1;\n this.unicodeS = '';\n } else {\n this.textNode += String.fromCharCode(c);\n }\n c = chunk.charCodeAt(i++);\n this.position++;\n starti = i - 1;\n if (!c) break;\n else continue;\n }\n\n stringTokenPattern.lastIndex = i;\n const reResult = stringTokenPattern.exec(chunk);\n if (reResult === null) {\n i = chunk.length + 1;\n this.textNode += chunk.substring(starti, i - 1);\n this.position += i - 1 - starti;\n break;\n }\n i = reResult.index + 1;\n c = chunk.charCodeAt(reResult.index);\n if (!c) {\n this.textNode += chunk.substring(starti, i - 1);\n this.position += i - 1 - starti;\n break;\n }\n }\n this.slashed = slashed;\n this.unicodeI = unicodeI;\n continue;\n\n case STATE.TRUE:\n if (c === Char.r) this.state = STATE.TRUE2;\n else this._error(`Invalid true started with t${c}`);\n continue;\n\n case STATE.TRUE2:\n if (c === Char.u) this.state = STATE.TRUE3;\n else this._error(`Invalid true started with tr${c}`);\n continue;\n\n case STATE.TRUE3:\n if (c === Char.e) {\n this.emit('onvalue', true);\n this.state = this.stack.pop() || STATE.VALUE;\n } else this._error(`Invalid true started with tru${c}`);\n continue;\n\n case STATE.FALSE:\n if (c === Char.a) this.state = STATE.FALSE2;\n else this._error(`Invalid false started with f${c}`);\n continue;\n\n case STATE.FALSE2:\n if (c === Char.l) this.state = STATE.FALSE3;\n else this._error(`Invalid false started with fa${c}`);\n continue;\n\n case STATE.FALSE3:\n if (c === Char.s) this.state = STATE.FALSE4;\n else this._error(`Invalid false started with fal${c}`);\n continue;\n\n case STATE.FALSE4:\n if (c === Char.e) {\n this.emit('onvalue', false);\n this.state = this.stack.pop() || STATE.VALUE;\n } else this._error(`Invalid false started with fals${c}`);\n continue;\n\n case STATE.NULL:\n if (c === Char.u) this.state = STATE.NULL2;\n else this._error(`Invalid null started with n${c}`);\n continue;\n\n case STATE.NULL2:\n if (c === Char.l) this.state = STATE.NULL3;\n else this._error(`Invalid null started with nu${c}`);\n continue;\n\n case STATE.NULL3:\n if (c === Char.l) {\n this.emit('onvalue', null);\n this.state = this.stack.pop() || STATE.VALUE;\n } else this._error(`Invalid null started with nul${c}`);\n continue;\n\n case STATE.NUMBER_DECIMAL_POINT:\n if (c === Char.period) {\n this.numberNode += '.';\n this.state = STATE.NUMBER_DIGIT;\n } else this._error('Leading zero not followed by .');\n continue;\n\n case STATE.NUMBER_DIGIT:\n if (Char._0 <= c && c <= Char._9) this.numberNode += String.fromCharCode(c);\n else if (c === Char.period) {\n if (this.numberNode.indexOf('.') !== -1) this._error('Invalid number has two dots');\n this.numberNode += '.';\n } else if (c === Char.e || c === Char.E) {\n if (this.numberNode.indexOf('e') !== -1 || this.numberNode.indexOf('E') !== -1)\n this._error('Invalid number has two exponential');\n this.numberNode += 'e';\n } else if (c === Char.plus || c === Char.minus) {\n // @ts-expect-error\n if (!(p === Char.e || p === Char.E)) this._error('Invalid symbol in number');\n this.numberNode += String.fromCharCode(c);\n } else {\n this._closeNumber();\n i--; // go back one\n this.state = this.stack.pop() || STATE.VALUE;\n }\n continue;\n\n default:\n this._error(`Unknown state: ${this.state}`);\n }\n }\n if (this.position >= this.bufferCheckPosition) {\n checkBufferLength(this);\n }\n\n this.emit('onchunkparsed');\n\n return this;\n }\n\n _closeValue(event: string = 'onvalue'): void {\n if (this.textNode !== undefined) {\n this.emit(event, this.textNode);\n }\n this.textNode = undefined;\n }\n\n _closeNumber(): void {\n if (this.numberNode) this.emit('onvalue', parseFloat(this.numberNode));\n this.numberNode = '';\n }\n\n _error(message: string = ''): void {\n this._closeValue();\n message += `\\nLine: ${this.line}\\nColumn: ${this.column}\\nChar: ${this.c}`;\n const error = new Error(message);\n this.error = error;\n this.emit('onerror', error);\n }\n}\n\nfunction isWhitespace(c): boolean {\n return c === Char.carriageReturn || c === Char.lineFeed || c === Char.space || c === Char.tab;\n}\n\nfunction checkBufferLength(parser) {\n const maxAllowed = Math.max(MAX_BUFFER_LENGTH, 10);\n let maxActual = 0;\n\n for (const buffer of ['textNode', 'numberNode']) {\n const len = parser[buffer] === undefined ? 0 : parser[buffer].length;\n if (len > maxAllowed) {\n switch (buffer) {\n case 'text':\n // TODO - should this be closeValue?\n // closeText(parser);\n break;\n\n default:\n parser._error(`Max buffer length exceeded: ${buffer}`);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n parser.bufferCheckPosition = MAX_BUFFER_LENGTH - maxActual + parser.position;\n}\n"],"file":"clarinet.js"}
1
+ {"version":3,"file":"clarinet.js","names":["MAX_BUFFER_LENGTH","Number","MAX_SAFE_INTEGER","STATE","Char","tab","lineFeed","carriageReturn","space","doubleQuote","plus","comma","minus","period","_0","_9","colon","E","openBracket","backslash","closeBracket","a","b","e","f","l","n","r","s","t","u","openBrace","closeBrace","stringTokenPattern","DEFAULT_OPTIONS","onready","onopenobject","onkey","oncloseobject","onopenarray","onclosearray","onvalue","onerror","onend","onchunkparsed","ClarinetParser","options","BEGIN","textNode","undefined","numberNode","emit","state","VALUE","depth","_error","_closeValue","c","closed","error","write","event","data","chunk","end","i","charCodeAt","p","position","line","column","OPEN_OBJECT","OPEN_ARRAY","isWhitespace","OPEN_KEY","stack","push","CLOSE_KEY","pop","CLOSE_OBJECT","STRING","emitNode","CLOSE_ARRAY","TRUE","FALSE","NULL","String","fromCharCode","NUMBER_DIGIT","starti","slashed","unicodeI","STRING_BIGLOOP","unicodeS","parseInt","substring","lastIndex","reResult","exec","length","index","TRUE2","TRUE3","FALSE2","FALSE3","FALSE4","NULL2","NULL3","NUMBER_DECIMAL_POINT","indexOf","_closeNumber","bufferCheckPosition","checkBufferLength","parseFloat","message","Error","parser","maxAllowed","Math","max","maxActual","buffer","len"],"sources":["../../../../src/lib/clarinet/clarinet.ts"],"sourcesContent":["// loaders.gl, MIT license\n// This is a fork of the clarinet library, originally BSD license (see LICENSE file)\n// loaders.gl changes:\n// - typescript port\n\nexport type ClarinetEvent =\n | 'onvalue'\n | 'onstring'\n | 'onkey'\n | 'onopenobject'\n | 'oncloseobject'\n | 'onopenarray'\n | 'onclosearray'\n | 'onerror'\n | 'onend'\n | 'onready';\n\n// Removes the MAX_BUFFER_LENGTH, originally set to 64 * 1024\nconst MAX_BUFFER_LENGTH = Number.MAX_SAFE_INTEGER;\n// const DEBUG = false;\n\nenum STATE {\n BEGIN = 0,\n VALUE, // general stuff\n OPEN_OBJECT, // {\n CLOSE_OBJECT, // }\n OPEN_ARRAY, // [\n CLOSE_ARRAY, // ]\n TEXT_ESCAPE, // \\ stuff\n STRING, // \"\"\n BACKSLASH,\n END, // No more stack\n OPEN_KEY, // , \"a\"\n CLOSE_KEY, // :\n TRUE, // r\n TRUE2, // u\n TRUE3, // e\n FALSE, // a\n FALSE2, // l\n FALSE3, // s\n FALSE4, // e\n NULL, // u\n NULL2, // l\n NULL3, // l\n NUMBER_DECIMAL_POINT, // .\n NUMBER_DIGIT // [0-9]\n}\n\nconst Char = {\n tab: 0x09, // \\t\n lineFeed: 0x0a, // \\n\n carriageReturn: 0x0d, // \\r\n space: 0x20, // \" \"\n\n doubleQuote: 0x22, // \"\n plus: 0x2b, // +\n comma: 0x2c, // ,\n minus: 0x2d, // -\n period: 0x2e, // .\n\n _0: 0x30, // 0\n _9: 0x39, // 9\n\n colon: 0x3a, // :\n\n E: 0x45, // E\n\n openBracket: 0x5b, // [\n backslash: 0x5c, // \\\n closeBracket: 0x5d, // ]\n\n a: 0x61, // a\n b: 0x62, // b\n e: 0x65, // e\n f: 0x66, // f\n l: 0x6c, // l\n n: 0x6e, // n\n r: 0x72, // r\n s: 0x73, // s\n t: 0x74, // t\n u: 0x75, // u\n\n openBrace: 0x7b, // {\n closeBrace: 0x7d // }\n};\n\nconst stringTokenPattern = /[\\\\\"\\n]/g;\n\ntype ParserEvent = (parser: ClarinetParser, event: string, data?: any) => void;\n\nexport type ClarinetParserOptions = {\n onready?: ParserEvent;\n onopenobject?: ParserEvent;\n onkey?: ParserEvent;\n oncloseobject?: ParserEvent;\n onopenarray?: ParserEvent;\n onclosearray?: ParserEvent;\n onvalue?: ParserEvent;\n onerror?: ParserEvent;\n onend?: ParserEvent;\n onchunkparsed?: ParserEvent;\n};\n\nconst DEFAULT_OPTIONS: Required<ClarinetParserOptions> = {\n onready: () => {},\n onopenobject: () => {},\n onkey: () => {},\n oncloseobject: () => {},\n onopenarray: () => {},\n onclosearray: () => {},\n onvalue: () => {},\n onerror: () => {},\n onend: () => {},\n onchunkparsed: () => {}\n};\nexport default class ClarinetParser {\n protected options: Required<ClarinetParserOptions> = DEFAULT_OPTIONS;\n\n bufferCheckPosition = MAX_BUFFER_LENGTH;\n q = '';\n c = '';\n p = '';\n closed = false;\n closedRoot = false;\n sawRoot = false;\n // tag = null;\n error: Error | null = null;\n state = STATE.BEGIN;\n stack: STATE[] = [];\n // mostly just for error reporting\n position: number = 0;\n column: number = 0;\n line: number = 1;\n slashed: boolean = false;\n unicodeI: number = 0;\n unicodeS: string | null = null;\n depth: number = 0;\n\n textNode;\n numberNode;\n\n constructor(options: ClarinetParserOptions = {}) {\n this.options = {...DEFAULT_OPTIONS, ...options};\n this.textNode = undefined;\n this.numberNode = '';\n this.emit('onready');\n }\n\n end() {\n if (this.state !== STATE.VALUE || this.depth !== 0) this._error('Unexpected end');\n\n this._closeValue();\n this.c = '';\n this.closed = true;\n this.emit('onend');\n return this;\n }\n\n resume() {\n this.error = null;\n return this;\n }\n\n close() {\n return this.write(null);\n }\n\n // protected\n\n emit(event: string, data?: any): void {\n // if (DEBUG) console.log('-- emit', event, data);\n this.options[event]?.(data, this);\n }\n\n emitNode(event: string, data?: any): void {\n this._closeValue();\n this.emit(event, data);\n }\n\n /* eslint-disable no-continue */\n // eslint-disable-next-line complexity, max-statements\n write(chunk) {\n if (this.error) {\n throw this.error;\n }\n if (this.closed) {\n return this._error('Cannot write after close. Assign an onready handler.');\n }\n if (chunk === null) {\n return this.end();\n }\n let i = 0;\n let c = chunk.charCodeAt(0);\n let p = this.p;\n // if (DEBUG) console.log(`write -> [${ chunk }]`);\n while (c) {\n p = c;\n this.c = c = chunk.charCodeAt(i++);\n // if chunk doesnt have next, like streaming char by char\n // this way we need to check if previous is really previous\n // if not we need to reset to what the this says is the previous\n // from buffer\n if (p !== c) {\n this.p = p;\n } else {\n p = this.p;\n }\n\n if (!c) break;\n\n // if (DEBUG) console.log(i, c, STATE[this.state]);\n this.position++;\n if (c === Char.lineFeed) {\n this.line++;\n this.column = 0;\n } else this.column++;\n\n switch (this.state) {\n case STATE.BEGIN:\n if (c === Char.openBrace) this.state = STATE.OPEN_OBJECT;\n else if (c === Char.openBracket) this.state = STATE.OPEN_ARRAY;\n else if (!isWhitespace(c)) {\n this._error('Non-whitespace before {[.');\n }\n continue;\n\n case STATE.OPEN_KEY:\n case STATE.OPEN_OBJECT:\n if (isWhitespace(c)) continue;\n if (this.state === STATE.OPEN_KEY) this.stack.push(STATE.CLOSE_KEY);\n else if (c === Char.closeBrace) {\n this.emit('onopenobject');\n this.depth++;\n this.emit('oncloseobject');\n this.depth--;\n this.state = this.stack.pop() || STATE.VALUE;\n continue;\n } else this.stack.push(STATE.CLOSE_OBJECT);\n if (c === Char.doubleQuote) this.state = STATE.STRING;\n else this._error('Malformed object key should start with \"');\n continue;\n\n case STATE.CLOSE_KEY:\n case STATE.CLOSE_OBJECT:\n if (isWhitespace(c)) continue;\n // let event = this.state === STATE.CLOSE_KEY ? 'key' : 'object';\n if (c === Char.colon) {\n if (this.state === STATE.CLOSE_OBJECT) {\n this.stack.push(STATE.CLOSE_OBJECT);\n this._closeValue('onopenobject');\n this.depth++;\n } else this._closeValue('onkey');\n this.state = STATE.VALUE;\n } else if (c === Char.closeBrace) {\n this.emitNode('oncloseobject');\n this.depth--;\n this.state = this.stack.pop() || STATE.VALUE;\n } else if (c === Char.comma) {\n if (this.state === STATE.CLOSE_OBJECT) this.stack.push(STATE.CLOSE_OBJECT);\n this._closeValue();\n this.state = STATE.OPEN_KEY;\n } else this._error('Bad object');\n continue;\n\n case STATE.OPEN_ARRAY: // after an array there always a value\n case STATE.VALUE:\n if (isWhitespace(c)) continue;\n if (this.state === STATE.OPEN_ARRAY) {\n this.emit('onopenarray');\n this.depth++;\n this.state = STATE.VALUE;\n if (c === Char.closeBracket) {\n this.emit('onclosearray');\n this.depth--;\n this.state = this.stack.pop() || STATE.VALUE;\n continue;\n } else {\n this.stack.push(STATE.CLOSE_ARRAY);\n }\n }\n if (c === Char.doubleQuote) this.state = STATE.STRING;\n else if (c === Char.openBrace) this.state = STATE.OPEN_OBJECT;\n else if (c === Char.openBracket) this.state = STATE.OPEN_ARRAY;\n else if (c === Char.t) this.state = STATE.TRUE;\n else if (c === Char.f) this.state = STATE.FALSE;\n else if (c === Char.n) this.state = STATE.NULL;\n else if (c === Char.minus) {\n // keep and continue\n this.numberNode += '-';\n } else if (Char._0 <= c && c <= Char._9) {\n this.numberNode += String.fromCharCode(c);\n this.state = STATE.NUMBER_DIGIT;\n } else this._error('Bad value');\n continue;\n\n case STATE.CLOSE_ARRAY:\n if (c === Char.comma) {\n this.stack.push(STATE.CLOSE_ARRAY);\n this._closeValue('onvalue');\n this.state = STATE.VALUE;\n } else if (c === Char.closeBracket) {\n this.emitNode('onclosearray');\n this.depth--;\n this.state = this.stack.pop() || STATE.VALUE;\n } else if (isWhitespace(c)) continue;\n else this._error('Bad array');\n continue;\n\n case STATE.STRING:\n if (this.textNode === undefined) {\n this.textNode = '';\n }\n\n // thanks thejh, this is an about 50% performance improvement.\n let starti = i - 1;\n let slashed = this.slashed;\n let unicodeI = this.unicodeI;\n // eslint-disable-next-line no-constant-condition, no-labels\n STRING_BIGLOOP: while (true) {\n // if (DEBUG) console.log(i, c, STATE[this.state], slashed);\n // zero means \"no unicode active\". 1-4 mean \"parse some more\". end after 4.\n while (unicodeI > 0) {\n this.unicodeS += String.fromCharCode(c);\n c = chunk.charCodeAt(i++);\n this.position++;\n if (unicodeI === 4) {\n // TODO this might be slow? well, probably not used too often anyway\n this.textNode += String.fromCharCode(parseInt(this.unicodeS as string, 16));\n unicodeI = 0;\n starti = i - 1;\n } else {\n unicodeI++;\n }\n // we can just break here: no stuff we skipped that still has to be sliced out or so\n // eslint-disable-next-line no-labels\n if (!c) break STRING_BIGLOOP;\n }\n if (c === Char.doubleQuote && !slashed) {\n this.state = this.stack.pop() || STATE.VALUE;\n this.textNode += chunk.substring(starti, i - 1);\n this.position += i - 1 - starti;\n break;\n }\n if (c === Char.backslash && !slashed) {\n slashed = true;\n this.textNode += chunk.substring(starti, i - 1);\n this.position += i - 1 - starti;\n c = chunk.charCodeAt(i++);\n this.position++;\n if (!c) break;\n }\n if (slashed) {\n slashed = false;\n if (c === Char.n) {\n this.textNode += '\\n';\n } else if (c === Char.r) {\n this.textNode += '\\r';\n } else if (c === Char.t) {\n this.textNode += '\\t';\n } else if (c === Char.f) {\n this.textNode += '\\f';\n } else if (c === Char.b) {\n this.textNode += '\\b';\n } else if (c === Char.u) {\n // \\uxxxx. meh!\n unicodeI = 1;\n this.unicodeS = '';\n } else {\n this.textNode += String.fromCharCode(c);\n }\n c = chunk.charCodeAt(i++);\n this.position++;\n starti = i - 1;\n if (!c) break;\n else continue;\n }\n\n stringTokenPattern.lastIndex = i;\n const reResult = stringTokenPattern.exec(chunk);\n if (reResult === null) {\n i = chunk.length + 1;\n this.textNode += chunk.substring(starti, i - 1);\n this.position += i - 1 - starti;\n break;\n }\n i = reResult.index + 1;\n c = chunk.charCodeAt(reResult.index);\n if (!c) {\n this.textNode += chunk.substring(starti, i - 1);\n this.position += i - 1 - starti;\n break;\n }\n }\n this.slashed = slashed;\n this.unicodeI = unicodeI;\n continue;\n\n case STATE.TRUE:\n if (c === Char.r) this.state = STATE.TRUE2;\n else this._error(`Invalid true started with t${c}`);\n continue;\n\n case STATE.TRUE2:\n if (c === Char.u) this.state = STATE.TRUE3;\n else this._error(`Invalid true started with tr${c}`);\n continue;\n\n case STATE.TRUE3:\n if (c === Char.e) {\n this.emit('onvalue', true);\n this.state = this.stack.pop() || STATE.VALUE;\n } else this._error(`Invalid true started with tru${c}`);\n continue;\n\n case STATE.FALSE:\n if (c === Char.a) this.state = STATE.FALSE2;\n else this._error(`Invalid false started with f${c}`);\n continue;\n\n case STATE.FALSE2:\n if (c === Char.l) this.state = STATE.FALSE3;\n else this._error(`Invalid false started with fa${c}`);\n continue;\n\n case STATE.FALSE3:\n if (c === Char.s) this.state = STATE.FALSE4;\n else this._error(`Invalid false started with fal${c}`);\n continue;\n\n case STATE.FALSE4:\n if (c === Char.e) {\n this.emit('onvalue', false);\n this.state = this.stack.pop() || STATE.VALUE;\n } else this._error(`Invalid false started with fals${c}`);\n continue;\n\n case STATE.NULL:\n if (c === Char.u) this.state = STATE.NULL2;\n else this._error(`Invalid null started with n${c}`);\n continue;\n\n case STATE.NULL2:\n if (c === Char.l) this.state = STATE.NULL3;\n else this._error(`Invalid null started with nu${c}`);\n continue;\n\n case STATE.NULL3:\n if (c === Char.l) {\n this.emit('onvalue', null);\n this.state = this.stack.pop() || STATE.VALUE;\n } else this._error(`Invalid null started with nul${c}`);\n continue;\n\n case STATE.NUMBER_DECIMAL_POINT:\n if (c === Char.period) {\n this.numberNode += '.';\n this.state = STATE.NUMBER_DIGIT;\n } else this._error('Leading zero not followed by .');\n continue;\n\n case STATE.NUMBER_DIGIT:\n if (Char._0 <= c && c <= Char._9) this.numberNode += String.fromCharCode(c);\n else if (c === Char.period) {\n if (this.numberNode.indexOf('.') !== -1) this._error('Invalid number has two dots');\n this.numberNode += '.';\n } else if (c === Char.e || c === Char.E) {\n if (this.numberNode.indexOf('e') !== -1 || this.numberNode.indexOf('E') !== -1)\n this._error('Invalid number has two exponential');\n this.numberNode += 'e';\n } else if (c === Char.plus || c === Char.minus) {\n // @ts-expect-error\n if (!(p === Char.e || p === Char.E)) this._error('Invalid symbol in number');\n this.numberNode += String.fromCharCode(c);\n } else {\n this._closeNumber();\n i--; // go back one\n this.state = this.stack.pop() || STATE.VALUE;\n }\n continue;\n\n default:\n this._error(`Unknown state: ${this.state}`);\n }\n }\n if (this.position >= this.bufferCheckPosition) {\n checkBufferLength(this);\n }\n\n this.emit('onchunkparsed');\n\n return this;\n }\n\n _closeValue(event: string = 'onvalue'): void {\n if (this.textNode !== undefined) {\n this.emit(event, this.textNode);\n }\n this.textNode = undefined;\n }\n\n _closeNumber(): void {\n if (this.numberNode) this.emit('onvalue', parseFloat(this.numberNode));\n this.numberNode = '';\n }\n\n _error(message: string = ''): void {\n this._closeValue();\n message += `\\nLine: ${this.line}\\nColumn: ${this.column}\\nChar: ${this.c}`;\n const error = new Error(message);\n this.error = error;\n this.emit('onerror', error);\n }\n}\n\nfunction isWhitespace(c): boolean {\n return c === Char.carriageReturn || c === Char.lineFeed || c === Char.space || c === Char.tab;\n}\n\nfunction checkBufferLength(parser) {\n const maxAllowed = Math.max(MAX_BUFFER_LENGTH, 10);\n let maxActual = 0;\n\n for (const buffer of ['textNode', 'numberNode']) {\n const len = parser[buffer] === undefined ? 0 : parser[buffer].length;\n if (len > maxAllowed) {\n switch (buffer) {\n case 'text':\n // TODO - should this be closeValue?\n // closeText(parser);\n break;\n\n default:\n parser._error(`Max buffer length exceeded: ${buffer}`);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n parser.bufferCheckPosition = MAX_BUFFER_LENGTH - maxActual + parser.position;\n}\n"],"mappings":"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"}