@loaders.gl/core 3.2.0-alpha.2 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dist.min.js CHANGED
@@ -672,10 +672,12 @@
672
672
  const workerFarm = WorkerFarm.getWorkerFarm(options);
673
673
  const workerPool = workerFarm.getWorkerPool({ name, url });
674
674
  options = JSON.parse(JSON.stringify(options));
675
+ context = JSON.parse(JSON.stringify(context || {}));
675
676
  const job = await workerPool.startJob("process-on-worker", onMessage2.bind(null, parseOnMainThread));
676
677
  job.postMessage("process", {
677
678
  input: data,
678
- options
679
+ options,
680
+ context
679
681
  });
680
682
  const result = await job.result;
681
683
  return await result.result;
@@ -3604,6 +3606,12 @@
3604
3606
  }
3605
3607
  async function parseWithLoader(loader, data, options, context) {
3606
3608
  validateWorkerVersion(loader);
3609
+ if (isResponse(data)) {
3610
+ const response = data;
3611
+ const { ok, redirected, status, statusText, type, url } = response;
3612
+ const headers = Object.fromEntries(response.headers.entries());
3613
+ context.response = { headers, ok, redirected, status, statusText, type, url };
3614
+ }
3607
3615
  data = await getArrayBufferOrStringFromData(data, loader, options);
3608
3616
  if (loader.parseTextSync && typeof data === "string") {
3609
3617
  options.dataType = "text";
@@ -3626,6 +3634,7 @@
3626
3634
  init_src();
3627
3635
  init_src2();
3628
3636
  init_normalize_loader();
3637
+ init_is_type();
3629
3638
  init_option_utils();
3630
3639
  init_get_data();
3631
3640
  init_loader_context();
@@ -3946,6 +3955,12 @@
3946
3955
  });
3947
3956
 
3948
3957
  // src/null-loader.ts
3958
+ function parseSync2(arrayBuffer, options, context) {
3959
+ if (!options.null.echoParameters)
3960
+ return null;
3961
+ context = context && JSON.parse(JSON.stringify(context));
3962
+ return { arrayBuffer, options, context };
3963
+ }
3949
3964
  var VERSION6, NullWorkerLoader, NullLoader;
3950
3965
  var init_null_loader = __esm({
3951
3966
  "src/null-loader.ts"() {
@@ -3970,16 +3985,18 @@
3970
3985
  version: VERSION6,
3971
3986
  mimeTypes: ["application/x.empty"],
3972
3987
  extensions: ["null"],
3973
- parse: async (arrayBuffer) => arrayBuffer,
3974
- parseSync: (arrayBuffer) => arrayBuffer,
3975
- parseInBatches: async function* generator(asyncIterator) {
3988
+ parse: async (arrayBuffer, options, context) => parseSync2(arrayBuffer, options, context),
3989
+ parseSync: parseSync2,
3990
+ parseInBatches: async function* generator(asyncIterator, options, context) {
3976
3991
  for await (const batch of asyncIterator) {
3977
- yield batch;
3992
+ yield parseSync2(batch, options, context);
3978
3993
  }
3979
3994
  },
3980
3995
  tests: [() => false],
3981
3996
  options: {
3982
- null: {}
3997
+ null: {
3998
+ echoParameters: false
3999
+ }
3983
4000
  }
3984
4001
  };
3985
4002
  }
@@ -19,6 +19,8 @@ var _loaderUtils = require("@loaders.gl/loader-utils");
19
19
 
20
20
  var _normalizeLoader = require("../loader-utils/normalize-loader");
21
21
 
22
+ var _isType = require("../../javascript-utils/is-type");
23
+
22
24
  var _optionUtils = require("../loader-utils/option-utils");
23
25
 
24
26
  var _getData = require("../loader-utils/get-data");
@@ -100,66 +102,83 @@ function parseWithLoader(_x5, _x6, _x7, _x8) {
100
102
 
101
103
  function _parseWithLoader() {
102
104
  _parseWithLoader = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(loader, data, options, context) {
105
+ var response, ok, redirected, status, statusText, type, url, headers;
103
106
  return _regenerator.default.wrap(function _callee2$(_context2) {
104
107
  while (1) {
105
108
  switch (_context2.prev = _context2.next) {
106
109
  case 0:
107
110
  (0, _workerUtils.validateWorkerVersion)(loader);
108
- _context2.next = 3;
111
+
112
+ if ((0, _isType.isResponse)(data)) {
113
+ response = data;
114
+ ok = response.ok, redirected = response.redirected, status = response.status, statusText = response.statusText, type = response.type, url = response.url;
115
+ headers = Object.fromEntries(response.headers.entries());
116
+ context.response = {
117
+ headers: headers,
118
+ ok: ok,
119
+ redirected: redirected,
120
+ status: status,
121
+ statusText: statusText,
122
+ type: type,
123
+ url: url
124
+ };
125
+ }
126
+
127
+ _context2.next = 4;
109
128
  return (0, _getData.getArrayBufferOrStringFromData)(data, loader, options);
110
129
 
111
- case 3:
130
+ case 4:
112
131
  data = _context2.sent;
113
132
 
114
133
  if (!(loader.parseTextSync && typeof data === 'string')) {
115
- _context2.next = 7;
134
+ _context2.next = 8;
116
135
  break;
117
136
  }
118
137
 
119
138
  options.dataType = 'text';
120
139
  return _context2.abrupt("return", loader.parseTextSync(data, options, context, loader));
121
140
 
122
- case 7:
141
+ case 8:
123
142
  if (!(0, _loaderUtils.canParseWithWorker)(loader, options)) {
124
- _context2.next = 11;
143
+ _context2.next = 12;
125
144
  break;
126
145
  }
127
146
 
128
- _context2.next = 10;
147
+ _context2.next = 11;
129
148
  return (0, _loaderUtils.parseWithWorker)(loader, data, options, context, parse);
130
149
 
131
- case 10:
150
+ case 11:
132
151
  return _context2.abrupt("return", _context2.sent);
133
152
 
134
- case 11:
153
+ case 12:
135
154
  if (!(loader.parseText && typeof data === 'string')) {
136
- _context2.next = 15;
155
+ _context2.next = 16;
137
156
  break;
138
157
  }
139
158
 
140
- _context2.next = 14;
159
+ _context2.next = 15;
141
160
  return loader.parseText(data, options, context, loader);
142
161
 
143
- case 14:
162
+ case 15:
144
163
  return _context2.abrupt("return", _context2.sent);
145
164
 
146
- case 15:
165
+ case 16:
147
166
  if (!loader.parse) {
148
- _context2.next = 19;
167
+ _context2.next = 20;
149
168
  break;
150
169
  }
151
170
 
152
- _context2.next = 18;
171
+ _context2.next = 19;
153
172
  return loader.parse(data, options, context, loader);
154
173
 
155
- case 18:
174
+ case 19:
156
175
  return _context2.abrupt("return", _context2.sent);
157
176
 
158
- case 19:
177
+ case 20:
159
178
  (0, _workerUtils.assert)(!loader.parseSync);
160
179
  throw new Error("".concat(loader.id, " loader - no parser found and worker is disabled"));
161
180
 
162
- case 21:
181
+ case 22:
163
182
  case "end":
164
183
  return _context2.stop();
165
184
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/api/parse.ts"],"names":["parse","data","loaders","options","context","Array","isArray","undefined","url","typedLoaders","candidateLoaders","loader","parseWithLoader","parseTextSync","dataType","parseText","parseSync","Error","id"],"mappings":"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","sourcesContent":["import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';\nimport {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {normalizeOptions} from '../loader-utils/option-utils';\nimport {getArrayBufferOrStringFromData} from '../loader-utils/get-data';\nimport {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';\nimport {getResourceUrlAndType} from '../utils/resource-utils';\nimport {selectLoader} from './select-loader';\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 parse(\n data: DataType | Promise<DataType>,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<any> {\n assert(!context || typeof context === 'object'); // parse no longer accepts final url\n\n // Signature: parse(data, options, context | url)\n // Uses registered loaders\n if (loaders && !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} = getResourceUrlAndType(data);\n\n // Chooses a loader (and normalizes it)\n // Also use any loaders in the context, new loaders take priority\n const typedLoaders = loaders as Loader | Loader[] | undefined;\n const candidateLoaders = getLoadersFromContext(typedLoaders, context);\n // todo hacky type cast\n const loader = await selectLoader(data as ArrayBuffer, candidateLoaders, options);\n // Note: if no loader was found, if so just return null\n if (!loader) {\n return null;\n }\n\n // Normalize options\n options = normalizeOptions(options, loader, candidateLoaders, url);\n\n // Get a context (if already present, will be unchanged)\n context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context);\n\n return await parseWithLoader(loader, data, options, context);\n}\n\n// TODO: support progress and abort\n// TODO - should accept loader.parseAsyncIterator and concatenate.\nasync function parseWithLoader(loader, data, options, context) {\n validateWorkerVersion(loader);\n\n data = await getArrayBufferOrStringFromData(data, loader, options);\n\n // First check for synchronous text parser, wrap results in promises\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n // If we have a workerUrl and the loader can parse the given options efficiently in a worker\n if (canParseWithWorker(loader, options)) {\n return await parseWithWorker(loader, data, options, context, parse);\n }\n\n // Check for asynchronous parser\n if (loader.parseText && typeof data === 'string') {\n return await loader.parseText(data, options, context, loader);\n }\n\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n // This should not happen, all sync loaders should also offer `parse` function\n assert(!loader.parseSync);\n\n // TBD - If asynchronous parser not available, return null\n throw new Error(`${loader.id} loader - no parser found and worker is disabled`);\n}\n"],"file":"parse.js"}
1
+ {"version":3,"sources":["../../../../src/lib/api/parse.ts"],"names":["parse","data","loaders","options","context","Array","isArray","undefined","url","typedLoaders","candidateLoaders","loader","parseWithLoader","response","ok","redirected","status","statusText","type","headers","Object","fromEntries","entries","parseTextSync","dataType","parseText","parseSync","Error","id"],"mappings":"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","sourcesContent":["import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';\nimport {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {isResponse} from '../../javascript-utils/is-type';\nimport {normalizeOptions} from '../loader-utils/option-utils';\nimport {getArrayBufferOrStringFromData} from '../loader-utils/get-data';\nimport {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';\nimport {getResourceUrlAndType} from '../utils/resource-utils';\nimport {selectLoader} from './select-loader';\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 parse(\n data: DataType | Promise<DataType>,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<any> {\n assert(!context || typeof context === 'object'); // parse no longer accepts final url\n\n // Signature: parse(data, options, context | url)\n // Uses registered loaders\n if (loaders && !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} = getResourceUrlAndType(data);\n\n // Chooses a loader (and normalizes it)\n // Also use any loaders in the context, new loaders take priority\n const typedLoaders = loaders as Loader | Loader[] | undefined;\n const candidateLoaders = getLoadersFromContext(typedLoaders, context);\n // todo hacky type cast\n const loader = await selectLoader(data as ArrayBuffer, candidateLoaders, options);\n // Note: if no loader was found, if so just return null\n if (!loader) {\n return null;\n }\n\n // Normalize options\n options = normalizeOptions(options, loader, candidateLoaders, url);\n\n // Get a context (if already present, will be unchanged)\n context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context);\n\n return await parseWithLoader(loader, data, options, context);\n}\n\n// TODO: support progress and abort\n// TODO - should accept loader.parseAsyncIterator and concatenate.\nasync function parseWithLoader(loader, data, options, context) {\n validateWorkerVersion(loader);\n\n if (isResponse(data)) {\n // Serialize to support passing the response to web worker\n const response = data as Response;\n const {ok, redirected, status, statusText, type, url} = response;\n const headers = Object.fromEntries(response.headers.entries());\n context.response = {headers, ok, redirected, status, statusText, type, url};\n }\n\n data = await getArrayBufferOrStringFromData(data, loader, options);\n\n // First check for synchronous text parser, wrap results in promises\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n // If we have a workerUrl and the loader can parse the given options efficiently in a worker\n if (canParseWithWorker(loader, options)) {\n return await parseWithWorker(loader, data, options, context, parse);\n }\n\n // Check for asynchronous parser\n if (loader.parseText && typeof data === 'string') {\n return await loader.parseText(data, options, context, loader);\n }\n\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n // This should not happen, all sync loaders should also offer `parse` function\n assert(!loader.parseSync);\n\n // TBD - If asynchronous parser not available, return null\n throw new Error(`${loader.id} loader - no parser found and worker is disabled`);\n}\n"],"file":"parse.js"}
@@ -7,7 +7,7 @@ exports.default = void 0;
7
7
 
8
8
  var _log = require("./utils/log");
9
9
 
10
- var version = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : '';
10
+ var version = typeof "3.2.0" !== 'undefined' ? "3.2.0" : '';
11
11
 
12
12
  if (!globalThis.loaders) {
13
13
  _log.log.log(1, "loaders.gl ".concat(version))();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/init.ts"],"names":["version","globalThis","loaders","log","Object","assign","VERSION"],"mappings":";;;;;;;AACA;;AAGA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,EAAnE;;AAGA,IAAI,CAACC,UAAU,CAACC,OAAhB,EAAyB;AACvBC,WAAIA,GAAJ,CAAQ,CAAR,uBAAyBH,OAAzB;;AAEAC,EAAAA,UAAU,CAACC,OAAX,GAAqBE,MAAM,CAACC,MAAP,CAAcJ,UAAU,CAACC,OAAX,IAAsB,EAApC,EAAwC;AAC3DI,IAAAA,OAAO,EAAEN,OADkD;AAE3DG,IAAAA,GAAG,EAAHA;AAF2D,GAAxC,CAArB;AAID;;eAEcF,UAAU,CAACC,O","sourcesContent":["// loaders.gl, MIT license\nimport {log} from './utils/log';\n\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';\n\n// @ts-ignore\nif (!globalThis.loaders) {\n log.log(1, `loaders.gl ${version}`)();\n\n globalThis.loaders = Object.assign(globalThis.loaders || {}, {\n VERSION: version,\n log\n });\n}\n// @ts-ignore\nexport default globalThis.loaders;\n"],"file":"init.js"}
1
+ {"version":3,"sources":["../../../src/lib/init.ts"],"names":["version","globalThis","loaders","log","Object","assign","VERSION"],"mappings":";;;;;;;AACA;;AAGA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,EAAnE;;AAGA,IAAI,CAACC,UAAU,CAACC,OAAhB,EAAyB;AACvBC,WAAIA,GAAJ,CAAQ,CAAR,uBAAyBH,OAAzB;;AAEAC,EAAAA,UAAU,CAACC,OAAX,GAAqBE,MAAM,CAACC,MAAP,CAAcJ,UAAU,CAACC,OAAX,IAAsB,EAApC,EAAwC;AAC3DI,IAAAA,OAAO,EAAEN,OADkD;AAE3DG,IAAAA,GAAG,EAAHA;AAF2D,GAAxC,CAArB;AAID;;eAEcF,UAAU,CAACC,O","sourcesContent":["// loaders.gl, MIT license\nimport {log} from './utils/log';\n\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';\n\n// @ts-ignore\nif (!globalThis.loaders) {\n log.log(1, `loaders.gl ${version}`)();\n\n globalThis.loaders = Object.assign(globalThis.loaders || {}, {\n VERSION: version,\n log\n });\n}\n// @ts-ignore\nexport default globalThis.loaders;\n"],"file":"init.js"}
@@ -17,7 +17,7 @@ var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helper
17
17
 
18
18
  var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncIterator"));
19
19
 
20
- var VERSION = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
20
+ var VERSION = typeof "3.2.0" !== 'undefined' ? "3.2.0" : 'latest';
21
21
  var NullWorkerLoader = {
22
22
  name: 'Null loader',
23
23
  id: 'null',
@@ -34,6 +34,17 @@ var NullWorkerLoader = {
34
34
  }
35
35
  };
36
36
  exports.NullWorkerLoader = NullWorkerLoader;
37
+
38
+ function parseSync(arrayBuffer, options, context) {
39
+ if (!options.null.echoParameters) return null;
40
+ context = context && JSON.parse(JSON.stringify(context));
41
+ return {
42
+ arrayBuffer: arrayBuffer,
43
+ options: options,
44
+ context: context
45
+ };
46
+ }
47
+
37
48
  var NullLoader = {
38
49
  name: 'Null loader',
39
50
  id: 'null',
@@ -42,12 +53,12 @@ var NullLoader = {
42
53
  mimeTypes: ['application/x.empty'],
43
54
  extensions: ['null'],
44
55
  parse: function () {
45
- var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
56
+ var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options, context) {
46
57
  return _regenerator.default.wrap(function _callee$(_context) {
47
58
  while (1) {
48
59
  switch (_context.prev = _context.next) {
49
60
  case 0:
50
- return _context.abrupt("return", arrayBuffer);
61
+ return _context.abrupt("return", parseSync(arrayBuffer, options, context));
51
62
 
52
63
  case 1:
53
64
  case "end":
@@ -57,17 +68,15 @@ var NullLoader = {
57
68
  }, _callee);
58
69
  }));
59
70
 
60
- function parse(_x2) {
71
+ function parse(_x4, _x5, _x6) {
61
72
  return _parse.apply(this, arguments);
62
73
  }
63
74
 
64
75
  return parse;
65
76
  }(),
66
- parseSync: function parseSync(arrayBuffer) {
67
- return arrayBuffer;
68
- },
77
+ parseSync: parseSync,
69
78
  parseInBatches: function () {
70
- var _generator = (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee2(asyncIterator) {
79
+ var _generator = (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee2(asyncIterator, options, context) {
71
80
  var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, batch;
72
81
 
73
82
  return _regenerator.default.wrap(function _callee2$(_context2) {
@@ -99,7 +108,7 @@ var NullLoader = {
99
108
 
100
109
  batch = _value;
101
110
  _context2.next = 15;
102
- return batch;
111
+ return parseSync(batch, options, context);
103
112
 
104
113
  case 15:
105
114
  _iteratorNormalCompletion = true;
@@ -152,7 +161,7 @@ var NullLoader = {
152
161
  }, _callee2, null, [[2, 20, 24, 34], [25,, 29, 33]]);
153
162
  }));
154
163
 
155
- function generator(_x) {
164
+ function generator(_x, _x2, _x3) {
156
165
  return _generator.apply(this, arguments);
157
166
  }
158
167
 
@@ -162,7 +171,9 @@ var NullLoader = {
162
171
  return false;
163
172
  }],
164
173
  options: {
165
- null: {}
174
+ null: {
175
+ echoParameters: false
176
+ }
166
177
  }
167
178
  };
168
179
  exports.NullLoader = NullLoader;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/null-loader.ts"],"names":["VERSION","NullWorkerLoader","name","id","module","version","worker","mimeTypes","extensions","tests","options","null","NullLoader","parse","arrayBuffer","parseSync","parseInBatches","asyncIterator","batch","generator"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAOO,IAAMC,gBAAwB,GAAG;AACtCC,EAAAA,IAAI,EAAE,aADgC;AAEtCC,EAAAA,EAAE,EAAE,MAFkC;AAGtCC,EAAAA,MAAM,EAAE,MAH8B;AAItCC,EAAAA,OAAO,EAAEL,OAJ6B;AAKtCM,EAAAA,MAAM,EAAE,IAL8B;AAMtCC,EAAAA,SAAS,EAAE,CAAC,qBAAD,CAN2B;AAOtCC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAP0B;AAQtCC,EAAAA,KAAK,EAAE,CAAC;AAAA,WAAM,KAAN;AAAA,GAAD,CAR+B;AAStCC,EAAAA,OAAO,EAAE;AACPC,IAAAA,IAAI,EAAE;AADC;AAT6B,CAAjC;;AAiBA,IAAMC,UAA4B,GAAG;AAC1CV,EAAAA,IAAI,EAAE,aADoC;AAE1CC,EAAAA,EAAE,EAAE,MAFsC;AAG1CC,EAAAA,MAAM,EAAE,MAHkC;AAI1CC,EAAAA,OAAO,EAAEL,OAJiC;AAK1CO,EAAAA,SAAS,EAAE,CAAC,qBAAD,CAL+B;AAM1CC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAN8B;AAO1CK,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP;AAAA;AAAA;AAAA;AAAA;AAAA,+CAAuBA,WAAvB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAPqC;AAQ1CC,EAAAA,SAAS,EAAE,mBAACD,WAAD;AAAA,WAAiBA,WAAjB;AAAA,GAR+B;AAS1CE,EAAAA,cAAc;AAAA,iFAAE,kBAA0BC,aAA1B;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uDACYA,aADZ;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AACGC,cAAAA,KADH;AAAA;AAEZ,qBAAMA,KAAN;;AAFY;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA,aAAkBC,SAAlB;AAAA;AAAA;;AAAA,WAAkBA,SAAlB;AAAA,KAT4B;AAc1CV,EAAAA,KAAK,EAAE,CAAC;AAAA,WAAM,KAAN;AAAA,GAAD,CAdmC;AAe1CC,EAAAA,OAAO,EAAE;AACPC,IAAAA,IAAI,EAAE;AADC;AAfiC,CAArC","sourcesContent":["// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nimport {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\n\n/**\n * Loads any data and returns null (or optionally passes through data unparsed)\n */\nexport const NullWorkerLoader: Loader = {\n name: 'Null loader',\n id: 'null',\n module: 'core',\n version: VERSION,\n worker: true,\n mimeTypes: ['application/x.empty'],\n extensions: ['null'],\n tests: [() => false],\n options: {\n null: {}\n }\n};\n\n/**\n * Loads any data and returns null (or optionally passes through data unparsed)\n */\nexport const NullLoader: LoaderWithParser = {\n name: 'Null loader',\n id: 'null',\n module: 'core',\n version: VERSION,\n mimeTypes: ['application/x.empty'],\n extensions: ['null'],\n parse: async (arrayBuffer) => arrayBuffer,\n parseSync: (arrayBuffer) => arrayBuffer,\n parseInBatches: async function* generator(asyncIterator) {\n for await (const batch of asyncIterator) {\n yield batch;\n }\n },\n tests: [() => false],\n options: {\n null: {}\n }\n};\n"],"file":"null-loader.js"}
1
+ {"version":3,"sources":["../../src/null-loader.ts"],"names":["VERSION","NullWorkerLoader","name","id","module","version","worker","mimeTypes","extensions","tests","options","null","parseSync","arrayBuffer","context","echoParameters","JSON","parse","stringify","NullLoader","parseInBatches","asyncIterator","batch","generator"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;AAOO,IAAMC,gBAAwB,GAAG;AACtCC,EAAAA,IAAI,EAAE,aADgC;AAEtCC,EAAAA,EAAE,EAAE,MAFkC;AAGtCC,EAAAA,MAAM,EAAE,MAH8B;AAItCC,EAAAA,OAAO,EAAEL,OAJ6B;AAKtCM,EAAAA,MAAM,EAAE,IAL8B;AAMtCC,EAAAA,SAAS,EAAE,CAAC,qBAAD,CAN2B;AAOtCC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAP0B;AAQtCC,EAAAA,KAAK,EAAE,CAAC;AAAA,WAAM,KAAN;AAAA,GAAD,CAR+B;AAStCC,EAAAA,OAAO,EAAE;AACPC,IAAAA,IAAI,EAAE;AADC;AAT6B,CAAjC;;;AAkBP,SAASC,SAAT,CAAmBC,WAAnB,EAAgCH,OAAhC,EAAyCI,OAAzC,EAAkD;AAChD,MAAI,CAACJ,OAAO,CAACC,IAAR,CAAaI,cAAlB,EAAkC,OAAO,IAAP;AAClCD,EAAAA,OAAO,GAAGA,OAAO,IAAIE,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAeJ,OAAf,CAAX,CAArB;AACA,SAAO;AAACD,IAAAA,WAAW,EAAXA,WAAD;AAAcH,IAAAA,OAAO,EAAPA,OAAd;AAAuBI,IAAAA,OAAO,EAAPA;AAAvB,GAAP;AACD;;AAKM,IAAMK,UAA4B,GAAG;AAC1CjB,EAAAA,IAAI,EAAE,aADoC;AAE1CC,EAAAA,EAAE,EAAE,MAFsC;AAG1CC,EAAAA,MAAM,EAAE,MAHkC;AAI1CC,EAAAA,OAAO,EAAEL,OAJiC;AAK1CO,EAAAA,SAAS,EAAE,CAAC,qBAAD,CAL+B;AAM1CC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAN8B;AAO1CS,EAAAA,KAAK;AAAA,2EAAE,iBAAOJ,WAAP,EAAoBH,OAApB,EAA6BI,OAA7B;AAAA;AAAA;AAAA;AAAA;AAAA,+CAAyCF,SAAS,CAACC,WAAD,EAAcH,OAAd,EAAuBI,OAAvB,CAAlD;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAPqC;AAQ1CF,EAAAA,SAAS,EAATA,SAR0C;AAS1CQ,EAAAA,cAAc;AAAA,iFAAE,kBAA0BC,aAA1B,EAAyCX,OAAzC,EAAkDI,OAAlD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uDACYO,aADZ;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AACGC,cAAAA,KADH;AAAA;AAEZ,qBAAMV,SAAS,CAACU,KAAD,EAAQZ,OAAR,EAAiBI,OAAjB,CAAf;;AAFY;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA,aAAkBS,SAAlB;AAAA;AAAA;;AAAA,WAAkBA,SAAlB;AAAA,KAT4B;AAc1Cd,EAAAA,KAAK,EAAE,CAAC;AAAA,WAAM,KAAN;AAAA,GAAD,CAdmC;AAe1CC,EAAAA,OAAO,EAAE;AACPC,IAAAA,IAAI,EAAE;AACJI,MAAAA,cAAc,EAAE;AADZ;AADC;AAfiC,CAArC","sourcesContent":["// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nimport {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\n\n/**\n * Loads any data and returns null (or optionally passes through data unparsed)\n */\nexport const NullWorkerLoader: Loader = {\n name: 'Null loader',\n id: 'null',\n module: 'core',\n version: VERSION,\n worker: true,\n mimeTypes: ['application/x.empty'],\n extensions: ['null'],\n tests: [() => false],\n options: {\n null: {}\n }\n};\n\n/**\n * Returns arguments passed to the parse API in a format that can be transfered to a\n * web worker. The `context` parameter is stripped using JSON.stringify & parse.\n */\nfunction parseSync(arrayBuffer, options, context) {\n if (!options.null.echoParameters) return null;\n context = context && JSON.parse(JSON.stringify(context));\n return {arrayBuffer, options, context};\n}\n\n/**\n * Loads any data and returns null (or optionally passes through data unparsed)\n */\nexport const NullLoader: LoaderWithParser = {\n name: 'Null loader',\n id: 'null',\n module: 'core',\n version: VERSION,\n mimeTypes: ['application/x.empty'],\n extensions: ['null'],\n parse: async (arrayBuffer, options, context) => parseSync(arrayBuffer, options, context),\n parseSync,\n parseInBatches: async function* generator(asyncIterator, options, context) {\n for await (const batch of asyncIterator) {\n yield parseSync(batch, options, context);\n }\n },\n tests: [() => false],\n options: {\n null: {\n echoParameters: false\n }\n }\n};\n"],"file":"null-loader.js"}
@@ -1,6 +1,7 @@
1
1
  import { assert, validateWorkerVersion } from '@loaders.gl/worker-utils';
2
2
  import { parseWithWorker, canParseWithWorker } from '@loaders.gl/loader-utils';
3
3
  import { isLoaderObject } from '../loader-utils/normalize-loader';
4
+ import { isResponse } from '../../javascript-utils/is-type';
4
5
  import { normalizeOptions } from '../loader-utils/option-utils';
5
6
  import { getArrayBufferOrStringFromData } from '../loader-utils/get-data';
6
7
  import { getLoaderContext, getLoadersFromContext } from '../loader-utils/loader-context';
@@ -39,6 +40,29 @@ export async function parse(data, loaders, options, context) {
39
40
 
40
41
  async function parseWithLoader(loader, data, options, context) {
41
42
  validateWorkerVersion(loader);
43
+
44
+ if (isResponse(data)) {
45
+ const response = data;
46
+ const {
47
+ ok,
48
+ redirected,
49
+ status,
50
+ statusText,
51
+ type,
52
+ url
53
+ } = response;
54
+ const headers = Object.fromEntries(response.headers.entries());
55
+ context.response = {
56
+ headers,
57
+ ok,
58
+ redirected,
59
+ status,
60
+ statusText,
61
+ type,
62
+ url
63
+ };
64
+ }
65
+
42
66
  data = await getArrayBufferOrStringFromData(data, loader, options);
43
67
 
44
68
  if (loader.parseTextSync && typeof data === 'string') {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/api/parse.ts"],"names":["assert","validateWorkerVersion","parseWithWorker","canParseWithWorker","isLoaderObject","normalizeOptions","getArrayBufferOrStringFromData","getLoaderContext","getLoadersFromContext","getResourceUrlAndType","selectLoader","parse","data","loaders","options","context","Array","isArray","undefined","url","typedLoaders","candidateLoaders","loader","parseWithLoader","parseTextSync","dataType","parseText","parseSync","Error","id"],"mappings":"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","sourcesContent":["import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';\nimport {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {normalizeOptions} from '../loader-utils/option-utils';\nimport {getArrayBufferOrStringFromData} from '../loader-utils/get-data';\nimport {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';\nimport {getResourceUrlAndType} from '../utils/resource-utils';\nimport {selectLoader} from './select-loader';\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 parse(\n data: DataType | Promise<DataType>,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<any> {\n assert(!context || typeof context === 'object'); // parse no longer accepts final url\n\n // Signature: parse(data, options, context | url)\n // Uses registered loaders\n if (loaders && !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} = getResourceUrlAndType(data);\n\n // Chooses a loader (and normalizes it)\n // Also use any loaders in the context, new loaders take priority\n const typedLoaders = loaders as Loader | Loader[] | undefined;\n const candidateLoaders = getLoadersFromContext(typedLoaders, context);\n // todo hacky type cast\n const loader = await selectLoader(data as ArrayBuffer, candidateLoaders, options);\n // Note: if no loader was found, if so just return null\n if (!loader) {\n return null;\n }\n\n // Normalize options\n options = normalizeOptions(options, loader, candidateLoaders, url);\n\n // Get a context (if already present, will be unchanged)\n context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context);\n\n return await parseWithLoader(loader, data, options, context);\n}\n\n// TODO: support progress and abort\n// TODO - should accept loader.parseAsyncIterator and concatenate.\nasync function parseWithLoader(loader, data, options, context) {\n validateWorkerVersion(loader);\n\n data = await getArrayBufferOrStringFromData(data, loader, options);\n\n // First check for synchronous text parser, wrap results in promises\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n // If we have a workerUrl and the loader can parse the given options efficiently in a worker\n if (canParseWithWorker(loader, options)) {\n return await parseWithWorker(loader, data, options, context, parse);\n }\n\n // Check for asynchronous parser\n if (loader.parseText && typeof data === 'string') {\n return await loader.parseText(data, options, context, loader);\n }\n\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n // This should not happen, all sync loaders should also offer `parse` function\n assert(!loader.parseSync);\n\n // TBD - If asynchronous parser not available, return null\n throw new Error(`${loader.id} loader - no parser found and worker is disabled`);\n}\n"],"file":"parse.js"}
1
+ {"version":3,"sources":["../../../../src/lib/api/parse.ts"],"names":["assert","validateWorkerVersion","parseWithWorker","canParseWithWorker","isLoaderObject","isResponse","normalizeOptions","getArrayBufferOrStringFromData","getLoaderContext","getLoadersFromContext","getResourceUrlAndType","selectLoader","parse","data","loaders","options","context","Array","isArray","undefined","url","typedLoaders","candidateLoaders","loader","parseWithLoader","response","ok","redirected","status","statusText","type","headers","Object","fromEntries","entries","parseTextSync","dataType","parseText","parseSync","Error","id"],"mappings":"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","sourcesContent":["import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';\nimport {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {isResponse} from '../../javascript-utils/is-type';\nimport {normalizeOptions} from '../loader-utils/option-utils';\nimport {getArrayBufferOrStringFromData} from '../loader-utils/get-data';\nimport {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';\nimport {getResourceUrlAndType} from '../utils/resource-utils';\nimport {selectLoader} from './select-loader';\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 parse(\n data: DataType | Promise<DataType>,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<any> {\n assert(!context || typeof context === 'object'); // parse no longer accepts final url\n\n // Signature: parse(data, options, context | url)\n // Uses registered loaders\n if (loaders && !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} = getResourceUrlAndType(data);\n\n // Chooses a loader (and normalizes it)\n // Also use any loaders in the context, new loaders take priority\n const typedLoaders = loaders as Loader | Loader[] | undefined;\n const candidateLoaders = getLoadersFromContext(typedLoaders, context);\n // todo hacky type cast\n const loader = await selectLoader(data as ArrayBuffer, candidateLoaders, options);\n // Note: if no loader was found, if so just return null\n if (!loader) {\n return null;\n }\n\n // Normalize options\n options = normalizeOptions(options, loader, candidateLoaders, url);\n\n // Get a context (if already present, will be unchanged)\n context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context);\n\n return await parseWithLoader(loader, data, options, context);\n}\n\n// TODO: support progress and abort\n// TODO - should accept loader.parseAsyncIterator and concatenate.\nasync function parseWithLoader(loader, data, options, context) {\n validateWorkerVersion(loader);\n\n if (isResponse(data)) {\n // Serialize to support passing the response to web worker\n const response = data as Response;\n const {ok, redirected, status, statusText, type, url} = response;\n const headers = Object.fromEntries(response.headers.entries());\n context.response = {headers, ok, redirected, status, statusText, type, url};\n }\n\n data = await getArrayBufferOrStringFromData(data, loader, options);\n\n // First check for synchronous text parser, wrap results in promises\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n // If we have a workerUrl and the loader can parse the given options efficiently in a worker\n if (canParseWithWorker(loader, options)) {\n return await parseWithWorker(loader, data, options, context, parse);\n }\n\n // Check for asynchronous parser\n if (loader.parseText && typeof data === 'string') {\n return await loader.parseText(data, options, context, loader);\n }\n\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n // This should not happen, all sync loaders should also offer `parse` function\n assert(!loader.parseSync);\n\n // TBD - If asynchronous parser not available, return null\n throw new Error(`${loader.id} loader - no parser found and worker is disabled`);\n}\n"],"file":"parse.js"}
@@ -1,5 +1,5 @@
1
1
  import { log } from './utils/log';
2
- const version = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : '';
2
+ const version = typeof "3.2.0" !== 'undefined' ? "3.2.0" : '';
3
3
 
4
4
  if (!globalThis.loaders) {
5
5
  log.log(1, "loaders.gl ".concat(version))();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/init.ts"],"names":["log","version","globalThis","loaders","Object","assign","VERSION"],"mappings":"AACA,SAAQA,GAAR,QAAkB,aAAlB;AAGA,MAAMC,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,EAAnE;;AAGA,IAAI,CAACC,UAAU,CAACC,OAAhB,EAAyB;AACvBH,EAAAA,GAAG,CAACA,GAAJ,CAAQ,CAAR,uBAAyBC,OAAzB;AAEAC,EAAAA,UAAU,CAACC,OAAX,GAAqBC,MAAM,CAACC,MAAP,CAAcH,UAAU,CAACC,OAAX,IAAsB,EAApC,EAAwC;AAC3DG,IAAAA,OAAO,EAAEL,OADkD;AAE3DD,IAAAA;AAF2D,GAAxC,CAArB;AAID;;AAED,eAAeE,UAAU,CAACC,OAA1B","sourcesContent":["// loaders.gl, MIT license\nimport {log} from './utils/log';\n\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';\n\n// @ts-ignore\nif (!globalThis.loaders) {\n log.log(1, `loaders.gl ${version}`)();\n\n globalThis.loaders = Object.assign(globalThis.loaders || {}, {\n VERSION: version,\n log\n });\n}\n// @ts-ignore\nexport default globalThis.loaders;\n"],"file":"init.js"}
1
+ {"version":3,"sources":["../../../src/lib/init.ts"],"names":["log","version","globalThis","loaders","Object","assign","VERSION"],"mappings":"AACA,SAAQA,GAAR,QAAkB,aAAlB;AAGA,MAAMC,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,EAAnE;;AAGA,IAAI,CAACC,UAAU,CAACC,OAAhB,EAAyB;AACvBH,EAAAA,GAAG,CAACA,GAAJ,CAAQ,CAAR,uBAAyBC,OAAzB;AAEAC,EAAAA,UAAU,CAACC,OAAX,GAAqBC,MAAM,CAACC,MAAP,CAAcH,UAAU,CAACC,OAAX,IAAsB,EAApC,EAAwC;AAC3DG,IAAAA,OAAO,EAAEL,OADkD;AAE3DD,IAAAA;AAF2D,GAAxC,CAArB;AAID;;AAED,eAAeE,UAAU,CAACC,OAA1B","sourcesContent":["// loaders.gl, MIT license\nimport {log} from './utils/log';\n\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';\n\n// @ts-ignore\nif (!globalThis.loaders) {\n log.log(1, `loaders.gl ${version}`)();\n\n globalThis.loaders = Object.assign(globalThis.loaders || {}, {\n VERSION: version,\n log\n });\n}\n// @ts-ignore\nexport default globalThis.loaders;\n"],"file":"init.js"}
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
1
+ const VERSION = typeof "3.2.0" !== 'undefined' ? "3.2.0" : 'latest';
2
2
  export const NullWorkerLoader = {
3
3
  name: 'Null loader',
4
4
  id: 'null',
@@ -12,6 +12,17 @@ export const NullWorkerLoader = {
12
12
  null: {}
13
13
  }
14
14
  };
15
+
16
+ function parseSync(arrayBuffer, options, context) {
17
+ if (!options.null.echoParameters) return null;
18
+ context = context && JSON.parse(JSON.stringify(context));
19
+ return {
20
+ arrayBuffer,
21
+ options,
22
+ context
23
+ };
24
+ }
25
+
15
26
  export const NullLoader = {
16
27
  name: 'Null loader',
17
28
  id: 'null',
@@ -19,16 +30,18 @@ export const NullLoader = {
19
30
  version: VERSION,
20
31
  mimeTypes: ['application/x.empty'],
21
32
  extensions: ['null'],
22
- parse: async arrayBuffer => arrayBuffer,
23
- parseSync: arrayBuffer => arrayBuffer,
24
- parseInBatches: async function* generator(asyncIterator) {
33
+ parse: async (arrayBuffer, options, context) => parseSync(arrayBuffer, options, context),
34
+ parseSync,
35
+ parseInBatches: async function* generator(asyncIterator, options, context) {
25
36
  for await (const batch of asyncIterator) {
26
- yield batch;
37
+ yield parseSync(batch, options, context);
27
38
  }
28
39
  },
29
40
  tests: [() => false],
30
41
  options: {
31
- null: {}
42
+ null: {
43
+ echoParameters: false
44
+ }
32
45
  }
33
46
  };
34
47
  //# sourceMappingURL=null-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/null-loader.ts"],"names":["VERSION","NullWorkerLoader","name","id","module","version","worker","mimeTypes","extensions","tests","options","null","NullLoader","parse","arrayBuffer","parseSync","parseInBatches","generator","asyncIterator","batch"],"mappings":"AAEA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAOA,OAAO,MAAMC,gBAAwB,GAAG;AACtCC,EAAAA,IAAI,EAAE,aADgC;AAEtCC,EAAAA,EAAE,EAAE,MAFkC;AAGtCC,EAAAA,MAAM,EAAE,MAH8B;AAItCC,EAAAA,OAAO,EAAEL,OAJ6B;AAKtCM,EAAAA,MAAM,EAAE,IAL8B;AAMtCC,EAAAA,SAAS,EAAE,CAAC,qBAAD,CAN2B;AAOtCC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAP0B;AAQtCC,EAAAA,KAAK,EAAE,CAAC,MAAM,KAAP,CAR+B;AAStCC,EAAAA,OAAO,EAAE;AACPC,IAAAA,IAAI,EAAE;AADC;AAT6B,CAAjC;AAiBP,OAAO,MAAMC,UAA4B,GAAG;AAC1CV,EAAAA,IAAI,EAAE,aADoC;AAE1CC,EAAAA,EAAE,EAAE,MAFsC;AAG1CC,EAAAA,MAAM,EAAE,MAHkC;AAI1CC,EAAAA,OAAO,EAAEL,OAJiC;AAK1CO,EAAAA,SAAS,EAAE,CAAC,qBAAD,CAL+B;AAM1CC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAN8B;AAO1CK,EAAAA,KAAK,EAAE,MAAOC,WAAP,IAAuBA,WAPY;AAQ1CC,EAAAA,SAAS,EAAGD,WAAD,IAAiBA,WARc;AAS1CE,EAAAA,cAAc,EAAE,gBAAgBC,SAAhB,CAA0BC,aAA1B,EAAyC;AACvD,eAAW,MAAMC,KAAjB,IAA0BD,aAA1B,EAAyC;AACvC,YAAMC,KAAN;AACD;AACF,GAbyC;AAc1CV,EAAAA,KAAK,EAAE,CAAC,MAAM,KAAP,CAdmC;AAe1CC,EAAAA,OAAO,EAAE;AACPC,IAAAA,IAAI,EAAE;AADC;AAfiC,CAArC","sourcesContent":["// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nimport {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\n\n/**\n * Loads any data and returns null (or optionally passes through data unparsed)\n */\nexport const NullWorkerLoader: Loader = {\n name: 'Null loader',\n id: 'null',\n module: 'core',\n version: VERSION,\n worker: true,\n mimeTypes: ['application/x.empty'],\n extensions: ['null'],\n tests: [() => false],\n options: {\n null: {}\n }\n};\n\n/**\n * Loads any data and returns null (or optionally passes through data unparsed)\n */\nexport const NullLoader: LoaderWithParser = {\n name: 'Null loader',\n id: 'null',\n module: 'core',\n version: VERSION,\n mimeTypes: ['application/x.empty'],\n extensions: ['null'],\n parse: async (arrayBuffer) => arrayBuffer,\n parseSync: (arrayBuffer) => arrayBuffer,\n parseInBatches: async function* generator(asyncIterator) {\n for await (const batch of asyncIterator) {\n yield batch;\n }\n },\n tests: [() => false],\n options: {\n null: {}\n }\n};\n"],"file":"null-loader.js"}
1
+ {"version":3,"sources":["../../src/null-loader.ts"],"names":["VERSION","NullWorkerLoader","name","id","module","version","worker","mimeTypes","extensions","tests","options","null","parseSync","arrayBuffer","context","echoParameters","JSON","parse","stringify","NullLoader","parseInBatches","generator","asyncIterator","batch"],"mappings":"AAEA,MAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;AAOA,OAAO,MAAMC,gBAAwB,GAAG;AACtCC,EAAAA,IAAI,EAAE,aADgC;AAEtCC,EAAAA,EAAE,EAAE,MAFkC;AAGtCC,EAAAA,MAAM,EAAE,MAH8B;AAItCC,EAAAA,OAAO,EAAEL,OAJ6B;AAKtCM,EAAAA,MAAM,EAAE,IAL8B;AAMtCC,EAAAA,SAAS,EAAE,CAAC,qBAAD,CAN2B;AAOtCC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAP0B;AAQtCC,EAAAA,KAAK,EAAE,CAAC,MAAM,KAAP,CAR+B;AAStCC,EAAAA,OAAO,EAAE;AACPC,IAAAA,IAAI,EAAE;AADC;AAT6B,CAAjC;;AAkBP,SAASC,SAAT,CAAmBC,WAAnB,EAAgCH,OAAhC,EAAyCI,OAAzC,EAAkD;AAChD,MAAI,CAACJ,OAAO,CAACC,IAAR,CAAaI,cAAlB,EAAkC,OAAO,IAAP;AAClCD,EAAAA,OAAO,GAAGA,OAAO,IAAIE,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAeJ,OAAf,CAAX,CAArB;AACA,SAAO;AAACD,IAAAA,WAAD;AAAcH,IAAAA,OAAd;AAAuBI,IAAAA;AAAvB,GAAP;AACD;;AAKD,OAAO,MAAMK,UAA4B,GAAG;AAC1CjB,EAAAA,IAAI,EAAE,aADoC;AAE1CC,EAAAA,EAAE,EAAE,MAFsC;AAG1CC,EAAAA,MAAM,EAAE,MAHkC;AAI1CC,EAAAA,OAAO,EAAEL,OAJiC;AAK1CO,EAAAA,SAAS,EAAE,CAAC,qBAAD,CAL+B;AAM1CC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAN8B;AAO1CS,EAAAA,KAAK,EAAE,OAAOJ,WAAP,EAAoBH,OAApB,EAA6BI,OAA7B,KAAyCF,SAAS,CAACC,WAAD,EAAcH,OAAd,EAAuBI,OAAvB,CAPf;AAQ1CF,EAAAA,SAR0C;AAS1CQ,EAAAA,cAAc,EAAE,gBAAgBC,SAAhB,CAA0BC,aAA1B,EAAyCZ,OAAzC,EAAkDI,OAAlD,EAA2D;AACzE,eAAW,MAAMS,KAAjB,IAA0BD,aAA1B,EAAyC;AACvC,YAAMV,SAAS,CAACW,KAAD,EAAQb,OAAR,EAAiBI,OAAjB,CAAf;AACD;AACF,GAbyC;AAc1CL,EAAAA,KAAK,EAAE,CAAC,MAAM,KAAP,CAdmC;AAe1CC,EAAAA,OAAO,EAAE;AACPC,IAAAA,IAAI,EAAE;AACJI,MAAAA,cAAc,EAAE;AADZ;AADC;AAfiC,CAArC","sourcesContent":["// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nimport {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\n\n/**\n * Loads any data and returns null (or optionally passes through data unparsed)\n */\nexport const NullWorkerLoader: Loader = {\n name: 'Null loader',\n id: 'null',\n module: 'core',\n version: VERSION,\n worker: true,\n mimeTypes: ['application/x.empty'],\n extensions: ['null'],\n tests: [() => false],\n options: {\n null: {}\n }\n};\n\n/**\n * Returns arguments passed to the parse API in a format that can be transfered to a\n * web worker. The `context` parameter is stripped using JSON.stringify & parse.\n */\nfunction parseSync(arrayBuffer, options, context) {\n if (!options.null.echoParameters) return null;\n context = context && JSON.parse(JSON.stringify(context));\n return {arrayBuffer, options, context};\n}\n\n/**\n * Loads any data and returns null (or optionally passes through data unparsed)\n */\nexport const NullLoader: LoaderWithParser = {\n name: 'Null loader',\n id: 'null',\n module: 'core',\n version: VERSION,\n mimeTypes: ['application/x.empty'],\n extensions: ['null'],\n parse: async (arrayBuffer, options, context) => parseSync(arrayBuffer, options, context),\n parseSync,\n parseInBatches: async function* generator(asyncIterator, options, context) {\n for await (const batch of asyncIterator) {\n yield parseSync(batch, options, context);\n }\n },\n tests: [() => false],\n options: {\n null: {\n echoParameters: false\n }\n }\n};\n"],"file":"null-loader.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/lib/api/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAU7F;;;;;;GAMG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,aAAa,EAC3C,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,GAAG,CAAC,CAmCd"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/lib/api/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAW7F;;;;;;GAMG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,aAAa,EAC3C,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,GAAG,CAAC,CAmCd"}
@@ -4,6 +4,7 @@ exports.parse = void 0;
4
4
  const worker_utils_1 = require("@loaders.gl/worker-utils");
5
5
  const loader_utils_1 = require("@loaders.gl/loader-utils");
6
6
  const normalize_loader_1 = require("../loader-utils/normalize-loader");
7
+ const is_type_1 = require("../../javascript-utils/is-type");
7
8
  const option_utils_1 = require("../loader-utils/option-utils");
8
9
  const get_data_1 = require("../loader-utils/get-data");
9
10
  const loader_context_1 = require("../loader-utils/loader-context");
@@ -50,6 +51,13 @@ exports.parse = parse;
50
51
  // TODO - should accept loader.parseAsyncIterator and concatenate.
51
52
  async function parseWithLoader(loader, data, options, context) {
52
53
  (0, worker_utils_1.validateWorkerVersion)(loader);
54
+ if ((0, is_type_1.isResponse)(data)) {
55
+ // Serialize to support passing the response to web worker
56
+ const response = data;
57
+ const { ok, redirected, status, statusText, type, url } = response;
58
+ const headers = Object.fromEntries(response.headers.entries());
59
+ context.response = { headers, ok, redirected, status, statusText, type, url };
60
+ }
53
61
  data = await (0, get_data_1.getArrayBufferOrStringFromData)(data, loader, options);
54
62
  // First check for synchronous text parser, wrap results in promises
55
63
  if (loader.parseTextSync && typeof data === 'string') {
@@ -1 +1 @@
1
- {"version":3,"file":"null-loader.d.ts","sourceRoot":"","sources":["../src/null-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAY9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,gBAkBxB,CAAC"}
1
+ {"version":3,"file":"null-loader.d.ts","sourceRoot":"","sources":["../src/null-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAY9B,CAAC;AAYF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,gBAoBxB,CAAC"}
@@ -20,6 +20,16 @@ exports.NullWorkerLoader = {
20
20
  null: {}
21
21
  }
22
22
  };
23
+ /**
24
+ * Returns arguments passed to the parse API in a format that can be transfered to a
25
+ * web worker. The `context` parameter is stripped using JSON.stringify & parse.
26
+ */
27
+ function parseSync(arrayBuffer, options, context) {
28
+ if (!options.null.echoParameters)
29
+ return null;
30
+ context = context && JSON.parse(JSON.stringify(context));
31
+ return { arrayBuffer, options, context };
32
+ }
23
33
  /**
24
34
  * Loads any data and returns null (or optionally passes through data unparsed)
25
35
  */
@@ -30,15 +40,17 @@ exports.NullLoader = {
30
40
  version: VERSION,
31
41
  mimeTypes: ['application/x.empty'],
32
42
  extensions: ['null'],
33
- parse: async (arrayBuffer) => arrayBuffer,
34
- parseSync: (arrayBuffer) => arrayBuffer,
35
- parseInBatches: async function* generator(asyncIterator) {
43
+ parse: async (arrayBuffer, options, context) => parseSync(arrayBuffer, options, context),
44
+ parseSync,
45
+ parseInBatches: async function* generator(asyncIterator, options, context) {
36
46
  for await (const batch of asyncIterator) {
37
- yield batch;
47
+ yield parseSync(batch, options, context);
38
48
  }
39
49
  },
40
50
  tests: [() => false],
41
51
  options: {
42
- null: {}
52
+ null: {
53
+ echoParameters: false
54
+ }
43
55
  }
44
56
  };
@@ -118,12 +118,13 @@
118
118
  switch (type) {
119
119
  case "process":
120
120
  try {
121
- const { input, options = {} } = payload;
121
+ const { input, options = {}, context = {} } = payload;
122
122
  const result = await parseData({
123
123
  loader,
124
124
  arrayBuffer: input,
125
125
  options,
126
126
  context: {
127
+ ...context,
127
128
  parse: parseOnMainThread
128
129
  }
129
130
  });
@@ -183,7 +184,13 @@
183
184
  }
184
185
 
185
186
  // src/null-loader.ts
186
- var VERSION = true ? "3.2.0-alpha.2" : "latest";
187
+ var VERSION = true ? "3.2.0" : "latest";
188
+ function parseSync(arrayBuffer, options, context) {
189
+ if (!options.null.echoParameters)
190
+ return null;
191
+ context = context && JSON.parse(JSON.stringify(context));
192
+ return { arrayBuffer, options, context };
193
+ }
187
194
  var NullLoader = {
188
195
  name: "Null loader",
189
196
  id: "null",
@@ -191,16 +198,18 @@
191
198
  version: VERSION,
192
199
  mimeTypes: ["application/x.empty"],
193
200
  extensions: ["null"],
194
- parse: async (arrayBuffer) => arrayBuffer,
195
- parseSync: (arrayBuffer) => arrayBuffer,
196
- parseInBatches: async function* generator(asyncIterator) {
201
+ parse: async (arrayBuffer, options, context) => parseSync(arrayBuffer, options, context),
202
+ parseSync,
203
+ parseInBatches: async function* generator(asyncIterator, options, context) {
197
204
  for await (const batch of asyncIterator) {
198
- yield batch;
205
+ yield parseSync(batch, options, context);
199
206
  }
200
207
  },
201
208
  tests: [() => false],
202
209
  options: {
203
- null: {}
210
+ null: {
211
+ echoParameters: false
212
+ }
204
213
  }
205
214
  };
206
215
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/core",
3
- "version": "3.2.0-alpha.2",
3
+ "version": "3.2.0",
4
4
  "description": "Framework-independent loaders for 3D graphics formats",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -42,10 +42,10 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@babel/runtime": "^7.3.1",
45
- "@loaders.gl/loader-utils": "3.2.0-alpha.2",
46
- "@loaders.gl/worker-utils": "3.2.0-alpha.2",
45
+ "@loaders.gl/loader-utils": "3.2.0",
46
+ "@loaders.gl/worker-utils": "3.2.0",
47
47
  "@probe.gl/log": "^3.5.0",
48
48
  "probe.gl": "^3.4.0"
49
49
  },
50
- "gitHead": "52a602739cbfce60fc314f474efc984d199dff78"
50
+ "gitHead": "6660dc9291526752c40063b73a3f9dd97cc0ccc5"
51
51
  }
@@ -2,6 +2,7 @@ import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/l
2
2
  import {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';
3
3
  import {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';
4
4
  import {isLoaderObject} from '../loader-utils/normalize-loader';
5
+ import {isResponse} from '../../javascript-utils/is-type';
5
6
  import {normalizeOptions} from '../loader-utils/option-utils';
6
7
  import {getArrayBufferOrStringFromData} from '../loader-utils/get-data';
7
8
  import {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';
@@ -62,6 +63,14 @@ export async function parse(
62
63
  async function parseWithLoader(loader, data, options, context) {
63
64
  validateWorkerVersion(loader);
64
65
 
66
+ if (isResponse(data)) {
67
+ // Serialize to support passing the response to web worker
68
+ const response = data as Response;
69
+ const {ok, redirected, status, statusText, type, url} = response;
70
+ const headers = Object.fromEntries(response.headers.entries());
71
+ context.response = {headers, ok, redirected, status, statusText, type, url};
72
+ }
73
+
65
74
  data = await getArrayBufferOrStringFromData(data, loader, options);
66
75
 
67
76
  // First check for synchronous text parser, wrap results in promises
@@ -21,6 +21,16 @@ export const NullWorkerLoader: Loader = {
21
21
  }
22
22
  };
23
23
 
24
+ /**
25
+ * Returns arguments passed to the parse API in a format that can be transfered to a
26
+ * web worker. The `context` parameter is stripped using JSON.stringify & parse.
27
+ */
28
+ function parseSync(arrayBuffer, options, context) {
29
+ if (!options.null.echoParameters) return null;
30
+ context = context && JSON.parse(JSON.stringify(context));
31
+ return {arrayBuffer, options, context};
32
+ }
33
+
24
34
  /**
25
35
  * Loads any data and returns null (or optionally passes through data unparsed)
26
36
  */
@@ -31,15 +41,17 @@ export const NullLoader: LoaderWithParser = {
31
41
  version: VERSION,
32
42
  mimeTypes: ['application/x.empty'],
33
43
  extensions: ['null'],
34
- parse: async (arrayBuffer) => arrayBuffer,
35
- parseSync: (arrayBuffer) => arrayBuffer,
36
- parseInBatches: async function* generator(asyncIterator) {
44
+ parse: async (arrayBuffer, options, context) => parseSync(arrayBuffer, options, context),
45
+ parseSync,
46
+ parseInBatches: async function* generator(asyncIterator, options, context) {
37
47
  for await (const batch of asyncIterator) {
38
- yield batch;
48
+ yield parseSync(batch, options, context);
39
49
  }
40
50
  },
41
51
  tests: [() => false],
42
52
  options: {
43
- null: {}
53
+ null: {
54
+ echoParameters: false
55
+ }
44
56
  }
45
57
  };