@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,55 +1,40 @@
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
-
12
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
-
18
12
  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; } } }; }
19
-
20
13
  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
-
22
14
  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; }
23
-
24
15
  var JSONPath = function () {
25
16
  function JSONPath() {
26
17
  var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
27
18
  (0, _classCallCheck2.default)(this, JSONPath);
28
19
  (0, _defineProperty2.default)(this, "path", void 0);
29
20
  this.path = ['$'];
30
-
31
21
  if (path instanceof JSONPath) {
32
22
  this.path = (0, _toConsumableArray2.default)(path.path);
33
23
  return;
34
24
  }
35
-
36
25
  if (Array.isArray(path)) {
37
26
  var _this$path;
38
-
39
27
  (_this$path = this.path).push.apply(_this$path, (0, _toConsumableArray2.default)(path));
40
-
41
28
  return;
42
29
  }
43
30
 
44
31
  if (typeof path === 'string') {
45
32
  this.path = path.split('.');
46
-
47
33
  if (this.path[0] !== '$') {
48
34
  throw new Error('JSONPaths must start with $');
49
35
  }
50
36
  }
51
37
  }
52
-
53
38
  (0, _createClass2.default)(JSONPath, [{
54
39
  key: "clone",
55
40
  value: function clone() {
@@ -81,25 +66,23 @@ var JSONPath = function () {
81
66
  if (!this || !other || this.path.length !== other.path.length) {
82
67
  return false;
83
68
  }
84
-
85
69
  for (var i = 0; i < this.path.length; ++i) {
86
70
  if (this.path[i] !== other.path[i]) {
87
71
  return false;
88
72
  }
89
73
  }
90
-
91
74
  return true;
92
75
  }
76
+
93
77
  }, {
94
78
  key: "setFieldAtPath",
95
- value: function setFieldAtPath(object, value) {
79
+ value:
80
+ function setFieldAtPath(object, value) {
96
81
  var path = (0, _toConsumableArray2.default)(this.path);
97
82
  path.shift();
98
83
  var field = path.pop();
99
-
100
84
  var _iterator = _createForOfIteratorHelper(path),
101
- _step;
102
-
85
+ _step;
103
86
  try {
104
87
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
105
88
  var component = _step.value;
@@ -110,19 +93,18 @@ var JSONPath = function () {
110
93
  } finally {
111
94
  _iterator.f();
112
95
  }
113
-
114
96
  object[field] = value;
115
97
  }
98
+
116
99
  }, {
117
100
  key: "getFieldAtPath",
118
- value: function getFieldAtPath(object) {
101
+ value:
102
+ function getFieldAtPath(object) {
119
103
  var path = (0, _toConsumableArray2.default)(this.path);
120
104
  path.shift();
121
105
  var field = path.pop();
122
-
123
106
  var _iterator2 = _createForOfIteratorHelper(path),
124
- _step2;
125
-
107
+ _step2;
126
108
  try {
127
109
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
128
110
  var component = _step2.value;
@@ -133,12 +115,10 @@ var JSONPath = function () {
133
115
  } finally {
134
116
  _iterator2.f();
135
117
  }
136
-
137
118
  return object[field];
138
119
  }
139
120
  }]);
140
121
  return JSONPath;
141
122
  }();
142
-
143
123
  exports.default = JSONPath;
144
124
  //# sourceMappingURL=jsonpath.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/jsonpath/jsonpath.ts"],"names":["JSONPath","path","Array","isArray","push","split","Error","join","name","pop","length","other","i","object","value","shift","field","component"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;IAQqBA,Q;AAGnB,sBAA8D;AAAA,QAAlDC,IAAkD,uEAAN,IAAM;AAAA;AAAA;AAC5D,SAAKA,IAAL,GAAY,CAAC,GAAD,CAAZ;;AAEA,QAAIA,IAAI,YAAYD,QAApB,EAA8B;AAE5B,WAAKC,IAAL,oCAAgBA,IAAI,CAACA,IAArB;AACA;AACD;;AAED,QAAIC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAJ,EAAyB;AAAA;;AACvB,yBAAKA,IAAL,EAAUG,IAAV,oDAAkBH,IAAlB;;AACA;AACD;;AAGD,QAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,WAAKA,IAAL,GAAYA,IAAI,CAACI,KAAL,CAAW,GAAX,CAAZ;;AACA,UAAI,KAAKJ,IAAL,CAAU,CAAV,MAAiB,GAArB,EAA0B;AACxB,cAAM,IAAIK,KAAJ,CAAU,6BAAV,CAAN;AACD;AACF;AACF;;;;WAED,iBAAkB;AAChB,aAAO,IAAIN,QAAJ,CAAa,IAAb,CAAP;AACD;;;WAED,oBAAmB;AACjB,aAAO,KAAKC,IAAL,CAAUM,IAAV,CAAe,GAAf,CAAP;AACD;;;WAED,cAAKC,IAAL,EAAyB;AACvB,WAAKP,IAAL,CAAUG,IAAV,CAAeI,IAAf;AACD;;;WAED,eAAM;AACJ,aAAO,KAAKP,IAAL,CAAUQ,GAAV,EAAP;AACD;;;WAED,aAAID,IAAJ,EAAwB;AACtB,WAAKP,IAAL,CAAU,KAAKA,IAAL,CAAUS,MAAV,GAAmB,CAA7B,IAAkCF,IAAlC;AACD;;;WAED,gBAAOG,KAAP,EAAiC;AAC/B,UAAI,CAAC,IAAD,IAAS,CAACA,KAAV,IAAmB,KAAKV,IAAL,CAAUS,MAAV,KAAqBC,KAAK,CAACV,IAAN,CAAWS,MAAvD,EAA+D;AAC7D,eAAO,KAAP;AACD;;AAED,WAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKX,IAAL,CAAUS,MAA9B,EAAsC,EAAEE,CAAxC,EAA2C;AACzC,YAAI,KAAKX,IAAL,CAAUW,CAAV,MAAiBD,KAAK,CAACV,IAAN,CAAWW,CAAX,CAArB,EAAoC;AAClC,iBAAO,KAAP;AACD;AACF;;AAED,aAAO,IAAP;AACD;;;WAQD,wBAAeC,MAAf,EAAuBC,KAAvB,EAA8B;AAC5B,UAAMb,IAAI,oCAAO,KAAKA,IAAZ,CAAV;AACAA,MAAAA,IAAI,CAACc,KAAL;AACA,UAAMC,KAAK,GAAGf,IAAI,CAACQ,GAAL,EAAd;;AAH4B,iDAIJR,IAJI;AAAA;;AAAA;AAI5B,4DAA8B;AAAA,cAAnBgB,SAAmB;AAC5BJ,UAAAA,MAAM,GAAGA,MAAM,CAACI,SAAD,CAAf;AACD;AAN2B;AAAA;AAAA;AAAA;AAAA;;AAQ5BJ,MAAAA,MAAM,CAACG,KAAD,CAAN,GAAgBF,KAAhB;AACD;;;WAOD,wBAAeD,MAAf,EAAuB;AACrB,UAAMZ,IAAI,oCAAO,KAAKA,IAAZ,CAAV;AACAA,MAAAA,IAAI,CAACc,KAAL;AACA,UAAMC,KAAK,GAAGf,IAAI,CAACQ,GAAL,EAAd;;AAHqB,kDAIGR,IAJH;AAAA;;AAAA;AAIrB,+DAA8B;AAAA,cAAnBgB,SAAmB;AAC5BJ,UAAAA,MAAM,GAAGA,MAAM,CAACI,SAAD,CAAf;AACD;AANoB;AAAA;AAAA;AAAA;AAAA;;AAQrB,aAAOJ,MAAM,CAACG,KAAD,CAAb;AACD","sourcesContent":["/**\n * A parser for a minimal subset of the jsonpath standard\n * Full JSON path parsers for JS exist but are quite large (bundle size)\n *\n * Supports\n *\n * `$.component.component.component`\n */\nexport default class JSONPath {\n path: string[];\n\n constructor(path: JSONPath | string[] | string | null = null) {\n this.path = ['$'];\n\n if (path instanceof JSONPath) {\n // @ts-ignore\n this.path = [...path.path];\n return;\n }\n\n if (Array.isArray(path)) {\n this.path.push(...path);\n return;\n }\n\n // Parse a string as a JSONPath\n if (typeof path === 'string') {\n this.path = path.split('.');\n if (this.path[0] !== '$') {\n throw new Error('JSONPaths must start with $');\n }\n }\n }\n\n clone(): JSONPath {\n return new JSONPath(this);\n }\n\n toString(): string {\n return this.path.join('.');\n }\n\n push(name: string): void {\n this.path.push(name);\n }\n\n pop() {\n return this.path.pop();\n }\n\n set(name: string): void {\n this.path[this.path.length - 1] = name;\n }\n\n equals(other: JSONPath): boolean {\n if (!this || !other || this.path.length !== other.path.length) {\n return false;\n }\n\n for (let i = 0; i < this.path.length; ++i) {\n if (this.path[i] !== other.path[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Sets the value pointed at by path\n * TODO - handle root path\n * @param object\n * @param value\n */\n setFieldAtPath(object, value) {\n const path = [...this.path];\n path.shift();\n const field = path.pop();\n for (const component of path) {\n object = object[component];\n }\n // @ts-ignore\n object[field] = value;\n }\n\n /**\n * Gets the value pointed at by path\n * TODO - handle root path\n * @param object\n */\n getFieldAtPath(object) {\n const path = [...this.path];\n path.shift();\n const field = path.pop();\n for (const component of path) {\n object = object[component];\n }\n // @ts-ignore\n return object[field];\n }\n}\n"],"file":"jsonpath.js"}
1
+ {"version":3,"file":"jsonpath.js","names":["JSONPath","path","Array","isArray","push","split","Error","join","name","pop","length","other","i","object","value","shift","field","component"],"sources":["../../../../src/lib/jsonpath/jsonpath.ts"],"sourcesContent":["/**\n * A parser for a minimal subset of the jsonpath standard\n * Full JSON path parsers for JS exist but are quite large (bundle size)\n *\n * Supports\n *\n * `$.component.component.component`\n */\nexport default class JSONPath {\n path: string[];\n\n constructor(path: JSONPath | string[] | string | null = null) {\n this.path = ['$'];\n\n if (path instanceof JSONPath) {\n // @ts-ignore\n this.path = [...path.path];\n return;\n }\n\n if (Array.isArray(path)) {\n this.path.push(...path);\n return;\n }\n\n // Parse a string as a JSONPath\n if (typeof path === 'string') {\n this.path = path.split('.');\n if (this.path[0] !== '$') {\n throw new Error('JSONPaths must start with $');\n }\n }\n }\n\n clone(): JSONPath {\n return new JSONPath(this);\n }\n\n toString(): string {\n return this.path.join('.');\n }\n\n push(name: string): void {\n this.path.push(name);\n }\n\n pop() {\n return this.path.pop();\n }\n\n set(name: string): void {\n this.path[this.path.length - 1] = name;\n }\n\n equals(other: JSONPath): boolean {\n if (!this || !other || this.path.length !== other.path.length) {\n return false;\n }\n\n for (let i = 0; i < this.path.length; ++i) {\n if (this.path[i] !== other.path[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Sets the value pointed at by path\n * TODO - handle root path\n * @param object\n * @param value\n */\n setFieldAtPath(object, value) {\n const path = [...this.path];\n path.shift();\n const field = path.pop();\n for (const component of path) {\n object = object[component];\n }\n // @ts-ignore\n object[field] = value;\n }\n\n /**\n * Gets the value pointed at by path\n * TODO - handle root path\n * @param object\n */\n getFieldAtPath(object) {\n const path = [...this.path];\n path.shift();\n const field = path.pop();\n for (const component of path) {\n object = object[component];\n }\n // @ts-ignore\n return object[field];\n }\n}\n"],"mappings":"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"}
@@ -1,51 +1,33 @@
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 = parseJSONInBatches;
9
8
  exports.rebuildJsonObject = rebuildJsonObject;
10
-
11
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
-
13
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
-
15
11
  var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
16
-
17
12
  var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
18
-
19
- var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncIterator"));
20
-
21
13
  var _schema = require("@loaders.gl/schema");
22
-
23
14
  var _loaderUtils = require("@loaders.gl/loader-utils");
24
-
25
15
  var _streamingJsonParser = _interopRequireDefault(require("./parser/streaming-json-parser"));
26
-
27
16
  var _jsonpath2 = _interopRequireDefault(require("./jsonpath/jsonpath"));
28
-
29
17
  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; } } }; }
30
-
31
18
  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); }
32
-
33
19
  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; }
34
-
35
- 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; }
36
-
37
- 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; }
38
-
20
+ 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; }
21
+ 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; }
22
+ 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"); }
23
+ 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); }
39
24
  function parseJSONInBatches(_x, _x2) {
40
25
  return _parseJSONInBatches.apply(this, arguments);
41
26
  }
42
-
43
27
  function _parseJSONInBatches() {
44
28
  _parseJSONInBatches = (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee(binaryAsyncIterator, options) {
45
29
  var _options$json;
46
-
47
- var asyncIterator, metadata, _ref, jsonpaths, isFirstChunk, schema, shape, tableBatchBuilder, parser, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, chunk, rows, _jsonpath, initialBatch, _iterator2, _step2, row, _batch2, _batch, jsonpath, batch, finalBatch;
48
-
30
+ var asyncIterator, metadata, _ref, jsonpaths, isFirstChunk, schema, shape, tableBatchBuilder, parser, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, rows, _jsonpath, initialBatch, _iterator2, _step2, row, _batch2, _batch, jsonpath, batch, finalBatch;
49
31
  return _regenerator.default.wrap(function _callee$(_context) {
50
32
  while (1) {
51
33
  switch (_context.prev = _context.next) {
@@ -62,43 +44,29 @@ function _parseJSONInBatches() {
62
44
  parser = new _streamingJsonParser.default({
63
45
  jsonpaths: jsonpaths
64
46
  });
65
- _iteratorNormalCompletion = true;
47
+ _iteratorAbruptCompletion = false;
66
48
  _didIteratorError = false;
67
49
  _context.prev = 10;
68
- _iterator = (0, _asyncIterator2.default)(asyncIterator);
69
-
50
+ _iterator = _asyncIterator(asyncIterator);
70
51
  case 12:
71
52
  _context.next = 14;
72
53
  return (0, _awaitAsyncGenerator2.default)(_iterator.next());
73
-
74
54
  case 14:
75
- _step = _context.sent;
76
- _iteratorNormalCompletion = _step.done;
77
- _context.next = 18;
78
- return (0, _awaitAsyncGenerator2.default)(_step.value);
79
-
80
- case 18:
81
- _value = _context.sent;
82
-
83
- if (_iteratorNormalCompletion) {
84
- _context.next = 57;
55
+ if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) {
56
+ _context.next = 52;
85
57
  break;
86
58
  }
87
-
88
- chunk = _value;
59
+ chunk = _step.value;
89
60
  rows = parser.write(chunk);
90
61
  _jsonpath = rows.length > 0 && parser.getStreamingJsonPathAsString();
91
-
92
62
  if (!(rows.length > 0 && isFirstChunk)) {
93
- _context.next = 29;
63
+ _context.next = 24;
94
64
  break;
95
65
  }
96
-
97
66
  if (!metadata) {
98
- _context.next = 28;
67
+ _context.next = 23;
99
68
  break;
100
69
  }
101
-
102
70
  initialBatch = {
103
71
  shape: shape,
104
72
  batchType: 'partial-result',
@@ -108,136 +76,103 @@ function _parseJSONInBatches() {
108
76
  container: parser.getPartialResult(),
109
77
  jsonpath: _jsonpath
110
78
  };
111
- _context.next = 28;
79
+ _context.next = 23;
112
80
  return initialBatch;
113
-
114
- case 28:
81
+ case 23:
115
82
  isFirstChunk = false;
116
-
117
- case 29:
83
+ case 24:
118
84
  _iterator2 = _createForOfIteratorHelper(rows);
119
- _context.prev = 30;
120
-
85
+ _context.prev = 25;
121
86
  _iterator2.s();
122
-
123
- case 32:
87
+ case 27:
124
88
  if ((_step2 = _iterator2.n()).done) {
125
- _context.next = 41;
89
+ _context.next = 36;
126
90
  break;
127
91
  }
128
-
129
92
  row = _step2.value;
130
93
  tableBatchBuilder.addRow(row);
131
94
  _batch2 = tableBatchBuilder.getFullBatch({
132
95
  jsonpath: _jsonpath
133
96
  });
134
-
135
97
  if (!_batch2) {
136
- _context.next = 39;
98
+ _context.next = 34;
137
99
  break;
138
100
  }
139
-
140
- _context.next = 39;
101
+ _context.next = 34;
141
102
  return _batch2;
142
-
143
- case 39:
144
- _context.next = 32;
103
+ case 34:
104
+ _context.next = 27;
145
105
  break;
146
-
147
- case 41:
148
- _context.next = 46;
106
+ case 36:
107
+ _context.next = 41;
149
108
  break;
150
-
151
- case 43:
152
- _context.prev = 43;
153
- _context.t0 = _context["catch"](30);
154
-
109
+ case 38:
110
+ _context.prev = 38;
111
+ _context.t0 = _context["catch"](25);
155
112
  _iterator2.e(_context.t0);
156
-
157
- case 46:
158
- _context.prev = 46;
159
-
113
+ case 41:
114
+ _context.prev = 41;
160
115
  _iterator2.f();
161
-
162
- return _context.finish(46);
163
-
164
- case 49:
116
+ return _context.finish(41);
117
+ case 44:
165
118
  tableBatchBuilder.chunkComplete(chunk);
166
119
  _batch = tableBatchBuilder.getFullBatch({
167
120
  jsonpath: _jsonpath
168
121
  });
169
-
170
122
  if (!_batch) {
171
- _context.next = 54;
123
+ _context.next = 49;
172
124
  break;
173
125
  }
174
-
175
- _context.next = 54;
126
+ _context.next = 49;
176
127
  return _batch;
177
-
178
- case 54:
179
- _iteratorNormalCompletion = true;
128
+ case 49:
129
+ _iteratorAbruptCompletion = false;
180
130
  _context.next = 12;
181
131
  break;
182
-
183
- case 57:
184
- _context.next = 63;
132
+ case 52:
133
+ _context.next = 58;
185
134
  break;
186
-
187
- case 59:
188
- _context.prev = 59;
135
+ case 54:
136
+ _context.prev = 54;
189
137
  _context.t1 = _context["catch"](10);
190
138
  _didIteratorError = true;
191
139
  _iteratorError = _context.t1;
192
-
193
- case 63:
194
- _context.prev = 63;
195
- _context.prev = 64;
196
-
197
- if (!(!_iteratorNormalCompletion && _iterator.return != null)) {
198
- _context.next = 68;
140
+ case 58:
141
+ _context.prev = 58;
142
+ _context.prev = 59;
143
+ if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
144
+ _context.next = 63;
199
145
  break;
200
146
  }
201
-
202
- _context.next = 68;
147
+ _context.next = 63;
203
148
  return (0, _awaitAsyncGenerator2.default)(_iterator.return());
204
-
205
- case 68:
206
- _context.prev = 68;
207
-
149
+ case 63:
150
+ _context.prev = 63;
208
151
  if (!_didIteratorError) {
209
- _context.next = 71;
152
+ _context.next = 66;
210
153
  break;
211
154
  }
212
-
213
155
  throw _iteratorError;
214
-
215
- case 71:
216
- return _context.finish(68);
217
-
218
- case 72:
156
+ case 66:
219
157
  return _context.finish(63);
220
-
221
- case 73:
158
+ case 67:
159
+ return _context.finish(58);
160
+ case 68:
222
161
  jsonpath = parser.getStreamingJsonPathAsString();
223
162
  batch = tableBatchBuilder.getFinalBatch({
224
163
  jsonpath: jsonpath
225
164
  });
226
-
227
165
  if (!batch) {
228
- _context.next = 78;
166
+ _context.next = 73;
229
167
  break;
230
168
  }
231
-
232
- _context.next = 78;
169
+ _context.next = 73;
233
170
  return batch;
234
-
235
- case 78:
171
+ case 73:
236
172
  if (!metadata) {
237
- _context.next = 82;
173
+ _context.next = 77;
238
174
  break;
239
175
  }
240
-
241
176
  finalBatch = {
242
177
  shape: shape,
243
178
  batchType: 'final-result',
@@ -246,19 +181,17 @@ function _parseJSONInBatches() {
246
181
  data: [],
247
182
  length: 0
248
183
  };
249
- _context.next = 82;
184
+ _context.next = 77;
250
185
  return finalBatch;
251
-
252
- case 82:
186
+ case 77:
253
187
  case "end":
254
188
  return _context.stop();
255
189
  }
256
190
  }
257
- }, _callee, null, [[10, 59, 63, 73], [30, 43, 46, 49], [64,, 68, 72]]);
191
+ }, _callee, null, [[10, 54, 58, 68], [25, 38, 41, 44], [59,, 63, 67]]);
258
192
  }));
259
193
  return _parseJSONInBatches.apply(this, arguments);
260
194
  }
261
-
262
195
  function rebuildJsonObject(batch, data) {
263
196
  (0, _loaderUtils.assert)(batch.batchType === 'final-result');
264
197
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/parse-json-in-batches.ts"],"names":["parseJSONInBatches","binaryAsyncIterator","options","asyncIterator","metadata","json","jsonpaths","isFirstChunk","schema","shape","tableBatchBuilder","TableBatchBuilder","parser","StreamingJSONParser","chunk","rows","write","jsonpath","length","getStreamingJsonPathAsString","initialBatch","batchType","data","bytesUsed","container","getPartialResult","row","addRow","batch","getFullBatch","chunkComplete","getFinalBatch","finalBatch","rebuildJsonObject","topLevelObject","streamingPath","JSONPath","setFieldAtPath"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;;;;;;;;;;;SAI+BA,kB;;;;;oFAAhB,iBACbC,mBADa,EAEbC,OAFa;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAIPC,YAAAA,aAJO,GAIS,0CAAwBF,mBAAxB,CAJT;AAMNG,YAAAA,QANM,GAMMF,OANN,CAMNE,QANM;AAAA,mBAOOF,OAAO,CAACG,IAAR,IAAgB,EAPvB,EAONC,SAPM,QAONA,SAPM;AASTC,YAAAA,YATS,GASe,IATf;AAYPC,YAAAA,MAZO,GAYE,IAZF;AAaPC,YAAAA,KAbO,GAaC,CAAAP,OAAO,SAAP,IAAAA,OAAO,WAAP,6BAAAA,OAAO,CAAEG,IAAT,gEAAeI,KAAf,KAAwB,WAbzB;AAePC,YAAAA,iBAfO,GAea,IAAIC,yBAAJ,CAAsBH,MAAtB,kCACrBN,OADqB;AAExBO,cAAAA,KAAK,EAALA;AAFwB,eAfb;AAoBPG,YAAAA,MApBO,GAoBE,IAAIC,4BAAJ,CAAwB;AAACP,cAAAA,SAAS,EAATA;AAAD,aAAxB,CApBF;AAAA;AAAA;AAAA;AAAA,qDAsBaH,aAtBb;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAsBIW,YAAAA,KAtBJ;AAuBLC,YAAAA,IAvBK,GAuBEH,MAAM,CAACI,KAAP,CAAaF,KAAb,CAvBF;AAyBLG,YAAAA,SAzBK,GAyBMF,IAAI,CAACG,MAAL,GAAc,CAAd,IAAmBN,MAAM,CAACO,4BAAP,EAzBzB;;AAAA,kBA2BPJ,IAAI,CAACG,MAAL,GAAc,CAAd,IAAmBX,YA3BZ;AAAA;AAAA;AAAA;;AAAA,iBA4BLH,QA5BK;AAAA;AAAA;AAAA;;AA6BDgB,YAAAA,YA7BC,GA6BqB;AAE1BX,cAAAA,KAAK,EAALA,KAF0B;AAG1BY,cAAAA,SAAS,EAAE,gBAHe;AAI1BC,cAAAA,IAAI,EAAE,EAJoB;AAK1BJ,cAAAA,MAAM,EAAE,CALkB;AAM1BK,cAAAA,SAAS,EAAE,CANe;AAQ1BC,cAAAA,SAAS,EAAEZ,MAAM,CAACa,gBAAP,EARe;AAS1BR,cAAAA,QAAQ,EAARA;AAT0B,aA7BrB;AAAA;AAwCP,mBAAMG,YAAN;;AAxCO;AA0CTb,YAAAA,YAAY,GAAG,KAAf;;AA1CS;AAAA,oDA+COQ,IA/CP;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AA+CAW,YAAAA,GA/CA;AAgDThB,YAAAA,iBAAiB,CAACiB,MAAlB,CAAyBD,GAAzB;AAEME,YAAAA,OAlDG,GAkDKlB,iBAAiB,CAACmB,YAAlB,CAA+B;AAACZ,cAAAA,QAAQ,EAARA;AAAD,aAA/B,CAlDL;;AAAA,iBAmDLW,OAnDK;AAAA;AAAA;AAAA;;AAAA;AAoDP,mBAAMA,OAAN;;AApDO;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAwDXlB,YAAAA,iBAAiB,CAACoB,aAAlB,CAAgChB,KAAhC;AACMc,YAAAA,MAzDK,GAyDGlB,iBAAiB,CAACmB,YAAlB,CAA+B;AAACZ,cAAAA,QAAQ,EAARA;AAAD,aAA/B,CAzDH;;AAAA,iBA0DPW,MA1DO;AAAA;AAAA;AAAA;;AAAA;AA2DT,mBAAMA,MAAN;;AA3DS;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAgEPX,YAAAA,QAhEO,GAgEIL,MAAM,CAACO,4BAAP,EAhEJ;AAiEPS,YAAAA,KAjEO,GAiEClB,iBAAiB,CAACqB,aAAlB,CAAgC;AAACd,cAAAA,QAAQ,EAARA;AAAD,aAAhC,CAjED;;AAAA,iBAkETW,KAlES;AAAA;AAAA;AAAA;;AAAA;AAmEX,mBAAMA,KAAN;;AAnEW;AAAA,iBAsETxB,QAtES;AAAA;AAAA;AAAA;;AAuEL4B,YAAAA,UAvEK,GAuEe;AACxBvB,cAAAA,KAAK,EAALA,KADwB;AAExBY,cAAAA,SAAS,EAAE,cAFa;AAGxBG,cAAAA,SAAS,EAAEZ,MAAM,CAACa,gBAAP,EAHa;AAIxBR,cAAAA,QAAQ,EAAEL,MAAM,CAACO,4BAAP,EAJc;AAKxBG,cAAAA,IAAI,EAAE,EALkB;AAMxBJ,cAAAA,MAAM,EAAE;AANgB,aAvEf;AAAA;AAgFX,mBAAMc,UAAN;;AAhFW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAoFR,SAASC,iBAAT,CAA2BL,KAA3B,EAAkCN,IAAlC,EAAwC;AAE7C,2BAAOM,KAAK,CAACP,SAAN,KAAoB,cAA3B;;AAGA,MAAIO,KAAK,CAACX,QAAN,KAAmB,GAAvB,EAA4B;AAC1B,WAAOK,IAAP;AACD;;AAGD,MAAIM,KAAK,CAACX,QAAN,IAAkBW,KAAK,CAACX,QAAN,CAAeC,MAAf,GAAwB,CAA9C,EAAiD;AAC/C,QAAMgB,cAAc,GAAGN,KAAK,CAACJ,SAA7B;AACA,QAAMW,aAAa,GAAG,IAAIC,kBAAJ,CAAaR,KAAK,CAACX,QAAnB,CAAtB;AACAkB,IAAAA,aAAa,CAACE,cAAd,CAA6BH,cAA7B,EAA6CZ,IAA7C;AACA,WAAOY,cAAP;AACD;;AAGD,SAAON,KAAK,CAACJ,SAAb;AACD","sourcesContent":["import type {Batch} from '@loaders.gl/schema';\nimport type {JSONLoaderOptions} from '../json-loader';\nimport {TableBatchBuilder} from '@loaders.gl/schema';\nimport {assert, makeTextDecoderIterator} from '@loaders.gl/loader-utils';\nimport StreamingJSONParser from './parser/streaming-json-parser';\nimport JSONPath from './jsonpath/jsonpath';\n\n// TODO - support batch size 0 = no batching/single batch?\n// eslint-disable-next-line max-statements, complexity\nexport default async function* parseJSONInBatches(\n binaryAsyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: JSONLoaderOptions\n): AsyncIterable<Batch> {\n const asyncIterator = makeTextDecoderIterator(binaryAsyncIterator);\n\n const {metadata} = options;\n const {jsonpaths} = options.json || {};\n\n let isFirstChunk: boolean = true;\n\n // TODO fix Schema deduction\n const schema = null; // new Schema([]);\n const shape = options?.json?.shape || 'row-table';\n // @ts-ignore\n const tableBatchBuilder = new TableBatchBuilder(schema, {\n ...options,\n shape\n });\n\n const parser = new StreamingJSONParser({jsonpaths});\n\n for await (const chunk of asyncIterator) {\n const rows = parser.write(chunk);\n\n const jsonpath = rows.length > 0 && parser.getStreamingJsonPathAsString();\n\n if (rows.length > 0 && isFirstChunk) {\n if (metadata) {\n const initialBatch: Batch = {\n // Common fields\n shape,\n batchType: 'partial-result',\n data: [],\n length: 0,\n bytesUsed: 0,\n // JSON additions\n container: parser.getPartialResult(),\n jsonpath\n };\n yield initialBatch;\n }\n isFirstChunk = false;\n // schema = deduceSchema(rows);\n }\n\n // Add the row\n for (const row of rows) {\n tableBatchBuilder.addRow(row);\n // If a batch has been completed, emit it\n const batch = tableBatchBuilder.getFullBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n }\n\n tableBatchBuilder.chunkComplete(chunk);\n const batch = tableBatchBuilder.getFullBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n }\n\n // yield final batch\n const jsonpath = parser.getStreamingJsonPathAsString();\n const batch = tableBatchBuilder.getFinalBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n\n if (metadata) {\n const finalBatch: Batch = {\n shape,\n batchType: 'final-result',\n container: parser.getPartialResult(),\n jsonpath: parser.getStreamingJsonPathAsString(),\n data: [],\n length: 0\n // schema: null\n };\n yield finalBatch;\n }\n}\n\nexport function rebuildJsonObject(batch, data) {\n // Last batch will have this special type and will provide all the root object of the parsed file\n assert(batch.batchType === 'final-result');\n\n // The streamed JSON data is a top level array (jsonpath = '$'), just return the array of row objects\n if (batch.jsonpath === '$') {\n return data;\n }\n\n // (jsonpath !== '$') The streamed data is not a top level array, so stitch it back in to the top-level object\n if (batch.jsonpath && batch.jsonpath.length > 1) {\n const topLevelObject = batch.container;\n const streamingPath = new JSONPath(batch.jsonpath);\n streamingPath.setFieldAtPath(topLevelObject, data);\n return topLevelObject;\n }\n\n // No jsonpath, in this case nothing was streamed.\n return batch.container;\n}\n"],"file":"parse-json-in-batches.js"}
1
+ {"version":3,"file":"parse-json-in-batches.js","names":["parseJSONInBatches","binaryAsyncIterator","options","asyncIterator","makeTextDecoderIterator","metadata","json","jsonpaths","isFirstChunk","schema","shape","tableBatchBuilder","TableBatchBuilder","parser","StreamingJSONParser","chunk","rows","write","jsonpath","length","getStreamingJsonPathAsString","initialBatch","batchType","data","bytesUsed","container","getPartialResult","row","addRow","batch","getFullBatch","chunkComplete","getFinalBatch","finalBatch","rebuildJsonObject","assert","topLevelObject","streamingPath","JSONPath","setFieldAtPath"],"sources":["../../../src/lib/parse-json-in-batches.ts"],"sourcesContent":["import type {Batch} from '@loaders.gl/schema';\nimport type {JSONLoaderOptions} from '../json-loader';\nimport {TableBatchBuilder} from '@loaders.gl/schema';\nimport {assert, makeTextDecoderIterator} from '@loaders.gl/loader-utils';\nimport StreamingJSONParser from './parser/streaming-json-parser';\nimport JSONPath from './jsonpath/jsonpath';\n\n// TODO - support batch size 0 = no batching/single batch?\n// eslint-disable-next-line max-statements, complexity\nexport default async function* parseJSONInBatches(\n binaryAsyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: JSONLoaderOptions\n): AsyncIterable<Batch> {\n const asyncIterator = makeTextDecoderIterator(binaryAsyncIterator);\n\n const {metadata} = options;\n const {jsonpaths} = options.json || {};\n\n let isFirstChunk: boolean = true;\n\n // TODO fix Schema deduction\n const schema = null; // new Schema([]);\n const shape = options?.json?.shape || 'row-table';\n // @ts-ignore\n const tableBatchBuilder = new TableBatchBuilder(schema, {\n ...options,\n shape\n });\n\n const parser = new StreamingJSONParser({jsonpaths});\n\n for await (const chunk of asyncIterator) {\n const rows = parser.write(chunk);\n\n const jsonpath = rows.length > 0 && parser.getStreamingJsonPathAsString();\n\n if (rows.length > 0 && isFirstChunk) {\n if (metadata) {\n const initialBatch: Batch = {\n // Common fields\n shape,\n batchType: 'partial-result',\n data: [],\n length: 0,\n bytesUsed: 0,\n // JSON additions\n container: parser.getPartialResult(),\n jsonpath\n };\n yield initialBatch;\n }\n isFirstChunk = false;\n // schema = deduceSchema(rows);\n }\n\n // Add the row\n for (const row of rows) {\n tableBatchBuilder.addRow(row);\n // If a batch has been completed, emit it\n const batch = tableBatchBuilder.getFullBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n }\n\n tableBatchBuilder.chunkComplete(chunk);\n const batch = tableBatchBuilder.getFullBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n }\n\n // yield final batch\n const jsonpath = parser.getStreamingJsonPathAsString();\n const batch = tableBatchBuilder.getFinalBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n\n if (metadata) {\n const finalBatch: Batch = {\n shape,\n batchType: 'final-result',\n container: parser.getPartialResult(),\n jsonpath: parser.getStreamingJsonPathAsString(),\n data: [],\n length: 0\n // schema: null\n };\n yield finalBatch;\n }\n}\n\nexport function rebuildJsonObject(batch, data) {\n // Last batch will have this special type and will provide all the root object of the parsed file\n assert(batch.batchType === 'final-result');\n\n // The streamed JSON data is a top level array (jsonpath = '$'), just return the array of row objects\n if (batch.jsonpath === '$') {\n return data;\n }\n\n // (jsonpath !== '$') The streamed data is not a top level array, so stitch it back in to the top-level object\n if (batch.jsonpath && batch.jsonpath.length > 1) {\n const topLevelObject = batch.container;\n const streamingPath = new JSONPath(batch.jsonpath);\n streamingPath.setFieldAtPath(topLevelObject, data);\n return topLevelObject;\n }\n\n // No jsonpath, in this case nothing was streamed.\n return batch.container;\n}\n"],"mappings":"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"}
@@ -1,46 +1,36 @@
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 = parseJSONSync;
9
-
10
8
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
-
12
9
  function parseJSONSync(jsonText, options) {
13
10
  try {
14
11
  var _options$json;
15
-
16
12
  var json = JSON.parse(jsonText);
17
-
18
13
  if ((_options$json = options.json) !== null && _options$json !== void 0 && _options$json.table) {
19
14
  return getFirstArray(json) || json;
20
15
  }
21
-
22
16
  return json;
23
17
  } catch (error) {
24
18
  throw new Error('JSONLoader: failed to parse JSON');
25
19
  }
26
20
  }
27
-
28
21
  function getFirstArray(json) {
29
22
  if (Array.isArray(json)) {
30
23
  return json;
31
24
  }
32
-
33
25
  if (json && (0, _typeof2.default)(json) === 'object') {
34
26
  for (var _i = 0, _Object$values = Object.values(json); _i < _Object$values.length; _i++) {
35
27
  var value = _Object$values[_i];
36
28
  var array = getFirstArray(value);
37
-
38
29
  if (array) {
39
30
  return array;
40
31
  }
41
32
  }
42
33
  }
43
-
44
34
  return null;
45
35
  }
46
36
  //# sourceMappingURL=parse-json.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/parse-json.ts"],"names":["parseJSONSync","jsonText","options","json","JSON","parse","table","getFirstArray","error","Error","Array","isArray","Object","values","value","array"],"mappings":";;;;;;;;;;;AAEe,SAASA,aAAT,CAAuBC,QAAvB,EAAyCC,OAAzC,EAAqE;AAClF,MAAI;AAAA;;AACF,QAAMC,IAAI,GAAGC,IAAI,CAACC,KAAL,CAAWJ,QAAX,CAAb;;AACA,yBAAIC,OAAO,CAACC,IAAZ,0CAAI,cAAcG,KAAlB,EAAyB;AACvB,aAAOC,aAAa,CAACJ,IAAD,CAAb,IAAuBA,IAA9B;AACD;;AACD,WAAOA,IAAP;AACD,GAND,CAME,OAAOK,KAAP,EAAc;AACd,UAAM,IAAIC,KAAJ,CAAU,kCAAV,CAAN;AACD;AACF;;AAED,SAASF,aAAT,CAAuBJ,IAAvB,EAA6B;AAC3B,MAAIO,KAAK,CAACC,OAAN,CAAcR,IAAd,CAAJ,EAAyB;AACvB,WAAOA,IAAP;AACD;;AACD,MAAIA,IAAI,IAAI,sBAAOA,IAAP,MAAgB,QAA5B,EAAsC;AACpC,sCAAoBS,MAAM,CAACC,MAAP,CAAcV,IAAd,CAApB,oCAAyC;AAApC,UAAMW,KAAK,qBAAX;AACH,UAAMC,KAAK,GAAGR,aAAa,CAACO,KAAD,CAA3B;;AACA,UAAIC,KAAJ,EAAW;AACT,eAAOA,KAAP;AACD;AACF;AACF;;AACD,SAAO,IAAP;AACD","sourcesContent":["import type {JSONLoaderOptions} from '../json-loader';\n\nexport default function parseJSONSync(jsonText: string, options: JSONLoaderOptions) {\n try {\n const json = JSON.parse(jsonText);\n if (options.json?.table) {\n return getFirstArray(json) || json;\n }\n return json;\n } catch (error) {\n throw new Error('JSONLoader: failed to parse JSON');\n }\n}\n\nfunction getFirstArray(json) {\n if (Array.isArray(json)) {\n return json;\n }\n if (json && typeof json === 'object') {\n for (const value of Object.values(json)) {\n const array = getFirstArray(value);\n if (array) {\n return array;\n }\n }\n }\n return null;\n}\n"],"file":"parse-json.js"}
1
+ {"version":3,"file":"parse-json.js","names":["parseJSONSync","jsonText","options","json","JSON","parse","table","getFirstArray","error","Error","Array","isArray","Object","values","value","array"],"sources":["../../../src/lib/parse-json.ts"],"sourcesContent":["import type {JSONLoaderOptions} from '../json-loader';\n\nexport default function parseJSONSync(jsonText: string, options: JSONLoaderOptions) {\n try {\n const json = JSON.parse(jsonText);\n if (options.json?.table) {\n return getFirstArray(json) || json;\n }\n return json;\n } catch (error) {\n throw new Error('JSONLoader: failed to parse JSON');\n }\n}\n\nfunction getFirstArray(json) {\n if (Array.isArray(json)) {\n return json;\n }\n if (json && typeof json === 'object') {\n for (const value of Object.values(json)) {\n const array = getFirstArray(value);\n if (array) {\n return array;\n }\n }\n }\n return null;\n}\n"],"mappings":";;;;;;;;AAEe,SAASA,aAAa,CAACC,QAAgB,EAAEC,OAA0B,EAAE;EAClF,IAAI;IAAA;IACF,IAAMC,IAAI,GAAGC,IAAI,CAACC,KAAK,CAACJ,QAAQ,CAAC;IACjC,qBAAIC,OAAO,CAACC,IAAI,0CAAZ,cAAcG,KAAK,EAAE;MACvB,OAAOC,aAAa,CAACJ,IAAI,CAAC,IAAIA,IAAI;IACpC;IACA,OAAOA,IAAI;EACb,CAAC,CAAC,OAAOK,KAAK,EAAE;IACd,MAAM,IAAIC,KAAK,CAAC,kCAAkC,CAAC;EACrD;AACF;AAEA,SAASF,aAAa,CAACJ,IAAI,EAAE;EAC3B,IAAIO,KAAK,CAACC,OAAO,CAACR,IAAI,CAAC,EAAE;IACvB,OAAOA,IAAI;EACb;EACA,IAAIA,IAAI,IAAI,sBAAOA,IAAI,MAAK,QAAQ,EAAE;IACpC,kCAAoBS,MAAM,CAACC,MAAM,CAACV,IAAI,CAAC,oCAAE;MAApC,IAAMW,KAAK;MACd,IAAMC,KAAK,GAAGR,aAAa,CAACO,KAAK,CAAC;MAClC,IAAIC,KAAK,EAAE;QACT,OAAOA,KAAK;MACd;IACF;EACF;EACA,OAAO,IAAI;AACb"}