@loaders.gl/core 5.0.0-alpha.1 → 5.0.0-alpha.2

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.
@@ -27,30 +27,69 @@ async function* makeBrowserStreamIterator(stream, options) {
27
27
  // In the browser, we first need to get a lock on the stream
28
28
  const reader = stream.getReader();
29
29
  let nextBatchPromise;
30
+ let streamFinished = false;
31
+ let streamReadFailed = false;
32
+ let iteratorFailed = false;
30
33
  try {
31
34
  // eslint-disable-next-line no-constant-condition
32
35
  while (true) {
33
36
  const currentBatchPromise = nextBatchPromise || reader.read();
34
- // Issue a read for an additional batch, while we await the next batch
35
- // Idea is to make fetching happen in parallel with processing / parsing
36
- if (options?._streamReadAhead) {
37
- nextBatchPromise = reader.read();
38
- }
37
+ nextBatchPromise = undefined;
39
38
  // Read from the stream
40
39
  // value is a Uint8Array
41
- const { done, value } = await currentBatchPromise;
40
+ let batch;
41
+ try {
42
+ batch = await currentBatchPromise;
43
+ }
44
+ catch (error) {
45
+ streamReadFailed = true;
46
+ throw error;
47
+ }
48
+ const { done, value } = batch;
42
49
  // Exit if we're done
43
50
  if (done) {
51
+ streamFinished = true;
44
52
  return;
45
53
  }
54
+ // Issue a read for an additional batch while the current batch is processed
55
+ if (options?._streamReadAhead) {
56
+ nextBatchPromise = reader.read();
57
+ // Observe a prefetched rejection even if the consumer stops before requesting it
58
+ void nextBatchPromise.catch(() => { });
59
+ }
46
60
  // Else yield the chunk
47
61
  yield toArrayBuffer(value);
48
62
  }
49
63
  }
50
- catch (_error) {
51
- // TODO - examples makes it look like this should always be called,
52
- // but that generates exceptions so only call it if we do not reach the end
53
- reader.releaseLock();
64
+ catch (error) {
65
+ iteratorFailed = true;
66
+ throw error;
67
+ }
68
+ finally {
69
+ let cleanupFailed = false;
70
+ let cleanupError;
71
+ if (!streamFinished && !streamReadFailed) {
72
+ try {
73
+ await reader.cancel();
74
+ }
75
+ catch (error) {
76
+ cleanupFailed = true;
77
+ cleanupError = error;
78
+ }
79
+ }
80
+ try {
81
+ reader.releaseLock();
82
+ }
83
+ catch (error) {
84
+ if (!cleanupFailed) {
85
+ cleanupFailed = true;
86
+ cleanupError = error;
87
+ }
88
+ }
89
+ // Preserve errors from iteration instead of replacing them with cleanup errors
90
+ if (!iteratorFailed && cleanupFailed) {
91
+ throw cleanupError;
92
+ }
54
93
  }
55
94
  }
56
95
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"make-stream-iterator.js","sourceRoot":"","sources":["../../../src/iterators/make-iterator/make-stream-iterator.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAMlE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAiC,EACjC,OAA+B;IAE/B,OAAO,SAAS;QACd,CAAC,CAAC,yBAAyB,CAAC,MAAwB,EAAE,OAAO,CAAC;QAC9D,CAAC,CAAC,sBAAsB,CAAC,MAAkB,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,KAAK,SAAS,CAAC,CAAC,yBAAyB,CACvC,MAAsB,EACtB,OAA+B;IAE/B,4DAA4D;IAC5D,kDAAkD;IAClD,iCAAiC;IACjC,IAAI;IACJ,4DAA4D;IAC5D,8CAA8C;IAC9C,IAAI;IAEJ,4DAA4D;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAElC,IAAI,gBAA2E,CAAC;IAEhF,IAAI,CAAC;QACH,iDAAiD;QACjD,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,mBAAmB,GAAG,gBAAgB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9D,sEAAsE;YACtE,wEAAwE;YACxE,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;gBAC9B,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,CAAC;YACD,uBAAuB;YACvB,wBAAwB;YACxB,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,mBAAmB,CAAC;YAChD,qBAAqB;YACrB,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YACD,uBAAuB;YACvB,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,mEAAmE;QACnE,2EAA2E;QAC3E,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,SAAS,CAAC,CAAC,sBAAsB,CACpC,MAAgB,EAChB,OAA+B;IAE/B,oEAAoE;IACpE,uCAAuC;IACvC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,mCAAmC;IACjE,CAAC;AACH,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2BI"}
1
+ {"version":3,"file":"make-stream-iterator.js","sourceRoot":"","sources":["../../../src/iterators/make-iterator/make-stream-iterator.ts"],"names":[],"mappings":"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"}
@@ -91,13 +91,7 @@ function getLoaderImplementationSpecifier(loader, options) {
91
91
  function getLoaderImplementationCacheKey(loader, options) {
92
92
  const loaderOptions = options?.[loader.id];
93
93
  const defaultLoaderOptions = loader.options?.[loader.id];
94
- return String(loaderOptions?.backend ||
95
- getDeprecatedImplementationBackend(loaderOptions?.implementation) ||
96
- defaultLoaderOptions?.backend ||
97
- '');
98
- }
99
- function getDeprecatedImplementationBackend(implementation) {
100
- return implementation === 'js' ? 'typescript' : implementation;
94
+ return String(loaderOptions?.backend || defaultLoaderOptions?.backend || '');
101
95
  }
102
96
  /** Imports a module and finds the parser-bearing loader implementation with the requested id. */
103
97
  async function importLoaderImplementation(implementationSpecifier, loaderId) {
@@ -1 +1 @@
1
- {"version":3,"file":"load-loader.js","sourceRoot":"","sources":["../../../src/lib/api/load-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load-loader.js","sourceRoot":"","sources":["../../../src/lib/api/load-loader.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ export async function load(url, loaders, options, context) {
28
28
  resolvedOptions = options;
29
29
  }
30
30
  if (!Array.isArray(resolvedLoaders) && isSourceLoader(resolvedLoaders)) {
31
+ const sourceLoader = await resolveSourceLoader(resolvedLoaders, url, resolvedOptions);
31
32
  const runtimeCoreApi = {
32
33
  fetchFile,
33
34
  parse,
@@ -37,11 +38,12 @@ export async function load(url, loaders, options, context) {
37
38
  load,
38
39
  loadInBatches
39
40
  };
40
- return resolvedLoaders.createDataSource(url, (resolvedOptions || {}), runtimeCoreApi);
41
+ return sourceLoader.createDataSource(url, (resolvedOptions || {}), runtimeCoreApi);
41
42
  }
42
43
  if (Array.isArray(resolvedLoaders) &&
43
44
  resolvedLoaders.length === 1 &&
44
45
  isSourceLoader(resolvedLoaders[0])) {
46
+ const sourceLoader = await resolveSourceLoader(resolvedLoaders[0], url, resolvedOptions);
45
47
  const runtimeCoreApi = {
46
48
  fetchFile,
47
49
  parse,
@@ -51,7 +53,7 @@ export async function load(url, loaders, options, context) {
51
53
  load,
52
54
  loadInBatches
53
55
  };
54
- return resolvedLoaders[0].createDataSource(url, (resolvedOptions || {}), runtimeCoreApi);
56
+ return sourceLoader.createDataSource(url, (resolvedOptions || {}), runtimeCoreApi);
55
57
  }
56
58
  if (typeof url === 'string' || isBlob(url)) {
57
59
  const selectedLoader = await selectLoader(url, resolvedLoaders, {
@@ -59,7 +61,8 @@ export async function load(url, loaders, options, context) {
59
61
  core: { ...resolvedOptions?.core, nothrow: true }
60
62
  });
61
63
  if (selectedLoader && isSourceLoader(selectedLoader)) {
62
- return selectedLoader.createDataSource(url, (resolvedOptions || {}), {
64
+ const sourceLoader = await resolveSourceLoader(selectedLoader, url, resolvedOptions);
65
+ return sourceLoader.createDataSource(url, (resolvedOptions || {}), {
63
66
  fetchFile,
64
67
  parse,
65
68
  parseFile,
@@ -102,4 +105,15 @@ export async function load(url, loaders, options, context) {
102
105
  ? await parse(data, resolvedLoaders, resolvedOptions, context) // loader array overload
103
106
  : await parse(data, resolvedLoaders, resolvedOptions, context); // single loader overload
104
107
  }
108
+ /** Resolves a lightweight source loader into its runtime implementation when necessary. */
109
+ async function resolveSourceLoader(loader, url, options) {
110
+ if (!loader.preload) {
111
+ return loader;
112
+ }
113
+ const sourceLoader = await loader.preload(typeof url === 'string' ? url : '', options);
114
+ if (!isSourceLoader(sourceLoader)) {
115
+ throw new Error(`${loader.id} source loader preload() did not return a runtime source loader`);
116
+ }
117
+ return sourceLoader;
118
+ }
105
119
  //# sourceMappingURL=load.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/lib/api/load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/lib/api/load.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/lib/api/parse.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,MAAM,EACN,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,QAAQ,EAER,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAoBlC;;GAEG;AACH,wBAAsB,KAAK,CACzB,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,aAAa,GAAG,sBAAsB,CACrD,iBAAiB,CAAC,OAAO,CAAC,EAC1B,eAAe,CAAC,OAAO,CAAC,CACzB,EAED,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAClC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEtC;;GAEG;AACH,wBAAsB,KAAK,CACzB,YAAY,SAAS,MAAM,EAAE,EAC7B,QAAQ,SAAS,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,EAErE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAClC,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;AAEhD;;;GAGG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAClC,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/lib/api/parse.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,MAAM,EACN,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,QAAQ,EAER,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAqBlC;;GAEG;AACH,wBAAsB,KAAK,CACzB,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,aAAa,GAAG,sBAAsB,CACrD,iBAAiB,CAAC,OAAO,CAAC,EAC1B,eAAe,CAAC,OAAO,CAAC,CACzB,EAED,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAClC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEtC;;GAEG;AACH,wBAAsB,KAAK,CACzB,YAAY,SAAS,MAAM,EAAE,EAC7B,QAAQ,SAAS,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,EAErE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAClC,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;AAEhD;;;GAGG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAClC,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { parseWithWorker, canParseWithWorker, mergeOptions, isResponse, isSourceLoader } from '@loaders.gl/loader-utils';
4
+ import { parseWithWorker, canParseWithWorker, mergeOptions, isResponse, isBlob, isSourceLoader } from '@loaders.gl/loader-utils';
5
5
  import { validateWorkerVersion } from '@loaders.gl/worker-utils';
6
6
  import { isLoaderObject } from "../loader-utils/normalize-loader.js";
7
7
  import { normalizeOptions } from "../loader-utils/option-utils.js";
@@ -70,6 +70,9 @@ async function parseWithLoader(loader, data, options, context) {
70
70
  data = await getArrayBufferFromData(data, options);
71
71
  return await parseWithWorker(loaderWithParser, data, options, context, parse);
72
72
  }
73
+ if (isBlob(data) && loaderWithParser.parseBlob) {
74
+ return await loaderWithParser.parseBlob(data, options, context);
75
+ }
73
76
  data = await getArrayBufferOrStringFromData(data, loader, options);
74
77
  return await parseWithLoaderImplementation(loaderWithParser, data, options, context);
75
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/lib/api/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/lib/api/parse.ts"],"names":[],"mappings":"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"}
package/dist/lib/init.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { log } from '@loaders.gl/loader-utils';
5
5
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
6
- const version = typeof "5.0.0-alpha.1" !== 'undefined' ? "5.0.0-alpha.1" : '';
6
+ const version = typeof "5.0.0-alpha.2" !== 'undefined' ? "5.0.0-alpha.2" : '';
7
7
  // @ts-ignore
8
8
  if (!globalThis.loaders) {
9
9
  log.log(1, `loaders.gl ${version}`)();
@@ -3,7 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  // __VERSION__ is injected by babel-plugin-version-inline
5
5
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
6
- const VERSION = typeof "5.0.0-alpha.1" !== 'undefined' ? "5.0.0-alpha.1" : 'latest';
6
+ const VERSION = typeof "5.0.0-alpha.2" !== 'undefined' ? "5.0.0-alpha.2" : 'latest';
7
7
  /**
8
8
  * Loads any data and returns null (or optionally passes through data unparsed)
9
9
  */
@@ -401,7 +401,7 @@ async function parseData({
401
401
  }
402
402
 
403
403
  // src/null-loader.ts
404
- var VERSION = true ? "5.0.0-alpha.1" : "latest";
404
+ var VERSION = true ? "5.0.0-alpha.2" : "latest";
405
405
  var NullLoader = {
406
406
  dataType: null,
407
407
  batchType: null,
@@ -366,7 +366,7 @@
366
366
  }
367
367
 
368
368
  // src/null-loader.ts
369
- var VERSION = true ? "5.0.0-alpha.1" : "latest";
369
+ var VERSION = true ? "5.0.0-alpha.2" : "latest";
370
370
  var NullLoader = {
371
371
  dataType: null,
372
372
  batchType: null,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/core",
3
- "version": "5.0.0-alpha.1",
3
+ "version": "5.0.0-alpha.2",
4
4
  "description": "The core API for working with loaders.gl loaders and writers",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -58,11 +58,11 @@
58
58
  "build-worker-node": "esbuild src/workers/null-worker.ts --outfile=dist/null-worker-node.js --bundle --platform=node --target=node16 --define:__VERSION__=\\\"$npm_package_version\\\""
59
59
  },
60
60
  "dependencies": {
61
- "@loaders.gl/loader-utils": "5.0.0-alpha.1",
62
- "@loaders.gl/schema": "5.0.0-alpha.1",
63
- "@loaders.gl/schema-utils": "5.0.0-alpha.1",
64
- "@loaders.gl/worker-utils": "5.0.0-alpha.1",
61
+ "@loaders.gl/loader-utils": "5.0.0-alpha.2",
62
+ "@loaders.gl/schema": "5.0.0-alpha.2",
63
+ "@loaders.gl/schema-utils": "5.0.0-alpha.2",
64
+ "@loaders.gl/worker-utils": "5.0.0-alpha.2",
65
65
  "@probe.gl/log": "^4.1.1"
66
66
  },
67
- "gitHead": "77a55028e8204e09df1258f10cb61ed35353b258"
67
+ "gitHead": "27bcc0db684abb66a83003263c9d1cafd9e5b2dd"
68
68
  }
@@ -43,30 +43,68 @@ async function* makeBrowserStreamIterator(
43
43
  const reader = stream.getReader();
44
44
 
45
45
  let nextBatchPromise: Promise<{done?: boolean; value?: Uint8Array}> | undefined;
46
+ let streamFinished = false;
47
+ let streamReadFailed = false;
48
+ let iteratorFailed = false;
46
49
 
47
50
  try {
48
51
  // eslint-disable-next-line no-constant-condition
49
52
  while (true) {
50
53
  const currentBatchPromise = nextBatchPromise || reader.read();
51
- // Issue a read for an additional batch, while we await the next batch
52
- // Idea is to make fetching happen in parallel with processing / parsing
53
- if (options?._streamReadAhead) {
54
- nextBatchPromise = reader.read();
55
- }
54
+ nextBatchPromise = undefined;
56
55
  // Read from the stream
57
56
  // value is a Uint8Array
58
- const {done, value} = await currentBatchPromise;
57
+ let batch;
58
+ try {
59
+ batch = await currentBatchPromise;
60
+ } catch (error) {
61
+ streamReadFailed = true;
62
+ throw error;
63
+ }
64
+ const {done, value} = batch;
59
65
  // Exit if we're done
60
66
  if (done) {
67
+ streamFinished = true;
61
68
  return;
62
69
  }
70
+ // Issue a read for an additional batch while the current batch is processed
71
+ if (options?._streamReadAhead) {
72
+ nextBatchPromise = reader.read();
73
+ // Observe a prefetched rejection even if the consumer stops before requesting it
74
+ void nextBatchPromise.catch(() => {});
75
+ }
63
76
  // Else yield the chunk
64
77
  yield toArrayBuffer(value);
65
78
  }
66
- } catch (_error) {
67
- // TODO - examples makes it look like this should always be called,
68
- // but that generates exceptions so only call it if we do not reach the end
69
- reader.releaseLock();
79
+ } catch (error) {
80
+ iteratorFailed = true;
81
+ throw error;
82
+ } finally {
83
+ let cleanupFailed = false;
84
+ let cleanupError: unknown;
85
+
86
+ if (!streamFinished && !streamReadFailed) {
87
+ try {
88
+ await reader.cancel();
89
+ } catch (error) {
90
+ cleanupFailed = true;
91
+ cleanupError = error;
92
+ }
93
+ }
94
+
95
+ try {
96
+ reader.releaseLock();
97
+ } catch (error) {
98
+ if (!cleanupFailed) {
99
+ cleanupFailed = true;
100
+ cleanupError = error;
101
+ }
102
+ }
103
+
104
+ // Preserve errors from iteration instead of replacing them with cleanup errors
105
+ if (!iteratorFailed && cleanupFailed) {
106
+ throw cleanupError;
107
+ }
70
108
  }
71
109
  }
72
110
 
@@ -121,20 +121,9 @@ function getLoaderImplementationSpecifier(loader: Loader, options?: LoaderOption
121
121
 
122
122
  /** Gets the cache key for option-selected parser implementations. */
123
123
  function getLoaderImplementationCacheKey(loader: Loader, options?: LoaderOptions): string {
124
- const loaderOptions = options?.[loader.id] as
125
- | {backend?: unknown; implementation?: unknown}
126
- | undefined;
124
+ const loaderOptions = options?.[loader.id] as {backend?: unknown} | undefined;
127
125
  const defaultLoaderOptions = loader.options?.[loader.id] as {backend?: unknown} | undefined;
128
- return String(
129
- loaderOptions?.backend ||
130
- getDeprecatedImplementationBackend(loaderOptions?.implementation) ||
131
- defaultLoaderOptions?.backend ||
132
- ''
133
- );
134
- }
135
-
136
- function getDeprecatedImplementationBackend(implementation: unknown): unknown {
137
- return implementation === 'js' ? 'typescript' : implementation;
126
+ return String(loaderOptions?.backend || defaultLoaderOptions?.backend || '');
138
127
  }
139
128
 
140
129
  /** Imports a module and finds the parser-bearing loader implementation with the requested id. */
@@ -94,6 +94,7 @@ export async function load(
94
94
  }
95
95
 
96
96
  if (!Array.isArray(resolvedLoaders) && isSourceLoader(resolvedLoaders)) {
97
+ const sourceLoader = await resolveSourceLoader(resolvedLoaders, url, resolvedOptions);
97
98
  const runtimeCoreApi = {
98
99
  fetchFile,
99
100
  parse,
@@ -103,7 +104,7 @@ export async function load(
103
104
  load,
104
105
  loadInBatches
105
106
  };
106
- return resolvedLoaders.createDataSource(
107
+ return sourceLoader.createDataSource(
107
108
  url as string | Blob,
108
109
  (resolvedOptions || {}) as LoaderOptionsType<SourceLoader>,
109
110
  runtimeCoreApi
@@ -115,6 +116,7 @@ export async function load(
115
116
  resolvedLoaders.length === 1 &&
116
117
  isSourceLoader(resolvedLoaders[0])
117
118
  ) {
119
+ const sourceLoader = await resolveSourceLoader(resolvedLoaders[0], url, resolvedOptions);
118
120
  const runtimeCoreApi = {
119
121
  fetchFile,
120
122
  parse,
@@ -124,7 +126,7 @@ export async function load(
124
126
  load,
125
127
  loadInBatches
126
128
  };
127
- return resolvedLoaders[0].createDataSource(
129
+ return sourceLoader.createDataSource(
128
130
  url as string | Blob,
129
131
  (resolvedOptions || {}) as LoaderOptionsType<SourceLoader>,
130
132
  runtimeCoreApi
@@ -138,7 +140,8 @@ export async function load(
138
140
  });
139
141
 
140
142
  if (selectedLoader && isSourceLoader(selectedLoader)) {
141
- return selectedLoader.createDataSource(
143
+ const sourceLoader = await resolveSourceLoader(selectedLoader, url, resolvedOptions);
144
+ return sourceLoader.createDataSource(
142
145
  url,
143
146
  (resolvedOptions || {}) as LoaderOptionsType<SourceLoader>,
144
147
  {
@@ -190,3 +193,20 @@ export async function load(
190
193
  ? await parse(data, resolvedLoaders, resolvedOptions, context) // loader array overload
191
194
  : await parse(data, resolvedLoaders, resolvedOptions, context); // single loader overload
192
195
  }
196
+
197
+ /** Resolves a lightweight source loader into its runtime implementation when necessary. */
198
+ async function resolveSourceLoader(
199
+ loader: SourceLoader,
200
+ url: string | DataType,
201
+ options?: LoaderOptions
202
+ ): Promise<SourceLoader> {
203
+ if (!loader.preload) {
204
+ return loader;
205
+ }
206
+
207
+ const sourceLoader = await loader.preload(typeof url === 'string' ? url : '', options);
208
+ if (!isSourceLoader(sourceLoader)) {
209
+ throw new Error(`${loader.id} source loader preload() did not return a runtime source loader`);
210
+ }
211
+ return sourceLoader;
212
+ }
@@ -21,6 +21,7 @@ import {
21
21
  canParseWithWorker,
22
22
  mergeOptions,
23
23
  isResponse,
24
+ isBlob,
24
25
  isSourceLoader
25
26
  } from '@loaders.gl/loader-utils';
26
27
  import {validateWorkerVersion} from '@loaders.gl/worker-utils';
@@ -160,6 +161,10 @@ async function parseWithLoader(
160
161
  return await parseWithWorker(loaderWithParser, data, options, context, parse);
161
162
  }
162
163
 
164
+ if (isBlob(data) && loaderWithParser.parseBlob) {
165
+ return await loaderWithParser.parseBlob(data, options, context);
166
+ }
167
+
163
168
  data = await getArrayBufferOrStringFromData(data, loader, options);
164
169
 
165
170
  return await parseWithLoaderImplementation(loaderWithParser, data, options, context);