@loaders.gl/core 3.4.14 → 3.4.15

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 (93) hide show
  1. package/dist/dist.min.js +106 -104
  2. package/dist/es5/bundle.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/index.js +55 -55
  5. package/dist/es5/iterators/batch-iterators/timed-batch-iterator.js +14 -86
  6. package/dist/es5/iterators/batch-iterators/timed-batch-iterator.js.map +1 -1
  7. package/dist/es5/iterators/make-iterator/make-array-buffer-iterator.js +17 -33
  8. package/dist/es5/iterators/make-iterator/make-array-buffer-iterator.js.map +1 -1
  9. package/dist/es5/iterators/make-iterator/make-blob-iterator.js +10 -39
  10. package/dist/es5/iterators/make-iterator/make-blob-iterator.js.map +1 -1
  11. package/dist/es5/iterators/make-iterator/make-iterator.js +1 -1
  12. package/dist/es5/iterators/make-iterator/make-iterator.js.map +1 -1
  13. package/dist/es5/iterators/make-iterator/make-stream-iterator.js +24 -119
  14. package/dist/es5/iterators/make-iterator/make-stream-iterator.js.map +1 -1
  15. package/dist/es5/iterators/make-iterator/make-string-iterator.js +11 -30
  16. package/dist/es5/iterators/make-iterator/make-string-iterator.js.map +1 -1
  17. package/dist/es5/iterators/make-stream/make-dom-stream.js +22 -54
  18. package/dist/es5/iterators/make-stream/make-dom-stream.js.map +1 -1
  19. package/dist/es5/iterators/make-stream/make-node-stream.js +50 -152
  20. package/dist/es5/iterators/make-stream/make-node-stream.js.map +1 -1
  21. package/dist/es5/javascript-utils/is-type.js +18 -56
  22. package/dist/es5/javascript-utils/is-type.js.map +1 -1
  23. package/dist/es5/lib/api/encode.js +54 -203
  24. package/dist/es5/lib/api/encode.js.map +1 -1
  25. package/dist/es5/lib/api/load-in-batches.js +9 -41
  26. package/dist/es5/lib/api/load-in-batches.js.map +1 -1
  27. package/dist/es5/lib/api/load.js +15 -48
  28. package/dist/es5/lib/api/load.js.map +1 -1
  29. package/dist/es5/lib/api/loader-options.js +2 -2
  30. package/dist/es5/lib/api/parse-in-batches.js +71 -259
  31. package/dist/es5/lib/api/parse-in-batches.js.map +1 -1
  32. package/dist/es5/lib/api/parse-sync.js +9 -11
  33. package/dist/es5/lib/api/parse-sync.js.map +1 -1
  34. package/dist/es5/lib/api/parse.js +62 -125
  35. package/dist/es5/lib/api/parse.js.map +1 -1
  36. package/dist/es5/lib/api/register-loaders.js +8 -25
  37. package/dist/es5/lib/api/register-loaders.js.map +1 -1
  38. package/dist/es5/lib/api/save.js +4 -28
  39. package/dist/es5/lib/api/save.js.map +1 -1
  40. package/dist/es5/lib/api/select-loader.js +76 -170
  41. package/dist/es5/lib/api/select-loader.js.map +1 -1
  42. package/dist/es5/lib/fetch/fetch-error-message.js +13 -44
  43. package/dist/es5/lib/fetch/fetch-error-message.js.map +1 -1
  44. package/dist/es5/lib/fetch/fetch-file.js +10 -37
  45. package/dist/es5/lib/fetch/fetch-file.js.map +1 -1
  46. package/dist/es5/lib/fetch/read-array-buffer.js +19 -65
  47. package/dist/es5/lib/fetch/read-array-buffer.js.map +1 -1
  48. package/dist/es5/lib/fetch/read-file.js +2 -2
  49. package/dist/es5/lib/fetch/read-file.js.map +1 -1
  50. package/dist/es5/lib/fetch/write-file.js +8 -29
  51. package/dist/es5/lib/fetch/write-file.js.map +1 -1
  52. package/dist/es5/lib/filesystems/browser-filesystem.js +78 -227
  53. package/dist/es5/lib/filesystems/browser-filesystem.js.map +1 -1
  54. package/dist/es5/lib/filesystems/read-array-buffer.js +6 -33
  55. package/dist/es5/lib/filesystems/read-array-buffer.js.map +1 -1
  56. package/dist/es5/lib/init.js +1 -1
  57. package/dist/es5/lib/init.js.map +1 -1
  58. package/dist/es5/lib/loader-utils/check-errors.js +11 -39
  59. package/dist/es5/lib/loader-utils/check-errors.js.map +1 -1
  60. package/dist/es5/lib/loader-utils/get-data.js +62 -187
  61. package/dist/es5/lib/loader-utils/get-data.js.map +1 -1
  62. package/dist/es5/lib/loader-utils/get-fetch-function.js +3 -5
  63. package/dist/es5/lib/loader-utils/get-fetch-function.js.map +1 -1
  64. package/dist/es5/lib/loader-utils/loader-context.js +8 -12
  65. package/dist/es5/lib/loader-utils/loader-context.js.map +1 -1
  66. package/dist/es5/lib/loader-utils/loggers.js +37 -67
  67. package/dist/es5/lib/loader-utils/loggers.js.map +1 -1
  68. package/dist/es5/lib/loader-utils/normalize-loader.js +9 -9
  69. package/dist/es5/lib/loader-utils/normalize-loader.js.map +1 -1
  70. package/dist/es5/lib/loader-utils/option-defaults.js +2 -2
  71. package/dist/es5/lib/loader-utils/option-defaults.js.map +1 -1
  72. package/dist/es5/lib/loader-utils/option-utils.js +43 -59
  73. package/dist/es5/lib/loader-utils/option-utils.js.map +1 -1
  74. package/dist/es5/lib/progress/fetch-progress.js +49 -125
  75. package/dist/es5/lib/progress/fetch-progress.js.map +1 -1
  76. package/dist/es5/lib/utils/log.js +1 -1
  77. package/dist/es5/lib/utils/log.js.map +1 -1
  78. package/dist/es5/lib/utils/mime-type-utils.js +4 -4
  79. package/dist/es5/lib/utils/mime-type-utils.js.map +1 -1
  80. package/dist/es5/lib/utils/resource-utils.js +8 -8
  81. package/dist/es5/lib/utils/resource-utils.js.map +1 -1
  82. package/dist/es5/lib/utils/response-utils.js +71 -171
  83. package/dist/es5/lib/utils/response-utils.js.map +1 -1
  84. package/dist/es5/lib/utils/url-utils.js +2 -2
  85. package/dist/es5/lib/utils/url-utils.js.map +1 -1
  86. package/dist/es5/null-loader.js +14 -100
  87. package/dist/es5/null-loader.js.map +1 -1
  88. package/dist/esm/lib/init.js +1 -1
  89. package/dist/esm/null-loader.js +1 -1
  90. package/dist/null-worker.js +1 -1
  91. package/package.json +5 -5
  92. package/src/.DS_Store +0 -0
  93. package/src/lib/.DS_Store +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"load-in-batches.js","names":["_normalizeLoader","require","_getFetchFunction","_parseInBatches","loadInBatches","files","loaders","options","context","Array","isArray","isLoaderObject","undefined","fetch","getFetchFunction","loadOneFileInBatches","promises","map","file","_x","_x2","_x3","_x4","_loadOneFileInBatches","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","url","response","wrap","_callee$","_context","prev","next","sent","parseInBatches","abrupt","stop"],"sources":["../../../../src/lib/api/load-in-batches.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {getFetchFunction} from '../loader-utils/get-fetch-function';\n\nimport {parseInBatches} from './parse-in-batches';\n\ntype FileType = string | File | Blob | Response | (string | File | Blob | Response)[] | FileList;\n\n/**\n * Parses `data` using a specified loader\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\nexport function loadInBatches(\n files: FileType,\n loaders?: LoaderWithParser | LoaderWithParser[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<AsyncIterable<any>>;\n\nexport function loadInBatches(\n files: FileType[] | FileList,\n loaders?: LoaderWithParser | LoaderWithParser[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<AsyncIterable<any>>;\n\nexport function loadInBatches(files, loaders, options, context) {\n // Signature: load(url, options)\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders;\n loaders = null;\n }\n\n // Select fetch function\n const fetch = getFetchFunction(options || {});\n\n // Single url/file\n if (!Array.isArray(files)) {\n return loadOneFileInBatches(files, loaders, options, fetch);\n }\n\n // Multiple URLs / files\n const promises = files.map((file) => loadOneFileInBatches(file, loaders, options, fetch));\n\n // No point in waiting here for all responses before starting to stream individual streams?\n return promises;\n}\n\nasync function loadOneFileInBatches(file, loaders, options, fetch) {\n if (typeof file === 'string') {\n const url = file;\n const response = await fetch(url);\n return await parseInBatches(response, loaders, options);\n }\n return await parseInBatches(file, loaders, options);\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAF,OAAA;AAyBO,SAASG,aAAaA,CAACC,KAAK,EAAEC,OAAO,EAAEC,OAAO,EAAEC,OAAO,EAAE;EAE9D,IAAI,CAACC,KAAK,CAACC,OAAO,CAACJ,OAAO,CAAC,IAAI,CAAC,IAAAK,+BAAc,EAACL,OAAO,CAAC,EAAE;IACvDE,OAAO,GAAGI,SAAS;IACnBL,OAAO,GAAGD,OAAO;IACjBA,OAAO,GAAG,IAAI;EAChB;EAGA,IAAMO,KAAK,GAAG,IAAAC,kCAAgB,EAACP,OAAO,IAAI,CAAC,CAAC,CAAC;EAG7C,IAAI,CAACE,KAAK,CAACC,OAAO,CAACL,KAAK,CAAC,EAAE;IACzB,OAAOU,oBAAoB,CAACV,KAAK,EAAEC,OAAO,EAAEC,OAAO,EAAEM,KAAK,CAAC;EAC7D;EAGA,IAAMG,QAAQ,GAAGX,KAAK,CAACY,GAAG,CAAC,UAACC,IAAI;IAAA,OAAKH,oBAAoB,CAACG,IAAI,EAAEZ,OAAO,EAAEC,OAAO,EAAEM,KAAK,CAAC;EAAA,EAAC;EAGzF,OAAOG,QAAQ;AACjB;AAAC,SAEcD,oBAAoBA,CAAAI,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,sBAAA;EAAAA,qBAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAnC,SAAAC,QAAoCZ,IAAI,EAAEZ,OAAO,EAAEC,OAAO,EAAEM,KAAK;IAAA,IAAAkB,GAAA,EAAAC,QAAA;IAAA,OAAAJ,YAAA,CAAAD,OAAA,CAAAM,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAA,MAC3D,OAAOnB,IAAI,KAAK,QAAQ;YAAAiB,QAAA,CAAAE,IAAA;YAAA;UAAA;UACpBN,GAAG,GAAGb,IAAI;UAAAiB,QAAA,CAAAE,IAAA;UAAA,OACOxB,KAAK,CAACkB,GAAG,CAAC;QAAA;UAA3BC,QAAQ,GAAAG,QAAA,CAAAG,IAAA;UAAAH,QAAA,CAAAE,IAAA;UAAA,OACD,IAAAE,8BAAc,EAACP,QAAQ,EAAE1B,OAAO,EAAEC,OAAO,CAAC;QAAA;UAAA,OAAA4B,QAAA,CAAAK,MAAA,WAAAL,QAAA,CAAAG,IAAA;QAAA;UAAAH,QAAA,CAAAE,IAAA;UAAA,OAE5C,IAAAE,8BAAc,EAACrB,IAAI,EAAEZ,OAAO,EAAEC,OAAO,CAAC;QAAA;UAAA,OAAA4B,QAAA,CAAAK,MAAA,WAAAL,QAAA,CAAAG,IAAA;QAAA;QAAA;UAAA,OAAAH,QAAA,CAAAM,IAAA;MAAA;IAAA,GAAAX,OAAA;EAAA,CACpD;EAAA,OAAAP,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
1
+ {"version":3,"file":"load-in-batches.js","names":["_normalizeLoader","require","_getFetchFunction","_parseInBatches","loadInBatches","files","loaders","options","context","Array","isArray","isLoaderObject","undefined","fetch","getFetchFunction","loadOneFileInBatches","promises","map","file","url","response","parseInBatches"],"sources":["../../../../src/lib/api/load-in-batches.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {getFetchFunction} from '../loader-utils/get-fetch-function';\n\nimport {parseInBatches} from './parse-in-batches';\n\ntype FileType = string | File | Blob | Response | (string | File | Blob | Response)[] | FileList;\n\n/**\n * Parses `data` using a specified loader\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\nexport function loadInBatches(\n files: FileType,\n loaders?: LoaderWithParser | LoaderWithParser[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<AsyncIterable<any>>;\n\nexport function loadInBatches(\n files: FileType[] | FileList,\n loaders?: LoaderWithParser | LoaderWithParser[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<AsyncIterable<any>>;\n\nexport function loadInBatches(files, loaders, options, context) {\n // Signature: load(url, options)\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders;\n loaders = null;\n }\n\n // Select fetch function\n const fetch = getFetchFunction(options || {});\n\n // Single url/file\n if (!Array.isArray(files)) {\n return loadOneFileInBatches(files, loaders, options, fetch);\n }\n\n // Multiple URLs / files\n const promises = files.map((file) => loadOneFileInBatches(file, loaders, options, fetch));\n\n // No point in waiting here for all responses before starting to stream individual streams?\n return promises;\n}\n\nasync function loadOneFileInBatches(file, loaders, options, fetch) {\n if (typeof file === 'string') {\n const url = file;\n const response = await fetch(url);\n return await parseInBatches(response, loaders, options);\n }\n return await parseInBatches(file, loaders, options);\n}\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAF,OAAA;AAyBO,SAASG,aAAaA,CAACC,KAAK,EAAEC,OAAO,EAAEC,OAAO,EAAEC,OAAO,EAAE;EAE9D,IAAI,CAACC,KAAK,CAACC,OAAO,CAACJ,OAAO,CAAC,IAAI,CAAC,IAAAK,+BAAc,EAACL,OAAO,CAAC,EAAE;IACvDE,OAAO,GAAGI,SAAS;IACnBL,OAAO,GAAGD,OAAO;IACjBA,OAAO,GAAG,IAAI;EAChB;EAGA,MAAMO,KAAK,GAAG,IAAAC,kCAAgB,EAACP,OAAO,IAAI,CAAC,CAAC,CAAC;EAG7C,IAAI,CAACE,KAAK,CAACC,OAAO,CAACL,KAAK,CAAC,EAAE;IACzB,OAAOU,oBAAoB,CAACV,KAAK,EAAEC,OAAO,EAAEC,OAAO,EAAEM,KAAK,CAAC;EAC7D;EAGA,MAAMG,QAAQ,GAAGX,KAAK,CAACY,GAAG,CAAEC,IAAI,IAAKH,oBAAoB,CAACG,IAAI,EAAEZ,OAAO,EAAEC,OAAO,EAAEM,KAAK,CAAC,CAAC;EAGzF,OAAOG,QAAQ;AACjB;AAEA,eAAeD,oBAAoBA,CAACG,IAAI,EAAEZ,OAAO,EAAEC,OAAO,EAAEM,KAAK,EAAE;EACjE,IAAI,OAAOK,IAAI,KAAK,QAAQ,EAAE;IAC5B,MAAMC,GAAG,GAAGD,IAAI;IAChB,MAAME,QAAQ,GAAG,MAAMP,KAAK,CAACM,GAAG,CAAC;IACjC,OAAO,MAAM,IAAAE,8BAAc,EAACD,QAAQ,EAAEd,OAAO,EAAEC,OAAO,CAAC;EACzD;EACA,OAAO,MAAM,IAAAc,8BAAc,EAACH,IAAI,EAAEZ,OAAO,EAAEC,OAAO,CAAC;AACrD"}
@@ -1,60 +1,27 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.load = load;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
7
  var _isType = require("../../javascript-utils/is-type");
11
8
  var _normalizeLoader = require("../loader-utils/normalize-loader");
12
9
  var _getFetchFunction = require("../loader-utils/get-fetch-function");
13
10
  var _parse = require("./parse");
14
- function load(_x, _x2, _x3, _x4) {
15
- return _load.apply(this, arguments);
16
- }
17
- function _load() {
18
- _load = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(url, loaders, options, context) {
19
- var fetch, data;
20
- return _regenerator.default.wrap(function _callee$(_context) {
21
- while (1) switch (_context.prev = _context.next) {
22
- case 0:
23
- if (!Array.isArray(loaders) && !(0, _normalizeLoader.isLoaderObject)(loaders)) {
24
- context = undefined;
25
- options = loaders;
26
- loaders = undefined;
27
- }
28
- fetch = (0, _getFetchFunction.getFetchFunction)(options);
29
- data = url;
30
- if (!(typeof url === 'string')) {
31
- _context.next = 7;
32
- break;
33
- }
34
- _context.next = 6;
35
- return fetch(url);
36
- case 6:
37
- data = _context.sent;
38
- case 7:
39
- if (!(0, _isType.isBlob)(url)) {
40
- _context.next = 11;
41
- break;
42
- }
43
- _context.next = 10;
44
- return fetch(url);
45
- case 10:
46
- data = _context.sent;
47
- case 11:
48
- _context.next = 13;
49
- return (0, _parse.parse)(data, loaders, options);
50
- case 13:
51
- return _context.abrupt("return", _context.sent);
52
- case 14:
53
- case "end":
54
- return _context.stop();
55
- }
56
- }, _callee);
57
- }));
58
- return _load.apply(this, arguments);
11
+ async function load(url, loaders, options, context) {
12
+ if (!Array.isArray(loaders) && !(0, _normalizeLoader.isLoaderObject)(loaders)) {
13
+ context = undefined;
14
+ options = loaders;
15
+ loaders = undefined;
16
+ }
17
+ const fetch = (0, _getFetchFunction.getFetchFunction)(options);
18
+ let data = url;
19
+ if (typeof url === 'string') {
20
+ data = await fetch(url);
21
+ }
22
+ if ((0, _isType.isBlob)(url)) {
23
+ data = await fetch(url);
24
+ }
25
+ return await (0, _parse.parse)(data, loaders, options);
59
26
  }
60
27
  //# sourceMappingURL=load.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","names":["_isType","require","_normalizeLoader","_getFetchFunction","_parse","load","_x","_x2","_x3","_x4","_load","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","url","loaders","options","context","fetch","data","wrap","_callee$","_context","prev","next","Array","isArray","isLoaderObject","undefined","getFetchFunction","sent","isBlob","parse","abrupt","stop"],"sources":["../../../../src/lib/api/load.ts"],"sourcesContent":["import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isBlob} from '../../javascript-utils/is-type';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {getFetchFunction} from '../loader-utils/get-fetch-function';\n\nimport {parse} from './parse';\n\n/**\n * Parses `data` using a specified loader\n * Note: Load does duplicate a lot of parse.\n * it can also call fetchFile on string urls, which `parse` won't do.\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\n// implementation signature\nexport async function load(\n url: string | DataType,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<any> {\n // Signature: load(url, options)\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders as LoaderOptions;\n loaders = undefined;\n }\n\n // Select fetch function\n const fetch = getFetchFunction(options);\n\n // at this point, `url` could be already loaded binary data\n let data = url;\n // url is a string, fetch the url\n if (typeof url === 'string') {\n data = await fetch(url);\n // URL is Blob or File, fetchFile handles it (alt: we could generate ObjectURL here)\n }\n\n if (isBlob(url)) {\n // The fetch response object will contain blob.name\n // @ts-expect-error TODO - This may not work for overridden fetch functions\n data = await fetch(url);\n }\n\n // Data is loaded (at least we have a `Response` object) so time to hand over to `parse`\n return await parse(data, loaders as Loader[], options);\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAA8B,SAYRI,IAAIA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,KAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,MAAA;EAAAA,KAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAnB,SAAAC,QACLC,GAAsB,EACtBC,OAA2C,EAC3CC,OAAuB,EACvBC,OAAuB;IAAA,IAAAC,KAAA,EAAAC,IAAA;IAAA,OAAAR,YAAA,CAAAD,OAAA,CAAAU,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAGvB,IAAI,CAACC,KAAK,CAACC,OAAO,CAACX,OAAO,CAAC,IAAI,CAAC,IAAAY,+BAAc,EAACZ,OAAO,CAAC,EAAE;YACvDE,OAAO,GAAGW,SAAS;YACnBZ,OAAO,GAAGD,OAAwB;YAClCA,OAAO,GAAGa,SAAS;UACrB;UAGMV,KAAK,GAAG,IAAAW,kCAAgB,EAACb,OAAO,CAAC;UAGnCG,IAAI,GAAGL,GAAG;UAAA,MAEV,OAAOA,GAAG,KAAK,QAAQ;YAAAQ,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAAF,QAAA,CAAAE,IAAA;UAAA,OACZN,KAAK,CAACJ,GAAG,CAAC;QAAA;UAAvBK,IAAI,GAAAG,QAAA,CAAAQ,IAAA;QAAA;UAAA,KAIF,IAAAC,cAAM,EAACjB,GAAG,CAAC;YAAAQ,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAAF,QAAA,CAAAE,IAAA;UAAA,OAGAN,KAAK,CAACJ,GAAG,CAAC;QAAA;UAAvBK,IAAI,GAAAG,QAAA,CAAAQ,IAAA;QAAA;UAAAR,QAAA,CAAAE,IAAA;UAAA,OAIO,IAAAQ,YAAK,EAACb,IAAI,EAAEJ,OAAO,EAAcC,OAAO,CAAC;QAAA;UAAA,OAAAM,QAAA,CAAAW,MAAA,WAAAX,QAAA,CAAAQ,IAAA;QAAA;QAAA;UAAA,OAAAR,QAAA,CAAAY,IAAA;MAAA;IAAA,GAAArB,OAAA;EAAA,CACvD;EAAA,OAAAP,KAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
1
+ {"version":3,"file":"load.js","names":["_isType","require","_normalizeLoader","_getFetchFunction","_parse","load","url","loaders","options","context","Array","isArray","isLoaderObject","undefined","fetch","getFetchFunction","data","isBlob","parse"],"sources":["../../../../src/lib/api/load.ts"],"sourcesContent":["import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isBlob} from '../../javascript-utils/is-type';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {getFetchFunction} from '../loader-utils/get-fetch-function';\n\nimport {parse} from './parse';\n\n/**\n * Parses `data` using a specified loader\n * Note: Load does duplicate a lot of parse.\n * it can also call fetchFile on string urls, which `parse` won't do.\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\n// implementation signature\nexport async function load(\n url: string | DataType,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<any> {\n // Signature: load(url, options)\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders as LoaderOptions;\n loaders = undefined;\n }\n\n // Select fetch function\n const fetch = getFetchFunction(options);\n\n // at this point, `url` could be already loaded binary data\n let data = url;\n // url is a string, fetch the url\n if (typeof url === 'string') {\n data = await fetch(url);\n // URL is Blob or File, fetchFile handles it (alt: we could generate ObjectURL here)\n }\n\n if (isBlob(url)) {\n // The fetch response object will contain blob.name\n // @ts-expect-error TODO - This may not work for overridden fetch functions\n data = await fetch(url);\n }\n\n // Data is loaded (at least we have a `Response` object) so time to hand over to `parse`\n return await parse(data, loaders as Loader[], options);\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAYO,eAAeI,IAAIA,CACxBC,GAAsB,EACtBC,OAA2C,EAC3CC,OAAuB,EACvBC,OAAuB,EACT;EAEd,IAAI,CAACC,KAAK,CAACC,OAAO,CAACJ,OAAO,CAAC,IAAI,CAAC,IAAAK,+BAAc,EAACL,OAAO,CAAC,EAAE;IACvDE,OAAO,GAAGI,SAAS;IACnBL,OAAO,GAAGD,OAAwB;IAClCA,OAAO,GAAGM,SAAS;EACrB;EAGA,MAAMC,KAAK,GAAG,IAAAC,kCAAgB,EAACP,OAAO,CAAC;EAGvC,IAAIQ,IAAI,GAAGV,GAAG;EAEd,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC3BU,IAAI,GAAG,MAAMF,KAAK,CAACR,GAAG,CAAC;EAEzB;EAEA,IAAI,IAAAW,cAAM,EAACX,GAAG,CAAC,EAAE;IAGfU,IAAI,GAAG,MAAMF,KAAK,CAACR,GAAG,CAAC;EACzB;EAGA,OAAO,MAAM,IAAAY,YAAK,EAACF,IAAI,EAAET,OAAO,EAAcC,OAAO,CAAC;AACxD"}
@@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "getLoaderOptions", {
7
7
  enumerable: true,
8
- get: function get() {
8
+ get: function () {
9
9
  return _optionUtils.getGlobalLoaderOptions;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "setLoaderOptions", {
13
13
  enumerable: true,
14
- get: function get() {
14
+ get: function () {
15
15
  return _optionUtils.setGlobalOptions;
16
16
  }
17
17
  });
@@ -1,17 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.parseInBatches = parseInBatches;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
- var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
13
- var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
14
- var _asyncGeneratorDelegate2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncGeneratorDelegate"));
15
7
  var _loaderUtils = require("@loaders.gl/loader-utils");
16
8
  var _normalizeLoader = require("../loader-utils/normalize-loader");
17
9
  var _optionUtils = require("../loader-utils/option-utils");
@@ -20,259 +12,79 @@ var _getData = require("../loader-utils/get-data");
20
12
  var _resourceUtils = require("../utils/resource-utils");
21
13
  var _selectLoader = require("./select-loader");
22
14
  var _parse = require("./parse");
23
- 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; }
24
- 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; }
25
- 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"); }
26
- 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); }
27
- function parseInBatches(_x2, _x3, _x4, _x5) {
28
- return _parseInBatches.apply(this, arguments);
15
+ async function parseInBatches(data, loaders, options, context) {
16
+ (0, _loaderUtils.assert)(!context || typeof context === 'object');
17
+ const loaderArray = Array.isArray(loaders) ? loaders : undefined;
18
+ if (!Array.isArray(loaders) && !(0, _normalizeLoader.isLoaderObject)(loaders)) {
19
+ context = undefined;
20
+ options = loaders;
21
+ loaders = undefined;
22
+ }
23
+ data = await data;
24
+ options = options || {};
25
+ const url = (0, _resourceUtils.getResourceUrl)(data);
26
+ const loader = await (0, _selectLoader.selectLoader)(data, loaders, options);
27
+ if (!loader) {
28
+ return null;
29
+ }
30
+ options = (0, _optionUtils.normalizeOptions)(options, loader, loaderArray, url);
31
+ context = (0, _loaderContext.getLoaderContext)({
32
+ url,
33
+ parseInBatches,
34
+ parse: _parse.parse,
35
+ loaders: loaderArray
36
+ }, options, context || null);
37
+ return await parseWithLoaderInBatches(loader, data, options, context);
29
38
  }
30
- function _parseInBatches() {
31
- _parseInBatches = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data, loaders, options, context) {
32
- var loaderArray, url, loader;
33
- return _regenerator.default.wrap(function _callee$(_context) {
34
- while (1) switch (_context.prev = _context.next) {
35
- case 0:
36
- (0, _loaderUtils.assert)(!context || (0, _typeof2.default)(context) === 'object');
37
- loaderArray = Array.isArray(loaders) ? loaders : undefined;
38
- if (!Array.isArray(loaders) && !(0, _normalizeLoader.isLoaderObject)(loaders)) {
39
- context = undefined;
40
- options = loaders;
41
- loaders = undefined;
42
- }
43
- _context.next = 5;
44
- return data;
45
- case 5:
46
- data = _context.sent;
47
- options = options || {};
48
- url = (0, _resourceUtils.getResourceUrl)(data);
49
- _context.next = 10;
50
- return (0, _selectLoader.selectLoader)(data, loaders, options);
51
- case 10:
52
- loader = _context.sent;
53
- if (loader) {
54
- _context.next = 13;
55
- break;
56
- }
57
- return _context.abrupt("return", null);
58
- case 13:
59
- options = (0, _optionUtils.normalizeOptions)(options, loader, loaderArray, url);
60
- context = (0, _loaderContext.getLoaderContext)({
61
- url: url,
62
- parseInBatches: parseInBatches,
63
- parse: _parse.parse,
64
- loaders: loaderArray
65
- }, options, context || null);
66
- _context.next = 17;
67
- return parseWithLoaderInBatches(loader, data, options, context);
68
- case 17:
69
- return _context.abrupt("return", _context.sent);
70
- case 18:
71
- case "end":
72
- return _context.stop();
73
- }
74
- }, _callee);
75
- }));
76
- return _parseInBatches.apply(this, arguments);
39
+ async function parseWithLoaderInBatches(loader, data, options, context) {
40
+ const outputIterator = await parseToOutputIterator(loader, data, options, context);
41
+ if (!options.metadata) {
42
+ return outputIterator;
43
+ }
44
+ const metadataBatch = {
45
+ batchType: 'metadata',
46
+ metadata: {
47
+ _loader: loader,
48
+ _context: context
49
+ },
50
+ data: [],
51
+ bytesUsed: 0
52
+ };
53
+ async function* makeMetadataBatchIterator(iterator) {
54
+ yield metadataBatch;
55
+ yield* iterator;
56
+ }
57
+ return makeMetadataBatchIterator(outputIterator);
77
58
  }
78
- function parseWithLoaderInBatches(_x6, _x7, _x8, _x9) {
79
- return _parseWithLoaderInBatches.apply(this, arguments);
59
+ async function parseToOutputIterator(loader, data, options, context) {
60
+ const inputIterator = await (0, _getData.getAsyncIterableFromData)(data, options);
61
+ const transformedIterator = await applyInputTransforms(inputIterator, (options === null || options === void 0 ? void 0 : options.transforms) || []);
62
+ if (loader.parseInBatches) {
63
+ return loader.parseInBatches(transformedIterator, options, context);
64
+ }
65
+ async function* parseChunkInBatches() {
66
+ const arrayBuffer = await (0, _loaderUtils.concatenateArrayBuffersAsync)(transformedIterator);
67
+ const parsedData = await (0, _parse.parse)(arrayBuffer, loader, {
68
+ ...options,
69
+ mimeType: loader.mimeTypes[0]
70
+ }, context);
71
+ const batch = {
72
+ mimeType: loader.mimeTypes[0],
73
+ shape: Array.isArray(parsedData) ? 'row-table' : 'unknown',
74
+ batchType: 'data',
75
+ data: parsedData,
76
+ length: Array.isArray(parsedData) ? parsedData.length : 1
77
+ };
78
+ yield batch;
79
+ }
80
+ return parseChunkInBatches();
80
81
  }
81
- function _parseWithLoaderInBatches() {
82
- _parseWithLoaderInBatches = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(loader, data, options, context) {
83
- var outputIterator, metadataBatch, makeMetadataBatchIterator, _makeMetadataBatchIterator;
84
- return _regenerator.default.wrap(function _callee3$(_context3) {
85
- while (1) switch (_context3.prev = _context3.next) {
86
- case 0:
87
- _makeMetadataBatchIterator = function _makeMetadataBatchIte2() {
88
- _makeMetadataBatchIterator = (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee2(iterator) {
89
- return _regenerator.default.wrap(function _callee2$(_context2) {
90
- while (1) switch (_context2.prev = _context2.next) {
91
- case 0:
92
- _context2.next = 2;
93
- return metadataBatch;
94
- case 2:
95
- return _context2.delegateYield((0, _asyncGeneratorDelegate2.default)(_asyncIterator(iterator), _awaitAsyncGenerator2.default), "t0", 3);
96
- case 3:
97
- case "end":
98
- return _context2.stop();
99
- }
100
- }, _callee2);
101
- }));
102
- return _makeMetadataBatchIterator.apply(this, arguments);
103
- };
104
- makeMetadataBatchIterator = function _makeMetadataBatchIte(_x) {
105
- return _makeMetadataBatchIterator.apply(this, arguments);
106
- };
107
- _context3.next = 4;
108
- return parseToOutputIterator(loader, data, options, context);
109
- case 4:
110
- outputIterator = _context3.sent;
111
- if (options.metadata) {
112
- _context3.next = 7;
113
- break;
114
- }
115
- return _context3.abrupt("return", outputIterator);
116
- case 7:
117
- metadataBatch = {
118
- batchType: 'metadata',
119
- metadata: {
120
- _loader: loader,
121
- _context: context
122
- },
123
- data: [],
124
- bytesUsed: 0
125
- };
126
- return _context3.abrupt("return", makeMetadataBatchIterator(outputIterator));
127
- case 9:
128
- case "end":
129
- return _context3.stop();
130
- }
131
- }, _callee3);
132
- }));
133
- return _parseWithLoaderInBatches.apply(this, arguments);
134
- }
135
- function parseToOutputIterator(_x10, _x11, _x12, _x13) {
136
- return _parseToOutputIterator.apply(this, arguments);
137
- }
138
- function _parseToOutputIterator() {
139
- _parseToOutputIterator = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(loader, data, options, context) {
140
- var inputIterator, transformedIterator, parseChunkInBatches, _parseChunkInBatches;
141
- return _regenerator.default.wrap(function _callee5$(_context5) {
142
- while (1) switch (_context5.prev = _context5.next) {
143
- case 0:
144
- _parseChunkInBatches = function _parseChunkInBatches3() {
145
- _parseChunkInBatches = (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee4() {
146
- var arrayBuffer, parsedData, batch;
147
- return _regenerator.default.wrap(function _callee4$(_context4) {
148
- while (1) switch (_context4.prev = _context4.next) {
149
- case 0:
150
- _context4.next = 2;
151
- return (0, _awaitAsyncGenerator2.default)((0, _loaderUtils.concatenateArrayBuffersAsync)(transformedIterator));
152
- case 2:
153
- arrayBuffer = _context4.sent;
154
- _context4.next = 5;
155
- return (0, _awaitAsyncGenerator2.default)((0, _parse.parse)(arrayBuffer, loader, _objectSpread(_objectSpread({}, options), {}, {
156
- mimeType: loader.mimeTypes[0]
157
- }), context));
158
- case 5:
159
- parsedData = _context4.sent;
160
- batch = {
161
- mimeType: loader.mimeTypes[0],
162
- shape: Array.isArray(parsedData) ? 'row-table' : 'unknown',
163
- batchType: 'data',
164
- data: parsedData,
165
- length: Array.isArray(parsedData) ? parsedData.length : 1
166
- };
167
- _context4.next = 9;
168
- return batch;
169
- case 9:
170
- case "end":
171
- return _context4.stop();
172
- }
173
- }, _callee4);
174
- }));
175
- return _parseChunkInBatches.apply(this, arguments);
176
- };
177
- parseChunkInBatches = function _parseChunkInBatches2() {
178
- return _parseChunkInBatches.apply(this, arguments);
179
- };
180
- _context5.next = 4;
181
- return (0, _getData.getAsyncIterableFromData)(data, options);
182
- case 4:
183
- inputIterator = _context5.sent;
184
- _context5.next = 7;
185
- return applyInputTransforms(inputIterator, (options === null || options === void 0 ? void 0 : options.transforms) || []);
186
- case 7:
187
- transformedIterator = _context5.sent;
188
- if (!loader.parseInBatches) {
189
- _context5.next = 10;
190
- break;
191
- }
192
- return _context5.abrupt("return", loader.parseInBatches(transformedIterator, options, context));
193
- case 10:
194
- return _context5.abrupt("return", parseChunkInBatches());
195
- case 11:
196
- case "end":
197
- return _context5.stop();
198
- }
199
- }, _callee5);
200
- }));
201
- return _parseToOutputIterator.apply(this, arguments);
202
- }
203
- function applyInputTransforms(_x14) {
204
- return _applyInputTransforms.apply(this, arguments);
205
- }
206
- function _applyInputTransforms() {
207
- _applyInputTransforms = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(inputIterator) {
208
- var transforms,
209
- iteratorChain,
210
- _iteratorAbruptCompletion,
211
- _didIteratorError,
212
- _iteratorError,
213
- _iterator,
214
- _step,
215
- transformBatches,
216
- _args6 = arguments;
217
- return _regenerator.default.wrap(function _callee6$(_context6) {
218
- while (1) switch (_context6.prev = _context6.next) {
219
- case 0:
220
- transforms = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : [];
221
- iteratorChain = inputIterator;
222
- _iteratorAbruptCompletion = false;
223
- _didIteratorError = false;
224
- _context6.prev = 4;
225
- _iterator = _asyncIterator(transforms);
226
- case 6:
227
- _context6.next = 8;
228
- return _iterator.next();
229
- case 8:
230
- if (!(_iteratorAbruptCompletion = !(_step = _context6.sent).done)) {
231
- _context6.next = 14;
232
- break;
233
- }
234
- transformBatches = _step.value;
235
- iteratorChain = transformBatches(iteratorChain);
236
- case 11:
237
- _iteratorAbruptCompletion = false;
238
- _context6.next = 6;
239
- break;
240
- case 14:
241
- _context6.next = 20;
242
- break;
243
- case 16:
244
- _context6.prev = 16;
245
- _context6.t0 = _context6["catch"](4);
246
- _didIteratorError = true;
247
- _iteratorError = _context6.t0;
248
- case 20:
249
- _context6.prev = 20;
250
- _context6.prev = 21;
251
- if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
252
- _context6.next = 25;
253
- break;
254
- }
255
- _context6.next = 25;
256
- return _iterator.return();
257
- case 25:
258
- _context6.prev = 25;
259
- if (!_didIteratorError) {
260
- _context6.next = 28;
261
- break;
262
- }
263
- throw _iteratorError;
264
- case 28:
265
- return _context6.finish(25);
266
- case 29:
267
- return _context6.finish(20);
268
- case 30:
269
- return _context6.abrupt("return", iteratorChain);
270
- case 31:
271
- case "end":
272
- return _context6.stop();
273
- }
274
- }, _callee6, null, [[4, 16, 20, 30], [21,, 25, 29]]);
275
- }));
276
- return _applyInputTransforms.apply(this, arguments);
82
+ async function applyInputTransforms(inputIterator) {
83
+ let transforms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
84
+ let iteratorChain = inputIterator;
85
+ for await (const transformBatches of transforms) {
86
+ iteratorChain = transformBatches(iteratorChain);
87
+ }
88
+ return iteratorChain;
277
89
  }
278
90
  //# sourceMappingURL=parse-in-batches.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-in-batches.js","names":["_loaderUtils","require","_normalizeLoader","_optionUtils","_loaderContext","_getData","_resourceUtils","_selectLoader","_parse","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_asyncIterator","iterable","method","async","sync","retry","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","s","AsyncFromSyncIteratorContinuation","r","Promise","reject","done","resolve","value","then","n","next","prototype","return","_return","ret","throw","_throw","thr","parseInBatches","_x2","_x3","_x4","_x5","_parseInBatches","_asyncToGenerator2","_regenerator","mark","_callee","data","loaders","options","context","loaderArray","url","loader","wrap","_callee$","_context","prev","assert","_typeof2","Array","isArray","undefined","isLoaderObject","sent","getResourceUrl","selectLoader","abrupt","normalizeOptions","getLoaderContext","parse","parseWithLoaderInBatches","stop","_x6","_x7","_x8","_x9","_parseWithLoaderInBatches","_callee3","outputIterator","metadataBatch","makeMetadataBatchIterator","_makeMetadataBatchIterator","_callee3$","_context3","_makeMetadataBatchIte2","_wrapAsyncGenerator2","_callee2","_callee2$","_context2","delegateYield","_asyncGeneratorDelegate2","_awaitAsyncGenerator2","_makeMetadataBatchIte","_x","parseToOutputIterator","metadata","batchType","_loader","bytesUsed","_x10","_x11","_x12","_x13","_parseToOutputIterator","_callee5","inputIterator","transformedIterator","parseChunkInBatches","_parseChunkInBatches","_callee5$","_context5","_parseChunkInBatches3","_callee4","arrayBuffer","parsedData","batch","_callee4$","_context4","concatenateArrayBuffersAsync","mimeType","mimeTypes","shape","_parseChunkInBatches2","getAsyncIterableFromData","applyInputTransforms","transforms","_x14","_applyInputTransforms","_callee6","iteratorChain","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","transformBatches","_args6","_callee6$","_context6","t0","finish"],"sources":["../../../../src/lib/api/parse-in-batches.ts"],"sourcesContent":["import type {Batch} from '@loaders.gl/schema';\nimport type {\n BatchableDataType,\n Loader,\n LoaderWithParser,\n LoaderContext,\n LoaderOptions\n} from '@loaders.gl/loader-utils';\nimport {assert, concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {normalizeOptions} from '../loader-utils/option-utils';\nimport {getLoaderContext} from '../loader-utils/loader-context';\nimport {getAsyncIterableFromData} from '../loader-utils/get-data';\nimport {getResourceUrl} from '../utils/resource-utils';\nimport {selectLoader} from './select-loader';\n\n// Ensure `parse` is available in context if loader falls back to `parse`\nimport {parse} from './parse';\n\n/**\n * Parses `data` using a specified loader\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\nexport async function parseInBatches(\n data: BatchableDataType,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<AsyncIterable<any>> {\n assert(!context || typeof context === 'object'); // parseInBatches no longer accepts final url\n\n const loaderArray = Array.isArray(loaders) ? loaders : undefined;\n\n // Signature: parseInBatches(data, options, url) - Uses registered loaders\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders as LoaderOptions;\n loaders = undefined;\n }\n\n data = await data; // Resolve any promise\n options = options || {};\n\n // Extract a url for auto detection\n const url = getResourceUrl(data);\n\n // Chooses a loader and normalizes it\n // Note - only uses URL and contentType for streams and iterator inputs\n const loader = await selectLoader(data as ArrayBuffer, loaders as Loader | Loader[], options);\n // Note: if options.nothrow was set, it is possible that no loader was found, if so just return null\n if (!loader) {\n // @ts-ignore\n return null;\n }\n\n // Normalize options\n options = normalizeOptions(options, loader, loaderArray, url);\n context = getLoaderContext(\n {url, parseInBatches, parse, loaders: loaderArray},\n options,\n context || null\n );\n\n return await parseWithLoaderInBatches(loader as LoaderWithParser, data, options, context);\n}\n\n/**\n * Loader has been selected and context has been prepared, see if we need to emit a metadata batch\n */\nasync function parseWithLoaderInBatches(\n loader: LoaderWithParser,\n data: BatchableDataType,\n options: LoaderOptions,\n context: LoaderContext\n): Promise<AsyncIterable<any>> {\n const outputIterator = await parseToOutputIterator(loader, data, options, context);\n\n // Generate metadata batch if requested\n if (!options.metadata) {\n return outputIterator;\n }\n\n const metadataBatch = {\n batchType: 'metadata',\n metadata: {\n _loader: loader,\n _context: context\n },\n // Populate with some default fields to avoid crashing\n data: [],\n bytesUsed: 0\n };\n\n async function* makeMetadataBatchIterator(iterator) {\n yield metadataBatch;\n yield* iterator;\n }\n\n return makeMetadataBatchIterator(outputIterator);\n}\n\n/**\n * Prep work is done, now it is time to start parsing into an output operator\n * The approach depends on which parse function the loader exposes\n * `parseInBatches` (preferred), `parse` (fallback)\n */\nasync function parseToOutputIterator(\n loader: LoaderWithParser,\n data: BatchableDataType,\n options: LoaderOptions,\n context: LoaderContext\n): Promise<AsyncIterable<any>> {\n // Get an iterator from the input\n const inputIterator = await getAsyncIterableFromData(data, options);\n\n // Apply any iterator transforms (options.transforms)\n const transformedIterator = await applyInputTransforms(inputIterator, options?.transforms || []);\n\n // If loader supports parseInBatches, we are done\n if (loader.parseInBatches) {\n return loader.parseInBatches(transformedIterator, options, context);\n }\n\n // Fallback: load atomically using `parse` concatenating input iterator into single chunk\n async function* parseChunkInBatches() {\n const arrayBuffer = await concatenateArrayBuffersAsync(transformedIterator);\n // Call `parse` instead of `loader.parse` to ensure we can call workers etc.\n const parsedData = await parse(\n arrayBuffer,\n loader,\n // TODO - Hack: supply loaders MIME type to ensure we match it\n {...options, mimeType: loader.mimeTypes[0]},\n context\n );\n // yield a single batch, the output from loader.parse()\n // TODO - run through batch builder to apply options etc...\n const batch: Batch = {\n mimeType: loader.mimeTypes[0],\n shape: Array.isArray(parsedData) ? 'row-table' : 'unknown',\n batchType: 'data',\n data: parsedData,\n length: Array.isArray(parsedData) ? parsedData.length : 1\n };\n yield batch;\n }\n\n return parseChunkInBatches();\n}\n\ntype TransformBatches = (\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n) => AsyncIterable<ArrayBuffer>;\n\n/**\n * Create an iterator chain with any transform iterators (crypto, decompression)\n * @param inputIterator\n * @param options\n */\nasync function applyInputTransforms(\n inputIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n transforms: TransformBatches[] = []\n): Promise<AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>> {\n let iteratorChain = inputIterator;\n for await (const transformBatches of transforms) {\n iteratorChain = transformBatches(iteratorChain);\n }\n return iteratorChain;\n}\n"],"mappings":";;;;;;;;;;;;;;AAQA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AAGA,IAAAO,MAAA,GAAAP,OAAA;AAA8B,SAAAQ,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAAA,SAAAY,eAAAC,QAAA,QAAAC,MAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,KAAA,iCAAAC,MAAA,KAAAH,KAAA,GAAAG,MAAA,CAAAC,aAAA,EAAAH,IAAA,GAAAE,MAAA,CAAAE,QAAA,GAAAH,KAAA,WAAAF,KAAA,aAAAD,MAAA,GAAAD,QAAA,CAAAE,KAAA,WAAAD,MAAA,CAAAO,IAAA,CAAAR,QAAA,OAAAG,IAAA,aAAAF,MAAA,GAAAD,QAAA,CAAAG,IAAA,eAAAM,qBAAA,CAAAR,MAAA,CAAAO,IAAA,CAAAR,QAAA,IAAAE,KAAA,sBAAAC,IAAA,6BAAAO,SAAA;AAAA,SAAAD,sBAAAE,CAAA,aAAAC,kCAAAC,CAAA,QAAApC,MAAA,CAAAoC,CAAA,MAAAA,CAAA,SAAAC,OAAA,CAAAC,MAAA,KAAAL,SAAA,CAAAG,CAAA,+BAAAG,IAAA,GAAAH,CAAA,CAAAG,IAAA,SAAAF,OAAA,CAAAG,OAAA,CAAAJ,CAAA,CAAAK,KAAA,EAAAC,IAAA,WAAAD,KAAA,aAAAA,KAAA,EAAAA,KAAA,EAAAF,IAAA,EAAAA,IAAA,iBAAAP,qBAAA,YAAAA,sBAAAE,CAAA,SAAAA,CAAA,GAAAA,CAAA,OAAAS,CAAA,GAAAT,CAAA,CAAAU,IAAA,KAAAZ,qBAAA,CAAAa,SAAA,KAAAX,CAAA,QAAAS,CAAA,QAAAC,IAAA,WAAAA,KAAA,WAAAT,iCAAA,MAAAQ,CAAA,CAAAnC,KAAA,MAAA0B,CAAA,EAAAtB,SAAA,OAAAkC,MAAA,WAAAC,QAAAN,KAAA,QAAAO,GAAA,QAAAd,CAAA,CAAAY,MAAA,oBAAAE,GAAA,GAAAX,OAAA,CAAAG,OAAA,GAAAC,KAAA,EAAAA,KAAA,EAAAF,IAAA,UAAAJ,iCAAA,CAAAa,GAAA,CAAAxC,KAAA,MAAA0B,CAAA,EAAAtB,SAAA,OAAAqC,KAAA,WAAAC,OAAAT,KAAA,QAAAU,GAAA,QAAAjB,CAAA,CAAAY,MAAA,oBAAAK,GAAA,GAAAd,OAAA,CAAAC,MAAA,CAAAG,KAAA,IAAAN,iCAAA,CAAAgB,GAAA,CAAA3C,KAAA,MAAA0B,CAAA,EAAAtB,SAAA,aAAAoB,qBAAA,CAAAE,CAAA;AAAA,SASRkB,cAAcA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,eAAA,CAAAjD,KAAA,OAAAI,SAAA;AAAA;AAAA,SAAA6C,gBAAA;EAAAA,eAAA,OAAAC,kBAAA,CAAAxC,OAAA,EAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAA7B,SAAAC,QACLC,IAAuB,EACvBC,OAA2C,EAC3CC,OAAuB,EACvBC,OAAuB;IAAA,IAAAC,WAAA,EAAAC,GAAA,EAAAC,MAAA;IAAA,OAAAT,YAAA,CAAAzC,OAAA,CAAAmD,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAA3B,IAAA;QAAA;UAEvB,IAAA6B,mBAAM,EAAC,CAACR,OAAO,IAAI,IAAAS,QAAA,CAAAxD,OAAA,EAAO+C,OAAO,MAAK,QAAQ,CAAC;UAEzCC,WAAW,GAAGS,KAAK,CAACC,OAAO,CAACb,OAAO,CAAC,GAAGA,OAAO,GAAGc,SAAS;UAGhE,IAAI,CAACF,KAAK,CAACC,OAAO,CAACb,OAAO,CAAC,IAAI,CAAC,IAAAe,+BAAc,EAACf,OAAO,CAAC,EAAE;YACvDE,OAAO,GAAGY,SAAS;YACnBb,OAAO,GAAGD,OAAwB;YAClCA,OAAO,GAAGc,SAAS;UACrB;UAACN,QAAA,CAAA3B,IAAA;UAAA,OAEYkB,IAAI;QAAA;UAAjBA,IAAI,GAAAS,QAAA,CAAAQ,IAAA;UACJf,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;UAGjBG,GAAG,GAAG,IAAAa,6BAAc,EAAClB,IAAI,CAAC;UAAAS,QAAA,CAAA3B,IAAA;UAAA,OAIX,IAAAqC,0BAAY,EAACnB,IAAI,EAAiBC,OAAO,EAAuBC,OAAO,CAAC;QAAA;UAAvFI,MAAM,GAAAG,QAAA,CAAAQ,IAAA;UAAA,IAEPX,MAAM;YAAAG,QAAA,CAAA3B,IAAA;YAAA;UAAA;UAAA,OAAA2B,QAAA,CAAAW,MAAA,WAEF,IAAI;QAAA;UAIblB,OAAO,GAAG,IAAAmB,6BAAgB,EAACnB,OAAO,EAAEI,MAAM,EAAEF,WAAW,EAAEC,GAAG,CAAC;UAC7DF,OAAO,GAAG,IAAAmB,+BAAgB,EACxB;YAACjB,GAAG,EAAHA,GAAG;YAAEf,cAAc,EAAdA,cAAc;YAAEiC,KAAK,EAALA,YAAK;YAAEtB,OAAO,EAAEG;UAAW,CAAC,EAClDF,OAAO,EACPC,OAAO,IAAI,IACb,CAAC;UAACM,QAAA,CAAA3B,IAAA;UAAA,OAEW0C,wBAAwB,CAAClB,MAAM,EAAsBN,IAAI,EAAEE,OAAO,EAAEC,OAAO,CAAC;QAAA;UAAA,OAAAM,QAAA,CAAAW,MAAA,WAAAX,QAAA,CAAAQ,IAAA;QAAA;QAAA;UAAA,OAAAR,QAAA,CAAAgB,IAAA;MAAA;IAAA,GAAA1B,OAAA;EAAA,CAC1F;EAAA,OAAAJ,eAAA,CAAAjD,KAAA,OAAAI,SAAA;AAAA;AAAA,SAKc0E,wBAAwBA,CAAAE,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,yBAAA,CAAApF,KAAA,OAAAI,SAAA;AAAA;AAAA,SAAAgF,0BAAA;EAAAA,yBAAA,OAAAlC,kBAAA,CAAAxC,OAAA,EAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAvC,SAAAiC,SACEzB,MAAwB,EACxBN,IAAuB,EACvBE,OAAsB,EACtBC,OAAsB;IAAA,IAAA6B,cAAA,EAAAC,aAAA,EAoBNC,yBAAyB,EAAAC,0BAAA;IAAA,OAAAtC,YAAA,CAAAzC,OAAA,CAAAmD,IAAA,UAAA6B,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA3B,IAAA,GAAA2B,SAAA,CAAAvD,IAAA;QAAA;UAAAqD,0BAAA,YAAAG,uBAAA;YAAAH,0BAAA,OAAAI,oBAAA,CAAAnF,OAAA,EAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAzC,SAAA0C,SAA0CxE,QAAQ;cAAA,OAAA6B,YAAA,CAAAzC,OAAA,CAAAmD,IAAA,UAAAkC,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAhC,IAAA,GAAAgC,SAAA,CAAA5D,IAAA;kBAAA;oBAAA4D,SAAA,CAAA5D,IAAA;oBAChD,OAAMmD,aAAa;kBAAA;oBACnB,OAAAS,SAAA,CAAAC,aAAA,KAAAC,wBAAA,CAAAxF,OAAA,EAAAI,cAAA,CAAOQ,QAAQ,GAAA6E,qBAAA,CAAAzF,OAAA;kBAAA;kBAAA;oBAAA,OAAAsF,SAAA,CAAAjB,IAAA;gBAAA;cAAA,GAAAe,QAAA;YAAA,CAChB;YAAA,OAAAL,0BAAA,CAAAzF,KAAA,OAAAI,SAAA;UAAA;UAHeoF,yBAAyB,YAAAY,sBAAAC,EAAA;YAAA,OAAAZ,0BAAA,CAAAzF,KAAA,OAAAI,SAAA;UAAA;UAAAuF,SAAA,CAAAvD,IAAA;UAAA,OAlBZkE,qBAAqB,CAAC1C,MAAM,EAAEN,IAAI,EAAEE,OAAO,EAAEC,OAAO,CAAC;QAAA;UAA5E6B,cAAc,GAAAK,SAAA,CAAApB,IAAA;UAAA,IAGff,OAAO,CAAC+C,QAAQ;YAAAZ,SAAA,CAAAvD,IAAA;YAAA;UAAA;UAAA,OAAAuD,SAAA,CAAAjB,MAAA,WACZY,cAAc;QAAA;UAGjBC,aAAa,GAAG;YACpBiB,SAAS,EAAE,UAAU;YACrBD,QAAQ,EAAE;cACRE,OAAO,EAAE7C,MAAM;cACfG,QAAQ,EAAEN;YACZ,CAAC;YAEDH,IAAI,EAAE,EAAE;YACRoD,SAAS,EAAE;UACb,CAAC;UAAA,OAAAf,SAAA,CAAAjB,MAAA,WAOMc,yBAAyB,CAACF,cAAc,CAAC;QAAA;QAAA;UAAA,OAAAK,SAAA,CAAAZ,IAAA;MAAA;IAAA,GAAAM,QAAA;EAAA,CACjD;EAAA,OAAAD,yBAAA,CAAApF,KAAA,OAAAI,SAAA;AAAA;AAAA,SAOckG,qBAAqBA,CAAAK,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,sBAAA,CAAA/G,KAAA,OAAAI,SAAA;AAAA;AAAA,SAAA2G,uBAAA;EAAAA,sBAAA,OAAA7D,kBAAA,CAAAxC,OAAA,EAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAApC,SAAA4D,SACEpD,MAAwB,EACxBN,IAAuB,EACvBE,OAAsB,EACtBC,OAAsB;IAAA,IAAAwD,aAAA,EAAAC,mBAAA,EAcNC,mBAAmB,EAAAC,oBAAA;IAAA,OAAAjE,YAAA,CAAAzC,OAAA,CAAAmD,IAAA,UAAAwD,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAtD,IAAA,GAAAsD,SAAA,CAAAlF,IAAA;QAAA;UAAAgF,oBAAA,YAAAG,sBAAA;YAAAH,oBAAA,OAAAvB,oBAAA,CAAAnF,OAAA,EAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAnC,SAAAoE,SAAA;cAAA,IAAAC,WAAA,EAAAC,UAAA,EAAAC,KAAA;cAAA,OAAAxE,YAAA,CAAAzC,OAAA,CAAAmD,IAAA,UAAA+D,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAA7D,IAAA,GAAA6D,SAAA,CAAAzF,IAAA;kBAAA;oBAAAyF,SAAA,CAAAzF,IAAA;oBAAA,WAAA+D,qBAAA,CAAAzF,OAAA,EAC4B,IAAAoH,yCAA4B,EAACZ,mBAAmB,CAAC;kBAAA;oBAArEO,WAAW,GAAAI,SAAA,CAAAtD,IAAA;oBAAAsD,SAAA,CAAAzF,IAAA;oBAAA,WAAA+D,qBAAA,CAAAzF,OAAA,EAEQ,IAAAmE,YAAK,EAC5B4C,WAAW,EACX7D,MAAM,EAAA3D,aAAA,CAAAA,aAAA,KAEFuD,OAAO;sBAAEuE,QAAQ,EAAEnE,MAAM,CAACoE,SAAS,CAAC,CAAC;oBAAC,IAC1CvE,OACF,CAAC;kBAAA;oBANKiE,UAAU,GAAAG,SAAA,CAAAtD,IAAA;oBASVoD,KAAY,GAAG;sBACnBI,QAAQ,EAAEnE,MAAM,CAACoE,SAAS,CAAC,CAAC,CAAC;sBAC7BC,KAAK,EAAE9D,KAAK,CAACC,OAAO,CAACsD,UAAU,CAAC,GAAG,WAAW,GAAG,SAAS;sBAC1DlB,SAAS,EAAE,MAAM;sBACjBlD,IAAI,EAAEoE,UAAU;sBAChBrH,MAAM,EAAE8D,KAAK,CAACC,OAAO,CAACsD,UAAU,CAAC,GAAGA,UAAU,CAACrH,MAAM,GAAG;oBAC1D,CAAC;oBAAAwH,SAAA,CAAAzF,IAAA;oBACD,OAAMuF,KAAK;kBAAA;kBAAA;oBAAA,OAAAE,SAAA,CAAA9C,IAAA;gBAAA;cAAA,GAAAyC,QAAA;YAAA,CACZ;YAAA,OAAAJ,oBAAA,CAAApH,KAAA,OAAAI,SAAA;UAAA;UApBe+G,mBAAmB,YAAAe,sBAAA;YAAA,OAAAd,oBAAA,CAAApH,KAAA,OAAAI,SAAA;UAAA;UAAAkH,SAAA,CAAAlF,IAAA;UAAA,OAXP,IAAA+F,iCAAwB,EAAC7E,IAAI,EAAEE,OAAO,CAAC;QAAA;UAA7DyD,aAAa,GAAAK,SAAA,CAAA/C,IAAA;UAAA+C,SAAA,CAAAlF,IAAA;UAAA,OAGegG,oBAAoB,CAACnB,aAAa,EAAE,CAAAzD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE6E,UAAU,KAAI,EAAE,CAAC;QAAA;UAA1FnB,mBAAmB,GAAAI,SAAA,CAAA/C,IAAA;UAAA,KAGrBX,MAAM,CAAChB,cAAc;YAAA0E,SAAA,CAAAlF,IAAA;YAAA;UAAA;UAAA,OAAAkF,SAAA,CAAA5C,MAAA,WAChBd,MAAM,CAAChB,cAAc,CAACsE,mBAAmB,EAAE1D,OAAO,EAAEC,OAAO,CAAC;QAAA;UAAA,OAAA6D,SAAA,CAAA5C,MAAA,WA0B9DyC,mBAAmB,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAG,SAAA,CAAAvC,IAAA;MAAA;IAAA,GAAAiC,QAAA;EAAA,CAC7B;EAAA,OAAAD,sBAAA,CAAA/G,KAAA,OAAAI,SAAA;AAAA;AAAA,SAWcgI,oBAAoBA,CAAAE,IAAA;EAAA,OAAAC,qBAAA,CAAAvI,KAAA,OAAAI,SAAA;AAAA;AAAA,SAAAmI,sBAAA;EAAAA,qBAAA,OAAArF,kBAAA,CAAAxC,OAAA,EAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAnC,SAAAoF,SACEvB,aAAiE;IAAA,IAAAoB,UAAA;MAAAI,aAAA;MAAAC,yBAAA;MAAAC,iBAAA;MAAAC,cAAA;MAAAC,SAAA;MAAAC,KAAA;MAAAC,gBAAA;MAAAC,MAAA,GAAA5I,SAAA;IAAA,OAAA+C,YAAA,CAAAzC,OAAA,CAAAmD,IAAA,UAAAoF,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlF,IAAA,GAAAkF,SAAA,CAAA9G,IAAA;QAAA;UACjEiG,UAA8B,GAAAW,MAAA,CAAA3I,MAAA,QAAA2I,MAAA,QAAA3E,SAAA,GAAA2E,MAAA,MAAG,EAAE;UAE/BP,aAAa,GAAGxB,aAAa;UAAAyB,yBAAA;UAAAC,iBAAA;UAAAO,SAAA,CAAAlF,IAAA;UAAA6E,SAAA,GAAA/H,cAAA,CACIuH,UAAU;QAAA;UAAAa,SAAA,CAAA9G,IAAA;UAAA,OAAAyG,SAAA,CAAAzG,IAAA;QAAA;UAAA,MAAAsG,yBAAA,KAAAI,KAAA,GAAAI,SAAA,CAAA3E,IAAA,EAAAxC,IAAA;YAAAmH,SAAA,CAAA9G,IAAA;YAAA;UAAA;UAA9B2G,gBAAgB,GAAAD,KAAA,CAAA7G,KAAA;UAC/BwG,aAAa,GAAGM,gBAAgB,CAACN,aAAa,CAAC;QAAC;UAAAC,yBAAA;UAAAQ,SAAA,CAAA9G,IAAA;UAAA;QAAA;UAAA8G,SAAA,CAAA9G,IAAA;UAAA;QAAA;UAAA8G,SAAA,CAAAlF,IAAA;UAAAkF,SAAA,CAAAC,EAAA,GAAAD,SAAA;UAAAP,iBAAA;UAAAC,cAAA,GAAAM,SAAA,CAAAC,EAAA;QAAA;UAAAD,SAAA,CAAAlF,IAAA;UAAAkF,SAAA,CAAAlF,IAAA;UAAA,MAAA0E,yBAAA,IAAAG,SAAA,CAAAvG,MAAA;YAAA4G,SAAA,CAAA9G,IAAA;YAAA;UAAA;UAAA8G,SAAA,CAAA9G,IAAA;UAAA,OAAAyG,SAAA,CAAAvG,MAAA;QAAA;UAAA4G,SAAA,CAAAlF,IAAA;UAAA,KAAA2E,iBAAA;YAAAO,SAAA,CAAA9G,IAAA;YAAA;UAAA;UAAA,MAAAwG,cAAA;QAAA;UAAA,OAAAM,SAAA,CAAAE,MAAA;QAAA;UAAA,OAAAF,SAAA,CAAAE,MAAA;QAAA;UAAA,OAAAF,SAAA,CAAAxE,MAAA,WAE3C+D,aAAa;QAAA;QAAA;UAAA,OAAAS,SAAA,CAAAnE,IAAA;MAAA;IAAA,GAAAyD,QAAA;EAAA,CACrB;EAAA,OAAAD,qBAAA,CAAAvI,KAAA,OAAAI,SAAA;AAAA"}
1
+ {"version":3,"file":"parse-in-batches.js","names":["_loaderUtils","require","_normalizeLoader","_optionUtils","_loaderContext","_getData","_resourceUtils","_selectLoader","_parse","parseInBatches","data","loaders","options","context","assert","loaderArray","Array","isArray","undefined","isLoaderObject","url","getResourceUrl","loader","selectLoader","normalizeOptions","getLoaderContext","parse","parseWithLoaderInBatches","outputIterator","parseToOutputIterator","metadata","metadataBatch","batchType","_loader","_context","bytesUsed","makeMetadataBatchIterator","iterator","inputIterator","getAsyncIterableFromData","transformedIterator","applyInputTransforms","transforms","parseChunkInBatches","arrayBuffer","concatenateArrayBuffersAsync","parsedData","mimeType","mimeTypes","batch","shape","length","arguments","iteratorChain","transformBatches"],"sources":["../../../../src/lib/api/parse-in-batches.ts"],"sourcesContent":["import type {Batch} from '@loaders.gl/schema';\nimport type {\n BatchableDataType,\n Loader,\n LoaderWithParser,\n LoaderContext,\n LoaderOptions\n} from '@loaders.gl/loader-utils';\nimport {assert, concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {normalizeOptions} from '../loader-utils/option-utils';\nimport {getLoaderContext} from '../loader-utils/loader-context';\nimport {getAsyncIterableFromData} from '../loader-utils/get-data';\nimport {getResourceUrl} from '../utils/resource-utils';\nimport {selectLoader} from './select-loader';\n\n// Ensure `parse` is available in context if loader falls back to `parse`\nimport {parse} from './parse';\n\n/**\n * Parses `data` using a specified loader\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\nexport async function parseInBatches(\n data: BatchableDataType,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<AsyncIterable<any>> {\n assert(!context || typeof context === 'object'); // parseInBatches no longer accepts final url\n\n const loaderArray = Array.isArray(loaders) ? loaders : undefined;\n\n // Signature: parseInBatches(data, options, url) - Uses registered loaders\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders as LoaderOptions;\n loaders = undefined;\n }\n\n data = await data; // Resolve any promise\n options = options || {};\n\n // Extract a url for auto detection\n const url = getResourceUrl(data);\n\n // Chooses a loader and normalizes it\n // Note - only uses URL and contentType for streams and iterator inputs\n const loader = await selectLoader(data as ArrayBuffer, loaders as Loader | Loader[], options);\n // Note: if options.nothrow was set, it is possible that no loader was found, if so just return null\n if (!loader) {\n // @ts-ignore\n return null;\n }\n\n // Normalize options\n options = normalizeOptions(options, loader, loaderArray, url);\n context = getLoaderContext(\n {url, parseInBatches, parse, loaders: loaderArray},\n options,\n context || null\n );\n\n return await parseWithLoaderInBatches(loader as LoaderWithParser, data, options, context);\n}\n\n/**\n * Loader has been selected and context has been prepared, see if we need to emit a metadata batch\n */\nasync function parseWithLoaderInBatches(\n loader: LoaderWithParser,\n data: BatchableDataType,\n options: LoaderOptions,\n context: LoaderContext\n): Promise<AsyncIterable<any>> {\n const outputIterator = await parseToOutputIterator(loader, data, options, context);\n\n // Generate metadata batch if requested\n if (!options.metadata) {\n return outputIterator;\n }\n\n const metadataBatch = {\n batchType: 'metadata',\n metadata: {\n _loader: loader,\n _context: context\n },\n // Populate with some default fields to avoid crashing\n data: [],\n bytesUsed: 0\n };\n\n async function* makeMetadataBatchIterator(iterator) {\n yield metadataBatch;\n yield* iterator;\n }\n\n return makeMetadataBatchIterator(outputIterator);\n}\n\n/**\n * Prep work is done, now it is time to start parsing into an output operator\n * The approach depends on which parse function the loader exposes\n * `parseInBatches` (preferred), `parse` (fallback)\n */\nasync function parseToOutputIterator(\n loader: LoaderWithParser,\n data: BatchableDataType,\n options: LoaderOptions,\n context: LoaderContext\n): Promise<AsyncIterable<any>> {\n // Get an iterator from the input\n const inputIterator = await getAsyncIterableFromData(data, options);\n\n // Apply any iterator transforms (options.transforms)\n const transformedIterator = await applyInputTransforms(inputIterator, options?.transforms || []);\n\n // If loader supports parseInBatches, we are done\n if (loader.parseInBatches) {\n return loader.parseInBatches(transformedIterator, options, context);\n }\n\n // Fallback: load atomically using `parse` concatenating input iterator into single chunk\n async function* parseChunkInBatches() {\n const arrayBuffer = await concatenateArrayBuffersAsync(transformedIterator);\n // Call `parse` instead of `loader.parse` to ensure we can call workers etc.\n const parsedData = await parse(\n arrayBuffer,\n loader,\n // TODO - Hack: supply loaders MIME type to ensure we match it\n {...options, mimeType: loader.mimeTypes[0]},\n context\n );\n // yield a single batch, the output from loader.parse()\n // TODO - run through batch builder to apply options etc...\n const batch: Batch = {\n mimeType: loader.mimeTypes[0],\n shape: Array.isArray(parsedData) ? 'row-table' : 'unknown',\n batchType: 'data',\n data: parsedData,\n length: Array.isArray(parsedData) ? parsedData.length : 1\n };\n yield batch;\n }\n\n return parseChunkInBatches();\n}\n\ntype TransformBatches = (\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n) => AsyncIterable<ArrayBuffer>;\n\n/**\n * Create an iterator chain with any transform iterators (crypto, decompression)\n * @param inputIterator\n * @param options\n */\nasync function applyInputTransforms(\n inputIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n transforms: TransformBatches[] = []\n): Promise<AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>> {\n let iteratorChain = inputIterator;\n for await (const transformBatches of transforms) {\n iteratorChain = transformBatches(iteratorChain);\n }\n return iteratorChain;\n}\n"],"mappings":"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"}
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.parseSync = parseSync;
8
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
7
  var _loaderUtils = require("@loaders.gl/loader-utils");
10
8
  var _selectLoader = require("./select-loader");
11
9
  var _normalizeLoader = require("../loader-utils/normalize-loader");
@@ -14,28 +12,28 @@ var _getData = require("../loader-utils/get-data");
14
12
  var _loaderContext = require("../loader-utils/loader-context");
15
13
  var _resourceUtils = require("../utils/resource-utils");
16
14
  function parseSync(data, loaders, options, context) {
17
- (0, _loaderUtils.assert)(!context || (0, _typeof2.default)(context) === 'object');
15
+ (0, _loaderUtils.assert)(!context || typeof context === 'object');
18
16
  if (!Array.isArray(loaders) && !(0, _normalizeLoader.isLoaderObject)(loaders)) {
19
17
  context = undefined;
20
18
  options = loaders;
21
19
  loaders = undefined;
22
20
  }
23
21
  options = options || {};
24
- var typedLoaders = loaders;
25
- var candidateLoaders = (0, _loaderContext.getLoadersFromContext)(typedLoaders, context);
26
- var loader = (0, _selectLoader.selectLoaderSync)(data, candidateLoaders, options);
22
+ const typedLoaders = loaders;
23
+ const candidateLoaders = (0, _loaderContext.getLoadersFromContext)(typedLoaders, context);
24
+ const loader = (0, _selectLoader.selectLoaderSync)(data, candidateLoaders, options);
27
25
  if (!loader) {
28
26
  return null;
29
27
  }
30
28
  options = (0, _optionUtils.normalizeOptions)(options, loader, candidateLoaders);
31
- var url = (0, _resourceUtils.getResourceUrl)(data);
32
- var parse = function parse() {
29
+ const url = (0, _resourceUtils.getResourceUrl)(data);
30
+ const parse = () => {
33
31
  throw new Error('parseSync called parse (which is async');
34
32
  };
35
33
  context = (0, _loaderContext.getLoaderContext)({
36
- url: url,
37
- parseSync: parseSync,
38
- parse: parse,
34
+ url,
35
+ parseSync,
36
+ parse,
39
37
  loaders: loaders
40
38
  }, options, context || null);
41
39
  return parseWithLoaderSync(loader, data, options, context);