@loaders.gl/core 4.5.3 → 5.0.0-alpha.10
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 +1789 -352
- package/dist/dist.min.js +4 -3
- package/dist/index.cjs +3087 -311
- 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 +36 -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 +17 -6
- package/dist/lib/api/load-in-batches.js.map +1 -1
- package/dist/lib/api/load-loader.d.ts +10 -0
- package/dist/lib/api/load-loader.d.ts.map +1 -0
- package/dist/lib/api/load-loader.js +222 -0
- package/dist/lib/api/load-loader.js.map +1 -0
- package/dist/lib/api/load.d.ts +3 -3
- package/dist/lib/api/load.d.ts.map +1 -1
- package/dist/lib/api/load.js +84 -5
- 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 +74 -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 +18 -7
- 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 +34 -17
- package/dist/lib/api/parse.js.map +1 -1
- package/dist/lib/api/preload.d.ts +14 -0
- package/dist/lib/api/preload.d.ts.map +1 -0
- package/dist/lib/api/preload.js +13 -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/filesystems/browser-filesystem.d.ts.map +1 -1
- package/dist/lib/filesystems/browser-filesystem.js +25 -11
- package/dist/lib/filesystems/browser-filesystem.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 +16 -10
- package/dist/lib/loader-utils/get-fetch-function.js.map +1 -1
- package/dist/lib/loader-utils/loader-context.d.ts +2 -2
- package/dist/lib/loader-utils/loader-context.d.ts.map +1 -1
- package/dist/lib/loader-utils/loader-context.js +11 -4
- 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 +5 -0
- package/dist/lib/loader-utils/option-defaults.js.map +1 -1
- package/dist/lib/loader-utils/option-utils.d.ts +7 -0
- package/dist/lib/loader-utils/option-utils.d.ts.map +1 -1
- package/dist/lib/loader-utils/option-utils.js +91 -3
- package/dist/lib/loader-utils/option-utils.js.map +1 -1
- package/dist/lib/utils/response-utils.js +5 -14
- 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 +270 -42
- package/dist/null-worker.js +270 -42
- 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 +53 -24
- package/src/lib/api/load-in-batches.ts +33 -21
- package/src/lib/api/load-loader.ts +306 -0
- package/src/lib/api/load.ts +160 -9
- package/src/lib/api/parse-file.ts +156 -0
- package/src/lib/api/parse-in-batches.ts +35 -8
- package/src/lib/api/parse-sync.ts +27 -2
- package/src/lib/api/parse.ts +61 -20
- package/src/lib/api/preload.ts +46 -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/filesystems/browser-filesystem.ts +25 -11
- 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 +17 -15
- package/src/lib/loader-utils/loader-context.ts +13 -5
- package/src/lib/loader-utils/loggers.ts +28 -2
- package/src/lib/loader-utils/option-defaults.ts +5 -0
- package/src/lib/loader-utils/option-utils.ts +106 -3
- package/src/lib/utils/response-utils.ts +5 -15
- package/src/null-loader.ts +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// loaders.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
import { isResponse } from '@loaders.gl/loader-utils';
|
|
4
|
+
import { encodeArrayBufferToBase64, isResponse } from '@loaders.gl/loader-utils';
|
|
5
5
|
import { FetchError } from "../fetch/fetch-error.js";
|
|
6
6
|
import { getResourceContentLength, getResourceUrl, getResourceMIMEType } from "./resource-utils.js";
|
|
7
7
|
import { shortenUrlForDisplay } from "./url-utils.js";
|
|
@@ -84,7 +84,7 @@ async function getResponseError(response) {
|
|
|
84
84
|
? await response.json()
|
|
85
85
|
: await response.text();
|
|
86
86
|
}
|
|
87
|
-
catch (
|
|
87
|
+
catch (_error) {
|
|
88
88
|
// eslint forbids return in a finally statement, so we just catch here
|
|
89
89
|
}
|
|
90
90
|
return new FetchError(message, info);
|
|
@@ -96,26 +96,17 @@ async function getInitialDataUrl(resource) {
|
|
|
96
96
|
}
|
|
97
97
|
if (resource instanceof Blob) {
|
|
98
98
|
const blobSlice = resource.slice(0, 5);
|
|
99
|
-
return await new Promise(
|
|
99
|
+
return await new Promise(resolve => {
|
|
100
100
|
const reader = new FileReader();
|
|
101
|
-
reader.onload =
|
|
101
|
+
reader.onload = event => resolve(event?.target?.result);
|
|
102
102
|
reader.readAsDataURL(blobSlice);
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
if (resource instanceof ArrayBuffer) {
|
|
106
106
|
const slice = resource.slice(0, INITIAL_DATA_LENGTH);
|
|
107
|
-
const base64 =
|
|
107
|
+
const base64 = encodeArrayBufferToBase64(slice);
|
|
108
108
|
return `data:base64,${base64}`;
|
|
109
109
|
}
|
|
110
110
|
return null;
|
|
111
111
|
}
|
|
112
|
-
// https://stackoverflow.com/questions/9267899/arraybuffer-to-base64-encoded-string
|
|
113
|
-
function arrayBufferToBase64(buffer) {
|
|
114
|
-
let binary = '';
|
|
115
|
-
const bytes = new Uint8Array(buffer);
|
|
116
|
-
for (let i = 0; i < bytes.byteLength; i++) {
|
|
117
|
-
binary += String.fromCharCode(bytes[i]);
|
|
118
|
-
}
|
|
119
|
-
return btoa(binary);
|
|
120
|
-
}
|
|
121
112
|
//# sourceMappingURL=response-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-utils.js","sourceRoot":"","sources":["../../../src/lib/utils/response-utils.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"response-utils.js","sourceRoot":"","sources":["../../../src/lib/utils/response-utils.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,yBAAyB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAC,UAAU,EAAC,gCAA6B;AAChD,OAAO,EAAC,wBAAwB,EAAE,cAAc,EAAE,mBAAmB,EAAC,4BAAyB;AAC/F,OAAO,EAAC,oBAAoB,EAAC,uBAAoB;AAEjD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAiB;IAClD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,wCAAwC;IACxC,MAAM,OAAO,GAA+B,EAAE,CAAC;IAE/C,MAAM,aAAa,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,8DAA8D;IAC9D,sBAAsB;IACtB,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,sDAAsD;IACtD,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,eAAe,CAAC,GAAG,cAAc,CAAC;IAC5C,CAAC;IAED,mDAAmD;IACnD,qCAAqC;IACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,gEAAgE;QAChE,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,iFAAiF;IACjF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAe,EAAE,EAAC,OAAO,EAAC,CAAC,CAAC;IAC1D,0FAA0F;IAC1F,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC;IACrD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAkB;IACpD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC1D,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,UAAU;AAEV,KAAK,UAAU,gBAAgB,CAAC,QAAkB;IAChD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpD,IAAI,OAAO,GAAG,6BAA6B,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;IAClG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAEzE,MAAM,IAAI,GAAG;QACX,MAAM,EAAE,QAAQ,CAAC,UAAU;QAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,QAAQ;KACT,CAAC;IAEF,6CAA6C;IAC7C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM;YACT,CAAC,QAAQ,CAAC,QAAQ,IAAI,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC;gBAC7D,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE;gBACvB,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,sEAAsE;IACxE,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,QAA+C;IAE/C,MAAM,mBAAmB,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,SAAS,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC;IAC3D,CAAC;IACD,IAAI,QAAQ,YAAY,IAAI,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,OAAO,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACjC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAgB,CAAC,CAAC;YAClE,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,YAAY,WAAW,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,eAAe,MAAM,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"null-loader.d.ts","sourceRoot":"","sources":["../src/null-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"null-loader.d.ts","sourceRoot":"","sources":["../src/null-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA2B,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAMvD,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,IAAI,CAAC,EAAE,EAAE,CAAC;CACX,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;wBAER,KAAK;;;;;;;;;;;;CAYiC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;kCAWN,eAAe,GAAG,eAAe,YACpC,iBAAiB,YACjB,aAAa;;;;;;;CAYyC,CAAC;AAErE;;;GAGG;AACH,iBAAS,SAAS,CAChB,WAAW,EAAE,eAAe,GAAG,eAAe,EAC9C,OAAO,CAAC,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,IAAI,CAEN"}
|
package/dist/null-loader.js
CHANGED
|
@@ -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 "
|
|
6
|
+
const VERSION = typeof "5.0.0-alpha.10" !== 'undefined' ? "5.0.0-alpha.10" : 'latest';
|
|
7
7
|
/**
|
|
8
8
|
* Loads any data and returns null (or optionally passes through data unparsed)
|
|
9
9
|
*/
|
package/dist/null-loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"null-loader.js","sourceRoot":"","sources":["../src/null-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;
|
|
1
|
+
{"version":3,"file":"null-loader.js","sourceRoot":"","sources":["../src/null-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAKpC,yDAAyD;AACzD,qDAAqD;AACrD,MAAM,OAAO,GAAG,uBAAkB,KAAK,WAAW,CAAC,CAAC,kBAAa,CAAC,CAAC,QAAQ,CAAC;AAM5E;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAa;IACxB,IAAI,EAAE,aAAa;IACnB,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,CAAC,qBAAqB,CAAC;IAClC,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;IACpB,OAAO,EAAE;QACP,IAAI,EAAE,EAAE;KACT;CACwD,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IAEf,IAAI,EAAE,aAAa;IACnB,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,CAAC,qBAAqB,CAAC;IAClC,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,EACV,WAA8C,EAC9C,OAA2B,EAC3B,OAAuB,EACvB,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC;IACnD,SAAS;IACT,cAAc,EAAE,KAAK,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO;QACvE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YACxC,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;IACpB,OAAO,EAAE;QACP,IAAI,EAAE,EAAE;KACT;CACiE,CAAC;AAErE;;;GAGG;AACH,SAAS,SAAS,CAChB,WAA8C,EAC9C,OAA2B,EAC3B,OAAuB;IAEvB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/null-worker-node.js
CHANGED
|
@@ -106,18 +106,18 @@ var WorkerBody = class {
|
|
|
106
106
|
static async addEventListener(onMessage) {
|
|
107
107
|
let onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
108
108
|
if (!onMessageWrapper) {
|
|
109
|
-
onMessageWrapper =
|
|
110
|
-
|
|
109
|
+
onMessageWrapper = (message) => {
|
|
110
|
+
const messageData = getWorkerMessageData(message);
|
|
111
|
+
if (!messageData) {
|
|
111
112
|
return;
|
|
112
113
|
}
|
|
113
|
-
|
|
114
|
-
const { type, payload } = parentPort3 ? message : message.data;
|
|
115
|
-
onMessage(type, payload);
|
|
114
|
+
onMessage(messageData.type, messageData.payload);
|
|
116
115
|
};
|
|
116
|
+
onMessageWrapperMap.set(onMessage, onMessageWrapper);
|
|
117
117
|
}
|
|
118
118
|
const parentPort2 = await getParentPort();
|
|
119
119
|
if (parentPort2) {
|
|
120
|
-
|
|
120
|
+
parentPort2.on("message", onMessageWrapper);
|
|
121
121
|
} else {
|
|
122
122
|
globalThis.addEventListener("message", onMessageWrapper);
|
|
123
123
|
}
|
|
@@ -125,9 +125,12 @@ var WorkerBody = class {
|
|
|
125
125
|
static async removeEventListener(onMessage) {
|
|
126
126
|
const onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
127
127
|
onMessageWrapperMap.delete(onMessage);
|
|
128
|
+
if (!onMessageWrapper) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
128
131
|
const parentPort2 = await getParentPort();
|
|
129
132
|
if (parentPort2) {
|
|
130
|
-
|
|
133
|
+
parentPort2.off("message", onMessageWrapper);
|
|
131
134
|
} else {
|
|
132
135
|
globalThis.removeEventListener("message", onMessageWrapper);
|
|
133
136
|
}
|
|
@@ -148,44 +151,175 @@ var WorkerBody = class {
|
|
|
148
151
|
}
|
|
149
152
|
}
|
|
150
153
|
};
|
|
151
|
-
function
|
|
152
|
-
|
|
153
|
-
|
|
154
|
+
function getWorkerMessageData(message) {
|
|
155
|
+
if (!message || typeof message !== "object") {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
const messageData = "data" in message && message.type === "message" ? message.data : message;
|
|
159
|
+
return messageData && typeof messageData.source === "string" && messageData.source.startsWith("loaders.gl") ? messageData : null;
|
|
154
160
|
}
|
|
155
161
|
|
|
156
|
-
// ../
|
|
162
|
+
// ../worker-utils/src/lib/async-queue/async-queue.ts
|
|
163
|
+
var AsyncQueue = class {
|
|
164
|
+
_values;
|
|
165
|
+
_settlers;
|
|
166
|
+
_closed;
|
|
167
|
+
constructor() {
|
|
168
|
+
this._values = [];
|
|
169
|
+
this._settlers = [];
|
|
170
|
+
this._closed = false;
|
|
171
|
+
}
|
|
172
|
+
/** Return an async iterator for this queue */
|
|
173
|
+
[Symbol.asyncIterator]() {
|
|
174
|
+
return this;
|
|
175
|
+
}
|
|
176
|
+
/** Push a new value - the async iterator will yield a promise resolved to this value */
|
|
177
|
+
push(value) {
|
|
178
|
+
return this.enqueue(value);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Push a new value - the async iterator will yield a promise resolved to this value
|
|
182
|
+
* Add an error - the async iterator will yield a promise rejected with this value
|
|
183
|
+
*/
|
|
184
|
+
enqueue(value) {
|
|
185
|
+
if (this._closed) {
|
|
186
|
+
throw new Error("Closed");
|
|
187
|
+
}
|
|
188
|
+
if (this._settlers.length > 0) {
|
|
189
|
+
if (this._values.length > 0) {
|
|
190
|
+
throw new Error("Illegal internal state");
|
|
191
|
+
}
|
|
192
|
+
const settler = this._settlers.shift();
|
|
193
|
+
if (value instanceof Error) {
|
|
194
|
+
settler.reject(value);
|
|
195
|
+
} else {
|
|
196
|
+
settler.resolve({ value });
|
|
197
|
+
}
|
|
198
|
+
} else {
|
|
199
|
+
this._values.push(value);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/** Indicate that we not waiting for more values - The async iterator will be done */
|
|
203
|
+
close() {
|
|
204
|
+
while (this._settlers.length > 0) {
|
|
205
|
+
const settler = this._settlers.shift();
|
|
206
|
+
settler.resolve({ done: true });
|
|
207
|
+
}
|
|
208
|
+
this._closed = true;
|
|
209
|
+
}
|
|
210
|
+
// ITERATOR IMPLEMENTATION
|
|
211
|
+
/** @returns a Promise for an IteratorResult */
|
|
212
|
+
next() {
|
|
213
|
+
if (this._values.length > 0) {
|
|
214
|
+
const value = this._values.shift();
|
|
215
|
+
if (value instanceof Error) {
|
|
216
|
+
return Promise.reject(value);
|
|
217
|
+
}
|
|
218
|
+
return Promise.resolve({ done: false, value });
|
|
219
|
+
}
|
|
220
|
+
if (this._closed) {
|
|
221
|
+
if (this._settlers.length > 0) {
|
|
222
|
+
throw new Error("Illegal internal state");
|
|
223
|
+
}
|
|
224
|
+
return Promise.resolve({ done: true, value: void 0 });
|
|
225
|
+
}
|
|
226
|
+
return new Promise((resolve, reject) => {
|
|
227
|
+
this._settlers.push({ resolve, reject });
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
// ../worker-utils/src/lib/worker-api/create-worker.ts
|
|
157
233
|
var requestId = 0;
|
|
158
|
-
|
|
234
|
+
var activeInputBatches = null;
|
|
235
|
+
var activeOutputAcknowledgements = null;
|
|
236
|
+
async function createWorker(process, processInBatches) {
|
|
159
237
|
if (!await WorkerBody.inWorkerThread()) {
|
|
160
238
|
return;
|
|
161
239
|
}
|
|
240
|
+
const context = {
|
|
241
|
+
process: processOnMainThread
|
|
242
|
+
};
|
|
162
243
|
WorkerBody.onmessage = async (type, payload) => {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
|
|
244
|
+
try {
|
|
245
|
+
switch (type) {
|
|
246
|
+
case "preload":
|
|
247
|
+
WorkerBody.postMessage("done", {});
|
|
248
|
+
break;
|
|
249
|
+
case "process":
|
|
250
|
+
if (!process) {
|
|
251
|
+
throw new Error("Worker does not support atomic processing");
|
|
252
|
+
}
|
|
253
|
+
const result = await process(
|
|
254
|
+
payload.input,
|
|
255
|
+
payload.options || {},
|
|
256
|
+
context,
|
|
257
|
+
payload.context || {}
|
|
258
|
+
);
|
|
178
259
|
WorkerBody.postMessage("done", { result });
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
260
|
+
break;
|
|
261
|
+
case "process-in-batches":
|
|
262
|
+
if (!processInBatches) {
|
|
263
|
+
throw new Error("Worker does not support batched processing");
|
|
264
|
+
}
|
|
265
|
+
const inputBatches = new AsyncQueue();
|
|
266
|
+
const outputAcknowledgements = new AsyncQueue();
|
|
267
|
+
activeInputBatches = inputBatches;
|
|
268
|
+
activeOutputAcknowledgements = outputAcknowledgements;
|
|
269
|
+
try {
|
|
270
|
+
const resultIterator = processInBatches(
|
|
271
|
+
createDemandDrivenIterator(inputBatches),
|
|
272
|
+
payload.options || {},
|
|
273
|
+
context,
|
|
274
|
+
payload.context || {}
|
|
275
|
+
);
|
|
276
|
+
for await (const batch of resultIterator) {
|
|
277
|
+
await WorkerBody.postMessage("output-batch", { result: batch });
|
|
278
|
+
await outputAcknowledgements.next();
|
|
279
|
+
}
|
|
280
|
+
await WorkerBody.postMessage("done", {});
|
|
281
|
+
} finally {
|
|
282
|
+
activeInputBatches = null;
|
|
283
|
+
activeOutputAcknowledgements = null;
|
|
284
|
+
}
|
|
285
|
+
break;
|
|
286
|
+
case "input-batch":
|
|
287
|
+
if (!activeInputBatches) {
|
|
288
|
+
throw new Error("Worker has no active batched processing session");
|
|
289
|
+
}
|
|
290
|
+
activeInputBatches.push(payload.input);
|
|
291
|
+
break;
|
|
292
|
+
case "input-done":
|
|
293
|
+
if (!activeInputBatches) {
|
|
294
|
+
throw new Error("Worker has no active batched processing session");
|
|
295
|
+
}
|
|
296
|
+
activeInputBatches.close();
|
|
297
|
+
break;
|
|
298
|
+
case "output-ack":
|
|
299
|
+
if (!activeOutputAcknowledgements) {
|
|
300
|
+
throw new Error("Worker has no active batched processing session");
|
|
301
|
+
}
|
|
302
|
+
activeOutputAcknowledgements.push(void 0);
|
|
303
|
+
break;
|
|
304
|
+
default:
|
|
305
|
+
}
|
|
306
|
+
} catch (error) {
|
|
307
|
+
const message = error instanceof Error ? error.message : "";
|
|
308
|
+
WorkerBody.postMessage("error", { error: message });
|
|
185
309
|
}
|
|
186
310
|
};
|
|
187
311
|
}
|
|
188
|
-
function
|
|
312
|
+
async function* createDemandDrivenIterator(inputBatches) {
|
|
313
|
+
while (true) {
|
|
314
|
+
await WorkerBody.postMessage("input-request", {});
|
|
315
|
+
const nextBatch = await inputBatches.next();
|
|
316
|
+
if (nextBatch.done) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
yield nextBatch.value;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
function processOnMainThread(arrayBuffer, options = {}, jobContext = {}) {
|
|
189
323
|
return new Promise((resolve, reject) => {
|
|
190
324
|
const id = requestId++;
|
|
191
325
|
const onMessage = (type, payload2) => {
|
|
@@ -205,10 +339,107 @@ function parseOnMainThread(arrayBuffer, loader, options, context) {
|
|
|
205
339
|
}
|
|
206
340
|
};
|
|
207
341
|
WorkerBody.addEventListener(onMessage);
|
|
208
|
-
const payload = { id, input: arrayBuffer, options };
|
|
342
|
+
const payload = { id, input: arrayBuffer, options, context: jobContext };
|
|
209
343
|
WorkerBody.postMessage("process", payload);
|
|
210
344
|
});
|
|
211
345
|
}
|
|
346
|
+
|
|
347
|
+
// ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
|
|
348
|
+
async function createLoaderWorker(loader, selectLoader = () => loader) {
|
|
349
|
+
await createWorker(
|
|
350
|
+
(input, options, workerContext, loaderContext) => processLoaderWorkerData(
|
|
351
|
+
selectLoader(options || {}),
|
|
352
|
+
input,
|
|
353
|
+
options,
|
|
354
|
+
workerContext,
|
|
355
|
+
loaderContext
|
|
356
|
+
),
|
|
357
|
+
(inputIterator, options, workerContext, loaderContext) => processLoaderWorkerBatches(
|
|
358
|
+
selectLoader(options || {}),
|
|
359
|
+
inputIterator,
|
|
360
|
+
options,
|
|
361
|
+
workerContext,
|
|
362
|
+
loaderContext
|
|
363
|
+
)
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
async function processLoaderWorkerData(loader, input, options = {}, workerContext, loaderContext = {}) {
|
|
367
|
+
const result = await parseData({
|
|
368
|
+
loader,
|
|
369
|
+
arrayBuffer: input,
|
|
370
|
+
options,
|
|
371
|
+
context: {
|
|
372
|
+
...loaderContext,
|
|
373
|
+
coreApi: createWorkerCoreApi(),
|
|
374
|
+
_parse: createParseOnMainThread(workerContext == null ? void 0 : workerContext.process)
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
return loader.serializeWorkerResult ? loader.serializeWorkerResult(result, options, loaderContext) : result;
|
|
378
|
+
}
|
|
379
|
+
async function* processLoaderWorkerBatches(loader, inputIterator, options = {}, workerContext, loaderContext = {}) {
|
|
380
|
+
if (!loader.parseInBatches) {
|
|
381
|
+
throw new Error(`${loader.id} loader does not support batched parsing`);
|
|
382
|
+
}
|
|
383
|
+
const resultIterator = loader.parseInBatches(inputIterator, options, {
|
|
384
|
+
...loaderContext,
|
|
385
|
+
coreApi: createWorkerCoreApi(),
|
|
386
|
+
_parse: createParseOnMainThread(workerContext == null ? void 0 : workerContext.process)
|
|
387
|
+
});
|
|
388
|
+
for await (const batch of resultIterator) {
|
|
389
|
+
yield loader.serializeWorkerBatch ? loader.serializeWorkerBatch(batch, options, loaderContext) : batch;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
function createWorkerCoreApi() {
|
|
393
|
+
const unavailable = (methodName) => () => {
|
|
394
|
+
throw new Error(`context.coreApi.${methodName} is unavailable inside worker loaders.`);
|
|
395
|
+
};
|
|
396
|
+
return {
|
|
397
|
+
fetchFile: async (urlOrData, fetchOptions) => await fetch(urlOrData, fetchOptions),
|
|
398
|
+
parseSync: unavailable("parseSync"),
|
|
399
|
+
parse: unavailable("parse"),
|
|
400
|
+
parseFile: unavailable("parseFile"),
|
|
401
|
+
parseInBatches: unavailable("parseInBatches"),
|
|
402
|
+
load: unavailable("load"),
|
|
403
|
+
loadInBatches: unavailable("loadInBatches")
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
function createParseOnMainThread(processOnMainThread2) {
|
|
407
|
+
return (arrayBuffer, loaders, options, context) => {
|
|
408
|
+
if (!processOnMainThread2) {
|
|
409
|
+
throw new Error("Worker not set up to parse on main thread");
|
|
410
|
+
}
|
|
411
|
+
const parseArguments = getMainThreadParseArguments(loaders, options, context);
|
|
412
|
+
return processOnMainThread2(arrayBuffer, parseArguments.options, {
|
|
413
|
+
...parseArguments.context,
|
|
414
|
+
...Array.isArray(loaders) || loaders && isLoaderObject(loaders) ? {
|
|
415
|
+
_loaderIsArray: Array.isArray(loaders),
|
|
416
|
+
_loaderIds: (Array.isArray(loaders) ? loaders : [loaders]).map((loader) => loader.id)
|
|
417
|
+
} : {}
|
|
418
|
+
});
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
function getMainThreadParseArguments(loaders, options, context) {
|
|
422
|
+
if (options) {
|
|
423
|
+
return { options, context: getSerializableLoaderContext(context) };
|
|
424
|
+
}
|
|
425
|
+
if (Array.isArray(loaders) || loaders && isLoaderObject(loaders)) {
|
|
426
|
+
return { options: void 0, context: getSerializableLoaderContext(context) };
|
|
427
|
+
}
|
|
428
|
+
if (loaders && !Array.isArray(loaders)) {
|
|
429
|
+
return { options: loaders };
|
|
430
|
+
}
|
|
431
|
+
return { options: void 0, context: getSerializableLoaderContext(context) };
|
|
432
|
+
}
|
|
433
|
+
function isLoaderObject(value) {
|
|
434
|
+
return "id" in value && "extensions" in value;
|
|
435
|
+
}
|
|
436
|
+
function getSerializableLoaderContext(context) {
|
|
437
|
+
if (!context) {
|
|
438
|
+
return void 0;
|
|
439
|
+
}
|
|
440
|
+
const { fetch: fetch2, loaders, coreApi, _parse, _parseSync, _parseInBatches, ...serializableContext } = context;
|
|
441
|
+
return JSON.parse(JSON.stringify(serializableContext));
|
|
442
|
+
}
|
|
212
443
|
async function parseData({
|
|
213
444
|
loader,
|
|
214
445
|
arrayBuffer,
|
|
@@ -217,9 +448,9 @@ async function parseData({
|
|
|
217
448
|
}) {
|
|
218
449
|
let data;
|
|
219
450
|
let parser;
|
|
220
|
-
if (loader.
|
|
451
|
+
if (loader.parse || loader.parseSync) {
|
|
221
452
|
data = arrayBuffer;
|
|
222
|
-
parser = loader.
|
|
453
|
+
parser = loader.parse || loader.parseSync;
|
|
223
454
|
} else if (loader.parseTextSync) {
|
|
224
455
|
const textDecoder = new TextDecoder();
|
|
225
456
|
data = textDecoder.decode(arrayBuffer);
|
|
@@ -227,14 +458,11 @@ async function parseData({
|
|
|
227
458
|
} else {
|
|
228
459
|
throw new Error(`Could not load data with ${loader.name} loader`);
|
|
229
460
|
}
|
|
230
|
-
const workerModules = Object.fromEntries(
|
|
231
|
-
Object.entries(options.modules || {}).filter(([, value]) => typeof value === "string")
|
|
232
|
-
);
|
|
233
461
|
options = {
|
|
234
462
|
...options,
|
|
235
463
|
modules: {
|
|
236
464
|
...loader && loader.options && loader.options.modules || {},
|
|
237
|
-
...
|
|
465
|
+
...options.modules || {}
|
|
238
466
|
},
|
|
239
467
|
core: {
|
|
240
468
|
...options.core,
|
|
@@ -245,7 +473,7 @@ async function parseData({
|
|
|
245
473
|
}
|
|
246
474
|
|
|
247
475
|
// src/null-loader.ts
|
|
248
|
-
var VERSION = true ? "
|
|
476
|
+
var VERSION = true ? "5.0.0-alpha.10" : "latest";
|
|
249
477
|
var NullLoader = {
|
|
250
478
|
dataType: null,
|
|
251
479
|
batchType: null,
|