@loaders.gl/core 4.4.5 → 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.
- package/LICENSE +14 -3
- package/dist/dist.dev.js +800 -271
- package/dist/dist.min.js +4 -3
- package/dist/index.cjs +2191 -296
- package/dist/index.cjs.map +3 -4
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/iterators/make-iterator/make-stream-iterator.js +48 -9
- package/dist/iterators/make-iterator/make-stream-iterator.js.map +1 -1
- package/dist/lib/api/core-api.d.ts +6 -0
- package/dist/lib/api/core-api.d.ts.map +1 -0
- package/dist/lib/api/core-api.js +23 -0
- package/dist/lib/api/core-api.js.map +1 -0
- package/dist/lib/api/create-data-source.d.ts +2 -2
- package/dist/lib/api/create-data-source.d.ts.map +1 -1
- package/dist/lib/api/create-data-source.js +15 -14
- package/dist/lib/api/create-data-source.js.map +1 -1
- package/dist/lib/api/load-in-batches.d.ts +4 -4
- package/dist/lib/api/load-in-batches.d.ts.map +1 -1
- package/dist/lib/api/load-in-batches.js +1 -1
- package/dist/lib/api/load-in-batches.js.map +1 -1
- package/dist/lib/api/load-loader.d.ts +8 -0
- package/dist/lib/api/load-loader.d.ts.map +1 -0
- package/dist/lib/api/load-loader.js +110 -0
- package/dist/lib/api/load-loader.js.map +1 -0
- package/dist/lib/api/load.d.ts +2 -2
- package/dist/lib/api/load.d.ts.map +1 -1
- package/dist/lib/api/load.js +66 -3
- package/dist/lib/api/load.js.map +1 -1
- package/dist/lib/api/parse-file.d.ts +15 -0
- package/dist/lib/api/parse-file.d.ts.map +1 -0
- package/dist/lib/api/parse-file.js +70 -0
- package/dist/lib/api/parse-file.js.map +1 -0
- package/dist/lib/api/parse-in-batches.d.ts +2 -2
- package/dist/lib/api/parse-in-batches.d.ts.map +1 -1
- package/dist/lib/api/parse-in-batches.js +6 -4
- package/dist/lib/api/parse-in-batches.js.map +1 -1
- package/dist/lib/api/parse-sync.d.ts +2 -2
- package/dist/lib/api/parse-sync.d.ts.map +1 -1
- package/dist/lib/api/parse-sync.js +10 -1
- package/dist/lib/api/parse-sync.js.map +1 -1
- package/dist/lib/api/parse.d.ts +2 -2
- package/dist/lib/api/parse.d.ts.map +1 -1
- package/dist/lib/api/parse.js +28 -16
- package/dist/lib/api/parse.js.map +1 -1
- package/dist/lib/api/preload.d.ts +11 -0
- package/dist/lib/api/preload.d.ts.map +1 -0
- package/dist/lib/api/preload.js +14 -0
- package/dist/lib/api/preload.js.map +1 -0
- package/dist/lib/api/register-loaders.js +1 -1
- package/dist/lib/api/register-loaders.js.map +1 -1
- package/dist/lib/api/select-loader.d.ts.map +1 -1
- package/dist/lib/api/select-loader.js +48 -5
- package/dist/lib/api/select-loader.js.map +1 -1
- package/dist/lib/api/select-source.d.ts +3 -3
- package/dist/lib/api/select-source.d.ts.map +1 -1
- package/dist/lib/api/select-source.js +2 -5
- package/dist/lib/api/select-source.js.map +1 -1
- package/dist/lib/fetch/fetch-error-message.js +1 -1
- package/dist/lib/fetch/fetch-error-message.js.map +1 -1
- package/dist/lib/init.js +1 -1
- package/dist/lib/init.js.map +1 -1
- package/dist/lib/loader-utils/check-errors.js +1 -1
- package/dist/lib/loader-utils/check-errors.js.map +1 -1
- package/dist/lib/loader-utils/get-data.d.ts +4 -0
- package/dist/lib/loader-utils/get-data.d.ts.map +1 -1
- package/dist/lib/loader-utils/get-data.js +26 -0
- package/dist/lib/loader-utils/get-data.js.map +1 -1
- package/dist/lib/loader-utils/get-fetch-function.d.ts +1 -1
- package/dist/lib/loader-utils/get-fetch-function.d.ts.map +1 -1
- package/dist/lib/loader-utils/get-fetch-function.js +1 -1
- package/dist/lib/loader-utils/get-fetch-function.js.map +1 -1
- package/dist/lib/loader-utils/loader-context.d.ts +1 -1
- package/dist/lib/loader-utils/loader-context.d.ts.map +1 -1
- package/dist/lib/loader-utils/loader-context.js +3 -1
- package/dist/lib/loader-utils/loader-context.js.map +1 -1
- package/dist/lib/loader-utils/loggers.d.ts +19 -0
- package/dist/lib/loader-utils/loggers.d.ts.map +1 -1
- package/dist/lib/loader-utils/loggers.js +28 -2
- package/dist/lib/loader-utils/loggers.js.map +1 -1
- package/dist/lib/loader-utils/option-defaults.d.ts +1 -0
- package/dist/lib/loader-utils/option-defaults.d.ts.map +1 -1
- package/dist/lib/loader-utils/option-defaults.js +2 -0
- package/dist/lib/loader-utils/option-defaults.js.map +1 -1
- package/dist/lib/loader-utils/option-utils.d.ts.map +1 -1
- package/dist/lib/loader-utils/option-utils.js +50 -2
- package/dist/lib/loader-utils/option-utils.js.map +1 -1
- package/dist/lib/utils/response-utils.js +3 -3
- package/dist/lib/utils/response-utils.js.map +1 -1
- package/dist/null-loader.d.ts.map +1 -1
- package/dist/null-loader.js +1 -1
- package/dist/null-loader.js.map +1 -1
- package/dist/null-worker-node.js +199 -36
- package/dist/null-worker.js +199 -36
- package/package.json +6 -6
- package/src/index.ts +10 -1
- package/src/iterators/make-iterator/make-stream-iterator.ts +47 -9
- package/src/lib/api/core-api.ts +25 -0
- package/src/lib/api/create-data-source.ts +24 -24
- package/src/lib/api/load-in-batches.ts +16 -11
- package/src/lib/api/load-loader.ts +152 -0
- package/src/lib/api/load.ts +98 -5
- package/src/lib/api/parse-file.ts +143 -0
- package/src/lib/api/parse-in-batches.ts +13 -5
- package/src/lib/api/parse-sync.ts +27 -2
- package/src/lib/api/parse.ts +49 -18
- package/src/lib/api/preload.ts +31 -0
- package/src/lib/api/register-loaders.ts +1 -1
- package/src/lib/api/select-loader.ts +57 -5
- package/src/lib/api/select-source.ts +7 -10
- package/src/lib/fetch/fetch-error-message.ts +1 -1
- package/src/lib/loader-utils/check-errors.ts +1 -1
- package/src/lib/loader-utils/get-data.ts +36 -0
- package/src/lib/loader-utils/get-fetch-function.ts +3 -2
- package/src/lib/loader-utils/loader-context.ts +5 -2
- package/src/lib/loader-utils/loggers.ts +28 -2
- package/src/lib/loader-utils/option-defaults.ts +2 -0
- package/src/lib/loader-utils/option-utils.ts +59 -2
- package/src/lib/utils/response-utils.ts +3 -3
- package/src/null-loader.ts +3 -3
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,MAAM,EACN,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,OAAO,EACP,aAAa,EACb,MAAM,EACN,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAC,SAAS,EAAC,kCAA+B;AACjD,OAAO,EAAC,UAAU,EAAC,mCAAgC;AAEnD,OAAO,EAAC,eAAe,EAAC,yCAAsC;AAK9D,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,oCAAiC;AAC5E,OAAO,EAAC,eAAe,EAAC,sCAAmC;AAC3D,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,mCAAgC;AAGvE,OAAO,EAAC,KAAK,EAAC,2BAAwB;AACtC,OAAO,EAAC,SAAS,EAAC,gCAA6B;AAC/C,OAAO,EAAC,SAAS,EAAC,gCAA6B;AAC/C,OAAO,EAAC,cAAc,EAAC,sCAAmC;AAC1D,OAAO,EAAC,OAAO,EAAE,WAAW,EAAC,6BAA0B;AACvD,OAAO,EAAC,OAAO,EAAC,8BAA2B;AAE3C,OAAO,EAAC,IAAI,EAAC,0BAAuB;AACpC,OAAO,EAAC,aAAa,EAAC,qCAAkC;AAGxD,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,EAAC,kCAA+B;AAC5F,OAAO,EAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAC,4BAAyB;AACrF,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,4BAAyB;AAG5D,OAAO,EAAC,gBAAgB,EAAC,wCAAqC;AAC9D,OAAO,EAAC,YAAY,IAAI,aAAa,EAAC,mCAAgC;AAGtE,OAAO,EAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAC,YAAY,EAAC,mDAAgD;AACrE,OAAO,EAAC,UAAU,EAAC,+CAA4C;AAG/D,OAAO,EAAC,UAAU,EAAC,yBAAsB;AACzC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAC,aAAa,IAAI,cAAc,EAAC,yCAAsC;AAC9E,OAAO,EAAC,iBAAiB,IAAI,kBAAkB,EAAC,gDAA6C;AAG7F,OAAO,EAAC,kBAAkB,EAAC,sCAAmC;AAM9D,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAC,OAAO,EAAE,4BAA4B,EAAC,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,YAAY,EACZ,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAGlC,kCAAkC;AAClC,OAAO,EAAC,gBAAgB,EAAC,yBAAsB"}
|
package/dist/index.js
CHANGED
|
@@ -13,8 +13,11 @@ export { registerLoaders } from "./lib/api/register-loaders.js";
|
|
|
13
13
|
export { selectLoader, selectLoaderSync } from "./lib/api/select-loader.js";
|
|
14
14
|
// LOADING (READING + PARSING)
|
|
15
15
|
export { parse } from "./lib/api/parse.js";
|
|
16
|
+
export { parseFile } from "./lib/api/parse-file.js";
|
|
16
17
|
export { parseSync } from "./lib/api/parse-sync.js";
|
|
17
18
|
export { parseInBatches } from "./lib/api/parse-in-batches.js";
|
|
19
|
+
export { preload, preloadSync } from "./lib/api/preload.js";
|
|
20
|
+
export { coreApi } from "./lib/api/core-api.js";
|
|
18
21
|
export { load } from "./lib/api/load.js";
|
|
19
22
|
export { loadInBatches } from "./lib/api/load-in-batches.js";
|
|
20
23
|
// ENCODING (ENCODING AND WRITING)
|
|
@@ -31,7 +34,7 @@ export { RequestScheduler } from '@loaders.gl/loader-utils';
|
|
|
31
34
|
export { makeIterator } from "./iterators/make-iterator/make-iterator.js";
|
|
32
35
|
export { makeStream } from "./iterators/make-stream/make-stream.js";
|
|
33
36
|
// CORE LOADERS
|
|
34
|
-
export {
|
|
37
|
+
export { NullLoader } from "./null-loader.js";
|
|
35
38
|
export { JSONLoader } from '@loaders.gl/loader-utils';
|
|
36
39
|
// EXPERIMENTAL
|
|
37
40
|
export { fetchProgress as _fetchProgress } from "./lib/progress/fetch-progress.js";
|
|
@@ -47,4 +50,7 @@ export { forEach, concatenateArrayBuffersAsync } from '@loaders.gl/loader-utils'
|
|
|
47
50
|
export { makeTextDecoderIterator, makeTextEncoderIterator, makeLineIterator, makeNumberedLineIterator } from '@loaders.gl/loader-utils';
|
|
48
51
|
// "JAVASCRIPT" UTILS - move to loader-utils?
|
|
49
52
|
export { isPureObject, isPromise, isIterable, isAsyncIterable, isIterator, isResponse, isReadableStream, isWritableStream } from '@loaders.gl/loader-utils';
|
|
53
|
+
// DEPRECATED EXPORTS
|
|
54
|
+
/** @deprecated Use NullLoader. */
|
|
55
|
+
export { NullWorkerLoader } from "./null-loader.js";
|
|
50
56
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAsBpC,2BAA2B;AAC3B,OAAO,EAAC,SAAS,EAAC,kCAA+B;AACjD,OAAO,EAAC,UAAU,EAAC,mCAAgC;AAEnD,OAAO,EAAC,eAAe,EAAC,yCAAsC;AAC9D,sDAAsD;AACtD,mEAAmE;AAEnE,gBAAgB;AAChB,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,oCAAiC;AAC5E,OAAO,EAAC,eAAe,EAAC,sCAAmC;AAC3D,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,mCAAgC;AAEvE,8BAA8B;AAC9B,OAAO,EAAC,KAAK,EAAC,2BAAwB;AACtC,OAAO,EAAC,SAAS,EAAC,gCAA6B;AAC/C,OAAO,EAAC,SAAS,EAAC,gCAA6B;AAC/C,OAAO,EAAC,cAAc,EAAC,sCAAmC;AAC1D,OAAO,EAAC,OAAO,EAAE,WAAW,EAAC,6BAA0B;AACvD,OAAO,EAAC,OAAO,EAAC,8BAA2B;AAE3C,OAAO,EAAC,IAAI,EAAC,0BAAuB;AACpC,OAAO,EAAC,aAAa,EAAC,qCAAkC;AAExD,kCAAkC;AAClC,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,EAAC,kCAA+B;AAC5F,OAAO,EAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAC,4BAAyB;AACrF,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,4BAAyB;AAE5D,uBAAuB;AACvB,OAAO,EAAC,gBAAgB,EAAC,wCAAqC;AAC9D,OAAO,EAAC,YAAY,IAAI,aAAa,EAAC,mCAAgC;AAEtE,iEAAiE;AACjE,OAAO,EAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAE1D,iBAAiB;AACjB,OAAO,EAAC,YAAY,EAAC,mDAAgD;AACrE,OAAO,EAAC,UAAU,EAAC,+CAA4C;AAE/D,eAAe;AACf,OAAO,EAAC,UAAU,EAAC,yBAAsB;AACzC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAEpD,eAAe;AACf,OAAO,EAAC,aAAa,IAAI,cAAc,EAAC,yCAAsC;AAC9E,OAAO,EAAC,iBAAiB,IAAI,kBAAkB,EAAC,gDAA6C;AAE7F,cAAc;AACd,OAAO,EAAC,kBAAkB,EAAC,sCAAmC;AAE9D,EAAE;AACF,qDAAqD;AACrD,EAAE;AAEF,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAC,OAAO,EAAE,4BAA4B,EAAC,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAElC,6CAA6C;AAC7C,OAAO,EACL,YAAY,EACZ,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,qBAAqB;AACrB,kCAAkC;AAClC,OAAO,EAAC,gBAAgB,EAAC,yBAAsB"}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
64
|
catch (error) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"make-stream-iterator.js","sourceRoot":"","sources":["../../../src/iterators/make-iterator/make-stream-iterator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-api.d.ts","sourceRoot":"","sources":["../../../src/lib/api/core-api.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAStD;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,OAQpB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { fetchFile } from "../fetch/fetch-file.js";
|
|
5
|
+
import { parse } from "./parse.js";
|
|
6
|
+
import { parseFile } from "./parse-file.js";
|
|
7
|
+
import { parseSync } from "./parse-sync.js";
|
|
8
|
+
import { parseInBatches } from "./parse-in-batches.js";
|
|
9
|
+
import { load } from "./load.js";
|
|
10
|
+
import { loadInBatches } from "./load-in-batches.js";
|
|
11
|
+
/**
|
|
12
|
+
* Shared Core API surface that can be injected into contexts and sources.
|
|
13
|
+
*/
|
|
14
|
+
export const coreApi = Object.freeze({
|
|
15
|
+
fetchFile,
|
|
16
|
+
parse,
|
|
17
|
+
parseFile,
|
|
18
|
+
parseSync,
|
|
19
|
+
parseInBatches,
|
|
20
|
+
load,
|
|
21
|
+
loadInBatches
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=core-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-api.js","sourceRoot":"","sources":["../../../src/lib/api/core-api.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,SAAS,EAAC,+BAA4B;AAC9C,OAAO,EAAC,KAAK,EAAC,mBAAgB;AAC9B,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,cAAc,EAAC,8BAA2B;AAClD,OAAO,EAAC,IAAI,EAAC,kBAAe;AAC5B,OAAO,EAAC,aAAa,EAAC,6BAA0B;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAY,MAAM,CAAC,MAAM,CAAC;IAC5C,SAAS;IACT,KAAK;IACL,SAAS;IACT,SAAS;IACT,cAAc;IACd,IAAI;IACJ,aAAa;CACd,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SourceLoader, SourceArrayOptionsType, SourceArrayDataSourceType } from '@loaders.gl/loader-utils';
|
|
2
2
|
/**
|
|
3
3
|
* Creates a source from a service
|
|
4
4
|
* If type is not supplied, will try to automatically detect the the
|
|
@@ -6,5 +6,5 @@ import { Source, SourceArrayOptionsType, SourceArrayDataSourceType } from '@load
|
|
|
6
6
|
* @param type type of source. if not known, set to 'auto'
|
|
7
7
|
* @returns an DataSource instance
|
|
8
8
|
*/
|
|
9
|
-
export declare function createDataSource<SourceArrayT extends
|
|
9
|
+
export declare function createDataSource<SourceArrayT extends SourceLoader[]>(data: unknown, sources: Readonly<SourceArrayT>, options: Readonly<SourceArrayOptionsType<SourceArrayT>>): SourceArrayDataSourceType<SourceArrayT>;
|
|
10
10
|
//# sourceMappingURL=create-data-source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-data-source.d.ts","sourceRoot":"","sources":["../../../src/lib/api/create-data-source.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"create-data-source.d.ts","sourceRoot":"","sources":["../../../src/lib/api/create-data-source.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAIlC;;;;;;GAMG;AAGH,wBAAgB,gBAAgB,CAAC,YAAY,SAAS,YAAY,EAAE,EAClE,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC/B,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,GACtD,yBAAyB,CAAC,YAAY,CAAC,CAmBzC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// loaders.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { coreApi } from "./core-api.js";
|
|
5
|
+
import { selectLoaderSync } from "./select-loader.js";
|
|
4
6
|
/**
|
|
5
7
|
* Creates a source from a service
|
|
6
8
|
* If type is not supplied, will try to automatically detect the the
|
|
@@ -11,23 +13,22 @@
|
|
|
11
13
|
// DataSourceOptionsT extends DataSourceOptions = DataSourceOptions,
|
|
12
14
|
// DataSourceT extends DataSource = DataSource
|
|
13
15
|
export function createDataSource(data, sources, options) {
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
+
const resolvedOptions = (options || {});
|
|
17
|
+
const type = resolvedOptions?.core?.type || resolvedOptions.type || 'auto';
|
|
18
|
+
const source = sources.length === 1
|
|
19
|
+
? sources[0]
|
|
20
|
+
: type === 'auto'
|
|
21
|
+
? selectLoaderSync(data, sources, {
|
|
22
|
+
// `createDataSource` supports non-fetch inputs such as in-memory tables.
|
|
23
|
+
// Selection remains best-effort for those cases.
|
|
24
|
+
...resolvedOptions,
|
|
25
|
+
core: { ...resolvedOptions?.core, type: 'auto' }
|
|
26
|
+
})
|
|
27
|
+
: getSourceOfType(type, sources);
|
|
16
28
|
if (!source) {
|
|
17
29
|
throw new Error('Not a valid source type');
|
|
18
30
|
}
|
|
19
|
-
return source.createDataSource(data,
|
|
20
|
-
}
|
|
21
|
-
// TODO - use selectSource...
|
|
22
|
-
/** Guess service type from URL */
|
|
23
|
-
function selectSource(url, sources) {
|
|
24
|
-
for (const service of sources) {
|
|
25
|
-
// @ts-expect-error
|
|
26
|
-
if (service.testURL && service.testURL(url)) {
|
|
27
|
-
return service;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
+
return source.createDataSource(data, resolvedOptions, coreApi);
|
|
31
32
|
}
|
|
32
33
|
/** Guess service type from URL */
|
|
33
34
|
function getSourceOfType(type, sources) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-data-source.js","sourceRoot":"","sources":["../../../src/lib/api/create-data-source.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;
|
|
1
|
+
{"version":3,"file":"create-data-source.js","sourceRoot":"","sources":["../../../src/lib/api/create-data-source.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAOpC,OAAO,EAAC,OAAO,EAAC,sBAAmB;AACnC,OAAO,EAAC,gBAAgB,EAAC,2BAAwB;AAEjD;;;;;;GAMG;AACH,oEAAoE;AACpE,8CAA8C;AAC9C,MAAM,UAAU,gBAAgB,CAC9B,IAAa,EACb,OAA+B,EAC/B,OAAuD;IAEvD,MAAM,eAAe,GAAG,CAAC,OAAO,IAAI,EAAE,CAAyC,CAAC;IAChF,MAAM,IAAI,GAAG,eAAe,EAAE,IAAI,EAAE,IAAI,IAAK,eAAe,CAAC,IAA0B,IAAI,MAAM,CAAC;IAClG,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,IAAI,KAAK,MAAM;YACf,CAAC,CAAE,gBAAgB,CAAC,IAAa,EAAE,OAAoC,EAAE;gBACrE,yEAAyE;gBACzE,iDAAiD;gBACjD,GAAG,eAAe;gBAClB,IAAI,EAAE,EAAC,GAAG,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC;aAC/C,CAAiC;YACpC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAqB,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AAClF,CAAC;AAED,kCAAkC;AAClC,SAAS,eAAe,CAAC,IAAY,EAAE,OAAiC;IACtE,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Loader, LoaderOptions, LoaderContext, LoaderBatchType, LoaderOptionsType, LoaderOptionsWithShape, LoaderShapeType } from '@loaders.gl/loader-utils';
|
|
2
2
|
type FileType = string | File | Blob | Response | (string | File | Blob | Response)[] | FileList;
|
|
3
3
|
/**
|
|
4
4
|
* Parses `data` synchronously using a specified loader
|
|
5
5
|
*/
|
|
6
|
-
export declare function loadInBatches<LoaderT extends
|
|
6
|
+
export declare function loadInBatches<LoaderT extends Loader, OptionsT extends LoaderOptions = LoaderOptionsWithShape<LoaderOptionsType<LoaderT>, LoaderShapeType<LoaderT>>>(files: FileType, loader: LoaderT, options?: OptionsT, context?: LoaderContext): Promise<AsyncIterable<LoaderBatchType<LoaderT>>>;
|
|
7
7
|
/**
|
|
8
8
|
* Parses `data` using a specified loader
|
|
9
9
|
* @param data
|
|
@@ -11,7 +11,7 @@ export declare function loadInBatches<LoaderT extends LoaderWithParser, OptionsT
|
|
|
11
11
|
* @param options
|
|
12
12
|
* @param context
|
|
13
13
|
*/
|
|
14
|
-
export declare function loadInBatches(files: FileType, loaders?:
|
|
15
|
-
export declare function loadInBatches(files: FileType[] | FileList, loaders?:
|
|
14
|
+
export declare function loadInBatches(files: FileType, loaders?: Loader | Loader[] | LoaderOptions, options?: LoaderOptions, context?: LoaderContext): Promise<AsyncIterable<unknown>>;
|
|
15
|
+
export declare function loadInBatches(files: FileType[] | FileList, loaders?: Loader | Loader[] | LoaderOptions, options?: LoaderOptions, context?: LoaderContext): Promise<AsyncIterable<unknown>>[];
|
|
16
16
|
export {};
|
|
17
17
|
//# sourceMappingURL=load-in-batches.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-in-batches.d.ts","sourceRoot":"","sources":["../../../src/lib/api/load-in-batches.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"load-in-batches.d.ts","sourceRoot":"","sources":["../../../src/lib/api/load-in-batches.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,MAAM,EACN,aAAa,EACb,aAAa,EAGb,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAMlC,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC;AAEjG;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,aAAa,GAAG,sBAAsB,CACrD,iBAAiB,CAAC,OAAO,CAAC,EAC1B,eAAe,CAAC,OAAO,CAAC,CACzB,EAED,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,aAAa,EAC3C,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAEnC,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,aAAa,EAC3C,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC"}
|
|
@@ -22,7 +22,7 @@ export function loadInBatches(files, loaders, options, context) {
|
|
|
22
22
|
return loadOneFileInBatches(files, loadersArray, options || {}, fetch);
|
|
23
23
|
}
|
|
24
24
|
// Multiple URLs / files
|
|
25
|
-
const promises = files.map(
|
|
25
|
+
const promises = files.map(file => loadOneFileInBatches(file, loadersArray, options || {}, fetch));
|
|
26
26
|
// No point in waiting here for all responses before starting to stream individual streams?
|
|
27
27
|
return promises;
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-in-batches.js","sourceRoot":"","sources":["../../../src/lib/api/load-in-batches.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;
|
|
1
|
+
{"version":3,"file":"load-in-batches.js","sourceRoot":"","sources":["../../../src/lib/api/load-in-batches.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAapC,OAAO,EAAC,cAAc,EAAC,4CAAyC;AAChE,OAAO,EAAC,gBAAgB,EAAC,8CAA2C;AAEpE,OAAO,EAAC,cAAc,EAAC,8BAA2B;AAyClD,MAAM,UAAU,aAAa,CAC3B,KAAuC,EACvC,OAA2C,EAC3C,OAAuB,EACvB,OAAuB;IAEvB,IAAI,YAA2C,CAAC;IAChD,gCAAgC;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,SAAS,CAAC,CAAC,2CAA2C;QAChE,OAAO,GAAG,OAAwB,CAAC;QACnC,YAAY,GAAG,SAAS,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,OAAwC,CAAC;IAC1D,CAAC;IAED,wBAAwB;IACxB,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAE9C,kBAAkB;IAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,oBAAoB,CAAC,KAAK,EAAE,YAAa,EAAE,OAAO,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED,wBAAwB;IACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAChC,oBAAoB,CAAC,IAAI,EAAE,YAAa,EAAE,OAAO,IAAI,EAAE,EAAE,KAAK,CAAC,CAChE,CAAC;IAEF,2FAA2F;IAC3F,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,IAAc,EACd,OAA0B,EAC1B,OAAsB,EACtB,KAAgB;IAEhB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC;QACjB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,sBAAsB;QACtB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3B,CAAC,CAAC,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;YAClD,CAAC,CAAC,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IACD,sBAAsB;IACtB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAC,MAAM,cAAc,CAAC,IAAyB,EAAE,OAAO,EAAE,OAAO,CAAC;QACnE,CAAC,CAAC,MAAM,cAAc,CAAC,IAAyB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Loader, LoaderOptions, LoaderWithParser } from '@loaders.gl/loader-utils';
|
|
2
|
+
/** Gets a parser-bearing implementation for a loader, loading it if needed. */
|
|
3
|
+
export declare function getLoaderImplementation(loader: Loader, options?: LoaderOptions, url?: string): Promise<LoaderWithParser>;
|
|
4
|
+
/** Gets a cached parser-bearing implementation for a loader without loading it. */
|
|
5
|
+
export declare function getLoaderImplementationSync(loader: Loader): LoaderWithParser | null;
|
|
6
|
+
/** Returns true when a loader object already includes parser methods. */
|
|
7
|
+
export declare function isLoaderWithParser(loader: Loader): loader is LoaderWithParser;
|
|
8
|
+
//# sourceMappingURL=load-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-loader.d.ts","sourceRoot":"","sources":["../../../src/lib/api/load-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAKtF,+EAA+E;AAC/E,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,aAAa,EACvB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CAyC3B;AAED,mFAAmF;AACnF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAOnF;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,gBAAgB,CAW7E"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
const loaderImplementationPromises = new Map();
|
|
5
|
+
const loaderImplementations = new Map();
|
|
6
|
+
/** Gets a parser-bearing implementation for a loader, loading it if needed. */
|
|
7
|
+
export async function getLoaderImplementation(loader, options, url) {
|
|
8
|
+
if (isLoaderWithParser(loader)) {
|
|
9
|
+
return loader;
|
|
10
|
+
}
|
|
11
|
+
const implementationCacheKey = getLoaderImplementationCacheKey(loader, options);
|
|
12
|
+
const loaderImplementation = loaderImplementations.get(loader)?.get(implementationCacheKey);
|
|
13
|
+
if (loaderImplementation) {
|
|
14
|
+
return loaderImplementation;
|
|
15
|
+
}
|
|
16
|
+
let loaderImplementationPromisesForLoader = loaderImplementationPromises.get(loader);
|
|
17
|
+
if (!loaderImplementationPromisesForLoader) {
|
|
18
|
+
loaderImplementationPromisesForLoader = new Map();
|
|
19
|
+
loaderImplementationPromises.set(loader, loaderImplementationPromisesForLoader);
|
|
20
|
+
}
|
|
21
|
+
let loaderImplementationPromise = loaderImplementationPromisesForLoader.get(implementationCacheKey);
|
|
22
|
+
if (!loaderImplementationPromise) {
|
|
23
|
+
loaderImplementationPromise = resolveLoaderImplementation(loader, options, url)
|
|
24
|
+
.then(implementation => {
|
|
25
|
+
let loaderImplementationsForLoader = loaderImplementations.get(loader);
|
|
26
|
+
if (!loaderImplementationsForLoader) {
|
|
27
|
+
loaderImplementationsForLoader = new Map();
|
|
28
|
+
loaderImplementations.set(loader, loaderImplementationsForLoader);
|
|
29
|
+
}
|
|
30
|
+
loaderImplementationsForLoader.set(implementationCacheKey, implementation);
|
|
31
|
+
return implementation;
|
|
32
|
+
})
|
|
33
|
+
.catch(error => {
|
|
34
|
+
loaderImplementationPromisesForLoader.delete(implementationCacheKey);
|
|
35
|
+
if (loaderImplementationPromisesForLoader.size === 0) {
|
|
36
|
+
loaderImplementationPromises.delete(loader);
|
|
37
|
+
}
|
|
38
|
+
throw error;
|
|
39
|
+
});
|
|
40
|
+
loaderImplementationPromisesForLoader.set(implementationCacheKey, loaderImplementationPromise);
|
|
41
|
+
}
|
|
42
|
+
return await loaderImplementationPromise;
|
|
43
|
+
}
|
|
44
|
+
/** Gets a cached parser-bearing implementation for a loader without loading it. */
|
|
45
|
+
export function getLoaderImplementationSync(loader) {
|
|
46
|
+
if (isLoaderWithParser(loader)) {
|
|
47
|
+
return loader;
|
|
48
|
+
}
|
|
49
|
+
const implementationCacheKey = getLoaderImplementationCacheKey(loader);
|
|
50
|
+
return loaderImplementations.get(loader)?.get(implementationCacheKey) || null;
|
|
51
|
+
}
|
|
52
|
+
/** Returns true when a loader object already includes parser methods. */
|
|
53
|
+
export function isLoaderWithParser(loader) {
|
|
54
|
+
const candidate = loader;
|
|
55
|
+
return Boolean(candidate.parse ||
|
|
56
|
+
candidate.parseSync ||
|
|
57
|
+
candidate.parseInBatches ||
|
|
58
|
+
candidate.parseText ||
|
|
59
|
+
candidate.parseTextSync ||
|
|
60
|
+
candidate.parseFile ||
|
|
61
|
+
candidate.parseFileInBatches);
|
|
62
|
+
}
|
|
63
|
+
/** Resolves a parser-bearing implementation through loader preload or the test import fallback. */
|
|
64
|
+
async function resolveLoaderImplementation(loader, options, url) {
|
|
65
|
+
if (loader.preload) {
|
|
66
|
+
const preloadedLoader = await loader.preload(url || '', options);
|
|
67
|
+
if (isLoaderWithParser(preloadedLoader)) {
|
|
68
|
+
return preloadedLoader;
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`${loader.id} loader preload() did not return a parser-bearing loader`);
|
|
71
|
+
}
|
|
72
|
+
const implementationSpecifier = getLoaderImplementationSpecifier(loader, options);
|
|
73
|
+
return await importLoaderImplementation(implementationSpecifier, loader.id);
|
|
74
|
+
}
|
|
75
|
+
/** Gets the dynamic implementation specifier for the test worker fallback path. */
|
|
76
|
+
function getLoaderImplementationSpecifier(loader, options) {
|
|
77
|
+
const workerType = options?._workerType || options?.core?._workerType;
|
|
78
|
+
if (workerType === 'test') {
|
|
79
|
+
const sourcePath = `modules/${loader.module}/src/${loader.id}-loader.ts`;
|
|
80
|
+
if (typeof window !== 'undefined') {
|
|
81
|
+
return `/${sourcePath}`;
|
|
82
|
+
}
|
|
83
|
+
if (typeof process !== 'undefined' && process.cwd) {
|
|
84
|
+
return new URL(sourcePath, `file://${process.cwd()}/`).toString();
|
|
85
|
+
}
|
|
86
|
+
return sourcePath;
|
|
87
|
+
}
|
|
88
|
+
throw new Error(`${loader.id} loader does not provide a parser implementation. Import a parser-bearing loader directly, or use preload() before parse/load.`);
|
|
89
|
+
}
|
|
90
|
+
/** Gets the cache key for option-selected parser implementations. */
|
|
91
|
+
function getLoaderImplementationCacheKey(loader, options) {
|
|
92
|
+
const loaderOptions = options?.[loader.id];
|
|
93
|
+
const defaultLoaderOptions = loader.options?.[loader.id];
|
|
94
|
+
return String(loaderOptions?.backend || defaultLoaderOptions?.backend || '');
|
|
95
|
+
}
|
|
96
|
+
/** Imports a module and finds the parser-bearing loader implementation with the requested id. */
|
|
97
|
+
async function importLoaderImplementation(implementationSpecifier, loaderId) {
|
|
98
|
+
const moduleExports = await import(
|
|
99
|
+
/* webpackIgnore: true */ /* @vite-ignore */ implementationSpecifier);
|
|
100
|
+
for (const exportValue of Object.values(moduleExports)) {
|
|
101
|
+
if (exportValue &&
|
|
102
|
+
typeof exportValue === 'object' &&
|
|
103
|
+
exportValue.id === loaderId &&
|
|
104
|
+
isLoaderWithParser(exportValue)) {
|
|
105
|
+
return exportValue;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
throw new Error(`Could not find parser implementation for ${loaderId} in ${implementationSpecifier}`);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=load-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-loader.js","sourceRoot":"","sources":["../../../src/lib/api/load-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api/load.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DataType, Loader, LoaderContext, LoaderOptions, LoaderOptionsType, LoaderReturnType, LoaderArrayOptionsType, LoaderArrayReturnType } from '@loaders.gl/loader-utils';
|
|
1
|
+
import type { DataType, Loader, LoaderContext, LoaderOptions, LoaderOptionsWithShape, LoaderOptionsType, LoaderShapeType, LoaderReturnType, LoaderArrayOptionsType, LoaderArrayReturnType } from '@loaders.gl/loader-utils';
|
|
2
2
|
/**
|
|
3
3
|
* Parses `data` using a specified loader
|
|
4
4
|
* Note: Load does duplicate a lot of parse.
|
|
@@ -8,7 +8,7 @@ import type { DataType, Loader, LoaderContext, LoaderOptions, LoaderOptionsType,
|
|
|
8
8
|
* @param options
|
|
9
9
|
* @param context
|
|
10
10
|
*/
|
|
11
|
-
export declare function load<LoaderT extends Loader, OptionsT extends LoaderOptions = LoaderOptionsType<LoaderT
|
|
11
|
+
export declare function load<LoaderT extends Loader, OptionsT extends LoaderOptions = LoaderOptionsWithShape<LoaderOptionsType<LoaderT>, LoaderShapeType<LoaderT>>>(url: string | DataType, loader: LoaderT, options?: OptionsT, context?: LoaderContext): Promise<LoaderReturnType<LoaderT>>;
|
|
12
12
|
export declare function load<LoaderArrayT extends Loader[], OptionsT extends LoaderOptions = LoaderArrayOptionsType<LoaderArrayT>>(url: string | DataType, loaders: LoaderArrayT, options?: OptionsT, context?: LoaderContext): Promise<LoaderArrayReturnType<LoaderArrayT>>;
|
|
13
13
|
/**
|
|
14
14
|
* Loads data asynchronously by matching a pre-registered loader
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/lib/api/load.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EACR,MAAM,EACN,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/lib/api/load.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EACR,MAAM,EACN,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAclC;;;;;;;;GAQG;AAEH,wBAAsB,IAAI,CACxB,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,aAAa,GAAG,sBAAsB,CACrD,iBAAiB,CAAC,OAAO,CAAC,EAC1B,eAAe,CAAC,OAAO,CAAC,CACzB,EAED,GAAG,EAAE,MAAM,GAAG,QAAQ,EACtB,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEtC,wBAAsB,IAAI,CACxB,YAAY,SAAS,MAAM,EAAE,EAC7B,QAAQ,SAAS,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,EAErE,GAAG,EAAE,MAAM,GAAG,QAAQ,EACtB,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,IAAI,CACxB,GAAG,EAAE,MAAM,GAAG,QAAQ,EACtB,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,CAAC"}
|
package/dist/lib/api/load.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
// loaders.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
import { isBlob } from '@loaders.gl/loader-utils';
|
|
4
|
+
import { isBlob, isSourceLoader } from '@loaders.gl/loader-utils';
|
|
5
5
|
import { isLoaderObject } from "../loader-utils/normalize-loader.js";
|
|
6
6
|
import { getFetchFunction } from "../loader-utils/get-fetch-function.js";
|
|
7
7
|
import { normalizeLoaderOptions } from "../loader-utils/option-utils.js";
|
|
8
|
+
import { fetchFile } from "../fetch/fetch-file.js";
|
|
8
9
|
import { parse } from "./parse.js";
|
|
10
|
+
import { parseFile } from "./parse-file.js";
|
|
11
|
+
import { parseSync } from "./parse-sync.js";
|
|
12
|
+
import { parseInBatches } from "./parse-in-batches.js";
|
|
13
|
+
import { loadInBatches } from "./load-in-batches.js";
|
|
14
|
+
import { selectLoader } from "./select-loader.js";
|
|
9
15
|
// export async function load(url: string | DataType, loaders: LoaderOptions): Promise<any>;
|
|
10
16
|
// implementation signature
|
|
11
17
|
export async function load(url, loaders, options, context) {
|
|
@@ -21,6 +27,52 @@ export async function load(url, loaders, options, context) {
|
|
|
21
27
|
resolvedLoaders = loaders;
|
|
22
28
|
resolvedOptions = options;
|
|
23
29
|
}
|
|
30
|
+
if (!Array.isArray(resolvedLoaders) && isSourceLoader(resolvedLoaders)) {
|
|
31
|
+
const sourceLoader = await resolveSourceLoader(resolvedLoaders, url, resolvedOptions);
|
|
32
|
+
const runtimeCoreApi = {
|
|
33
|
+
fetchFile,
|
|
34
|
+
parse,
|
|
35
|
+
parseFile,
|
|
36
|
+
parseSync,
|
|
37
|
+
parseInBatches,
|
|
38
|
+
load,
|
|
39
|
+
loadInBatches
|
|
40
|
+
};
|
|
41
|
+
return sourceLoader.createDataSource(url, (resolvedOptions || {}), runtimeCoreApi);
|
|
42
|
+
}
|
|
43
|
+
if (Array.isArray(resolvedLoaders) &&
|
|
44
|
+
resolvedLoaders.length === 1 &&
|
|
45
|
+
isSourceLoader(resolvedLoaders[0])) {
|
|
46
|
+
const sourceLoader = await resolveSourceLoader(resolvedLoaders[0], url, resolvedOptions);
|
|
47
|
+
const runtimeCoreApi = {
|
|
48
|
+
fetchFile,
|
|
49
|
+
parse,
|
|
50
|
+
parseFile,
|
|
51
|
+
parseSync,
|
|
52
|
+
parseInBatches,
|
|
53
|
+
load,
|
|
54
|
+
loadInBatches
|
|
55
|
+
};
|
|
56
|
+
return sourceLoader.createDataSource(url, (resolvedOptions || {}), runtimeCoreApi);
|
|
57
|
+
}
|
|
58
|
+
if (typeof url === 'string' || isBlob(url)) {
|
|
59
|
+
const selectedLoader = await selectLoader(url, resolvedLoaders, {
|
|
60
|
+
...resolvedOptions,
|
|
61
|
+
core: { ...resolvedOptions?.core, nothrow: true }
|
|
62
|
+
});
|
|
63
|
+
if (selectedLoader && isSourceLoader(selectedLoader)) {
|
|
64
|
+
const sourceLoader = await resolveSourceLoader(selectedLoader, url, resolvedOptions);
|
|
65
|
+
return sourceLoader.createDataSource(url, (resolvedOptions || {}), {
|
|
66
|
+
fetchFile,
|
|
67
|
+
parse,
|
|
68
|
+
parseFile,
|
|
69
|
+
parseSync,
|
|
70
|
+
parseInBatches,
|
|
71
|
+
load,
|
|
72
|
+
loadInBatches
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
24
76
|
// Select fetch function
|
|
25
77
|
const fetch = getFetchFunction(resolvedOptions);
|
|
26
78
|
// at this point, `url` could be already loaded binary data
|
|
@@ -50,7 +102,18 @@ export async function load(url, loaders, options, context) {
|
|
|
50
102
|
// Data is loaded (at least we have a `Response` object) so time to hand over to `parse`
|
|
51
103
|
// return await parse(data, loaders as Loader[], options);
|
|
52
104
|
return Array.isArray(resolvedLoaders)
|
|
53
|
-
? await parse(data, resolvedLoaders, resolvedOptions) // loader array overload
|
|
54
|
-
: await parse(data, resolvedLoaders, resolvedOptions); // single loader overload
|
|
105
|
+
? await parse(data, resolvedLoaders, resolvedOptions, context) // loader array overload
|
|
106
|
+
: await parse(data, resolvedLoaders, resolvedOptions, context); // single loader overload
|
|
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;
|
|
55
118
|
}
|
|
56
119
|
//# sourceMappingURL=load.js.map
|
package/dist/lib/api/load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/lib/api/load.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/lib/api/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Loader, LoaderContext, LoaderOptions, LoaderOptionsWithShape, LoaderOptionsType, LoaderShapeType, LoaderReturnType, LoaderArrayOptionsType, LoaderArrayReturnType, ReadableFile } from '@loaders.gl/loader-utils';
|
|
2
|
+
/**
|
|
3
|
+
* Parses a random access readable file asynchronously using the supplied loader.
|
|
4
|
+
*/
|
|
5
|
+
export declare function parseFile<LoaderT extends Loader, OptionsT extends LoaderOptions = LoaderOptionsWithShape<LoaderOptionsType<LoaderT>, LoaderShapeType<LoaderT>>>(file: ReadableFile, loader: LoaderT, options?: OptionsT, context?: LoaderContext): Promise<LoaderReturnType<LoaderT>>;
|
|
6
|
+
/**
|
|
7
|
+
* Parses a random access readable file asynchronously by matching one of the supplied loaders.
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseFile<LoaderArrayT extends Loader[], OptionsT extends LoaderOptions = LoaderArrayOptionsType<LoaderArrayT>>(file: ReadableFile, loaders: LoaderArrayT, options?: OptionsT, context?: LoaderContext): Promise<LoaderArrayReturnType<LoaderArrayT>>;
|
|
10
|
+
/**
|
|
11
|
+
* Parses a random access readable file asynchronously by matching a pre-registered loader.
|
|
12
|
+
* @deprecated Loader registration is deprecated, use parseFile(file, loaders, options) instead.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseFile(file: ReadableFile, options?: LoaderOptions): Promise<unknown>;
|
|
15
|
+
//# sourceMappingURL=parse-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-file.d.ts","sourceRoot":"","sources":["../../../src/lib/api/parse-file.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,MAAM,EACN,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EAErB,YAAY,EAEb,MAAM,0BAA0B,CAAC;AAUlC;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,aAAa,GAAG,sBAAsB,CACrD,iBAAiB,CAAC,OAAO,CAAC,EAC1B,eAAe,CAAC,OAAO,CAAC,CACzB,EAED,IAAI,EAAE,YAAY,EAClB,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,SAAS,CAC7B,YAAY,SAAS,MAAM,EAAE,EAC7B,QAAQ,SAAS,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,EAErE,IAAI,EAAE,YAAY,EAClB,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,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC"}
|