@loaders.gl/i3s 4.4.0-alpha.2 → 4.4.0-alpha.9
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/README.md +1 -1
- package/dist/arcgis-webscene-loader.js +2 -1
- package/dist/arcgis-webscene-loader.js.map +1 -0
- package/dist/dist.dev.js +402 -298
- package/dist/dist.min.js +1 -1
- package/dist/i3s-attribute-loader.js +2 -1
- package/dist/i3s-attribute-loader.js.map +1 -0
- package/dist/i3s-building-scene-layer-loader.js +2 -1
- package/dist/i3s-building-scene-layer-loader.js.map +1 -0
- package/dist/i3s-content-loader.js +2 -1
- package/dist/i3s-content-loader.js.map +1 -0
- package/dist/i3s-content-worker-node.js +45 -45
- package/dist/i3s-content-worker-node.js.map +4 -4
- package/dist/i3s-content-worker.js +396 -159
- package/dist/i3s-loader.d.ts +13 -8
- package/dist/i3s-loader.d.ts.map +1 -1
- package/dist/i3s-loader.js +8 -7
- package/dist/i3s-loader.js.map +1 -0
- package/dist/i3s-node-page-loader.js +2 -1
- package/dist/i3s-node-page-loader.js.map +1 -0
- package/dist/i3s-slpk-loader.d.ts +6 -1
- package/dist/i3s-slpk-loader.d.ts.map +1 -1
- package/dist/i3s-slpk-loader.js +10 -4
- package/dist/i3s-slpk-loader.js.map +1 -0
- package/dist/index.cjs +35 -27
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/helpers/i3s-nodepages-tiles.js +5 -4
- package/dist/lib/helpers/i3s-nodepages-tiles.js.map +1 -0
- package/dist/lib/parsers/constants.js +1 -0
- package/dist/lib/parsers/constants.js.map +1 -0
- package/dist/lib/parsers/parse-arcgis-webscene.js +1 -0
- package/dist/lib/parsers/parse-arcgis-webscene.js.map +1 -0
- package/dist/lib/parsers/parse-i3s-attribute.js +1 -0
- package/dist/lib/parsers/parse-i3s-attribute.js.map +1 -0
- package/dist/lib/parsers/parse-i3s-building-scene-layer.js +1 -0
- package/dist/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -0
- package/dist/lib/parsers/parse-i3s-tile-content.d.ts +2 -2
- package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -1
- package/dist/lib/parsers/parse-i3s-tile-content.js +1 -0
- package/dist/lib/parsers/parse-i3s-tile-content.js.map +1 -0
- package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
- package/dist/lib/parsers/parse-i3s.js +6 -4
- package/dist/lib/parsers/parse-i3s.js.map +1 -0
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +3 -3
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/parse-slpk.js +4 -3
- package/dist/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +3 -3
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/slpk-archieve.js +5 -4
- package/dist/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
- package/dist/lib/utils/convert-i3s-obb-to-mbs.js +1 -0
- package/dist/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -0
- package/dist/lib/utils/customize-colors.js +5 -2
- package/dist/lib/utils/customize-colors.js.map +1 -0
- package/dist/lib/utils/url-utils.js +1 -0
- package/dist/lib/utils/url-utils.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/workers/i3s-content-worker-node.js +1 -0
- package/dist/workers/i3s-content-worker-node.js.map +1 -0
- package/dist/workers/i3s-content-worker.js +1 -0
- package/dist/workers/i3s-content-worker.js.map +1 -0
- package/package.json +18 -12
- package/src/i3s-loader.ts +15 -10
- package/src/i3s-slpk-loader.ts +8 -3
- package/src/lib/helpers/i3s-nodepages-tiles.ts +4 -4
- package/src/lib/parsers/parse-i3s-tile-content.ts +2 -2
- package/src/lib/parsers/parse-i3s.ts +7 -4
- package/src/lib/parsers/parse-slpk/parse-slpk.ts +7 -5
- package/src/lib/parsers/parse-slpk/slpk-archieve.ts +7 -10
- package/src/lib/utils/customize-colors.ts +4 -2
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
var dist_default = new Log({ id: "@probe.gl/log" });
|
|
474
474
|
|
|
475
475
|
// ../loader-utils/src/lib/log-utils/log.ts
|
|
476
|
-
var VERSION2 = true ? "4.4.0-alpha.
|
|
476
|
+
var VERSION2 = true ? "4.4.0-alpha.9" : "latest";
|
|
477
477
|
var version = VERSION2[0] >= "0" && VERSION2[0] <= "9" ? `v${VERSION2}` : "";
|
|
478
478
|
function createLog() {
|
|
479
479
|
const log2 = new Log({ id: "loaders.gl" });
|
|
@@ -486,6 +486,21 @@
|
|
|
486
486
|
}
|
|
487
487
|
var log = createLog();
|
|
488
488
|
|
|
489
|
+
// ../loader-utils/src/lib/javascript-utils/is-type.ts
|
|
490
|
+
var isBoolean = (value) => typeof value === "boolean";
|
|
491
|
+
var isFunction = (value) => typeof value === "function";
|
|
492
|
+
var isObject = (value) => value !== null && typeof value === "object";
|
|
493
|
+
var isPureObject = (value) => isObject(value) && value.constructor === {}.constructor;
|
|
494
|
+
var isSharedArrayBuffer = (value) => typeof SharedArrayBuffer !== "undefined" && value instanceof SharedArrayBuffer;
|
|
495
|
+
var isArrayBufferLike = (value) => isObject(value) && typeof value.byteLength === "number" && typeof value.slice === "function";
|
|
496
|
+
var isIterable = (value) => Boolean(value) && isFunction(value[Symbol.iterator]);
|
|
497
|
+
var isAsyncIterable = (value) => Boolean(value) && isFunction(value[Symbol.asyncIterator]);
|
|
498
|
+
var isResponse = (value) => typeof Response !== "undefined" && value instanceof Response || isObject(value) && isFunction(value.arrayBuffer) && isFunction(value.text) && isFunction(value.json);
|
|
499
|
+
var isBlob = (value) => typeof Blob !== "undefined" && value instanceof Blob;
|
|
500
|
+
var isReadableDOMStream = (value) => typeof ReadableStream !== "undefined" && value instanceof ReadableStream || isObject(value) && isFunction(value.tee) && isFunction(value.cancel) && isFunction(value.getReader);
|
|
501
|
+
var isReadableNodeStream = (value) => isObject(value) && isFunction(value.read) && isFunction(value.pipe) && isBoolean(value.readable);
|
|
502
|
+
var isReadableStream = (value) => isReadableDOMStream(value) || isReadableNodeStream(value);
|
|
503
|
+
|
|
489
504
|
// ../loader-utils/src/lib/option-utils/merge-options.ts
|
|
490
505
|
function mergeOptions(baseOptions, newOptions) {
|
|
491
506
|
return mergeOptionsRecursively(baseOptions || {}, newOptions);
|
|
@@ -532,8 +547,9 @@
|
|
|
532
547
|
"loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN."
|
|
533
548
|
);
|
|
534
549
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
550
|
+
warningIssued = true;
|
|
535
551
|
} else {
|
|
536
|
-
globalThis._loadersgl_.version = "4.4.0-alpha.
|
|
552
|
+
globalThis._loadersgl_.version = "4.4.0-alpha.9";
|
|
537
553
|
}
|
|
538
554
|
}
|
|
539
555
|
return globalThis._loadersgl_.version;
|
|
@@ -789,7 +805,8 @@
|
|
|
789
805
|
if (this.url) {
|
|
790
806
|
const absolute = this.url.includes(":/") || this.url.startsWith("/");
|
|
791
807
|
const url = absolute ? this.url : `./${this.url}`;
|
|
792
|
-
|
|
808
|
+
const type = this.url.endsWith(".ts") || this.url.endsWith(".mjs") ? "module" : "commonjs";
|
|
809
|
+
worker = new NodeWorker(url, { eval: false, type });
|
|
793
810
|
} else if (this.source) {
|
|
794
811
|
worker = new NodeWorker(this.source, { eval: true });
|
|
795
812
|
} else {
|
|
@@ -1121,7 +1138,8 @@
|
|
|
1121
1138
|
if (!url && worker.id === "compression") {
|
|
1122
1139
|
url = options.workerUrl;
|
|
1123
1140
|
}
|
|
1124
|
-
|
|
1141
|
+
const workerType = options._workerType || options?.core?._workerType;
|
|
1142
|
+
if (workerType === "test") {
|
|
1125
1143
|
if (isBrowser3) {
|
|
1126
1144
|
url = `modules/${worker.module}/dist/${workerFile}`;
|
|
1127
1145
|
} else {
|
|
@@ -1161,6 +1179,9 @@
|
|
|
1161
1179
|
return await loadLibraryPromises[libraryUrl];
|
|
1162
1180
|
}
|
|
1163
1181
|
function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
|
|
1182
|
+
if (options?.core) {
|
|
1183
|
+
throw new Error("loadLibrary: options.core must be pre-normalized");
|
|
1184
|
+
}
|
|
1164
1185
|
if (!options.useLocalLibraries && library.startsWith("http")) {
|
|
1165
1186
|
return library;
|
|
1166
1187
|
}
|
|
@@ -1186,10 +1207,20 @@
|
|
|
1186
1207
|
return await loadAsArrayBuffer(libraryUrl);
|
|
1187
1208
|
}
|
|
1188
1209
|
if (!isBrowser3) {
|
|
1210
|
+
const { requireFromFile } = globalThis.loaders || {};
|
|
1189
1211
|
try {
|
|
1190
|
-
const
|
|
1191
|
-
|
|
1212
|
+
const result = await requireFromFile?.(libraryUrl);
|
|
1213
|
+
if (result || !libraryUrl.includes("/dist/libs/")) {
|
|
1214
|
+
return result;
|
|
1215
|
+
}
|
|
1216
|
+
return await requireFromFile?.(libraryUrl.replace("/dist/libs/", "/src/libs/"));
|
|
1192
1217
|
} catch (error) {
|
|
1218
|
+
if (libraryUrl.includes("/dist/libs/")) {
|
|
1219
|
+
try {
|
|
1220
|
+
return await requireFromFile?.(libraryUrl.replace("/dist/libs/", "/src/libs/"));
|
|
1221
|
+
} catch {
|
|
1222
|
+
}
|
|
1223
|
+
}
|
|
1193
1224
|
console.error(error);
|
|
1194
1225
|
return null;
|
|
1195
1226
|
}
|
|
@@ -1225,7 +1256,14 @@
|
|
|
1225
1256
|
const response = await fetch(url);
|
|
1226
1257
|
return await response.arrayBuffer();
|
|
1227
1258
|
}
|
|
1228
|
-
|
|
1259
|
+
try {
|
|
1260
|
+
return await readFileAsArrayBuffer(url);
|
|
1261
|
+
} catch {
|
|
1262
|
+
if (url.includes("/dist/libs/")) {
|
|
1263
|
+
return await readFileAsArrayBuffer(url.replace("/dist/libs/", "/src/libs/"));
|
|
1264
|
+
}
|
|
1265
|
+
throw new Error(`Failed to load ArrayBuffer from ${url}`);
|
|
1266
|
+
}
|
|
1229
1267
|
}
|
|
1230
1268
|
async function loadAsText(url) {
|
|
1231
1269
|
const { readFileAsText } = globalThis.loaders || {};
|
|
@@ -1233,7 +1271,14 @@
|
|
|
1233
1271
|
const response = await fetch(url);
|
|
1234
1272
|
return await response.text();
|
|
1235
1273
|
}
|
|
1236
|
-
|
|
1274
|
+
try {
|
|
1275
|
+
return await readFileAsText(url);
|
|
1276
|
+
} catch {
|
|
1277
|
+
if (url.includes("/dist/libs/")) {
|
|
1278
|
+
return await readFileAsText(url.replace("/dist/libs/", "/src/libs/"));
|
|
1279
|
+
}
|
|
1280
|
+
throw new Error(`Failed to load text from ${url}`);
|
|
1281
|
+
}
|
|
1237
1282
|
}
|
|
1238
1283
|
|
|
1239
1284
|
// ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
|
|
@@ -1312,7 +1357,10 @@
|
|
|
1312
1357
|
options = {
|
|
1313
1358
|
...options,
|
|
1314
1359
|
modules: loader && loader.options && loader.options.modules || {},
|
|
1315
|
-
|
|
1360
|
+
core: {
|
|
1361
|
+
...options.core,
|
|
1362
|
+
worker: false
|
|
1363
|
+
}
|
|
1316
1364
|
};
|
|
1317
1365
|
return await parser(data, { ...options }, context, loader);
|
|
1318
1366
|
}
|
|
@@ -1322,15 +1370,17 @@
|
|
|
1322
1370
|
if (!WorkerFarm.isSupported()) {
|
|
1323
1371
|
return false;
|
|
1324
1372
|
}
|
|
1325
|
-
|
|
1373
|
+
const nodeWorkers = options?._nodeWorkers ?? options?.core?._nodeWorkers;
|
|
1374
|
+
if (!isBrowser3 && !nodeWorkers) {
|
|
1326
1375
|
return false;
|
|
1327
1376
|
}
|
|
1328
|
-
|
|
1377
|
+
const useWorkers = options?.worker ?? options?.core?.worker;
|
|
1378
|
+
return Boolean(loader.worker && useWorkers);
|
|
1329
1379
|
}
|
|
1330
1380
|
async function parseWithWorker(loader, data, options, context, parseOnMainThread2) {
|
|
1331
1381
|
const name = loader.id;
|
|
1332
1382
|
const url = getWorkerURL(loader, options);
|
|
1333
|
-
const workerFarm = WorkerFarm.getWorkerFarm(options);
|
|
1383
|
+
const workerFarm = WorkerFarm.getWorkerFarm(options?.core);
|
|
1334
1384
|
const workerPool = workerFarm.getWorkerPool({ name, url });
|
|
1335
1385
|
options = JSON.parse(JSON.stringify(options));
|
|
1336
1386
|
context = JSON.parse(JSON.stringify(context || {}));
|
|
@@ -1408,10 +1458,26 @@
|
|
|
1408
1458
|
async function concatenateArrayBuffersAsync(asyncIterator) {
|
|
1409
1459
|
const arrayBuffers = [];
|
|
1410
1460
|
for await (const chunk of asyncIterator) {
|
|
1411
|
-
arrayBuffers.push(chunk);
|
|
1461
|
+
arrayBuffers.push(copyToArrayBuffer(chunk));
|
|
1412
1462
|
}
|
|
1413
1463
|
return concatenateArrayBuffers(...arrayBuffers);
|
|
1414
1464
|
}
|
|
1465
|
+
function copyToArrayBuffer(chunk) {
|
|
1466
|
+
if (chunk instanceof ArrayBuffer) {
|
|
1467
|
+
return chunk;
|
|
1468
|
+
}
|
|
1469
|
+
if (ArrayBuffer.isView(chunk)) {
|
|
1470
|
+
const { buffer, byteOffset, byteLength } = chunk;
|
|
1471
|
+
return copyFromBuffer(buffer, byteOffset, byteLength);
|
|
1472
|
+
}
|
|
1473
|
+
return copyFromBuffer(chunk);
|
|
1474
|
+
}
|
|
1475
|
+
function copyFromBuffer(buffer, byteOffset = 0, byteLength = buffer.byteLength - byteOffset) {
|
|
1476
|
+
const view = new Uint8Array(buffer, byteOffset, byteLength);
|
|
1477
|
+
const copy2 = new Uint8Array(view.length);
|
|
1478
|
+
copy2.set(view);
|
|
1479
|
+
return copy2.buffer;
|
|
1480
|
+
}
|
|
1415
1481
|
|
|
1416
1482
|
// ../loader-utils/src/lib/path-utils/file-aliases.ts
|
|
1417
1483
|
var pathPrefix = "";
|
|
@@ -1445,11 +1511,15 @@
|
|
|
1445
1511
|
if (data instanceof ArrayBuffer) {
|
|
1446
1512
|
return data;
|
|
1447
1513
|
}
|
|
1514
|
+
if (isSharedArrayBuffer(data)) {
|
|
1515
|
+
return copyToArrayBuffer2(data);
|
|
1516
|
+
}
|
|
1448
1517
|
if (ArrayBuffer.isView(data)) {
|
|
1518
|
+
const buffer = data.buffer;
|
|
1449
1519
|
if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {
|
|
1450
|
-
return
|
|
1520
|
+
return buffer;
|
|
1451
1521
|
}
|
|
1452
|
-
return
|
|
1522
|
+
return buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
|
|
1453
1523
|
}
|
|
1454
1524
|
if (typeof data === "string") {
|
|
1455
1525
|
const text = data;
|
|
@@ -1461,6 +1531,31 @@
|
|
|
1461
1531
|
}
|
|
1462
1532
|
throw new Error("toArrayBuffer");
|
|
1463
1533
|
}
|
|
1534
|
+
function ensureArrayBuffer(bufferSource) {
|
|
1535
|
+
if (bufferSource instanceof ArrayBuffer) {
|
|
1536
|
+
return bufferSource;
|
|
1537
|
+
}
|
|
1538
|
+
if (isSharedArrayBuffer(bufferSource)) {
|
|
1539
|
+
return copyToArrayBuffer2(bufferSource);
|
|
1540
|
+
}
|
|
1541
|
+
const { buffer, byteOffset, byteLength } = bufferSource;
|
|
1542
|
+
if (buffer instanceof ArrayBuffer && byteOffset === 0 && byteLength === buffer.byteLength) {
|
|
1543
|
+
return buffer;
|
|
1544
|
+
}
|
|
1545
|
+
return copyToArrayBuffer2(buffer, byteOffset, byteLength);
|
|
1546
|
+
}
|
|
1547
|
+
function copyToArrayBuffer2(buffer, byteOffset = 0, byteLength = buffer.byteLength - byteOffset) {
|
|
1548
|
+
const view = new Uint8Array(buffer, byteOffset, byteLength);
|
|
1549
|
+
const copy2 = new Uint8Array(view.length);
|
|
1550
|
+
copy2.set(view);
|
|
1551
|
+
return copy2.buffer;
|
|
1552
|
+
}
|
|
1553
|
+
function toArrayBufferView(data) {
|
|
1554
|
+
if (ArrayBuffer.isView(data)) {
|
|
1555
|
+
return data;
|
|
1556
|
+
}
|
|
1557
|
+
return new Uint8Array(data);
|
|
1558
|
+
}
|
|
1464
1559
|
|
|
1465
1560
|
// ../loader-utils/src/lib/path-utils/path.ts
|
|
1466
1561
|
var path_exports = {};
|
|
@@ -1483,7 +1578,7 @@
|
|
|
1483
1578
|
// ../loader-utils/src/lib/path-utils/path.ts
|
|
1484
1579
|
function filename(url) {
|
|
1485
1580
|
const slashIndex = url ? url.lastIndexOf("/") : -1;
|
|
1486
|
-
return slashIndex >= 0 ? url.substr(slashIndex + 1) :
|
|
1581
|
+
return slashIndex >= 0 ? url.substr(slashIndex + 1) : url;
|
|
1487
1582
|
}
|
|
1488
1583
|
function dirname(url) {
|
|
1489
1584
|
const slashIndex = url ? url.lastIndexOf("/") : -1;
|
|
@@ -1605,20 +1700,6 @@
|
|
|
1605
1700
|
return res;
|
|
1606
1701
|
}
|
|
1607
1702
|
|
|
1608
|
-
// ../core/src/javascript-utils/is-type.ts
|
|
1609
|
-
var isBoolean = (x) => typeof x === "boolean";
|
|
1610
|
-
var isFunction = (x) => typeof x === "function";
|
|
1611
|
-
var isObject = (x) => x !== null && typeof x === "object";
|
|
1612
|
-
var isPureObject = (x) => isObject(x) && x.constructor === {}.constructor;
|
|
1613
|
-
var isIterable = (x) => Boolean(x) && typeof x[Symbol.iterator] === "function";
|
|
1614
|
-
var isAsyncIterable = (x) => x && typeof x[Symbol.asyncIterator] === "function";
|
|
1615
|
-
var isResponse = (x) => typeof Response !== "undefined" && x instanceof Response || x && x.arrayBuffer && x.text && x.json;
|
|
1616
|
-
var isBlob = (x) => typeof Blob !== "undefined" && x instanceof Blob;
|
|
1617
|
-
var isBuffer2 = (x) => x && typeof x === "object" && x.isBuffer;
|
|
1618
|
-
var isReadableDOMStream = (x) => typeof ReadableStream !== "undefined" && x instanceof ReadableStream || isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.getReader);
|
|
1619
|
-
var isReadableNodeStream = (x) => isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);
|
|
1620
|
-
var isReadableStream = (x) => isReadableDOMStream(x) || isReadableNodeStream(x);
|
|
1621
|
-
|
|
1622
1703
|
// ../core/src/lib/fetch/fetch-error.ts
|
|
1623
1704
|
var FetchError = class extends Error {
|
|
1624
1705
|
constructor(message, info) {
|
|
@@ -1680,12 +1761,11 @@
|
|
|
1680
1761
|
// ../core/src/lib/utils/resource-utils.ts
|
|
1681
1762
|
function getResourceUrl(resource) {
|
|
1682
1763
|
if (isResponse(resource)) {
|
|
1683
|
-
|
|
1684
|
-
return response.url;
|
|
1764
|
+
return resource.url;
|
|
1685
1765
|
}
|
|
1686
1766
|
if (isBlob(resource)) {
|
|
1687
|
-
const
|
|
1688
|
-
return
|
|
1767
|
+
const fileName = "name" in resource ? resource.name : "";
|
|
1768
|
+
return fileName || "";
|
|
1689
1769
|
}
|
|
1690
1770
|
if (typeof resource === "string") {
|
|
1691
1771
|
return resource;
|
|
@@ -1694,14 +1774,12 @@
|
|
|
1694
1774
|
}
|
|
1695
1775
|
function getResourceMIMEType(resource) {
|
|
1696
1776
|
if (isResponse(resource)) {
|
|
1697
|
-
const
|
|
1698
|
-
const
|
|
1699
|
-
const noQueryUrl = stripQueryString(response.url);
|
|
1777
|
+
const contentTypeHeader = resource.headers.get("content-type") || "";
|
|
1778
|
+
const noQueryUrl = stripQueryString(resource.url);
|
|
1700
1779
|
return parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(noQueryUrl);
|
|
1701
1780
|
}
|
|
1702
1781
|
if (isBlob(resource)) {
|
|
1703
|
-
|
|
1704
|
-
return blob.type || "";
|
|
1782
|
+
return resource.type || "";
|
|
1705
1783
|
}
|
|
1706
1784
|
if (typeof resource === "string") {
|
|
1707
1785
|
return parseMIMETypeFromURL(resource);
|
|
@@ -1870,39 +1948,68 @@
|
|
|
1870
1948
|
|
|
1871
1949
|
// ../core/src/lib/loader-utils/option-defaults.ts
|
|
1872
1950
|
var DEFAULT_LOADER_OPTIONS = {
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1951
|
+
core: {
|
|
1952
|
+
baseUri: void 0,
|
|
1953
|
+
// baseUri
|
|
1954
|
+
fetch: null,
|
|
1955
|
+
mimeType: void 0,
|
|
1956
|
+
fallbackMimeType: void 0,
|
|
1957
|
+
ignoreRegisteredLoaders: void 0,
|
|
1958
|
+
nothrow: false,
|
|
1959
|
+
log: new ConsoleLog(),
|
|
1960
|
+
// A probe.gl compatible (`log.log()()` syntax) that just logs to console
|
|
1961
|
+
useLocalLibraries: false,
|
|
1962
|
+
CDN: "https://unpkg.com/@loaders.gl",
|
|
1963
|
+
worker: true,
|
|
1964
|
+
// By default, use worker if provided by loader.
|
|
1965
|
+
maxConcurrency: 3,
|
|
1966
|
+
// How many worker instances should be created for each loader.
|
|
1967
|
+
maxMobileConcurrency: 1,
|
|
1968
|
+
// How many worker instances should be created for each loader on mobile devices.
|
|
1969
|
+
reuseWorkers: isBrowser,
|
|
1970
|
+
// By default reuse workers in browser (Node.js refuses to terminate if browsers are running)
|
|
1971
|
+
_nodeWorkers: false,
|
|
1972
|
+
// By default do not support node workers
|
|
1973
|
+
_workerType: "",
|
|
1974
|
+
// 'test' to use locally generated workers
|
|
1975
|
+
limit: 0,
|
|
1976
|
+
_limitMB: 0,
|
|
1977
|
+
batchSize: "auto",
|
|
1978
|
+
batchDebounceMs: 0,
|
|
1979
|
+
metadata: false,
|
|
1980
|
+
// TODO - currently only implemented for parseInBatches, adds initial metadata batch,
|
|
1981
|
+
transforms: []
|
|
1982
|
+
}
|
|
1900
1983
|
};
|
|
1901
1984
|
var REMOVED_LOADER_OPTIONS = {
|
|
1985
|
+
// baseUri
|
|
1986
|
+
baseUri: "core.baseUri",
|
|
1987
|
+
fetch: "core.fetch",
|
|
1988
|
+
mimeType: "core.mimeType",
|
|
1989
|
+
fallbackMimeType: "core.fallbackMimeType",
|
|
1990
|
+
ignoreRegisteredLoaders: "core.ignoreRegisteredLoaders",
|
|
1991
|
+
nothrow: "core.nothrow",
|
|
1992
|
+
log: "core.log",
|
|
1993
|
+
useLocalLibraries: "core.useLocalLibraries",
|
|
1994
|
+
CDN: "core.CDN",
|
|
1995
|
+
worker: "core.worker",
|
|
1996
|
+
maxConcurrency: "core.maxConcurrency",
|
|
1997
|
+
maxMobileConcurrency: "core.maxMobileConcurrency",
|
|
1998
|
+
reuseWorkers: "core.reuseWorkers",
|
|
1999
|
+
_nodeWorkers: "core.nodeWorkers",
|
|
2000
|
+
_workerType: "core._workerType",
|
|
2001
|
+
_worker: "core._workerType",
|
|
2002
|
+
limit: "core.limit",
|
|
2003
|
+
_limitMB: "core._limitMB",
|
|
2004
|
+
batchSize: "core.batchSize",
|
|
2005
|
+
batchDebounceMs: "core.batchDebounceMs",
|
|
2006
|
+
metadata: "core.metadata",
|
|
2007
|
+
transforms: "core.transforms",
|
|
2008
|
+
// Older deprecations
|
|
1902
2009
|
throws: "nothrow",
|
|
1903
2010
|
dataType: "(no longer used)",
|
|
1904
2011
|
uri: "baseUri",
|
|
1905
|
-
// Warn if fetch options are used on
|
|
2012
|
+
// Warn if fetch options are used on toplevel
|
|
1906
2013
|
method: "fetch.method",
|
|
1907
2014
|
headers: "fetch.headers",
|
|
1908
2015
|
body: "fetch.body",
|
|
@@ -1918,6 +2025,29 @@
|
|
|
1918
2025
|
};
|
|
1919
2026
|
|
|
1920
2027
|
// ../core/src/lib/loader-utils/option-utils.ts
|
|
2028
|
+
var CORE_LOADER_OPTION_KEYS = [
|
|
2029
|
+
"baseUri",
|
|
2030
|
+
"fetch",
|
|
2031
|
+
"mimeType",
|
|
2032
|
+
"fallbackMimeType",
|
|
2033
|
+
"ignoreRegisteredLoaders",
|
|
2034
|
+
"nothrow",
|
|
2035
|
+
"log",
|
|
2036
|
+
"useLocalLibraries",
|
|
2037
|
+
"CDN",
|
|
2038
|
+
"worker",
|
|
2039
|
+
"maxConcurrency",
|
|
2040
|
+
"maxMobileConcurrency",
|
|
2041
|
+
"reuseWorkers",
|
|
2042
|
+
"_nodeWorkers",
|
|
2043
|
+
"_workerType",
|
|
2044
|
+
"limit",
|
|
2045
|
+
"_limitMB",
|
|
2046
|
+
"batchSize",
|
|
2047
|
+
"batchDebounceMs",
|
|
2048
|
+
"metadata",
|
|
2049
|
+
"transforms"
|
|
2050
|
+
];
|
|
1921
2051
|
function getGlobalLoaderState() {
|
|
1922
2052
|
globalThis.loaders = globalThis.loaders || {};
|
|
1923
2053
|
const { loaders } = globalThis;
|
|
@@ -1928,14 +2058,30 @@
|
|
|
1928
2058
|
}
|
|
1929
2059
|
function getGlobalLoaderOptions() {
|
|
1930
2060
|
const state = getGlobalLoaderState();
|
|
1931
|
-
state.globalOptions = state.globalOptions || {
|
|
1932
|
-
|
|
2061
|
+
state.globalOptions = state.globalOptions || {
|
|
2062
|
+
...DEFAULT_LOADER_OPTIONS,
|
|
2063
|
+
core: { ...DEFAULT_LOADER_OPTIONS.core }
|
|
2064
|
+
};
|
|
2065
|
+
return normalizeLoaderOptions(state.globalOptions);
|
|
1933
2066
|
}
|
|
1934
2067
|
function normalizeOptions(options, loader, loaders, url) {
|
|
1935
2068
|
loaders = loaders || [];
|
|
1936
2069
|
loaders = Array.isArray(loaders) ? loaders : [loaders];
|
|
1937
2070
|
validateOptions(options, loaders);
|
|
1938
|
-
return normalizeOptionsInternal(loader, options, url);
|
|
2071
|
+
return normalizeLoaderOptions(normalizeOptionsInternal(loader, options, url));
|
|
2072
|
+
}
|
|
2073
|
+
function normalizeLoaderOptions(options) {
|
|
2074
|
+
const normalized = cloneLoaderOptions(options);
|
|
2075
|
+
moveDeprecatedTopLevelOptionsToCore(normalized);
|
|
2076
|
+
for (const key of CORE_LOADER_OPTION_KEYS) {
|
|
2077
|
+
if (normalized.core && normalized.core[key] !== void 0) {
|
|
2078
|
+
delete normalized[key];
|
|
2079
|
+
}
|
|
2080
|
+
}
|
|
2081
|
+
if (normalized.core && normalized.core._workerType !== void 0) {
|
|
2082
|
+
delete normalized._worker;
|
|
2083
|
+
}
|
|
2084
|
+
return normalized;
|
|
1939
2085
|
}
|
|
1940
2086
|
function validateOptions(options, loaders) {
|
|
1941
2087
|
validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);
|
|
@@ -1987,12 +2133,18 @@
|
|
|
1987
2133
|
function normalizeOptionsInternal(loader, options, url) {
|
|
1988
2134
|
const loaderDefaultOptions = loader.options || {};
|
|
1989
2135
|
const mergedOptions = { ...loaderDefaultOptions };
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
mergedOptions.log = new NullLog();
|
|
2136
|
+
if (loaderDefaultOptions.core) {
|
|
2137
|
+
mergedOptions.core = { ...loaderDefaultOptions.core };
|
|
1993
2138
|
}
|
|
1994
|
-
|
|
1995
|
-
|
|
2139
|
+
moveDeprecatedTopLevelOptionsToCore(mergedOptions);
|
|
2140
|
+
if (mergedOptions.core?.log === null) {
|
|
2141
|
+
mergedOptions.core = { ...mergedOptions.core, log: new NullLog() };
|
|
2142
|
+
}
|
|
2143
|
+
mergeNestedFields(mergedOptions, normalizeLoaderOptions(getGlobalLoaderOptions()));
|
|
2144
|
+
const userOptions = normalizeLoaderOptions(options);
|
|
2145
|
+
mergeNestedFields(mergedOptions, userOptions);
|
|
2146
|
+
addUrlOptions(mergedOptions, url);
|
|
2147
|
+
addDeprecatedTopLevelOptions(mergedOptions);
|
|
1996
2148
|
return mergedOptions;
|
|
1997
2149
|
}
|
|
1998
2150
|
function mergeNestedFields(mergedOptions, options) {
|
|
@@ -2011,8 +2163,50 @@
|
|
|
2011
2163
|
}
|
|
2012
2164
|
}
|
|
2013
2165
|
function addUrlOptions(options, url) {
|
|
2014
|
-
if (url
|
|
2015
|
-
|
|
2166
|
+
if (!url) {
|
|
2167
|
+
return;
|
|
2168
|
+
}
|
|
2169
|
+
const hasTopLevelBaseUri = options.baseUri !== void 0;
|
|
2170
|
+
const hasCoreBaseUri = options.core?.baseUri !== void 0;
|
|
2171
|
+
if (!hasTopLevelBaseUri && !hasCoreBaseUri) {
|
|
2172
|
+
options.core ||= {};
|
|
2173
|
+
options.core.baseUri = url;
|
|
2174
|
+
}
|
|
2175
|
+
}
|
|
2176
|
+
function cloneLoaderOptions(options) {
|
|
2177
|
+
const clonedOptions = { ...options };
|
|
2178
|
+
if (options.core) {
|
|
2179
|
+
clonedOptions.core = { ...options.core };
|
|
2180
|
+
}
|
|
2181
|
+
return clonedOptions;
|
|
2182
|
+
}
|
|
2183
|
+
function moveDeprecatedTopLevelOptionsToCore(options) {
|
|
2184
|
+
for (const key of CORE_LOADER_OPTION_KEYS) {
|
|
2185
|
+
if (options[key] !== void 0) {
|
|
2186
|
+
const coreOptions = options.core = options.core || {};
|
|
2187
|
+
const coreRecord = coreOptions;
|
|
2188
|
+
if (coreRecord[key] === void 0) {
|
|
2189
|
+
coreRecord[key] = options[key];
|
|
2190
|
+
}
|
|
2191
|
+
}
|
|
2192
|
+
}
|
|
2193
|
+
const workerTypeAlias = options._worker;
|
|
2194
|
+
if (workerTypeAlias !== void 0) {
|
|
2195
|
+
options.core ||= {};
|
|
2196
|
+
if (options.core._workerType === void 0) {
|
|
2197
|
+
options.core._workerType = workerTypeAlias;
|
|
2198
|
+
}
|
|
2199
|
+
}
|
|
2200
|
+
}
|
|
2201
|
+
function addDeprecatedTopLevelOptions(options) {
|
|
2202
|
+
const coreOptions = options.core;
|
|
2203
|
+
if (!coreOptions) {
|
|
2204
|
+
return;
|
|
2205
|
+
}
|
|
2206
|
+
for (const key of CORE_LOADER_OPTION_KEYS) {
|
|
2207
|
+
if (coreOptions[key] !== void 0) {
|
|
2208
|
+
options[key] = coreOptions[key];
|
|
2209
|
+
}
|
|
2016
2210
|
}
|
|
2017
2211
|
}
|
|
2018
2212
|
|
|
@@ -2064,15 +2258,22 @@
|
|
|
2064
2258
|
if (!validHTTPResponse(data)) {
|
|
2065
2259
|
return null;
|
|
2066
2260
|
}
|
|
2067
|
-
|
|
2261
|
+
const normalizedOptions = normalizeLoaderOptions(options || {});
|
|
2262
|
+
normalizedOptions.core ||= {};
|
|
2263
|
+
let loader = selectLoaderSync(
|
|
2264
|
+
data,
|
|
2265
|
+
loaders,
|
|
2266
|
+
{ ...normalizedOptions, core: { ...normalizedOptions.core, nothrow: true } },
|
|
2267
|
+
context
|
|
2268
|
+
);
|
|
2068
2269
|
if (loader) {
|
|
2069
2270
|
return loader;
|
|
2070
2271
|
}
|
|
2071
2272
|
if (isBlob(data)) {
|
|
2072
2273
|
data = await data.slice(0, 10).arrayBuffer();
|
|
2073
|
-
loader = selectLoaderSync(data, loaders,
|
|
2274
|
+
loader = selectLoaderSync(data, loaders, normalizedOptions, context);
|
|
2074
2275
|
}
|
|
2075
|
-
if (!loader && !
|
|
2276
|
+
if (!loader && !normalizedOptions.core.nothrow) {
|
|
2076
2277
|
throw new Error(getNoValidLoaderMessage(data));
|
|
2077
2278
|
}
|
|
2078
2279
|
return loader;
|
|
@@ -2081,6 +2282,8 @@
|
|
|
2081
2282
|
if (!validHTTPResponse(data)) {
|
|
2082
2283
|
return null;
|
|
2083
2284
|
}
|
|
2285
|
+
const normalizedOptions = normalizeLoaderOptions(options || {});
|
|
2286
|
+
normalizedOptions.core ||= {};
|
|
2084
2287
|
if (loaders && !Array.isArray(loaders)) {
|
|
2085
2288
|
return normalizeLoader(loaders);
|
|
2086
2289
|
}
|
|
@@ -2088,12 +2291,12 @@
|
|
|
2088
2291
|
if (loaders) {
|
|
2089
2292
|
candidateLoaders = candidateLoaders.concat(loaders);
|
|
2090
2293
|
}
|
|
2091
|
-
if (!
|
|
2294
|
+
if (!normalizedOptions.core.ignoreRegisteredLoaders) {
|
|
2092
2295
|
candidateLoaders.push(...getRegisteredLoaders());
|
|
2093
2296
|
}
|
|
2094
2297
|
normalizeLoaders(candidateLoaders);
|
|
2095
|
-
const loader = selectLoaderInternal(data, candidateLoaders,
|
|
2096
|
-
if (!loader && !
|
|
2298
|
+
const loader = selectLoaderInternal(data, candidateLoaders, normalizedOptions, context);
|
|
2299
|
+
if (!loader && !normalizedOptions.core.nothrow) {
|
|
2097
2300
|
throw new Error(getNoValidLoaderMessage(data));
|
|
2098
2301
|
}
|
|
2099
2302
|
return loader;
|
|
@@ -2104,9 +2307,9 @@
|
|
|
2104
2307
|
const testUrl = stripQueryString(url) || context?.url;
|
|
2105
2308
|
let loader = null;
|
|
2106
2309
|
let reason = "";
|
|
2107
|
-
if (options?.mimeType) {
|
|
2108
|
-
loader = findLoaderByMIMEType(loaders, options?.mimeType);
|
|
2109
|
-
reason = `match forced by supplied MIME type ${options?.mimeType}`;
|
|
2310
|
+
if (options?.core?.mimeType) {
|
|
2311
|
+
loader = findLoaderByMIMEType(loaders, options?.core?.mimeType);
|
|
2312
|
+
reason = `match forced by supplied MIME type ${options?.core?.mimeType}`;
|
|
2110
2313
|
}
|
|
2111
2314
|
loader = loader || findLoaderByUrl(loaders, testUrl);
|
|
2112
2315
|
reason = reason || (loader ? `matched url ${testUrl}` : "");
|
|
@@ -2114,8 +2317,8 @@
|
|
|
2114
2317
|
reason = reason || (loader ? `matched MIME type ${type}` : "");
|
|
2115
2318
|
loader = loader || findLoaderByInitialBytes(loaders, data);
|
|
2116
2319
|
reason = reason || (loader ? `matched initial data ${getFirstCharacters(data)}` : "");
|
|
2117
|
-
if (options?.fallbackMimeType) {
|
|
2118
|
-
loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);
|
|
2320
|
+
if (options?.core?.fallbackMimeType) {
|
|
2321
|
+
loader = loader || findLoaderByMIMEType(loaders, options?.core?.fallbackMimeType);
|
|
2119
2322
|
reason = reason || (loader ? `matched fallback MIME type ${type}` : "");
|
|
2120
2323
|
}
|
|
2121
2324
|
if (reason) {
|
|
@@ -2208,12 +2411,12 @@
|
|
|
2208
2411
|
return tests.some((test) => testBinary(data, byteOffset, loader, test));
|
|
2209
2412
|
}
|
|
2210
2413
|
function testBinary(data, byteOffset, loader, test) {
|
|
2211
|
-
if (test
|
|
2414
|
+
if (isArrayBufferLike(test)) {
|
|
2212
2415
|
return compareArrayBuffers(test, data, test.byteLength);
|
|
2213
2416
|
}
|
|
2214
2417
|
switch (typeof test) {
|
|
2215
2418
|
case "function":
|
|
2216
|
-
return test(data);
|
|
2419
|
+
return test(ensureArrayBuffer(data));
|
|
2217
2420
|
case "string":
|
|
2218
2421
|
const magic = getMagicString(data, byteOffset, test.length);
|
|
2219
2422
|
return test === magic;
|
|
@@ -2254,7 +2457,7 @@
|
|
|
2254
2457
|
const chunkLength = Math.min(string.length - offset, chunkSize);
|
|
2255
2458
|
const chunk = string.slice(offset, offset + chunkLength);
|
|
2256
2459
|
offset += chunkLength;
|
|
2257
|
-
yield textEncoder.encode(chunk);
|
|
2460
|
+
yield ensureArrayBuffer(textEncoder.encode(chunk));
|
|
2258
2461
|
}
|
|
2259
2462
|
}
|
|
2260
2463
|
|
|
@@ -2331,8 +2534,11 @@
|
|
|
2331
2534
|
return makeStreamIterator(data, options);
|
|
2332
2535
|
}
|
|
2333
2536
|
if (isResponse(data)) {
|
|
2334
|
-
const
|
|
2335
|
-
|
|
2537
|
+
const responseBody = data.body;
|
|
2538
|
+
if (!responseBody) {
|
|
2539
|
+
throw new Error("Readable stream not available on Response");
|
|
2540
|
+
}
|
|
2541
|
+
return makeStreamIterator(responseBody, options);
|
|
2336
2542
|
}
|
|
2337
2543
|
throw new Error("makeIterator");
|
|
2338
2544
|
}
|
|
@@ -2343,43 +2549,29 @@
|
|
|
2343
2549
|
if (loader.text && typeof data === "string") {
|
|
2344
2550
|
return data;
|
|
2345
2551
|
}
|
|
2346
|
-
if (
|
|
2552
|
+
if (isBuffer(data)) {
|
|
2347
2553
|
data = data.buffer;
|
|
2348
2554
|
}
|
|
2349
|
-
if (data
|
|
2350
|
-
const
|
|
2351
|
-
if (loader.text && !loader.binary) {
|
|
2352
|
-
const textDecoder = new TextDecoder("utf8");
|
|
2353
|
-
return textDecoder.decode(arrayBuffer);
|
|
2354
|
-
}
|
|
2355
|
-
return arrayBuffer;
|
|
2356
|
-
}
|
|
2357
|
-
if (ArrayBuffer.isView(data)) {
|
|
2555
|
+
if (isArrayBufferLike(data)) {
|
|
2556
|
+
const bufferSource = toArrayBufferView(data);
|
|
2358
2557
|
if (loader.text && !loader.binary) {
|
|
2359
2558
|
const textDecoder = new TextDecoder("utf8");
|
|
2360
|
-
return textDecoder.decode(
|
|
2361
|
-
}
|
|
2362
|
-
let arrayBuffer = data.buffer;
|
|
2363
|
-
const byteLength = data.byteLength || data.length;
|
|
2364
|
-
if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {
|
|
2365
|
-
arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);
|
|
2559
|
+
return textDecoder.decode(bufferSource);
|
|
2366
2560
|
}
|
|
2367
|
-
return
|
|
2561
|
+
return toArrayBuffer2(bufferSource);
|
|
2368
2562
|
}
|
|
2369
2563
|
throw new Error(ERR_DATA);
|
|
2370
2564
|
}
|
|
2371
2565
|
async function getArrayBufferOrStringFromData(data, loader, options) {
|
|
2372
|
-
|
|
2373
|
-
if (typeof data === "string" || isArrayBuffer) {
|
|
2566
|
+
if (typeof data === "string" || isArrayBufferLike(data)) {
|
|
2374
2567
|
return getArrayBufferOrStringFromDataSync(data, loader, options);
|
|
2375
2568
|
}
|
|
2376
2569
|
if (isBlob(data)) {
|
|
2377
2570
|
data = await makeResponse(data);
|
|
2378
2571
|
}
|
|
2379
2572
|
if (isResponse(data)) {
|
|
2380
|
-
|
|
2381
|
-
await
|
|
2382
|
-
return loader.binary ? await response.arrayBuffer() : await response.text();
|
|
2573
|
+
await checkResponse(data);
|
|
2574
|
+
return loader.binary ? await data.arrayBuffer() : await data.text();
|
|
2383
2575
|
}
|
|
2384
2576
|
if (isReadableStream(data)) {
|
|
2385
2577
|
data = makeIterator(data, options);
|
|
@@ -2394,11 +2586,12 @@
|
|
|
2394
2586
|
function getFetchFunction(options, context) {
|
|
2395
2587
|
const globalOptions = getGlobalLoaderOptions();
|
|
2396
2588
|
const loaderOptions = options || globalOptions;
|
|
2397
|
-
|
|
2398
|
-
|
|
2589
|
+
const fetchOption = loaderOptions.fetch ?? loaderOptions.core?.fetch;
|
|
2590
|
+
if (typeof fetchOption === "function") {
|
|
2591
|
+
return fetchOption;
|
|
2399
2592
|
}
|
|
2400
|
-
if (isObject(
|
|
2401
|
-
return (url) => fetchFile(url,
|
|
2593
|
+
if (isObject(fetchOption)) {
|
|
2594
|
+
return (url) => fetchFile(url, fetchOption);
|
|
2402
2595
|
}
|
|
2403
2596
|
if (context?.fetch) {
|
|
2404
2597
|
return context?.fetch;
|
|
@@ -2458,22 +2651,21 @@
|
|
|
2458
2651
|
if (!loader) {
|
|
2459
2652
|
return null;
|
|
2460
2653
|
}
|
|
2461
|
-
|
|
2654
|
+
const strictOptions = normalizeOptions(options, loader, candidateLoaders, url);
|
|
2462
2655
|
context = getLoaderContext(
|
|
2463
2656
|
// @ts-expect-error
|
|
2464
2657
|
{ url, _parse: parse, loaders: candidateLoaders },
|
|
2465
|
-
|
|
2658
|
+
strictOptions,
|
|
2466
2659
|
context || null
|
|
2467
2660
|
);
|
|
2468
|
-
return await parseWithLoader(loader, data,
|
|
2661
|
+
return await parseWithLoader(loader, data, strictOptions, context);
|
|
2469
2662
|
}
|
|
2470
2663
|
async function parseWithLoader(loader, data, options, context) {
|
|
2471
2664
|
validateWorkerVersion(loader);
|
|
2472
2665
|
options = mergeOptions(loader.options, options);
|
|
2473
2666
|
if (isResponse(data)) {
|
|
2474
|
-
const
|
|
2475
|
-
const
|
|
2476
|
-
const headers = Object.fromEntries(response.headers.entries());
|
|
2667
|
+
const { ok, redirected, status, statusText, type, url } = data;
|
|
2668
|
+
const headers = Object.fromEntries(data.headers.entries());
|
|
2477
2669
|
context.response = { headers, ok, redirected, status, statusText, type, url };
|
|
2478
2670
|
}
|
|
2479
2671
|
data = await getArrayBufferOrStringFromData(data, loader, options);
|
|
@@ -5348,7 +5540,7 @@
|
|
|
5348
5540
|
Ellipsoid.WGS84 = new Ellipsoid(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z);
|
|
5349
5541
|
|
|
5350
5542
|
// ../images/src/lib/utils/version.ts
|
|
5351
|
-
var VERSION4 = true ? "4.4.0-alpha.
|
|
5543
|
+
var VERSION4 = true ? "4.4.0-alpha.9" : "latest";
|
|
5352
5544
|
|
|
5353
5545
|
// ../images/src/lib/category-api/image-type.ts
|
|
5354
5546
|
var parseImageNode = globalThis.loaders?.parseImageNode;
|
|
@@ -5486,7 +5678,6 @@
|
|
|
5486
5678
|
}
|
|
5487
5679
|
|
|
5488
5680
|
// ../images/src/lib/parsers/parse-to-image-bitmap.ts
|
|
5489
|
-
var EMPTY_OBJECT = {};
|
|
5490
5681
|
var imagebitmapOptionsSupported = true;
|
|
5491
5682
|
async function parseToImageBitmap(arrayBuffer, options, url) {
|
|
5492
5683
|
let blob;
|
|
@@ -5514,8 +5705,13 @@
|
|
|
5514
5705
|
return await createImageBitmap(blob);
|
|
5515
5706
|
}
|
|
5516
5707
|
function isEmptyObject(object) {
|
|
5517
|
-
|
|
5518
|
-
return
|
|
5708
|
+
if (!object) {
|
|
5709
|
+
return true;
|
|
5710
|
+
}
|
|
5711
|
+
for (const key in object) {
|
|
5712
|
+
if (Object.prototype.hasOwnProperty.call(object, key)) {
|
|
5713
|
+
return false;
|
|
5714
|
+
}
|
|
5519
5715
|
}
|
|
5520
5716
|
return true;
|
|
5521
5717
|
}
|
|
@@ -5776,21 +5972,32 @@
|
|
|
5776
5972
|
[DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`
|
|
5777
5973
|
};
|
|
5778
5974
|
var loadDecoderPromise;
|
|
5779
|
-
async function loadDracoDecoderModule(options) {
|
|
5975
|
+
async function loadDracoDecoderModule(options = {}, type) {
|
|
5780
5976
|
const modules = options.modules || {};
|
|
5781
5977
|
if (modules.draco3d) {
|
|
5782
5978
|
loadDecoderPromise ||= modules.draco3d.createDecoderModule({}).then((draco) => {
|
|
5783
5979
|
return { draco };
|
|
5784
5980
|
});
|
|
5785
5981
|
} else {
|
|
5786
|
-
loadDecoderPromise ||= loadDracoDecoder(options);
|
|
5982
|
+
loadDecoderPromise ||= loadDracoDecoder(options, type);
|
|
5787
5983
|
}
|
|
5788
5984
|
return await loadDecoderPromise;
|
|
5789
5985
|
}
|
|
5790
|
-
|
|
5986
|
+
function getLibraryExport(library, exportName) {
|
|
5987
|
+
if (library && typeof library === "object") {
|
|
5988
|
+
if (library.default) {
|
|
5989
|
+
return library.default;
|
|
5990
|
+
}
|
|
5991
|
+
if (library[exportName]) {
|
|
5992
|
+
return library[exportName];
|
|
5993
|
+
}
|
|
5994
|
+
}
|
|
5995
|
+
return library;
|
|
5996
|
+
}
|
|
5997
|
+
async function loadDracoDecoder(options, type) {
|
|
5791
5998
|
let DracoDecoderModule;
|
|
5792
5999
|
let wasmBinary;
|
|
5793
|
-
switch (
|
|
6000
|
+
switch (type) {
|
|
5794
6001
|
case "js":
|
|
5795
6002
|
DracoDecoderModule = await loadLibrary(
|
|
5796
6003
|
DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],
|
|
@@ -5801,25 +6008,52 @@
|
|
|
5801
6008
|
break;
|
|
5802
6009
|
case "wasm":
|
|
5803
6010
|
default:
|
|
5804
|
-
|
|
5805
|
-
await
|
|
5806
|
-
|
|
5807
|
-
|
|
5808
|
-
|
|
5809
|
-
|
|
5810
|
-
|
|
5811
|
-
|
|
5812
|
-
|
|
5813
|
-
|
|
5814
|
-
|
|
5815
|
-
|
|
5816
|
-
|
|
5817
|
-
|
|
6011
|
+
try {
|
|
6012
|
+
[DracoDecoderModule, wasmBinary] = await Promise.all([
|
|
6013
|
+
await loadLibrary(
|
|
6014
|
+
DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
|
|
6015
|
+
"draco",
|
|
6016
|
+
options,
|
|
6017
|
+
DRACO_EXTERNAL_LIBRARIES.DECODER
|
|
6018
|
+
),
|
|
6019
|
+
await loadLibrary(
|
|
6020
|
+
DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
|
|
6021
|
+
"draco",
|
|
6022
|
+
options,
|
|
6023
|
+
DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
|
|
6024
|
+
)
|
|
6025
|
+
]);
|
|
6026
|
+
} catch {
|
|
6027
|
+
DracoDecoderModule = null;
|
|
6028
|
+
wasmBinary = null;
|
|
6029
|
+
}
|
|
5818
6030
|
}
|
|
6031
|
+
DracoDecoderModule = getLibraryExport(DracoDecoderModule, "DracoDecoderModule");
|
|
5819
6032
|
DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
|
|
6033
|
+
if (!DracoDecoderModule && !isBrowser3) {
|
|
6034
|
+
[DracoDecoderModule, wasmBinary] = await Promise.all([
|
|
6035
|
+
await loadLibrary(
|
|
6036
|
+
DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
|
|
6037
|
+
"draco",
|
|
6038
|
+
{ ...options, useLocalLibraries: true },
|
|
6039
|
+
DRACO_EXTERNAL_LIBRARIES.DECODER
|
|
6040
|
+
),
|
|
6041
|
+
await loadLibrary(
|
|
6042
|
+
DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
|
|
6043
|
+
"draco",
|
|
6044
|
+
{ ...options, useLocalLibraries: true },
|
|
6045
|
+
DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
|
|
6046
|
+
)
|
|
6047
|
+
]);
|
|
6048
|
+
DracoDecoderModule = getLibraryExport(DracoDecoderModule, "DracoDecoderModule");
|
|
6049
|
+
DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
|
|
6050
|
+
}
|
|
5820
6051
|
return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
|
|
5821
6052
|
}
|
|
5822
6053
|
function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
|
|
6054
|
+
if (typeof DracoDecoderModule !== "function") {
|
|
6055
|
+
throw new Error("DracoDecoderModule could not be loaded");
|
|
6056
|
+
}
|
|
5823
6057
|
const options = {};
|
|
5824
6058
|
if (wasmBinary) {
|
|
5825
6059
|
options.wasmBinary = wasmBinary;
|
|
@@ -5834,7 +6068,7 @@
|
|
|
5834
6068
|
}
|
|
5835
6069
|
|
|
5836
6070
|
// ../draco/src/lib/utils/version.ts
|
|
5837
|
-
var VERSION5 = true ? "4.4.0-alpha.
|
|
6071
|
+
var VERSION5 = true ? "4.4.0-alpha.9" : "latest";
|
|
5838
6072
|
|
|
5839
6073
|
// ../draco/src/lib/utils/get-draco-schema.ts
|
|
5840
6074
|
function getDracoSchema(attributes, loaderData, indices) {
|
|
@@ -6362,7 +6596,10 @@
|
|
|
6362
6596
|
parse: parse2
|
|
6363
6597
|
};
|
|
6364
6598
|
async function parse2(arrayBuffer, options) {
|
|
6365
|
-
const { draco } = await loadDracoDecoderModule(
|
|
6599
|
+
const { draco } = await loadDracoDecoderModule(
|
|
6600
|
+
options?.core,
|
|
6601
|
+
options?.draco?.decoderType || "wasm"
|
|
6602
|
+
);
|
|
6366
6603
|
const dracoParser = new DracoParser(draco);
|
|
6367
6604
|
try {
|
|
6368
6605
|
return dracoParser.parseSync(arrayBuffer, options?.draco);
|
|
@@ -6372,7 +6609,7 @@
|
|
|
6372
6609
|
}
|
|
6373
6610
|
|
|
6374
6611
|
// ../textures/src/lib/utils/version.ts
|
|
6375
|
-
var VERSION6 = true ? "4.4.0-alpha.
|
|
6612
|
+
var VERSION6 = true ? "4.4.0-alpha.9" : "latest";
|
|
6376
6613
|
|
|
6377
6614
|
// ../textures/src/lib/parsers/basis-module-loader.ts
|
|
6378
6615
|
var BASIS_EXTERNAL_LIBRARIES = {
|
|
@@ -7052,18 +7289,18 @@
|
|
|
7052
7289
|
bgr565: { basisFormat: 15, compressed: false },
|
|
7053
7290
|
rgba4444: { basisFormat: 16, compressed: false }
|
|
7054
7291
|
};
|
|
7055
|
-
async function parseBasis(data, options) {
|
|
7056
|
-
if (options.basis.containerFormat === "auto") {
|
|
7292
|
+
async function parseBasis(data, options = {}) {
|
|
7293
|
+
if (!options.basis?.containerFormat || options.basis.containerFormat === "auto") {
|
|
7057
7294
|
if (isKTX(data)) {
|
|
7058
|
-
const fileConstructors = await loadBasisEncoderModule(options);
|
|
7295
|
+
const fileConstructors = await loadBasisEncoderModule(options?.core || {});
|
|
7059
7296
|
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
7060
7297
|
}
|
|
7061
|
-
const { BasisFile } = await loadBasisTranscoderModule(options);
|
|
7298
|
+
const { BasisFile } = await loadBasisTranscoderModule(options?.core || {});
|
|
7062
7299
|
return parseBasisFile(BasisFile, data, options);
|
|
7063
7300
|
}
|
|
7064
7301
|
switch (options.basis.module) {
|
|
7065
7302
|
case "encoder":
|
|
7066
|
-
const fileConstructors = await loadBasisEncoderModule(options);
|
|
7303
|
+
const fileConstructors = await loadBasisEncoderModule(options?.core || {});
|
|
7067
7304
|
switch (options.basis.containerFormat) {
|
|
7068
7305
|
case "ktx2":
|
|
7069
7306
|
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
@@ -7073,7 +7310,7 @@
|
|
|
7073
7310
|
}
|
|
7074
7311
|
case "transcoder":
|
|
7075
7312
|
default:
|
|
7076
|
-
const { BasisFile } = await loadBasisTranscoderModule(options);
|
|
7313
|
+
const { BasisFile } = await loadBasisTranscoderModule(options.core || {});
|
|
7077
7314
|
return parseBasisFile(BasisFile, data, options);
|
|
7078
7315
|
}
|
|
7079
7316
|
}
|
|
@@ -7176,7 +7413,7 @@
|
|
|
7176
7413
|
};
|
|
7177
7414
|
}
|
|
7178
7415
|
function getBasisOptions(options, hasAlpha) {
|
|
7179
|
-
let format = options
|
|
7416
|
+
let format = options.basis?.format;
|
|
7180
7417
|
if (format === "auto") {
|
|
7181
7418
|
format = selectSupportedBasisFormat();
|
|
7182
7419
|
}
|
|
@@ -7560,13 +7797,13 @@
|
|
|
7560
7797
|
var CompressedTextureLoader = {
|
|
7561
7798
|
...CompressedTextureWorkerLoader,
|
|
7562
7799
|
parse: async (arrayBuffer, options) => {
|
|
7800
|
+
options = { ...options };
|
|
7563
7801
|
if (options?.["compressed-texture"]?.useBasis) {
|
|
7564
7802
|
options.basis = {
|
|
7565
7803
|
format: {
|
|
7566
7804
|
alpha: "BC3",
|
|
7567
7805
|
noAlpha: "BC1"
|
|
7568
7806
|
},
|
|
7569
|
-
// @ts-expect-error TODO not allowed to modify inputs
|
|
7570
7807
|
...options.basis,
|
|
7571
7808
|
containerFormat: "ktx2",
|
|
7572
7809
|
module: "encoder"
|
|
@@ -8055,7 +8292,7 @@
|
|
|
8055
8292
|
}
|
|
8056
8293
|
|
|
8057
8294
|
// src/i3s-content-loader.ts
|
|
8058
|
-
var VERSION7 = true ? "4.4.0-alpha.
|
|
8295
|
+
var VERSION7 = true ? "4.4.0-alpha.9" : "latest";
|
|
8059
8296
|
var I3SContentLoader = {
|
|
8060
8297
|
dataType: null,
|
|
8061
8298
|
batchType: null,
|