@loaders.gl/i3s 4.2.0-alpha.4 → 4.2.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arcgis-webscene-loader.d.ts +1 -1
- package/dist/arcgis-webscene-loader.d.ts.map +1 -1
- package/dist/arcgis-webscene-loader.js +20 -11
- package/dist/dist.dev.js +1244 -722
- package/dist/dist.min.js +9 -0
- package/dist/i3s-attribute-loader.d.ts +2 -2
- package/dist/i3s-attribute-loader.d.ts.map +1 -1
- package/dist/i3s-attribute-loader.js +146 -95
- package/dist/i3s-building-scene-layer-loader.d.ts +2 -2
- package/dist/i3s-building-scene-layer-loader.d.ts.map +1 -1
- package/dist/i3s-building-scene-layer-loader.js +18 -14
- package/dist/i3s-content-loader.d.ts +2 -2
- package/dist/i3s-content-loader.d.ts.map +1 -1
- package/dist/i3s-content-loader.js +24 -25
- package/dist/i3s-content-worker-node.js +46 -46
- package/dist/i3s-content-worker-node.js.map +4 -4
- package/dist/i3s-content-worker.js +15 -27
- package/dist/i3s-loader.d.ts +2 -2
- package/dist/i3s-loader.d.ts.map +1 -1
- package/dist/i3s-loader.js +78 -66
- package/dist/i3s-node-page-loader.d.ts +2 -2
- package/dist/i3s-node-page-loader.d.ts.map +1 -1
- package/dist/i3s-node-page-loader.js +17 -13
- package/dist/i3s-slpk-loader.js +19 -15
- package/dist/index.cjs +92 -163
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +14 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +1 -1
- package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -1
- package/dist/lib/helpers/i3s-nodepages-tiles.js +230 -184
- package/dist/lib/parsers/constants.js +72 -45
- package/dist/lib/parsers/parse-arcgis-webscene.d.ts +1 -1
- package/dist/lib/parsers/parse-arcgis-webscene.d.ts.map +1 -1
- package/dist/lib/parsers/parse-arcgis-webscene.js +80 -59
- package/dist/lib/parsers/parse-i3s-attribute.js +83 -46
- package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts +1 -1
- package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts.map +1 -1
- package/dist/lib/parsers/parse-i3s-building-scene-layer.js +36 -33
- package/dist/lib/parsers/parse-i3s-tile-content.d.ts +1 -1
- package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -1
- package/dist/lib/parsers/parse-i3s-tile-content.js +433 -388
- package/dist/lib/parsers/parse-i3s.d.ts +1 -1
- package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
- package/dist/lib/parsers/parse-i3s.js +84 -81
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +1 -1
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/parse-slpk.js +23 -16
- package/dist/lib/parsers/parse-slpk/slpk-archieve.js +134 -97
- package/dist/lib/utils/convert-i3s-obb-to-mbs.js +12 -5
- package/dist/lib/utils/customize-colors.d.ts +1 -1
- package/dist/lib/utils/customize-colors.d.ts.map +1 -1
- package/dist/lib/utils/customize-colors.js +95 -81
- package/dist/lib/utils/url-utils.d.ts +1 -1
- package/dist/lib/utils/url-utils.d.ts.map +1 -1
- package/dist/lib/utils/url-utils.js +48 -28
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -6
- package/dist/workers/i3s-content-worker-node.js +1 -1
- package/dist/workers/i3s-content-worker.js +0 -1
- package/package.json +15 -12
- package/src/i3s-loader.ts +2 -1
- package/src/lib/helpers/i3s-nodepages-tiles.ts +1 -3
- package/src/lib/parsers/parse-i3s-tile-content.ts +4 -26
- package/dist/arcgis-webscene-loader.js.map +0 -1
- package/dist/i3s-attribute-loader.js.map +0 -1
- package/dist/i3s-building-scene-layer-loader.js.map +0 -1
- package/dist/i3s-content-loader.js.map +0 -1
- package/dist/i3s-loader.js.map +0 -1
- package/dist/i3s-node-page-loader.js.map +0 -1
- package/dist/i3s-slpk-loader.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
- package/dist/lib/parsers/constants.js.map +0 -1
- package/dist/lib/parsers/parse-arcgis-webscene.js.map +0 -1
- package/dist/lib/parsers/parse-i3s-attribute.js.map +0 -1
- package/dist/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
- package/dist/lib/parsers/parse-i3s-tile-content.js.map +0 -1
- package/dist/lib/parsers/parse-i3s.js.map +0 -1
- package/dist/lib/parsers/parse-slpk/parse-slpk.js.map +0 -1
- package/dist/lib/parsers/parse-slpk/slpk-archieve.js.map +0 -1
- package/dist/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
- package/dist/lib/utils/customize-colors.js.map +0 -1
- package/dist/lib/utils/url-utils.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/workers/i3s-content-worker-node.js.map +0 -1
- package/dist/workers/i3s-content-worker.js.map +0 -1
package/dist/dist.dev.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
if (typeof exports === 'object' && typeof module === 'object')
|
|
3
3
|
module.exports = factory();
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
|
-
else if (typeof exports === 'object') exports['
|
|
6
|
-
else root['
|
|
5
|
+
else if (typeof exports === 'object') exports['loaders'] = factory();
|
|
6
|
+
else root['loaders'] = factory();})(globalThis, function () {
|
|
7
7
|
"use strict";
|
|
8
8
|
var __exports__ = (() => {
|
|
9
9
|
var __create = Object.create;
|
|
@@ -27,6 +27,7 @@ var __exports__ = (() => {
|
|
|
27
27
|
}
|
|
28
28
|
return to;
|
|
29
29
|
};
|
|
30
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
30
31
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
31
32
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
32
33
|
// file that has been converted to a CommonJS file using a Babel-
|
|
@@ -37,13 +38,6 @@ var __exports__ = (() => {
|
|
|
37
38
|
));
|
|
38
39
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
39
40
|
|
|
40
|
-
// (disabled):../worker-utils/src/lib/node/require-utils.node
|
|
41
|
-
var require_require_utils = __commonJS({
|
|
42
|
-
"(disabled):../worker-utils/src/lib/node/require-utils.node"() {
|
|
43
|
-
"use strict";
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
|
|
47
41
|
// external-global-plugin:@loaders.gl/core
|
|
48
42
|
var require_core = __commonJS({
|
|
49
43
|
"external-global-plugin:@loaders.gl/core"(exports, module) {
|
|
@@ -51,6 +45,13 @@ var __exports__ = (() => {
|
|
|
51
45
|
}
|
|
52
46
|
});
|
|
53
47
|
|
|
48
|
+
// (disabled):../worker-utils/src/lib/node/require-utils.node
|
|
49
|
+
var require_require_utils = __commonJS({
|
|
50
|
+
"(disabled):../worker-utils/src/lib/node/require-utils.node"() {
|
|
51
|
+
"use strict";
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
54
55
|
// ../../node_modules/pako/lib/utils/common.js
|
|
55
56
|
var require_common = __commonJS({
|
|
56
57
|
"../../node_modules/pako/lib/utils/common.js"(exports) {
|
|
@@ -4259,9 +4260,9 @@ var __exports__ = (() => {
|
|
|
4259
4260
|
}
|
|
4260
4261
|
});
|
|
4261
4262
|
|
|
4262
|
-
//
|
|
4263
|
-
var
|
|
4264
|
-
__export(
|
|
4263
|
+
// bundle.ts
|
|
4264
|
+
var bundle_exports = {};
|
|
4265
|
+
__export(bundle_exports, {
|
|
4265
4266
|
ArcGISWebSceneLoader: () => ArcGISWebSceneLoader,
|
|
4266
4267
|
COORDINATE_SYSTEM: () => COORDINATE_SYSTEM,
|
|
4267
4268
|
I3SAttributeLoader: () => I3SAttributeLoader,
|
|
@@ -4276,16 +4277,25 @@ var __exports__ = (() => {
|
|
|
4276
4277
|
loadFeatureAttributes: () => loadFeatureAttributes,
|
|
4277
4278
|
parseSLPKArchive: () => parseSLPKArchive
|
|
4278
4279
|
});
|
|
4280
|
+
__reExport(bundle_exports, __toESM(require_core(), 1));
|
|
4279
4281
|
|
|
4280
4282
|
// ../math/src/geometry/constants.ts
|
|
4281
4283
|
var GL_PRIMITIVE_MODE = {
|
|
4282
4284
|
POINTS: 0,
|
|
4285
|
+
// Points. single points.
|
|
4283
4286
|
LINES: 1,
|
|
4287
|
+
// Lines. Each vertex connects to the one after it.
|
|
4284
4288
|
LINE_LOOP: 2,
|
|
4289
|
+
// Lines. Each set of two vertices is treated as a separate line segment.
|
|
4285
4290
|
LINE_STRIP: 3,
|
|
4291
|
+
// Lines/ a connected group of line segments from the first vertex to the last
|
|
4286
4292
|
TRIANGLES: 4,
|
|
4293
|
+
// Triangles. Each set of three vertices creates a separate triangle.
|
|
4287
4294
|
TRIANGLE_STRIP: 5,
|
|
4295
|
+
// Triangles. A connected group of triangles.
|
|
4288
4296
|
TRIANGLE_FAN: 6
|
|
4297
|
+
// Triangles. A connected group of triangles.
|
|
4298
|
+
// Each vertex connects to the previous and the first vertex in the fan.
|
|
4289
4299
|
};
|
|
4290
4300
|
var GL_TYPE = {
|
|
4291
4301
|
BYTE: 5120,
|
|
@@ -4325,19 +4335,25 @@ var __exports__ = (() => {
|
|
|
4325
4335
|
var window_ = globals.window || globals.self || globals.global || {};
|
|
4326
4336
|
var global_ = globals.global || globals.self || globals.window || {};
|
|
4327
4337
|
var document_ = globals.document || {};
|
|
4328
|
-
var isBrowser =
|
|
4338
|
+
var isBrowser = (
|
|
4339
|
+
// @ts-ignore process does not exist on browser
|
|
4340
|
+
Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser)
|
|
4341
|
+
);
|
|
4329
4342
|
var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
|
|
4330
4343
|
var nodeVersion = matches && parseFloat(matches[1]) || 0;
|
|
4331
4344
|
|
|
4332
4345
|
// ../worker-utils/src/lib/env-utils/version.ts
|
|
4346
|
+
var NPM_TAG = "latest";
|
|
4333
4347
|
function getVersion() {
|
|
4334
4348
|
if (!globalThis._loadersgl_?.version) {
|
|
4335
4349
|
globalThis._loadersgl_ = globalThis._loadersgl_ || {};
|
|
4336
|
-
if (
|
|
4337
|
-
console.warn(
|
|
4350
|
+
if (typeof __VERSION__ === "undefined") {
|
|
4351
|
+
console.warn(
|
|
4352
|
+
"loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN."
|
|
4353
|
+
);
|
|
4338
4354
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
4339
4355
|
} else {
|
|
4340
|
-
globalThis._loadersgl_.version =
|
|
4356
|
+
globalThis._loadersgl_.version = __VERSION__;
|
|
4341
4357
|
}
|
|
4342
4358
|
}
|
|
4343
4359
|
return globalThis._loadersgl_.version;
|
|
@@ -4362,7 +4378,10 @@ var __exports__ = (() => {
|
|
|
4362
4378
|
var window_2 = globals2.window || globals2.self || globals2.global || {};
|
|
4363
4379
|
var global_2 = globals2.global || globals2.self || globals2.window || {};
|
|
4364
4380
|
var document_2 = globals2.document || {};
|
|
4365
|
-
var isBrowser2 =
|
|
4381
|
+
var isBrowser2 = (
|
|
4382
|
+
// @ts-ignore process.browser
|
|
4383
|
+
typeof process !== "object" || String(process) !== "[object process]" || process.browser
|
|
4384
|
+
);
|
|
4366
4385
|
var isWorker = typeof importScripts === "function";
|
|
4367
4386
|
var isMobile = typeof window !== "undefined" && typeof window.orientation !== "undefined";
|
|
4368
4387
|
var matches2 = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
|
|
@@ -4375,7 +4394,8 @@ var __exports__ = (() => {
|
|
|
4375
4394
|
if (moduleName) {
|
|
4376
4395
|
libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
|
|
4377
4396
|
}
|
|
4378
|
-
loadLibraryPromises[libraryUrl] =
|
|
4397
|
+
loadLibraryPromises[libraryUrl] = // eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
4398
|
+
loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
|
|
4379
4399
|
return await loadLibraryPromises[libraryUrl];
|
|
4380
4400
|
}
|
|
4381
4401
|
function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
|
|
@@ -4469,7 +4489,9 @@ var __exports__ = (() => {
|
|
|
4469
4489
|
return concatenateArrayBuffersFromArray(sources);
|
|
4470
4490
|
}
|
|
4471
4491
|
function concatenateArrayBuffersFromArray(sources) {
|
|
4472
|
-
const sourceArrays = sources.map(
|
|
4492
|
+
const sourceArrays = sources.map(
|
|
4493
|
+
(source2) => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2
|
|
4494
|
+
);
|
|
4473
4495
|
const byteLength = sourceArrays.reduce((length4, typedArray) => length4 + typedArray.byteLength, 0);
|
|
4474
4496
|
const result = new Uint8Array(byteLength);
|
|
4475
4497
|
let offset = 0;
|
|
@@ -4570,12 +4592,15 @@ var __exports__ = (() => {
|
|
|
4570
4592
|
|
|
4571
4593
|
// ../loader-utils/src/lib/node/promisify.ts
|
|
4572
4594
|
function promisify1(fn) {
|
|
4573
|
-
return (args) => new Promise(
|
|
4595
|
+
return (args) => new Promise(
|
|
4596
|
+
(resolve, reject) => fn(args, (error, callbackArgs) => error ? reject(error) : resolve(callbackArgs))
|
|
4597
|
+
);
|
|
4574
4598
|
}
|
|
4575
4599
|
|
|
4576
4600
|
// ../loader-utils/src/lib/files/node-file-facade.ts
|
|
4577
4601
|
var NOT_IMPLEMENTED = new Error("Not implemented");
|
|
4578
4602
|
var NodeFileFacade = class {
|
|
4603
|
+
handle;
|
|
4579
4604
|
size = 0;
|
|
4580
4605
|
bigsize = 0n;
|
|
4581
4606
|
url = "";
|
|
@@ -4588,21 +4613,27 @@ var __exports__ = (() => {
|
|
|
4588
4613
|
}
|
|
4589
4614
|
throw new Error("Can't instantiate NodeFile. Make sure to import @loaders.gl/polyfills first.");
|
|
4590
4615
|
}
|
|
4616
|
+
/** Read data */
|
|
4591
4617
|
async read(start, end) {
|
|
4592
4618
|
throw NOT_IMPLEMENTED;
|
|
4593
4619
|
}
|
|
4620
|
+
/** Write to file. The number of bytes written will be returned */
|
|
4594
4621
|
async write(arrayBuffer, offset, length4) {
|
|
4595
4622
|
throw NOT_IMPLEMENTED;
|
|
4596
4623
|
}
|
|
4624
|
+
/** Get information about file */
|
|
4597
4625
|
async stat() {
|
|
4598
4626
|
throw NOT_IMPLEMENTED;
|
|
4599
4627
|
}
|
|
4628
|
+
/** Truncates the file descriptor. Only available on NodeFile. */
|
|
4600
4629
|
async truncate(length4) {
|
|
4601
4630
|
throw NOT_IMPLEMENTED;
|
|
4602
4631
|
}
|
|
4632
|
+
/** Append data to a file. Only available on NodeFile. */
|
|
4603
4633
|
async append(data) {
|
|
4604
4634
|
throw NOT_IMPLEMENTED;
|
|
4605
4635
|
}
|
|
4636
|
+
/** Close the file */
|
|
4606
4637
|
async close() {
|
|
4607
4638
|
}
|
|
4608
4639
|
};
|
|
@@ -4614,18 +4645,34 @@ var __exports__ = (() => {
|
|
|
4614
4645
|
|
|
4615
4646
|
// ../loader-utils/src/lib/file-provider/file-handle-file.ts
|
|
4616
4647
|
var FileHandleFile = class {
|
|
4648
|
+
/** The FileHandle from which data is provided */
|
|
4649
|
+
file;
|
|
4650
|
+
/** Create a new FileHandleFile */
|
|
4617
4651
|
constructor(path, append = false) {
|
|
4618
4652
|
this.file = new NodeFileFacade(path, append ? "a+" : "r");
|
|
4619
4653
|
}
|
|
4654
|
+
/**
|
|
4655
|
+
* Truncates the file descriptor.
|
|
4656
|
+
* @param length desired file lenght
|
|
4657
|
+
*/
|
|
4620
4658
|
async truncate(length4) {
|
|
4621
4659
|
await this.file.truncate(length4);
|
|
4622
4660
|
}
|
|
4661
|
+
/**
|
|
4662
|
+
* Append data to a file.
|
|
4663
|
+
* @param buffer data to append
|
|
4664
|
+
*/
|
|
4623
4665
|
async append(buffer) {
|
|
4624
4666
|
await this.file.append(buffer);
|
|
4625
4667
|
}
|
|
4668
|
+
/** Close file */
|
|
4626
4669
|
async destroy() {
|
|
4627
4670
|
await this.file.close();
|
|
4628
4671
|
}
|
|
4672
|
+
/**
|
|
4673
|
+
* Gets an unsigned 8-bit integer at the specified byte offset from the start of the file.
|
|
4674
|
+
* @param offset The offset, in bytes, from the start of the file where to read the data.
|
|
4675
|
+
*/
|
|
4629
4676
|
async getUint8(offset) {
|
|
4630
4677
|
const arrayBuffer = await this.file.read(offset, 1);
|
|
4631
4678
|
const val = new Uint8Array(arrayBuffer).at(0);
|
|
@@ -4634,6 +4681,10 @@ var __exports__ = (() => {
|
|
|
4634
4681
|
}
|
|
4635
4682
|
return val;
|
|
4636
4683
|
}
|
|
4684
|
+
/**
|
|
4685
|
+
* Gets an unsigned 16-bit integer at the specified byte offset from the start of the file.
|
|
4686
|
+
* @param offset The offset, in bytes, from the start of the file where to read the data.
|
|
4687
|
+
*/
|
|
4637
4688
|
async getUint16(offset) {
|
|
4638
4689
|
const arrayBuffer = await this.file.read(offset, 2);
|
|
4639
4690
|
const val = new Uint16Array(arrayBuffer).at(0);
|
|
@@ -4642,6 +4693,10 @@ var __exports__ = (() => {
|
|
|
4642
4693
|
}
|
|
4643
4694
|
return val;
|
|
4644
4695
|
}
|
|
4696
|
+
/**
|
|
4697
|
+
* Gets an unsigned 32-bit integer at the specified byte offset from the start of the file.
|
|
4698
|
+
* @param offset The offset, in bytes, from the start of the file where to read the data.
|
|
4699
|
+
*/
|
|
4645
4700
|
async getUint32(offset) {
|
|
4646
4701
|
const arrayBuffer = await this.file.read(offset, 4);
|
|
4647
4702
|
const val = new Uint32Array(arrayBuffer).at(0);
|
|
@@ -4650,6 +4705,10 @@ var __exports__ = (() => {
|
|
|
4650
4705
|
}
|
|
4651
4706
|
return val;
|
|
4652
4707
|
}
|
|
4708
|
+
/**
|
|
4709
|
+
* Gets an unsigned 32-bit integer at the specified byte offset from the start of the file.
|
|
4710
|
+
* @param offset The offset, in bytes, from the start of the file where to read the data.
|
|
4711
|
+
*/
|
|
4653
4712
|
async getBigUint64(offset) {
|
|
4654
4713
|
const arrayBuffer = await this.file.read(offset, 8);
|
|
4655
4714
|
const val = new BigInt64Array(arrayBuffer).at(0);
|
|
@@ -4658,6 +4717,11 @@ var __exports__ = (() => {
|
|
|
4658
4717
|
}
|
|
4659
4718
|
return val;
|
|
4660
4719
|
}
|
|
4720
|
+
/**
|
|
4721
|
+
* returns an ArrayBuffer whose contents are a copy of this file bytes from startOffset, inclusive, up to endOffset, exclusive.
|
|
4722
|
+
* @param startOffset The offset, in byte, from the start of the file where to start reading the data.
|
|
4723
|
+
* @param endOffset The offset, in bytes, from the start of the file where to end reading the data.
|
|
4724
|
+
*/
|
|
4661
4725
|
async slice(startOffset, endOffset) {
|
|
4662
4726
|
const bigLength = endOffset - startOffset;
|
|
4663
4727
|
if (bigLength > Number.MAX_SAFE_INTEGER) {
|
|
@@ -4666,6 +4730,9 @@ var __exports__ = (() => {
|
|
|
4666
4730
|
const length4 = Number(bigLength);
|
|
4667
4731
|
return await this.file.read(startOffset, length4);
|
|
4668
4732
|
}
|
|
4733
|
+
/**
|
|
4734
|
+
* the length (in bytes) of the data.
|
|
4735
|
+
*/
|
|
4669
4736
|
get length() {
|
|
4670
4737
|
return this.file.bigsize;
|
|
4671
4738
|
}
|
|
@@ -4679,26 +4746,50 @@ var __exports__ = (() => {
|
|
|
4679
4746
|
return Number(bigint);
|
|
4680
4747
|
};
|
|
4681
4748
|
var DataViewFile = class {
|
|
4749
|
+
/** The DataView from which data is provided */
|
|
4750
|
+
file;
|
|
4682
4751
|
constructor(file) {
|
|
4683
4752
|
this.file = file;
|
|
4684
4753
|
}
|
|
4685
4754
|
async destroy() {
|
|
4686
4755
|
}
|
|
4756
|
+
/**
|
|
4757
|
+
* Gets an unsigned 8-bit integer at the specified byte offset from the start of the file.
|
|
4758
|
+
* @param offset The offset, in bytes, from the start of the file where to read the data.
|
|
4759
|
+
*/
|
|
4687
4760
|
async getUint8(offset) {
|
|
4688
4761
|
return this.file.getUint8(toNumber(offset));
|
|
4689
4762
|
}
|
|
4763
|
+
/**
|
|
4764
|
+
* Gets an unsigned 16-bit intege at the specified byte offset from the start of the file.
|
|
4765
|
+
* @param offset The offset, in bytes, from the start of the file where to read the data.
|
|
4766
|
+
*/
|
|
4690
4767
|
async getUint16(offset) {
|
|
4691
4768
|
return this.file.getUint16(toNumber(offset), true);
|
|
4692
4769
|
}
|
|
4770
|
+
/**
|
|
4771
|
+
* Gets an unsigned 32-bit integer at the specified byte offset from the start of the file.
|
|
4772
|
+
* @param offset The offset, in bytes, from the start of the file where to read the data.
|
|
4773
|
+
*/
|
|
4693
4774
|
async getUint32(offset) {
|
|
4694
4775
|
return this.file.getUint32(toNumber(offset), true);
|
|
4695
4776
|
}
|
|
4777
|
+
/**
|
|
4778
|
+
* Gets an unsigned 64-bit integer at the specified byte offset from the start of the file.
|
|
4779
|
+
* @param offset The offset, in bytes, from the start of the file where to read the data.
|
|
4780
|
+
*/
|
|
4696
4781
|
async getBigUint64(offset) {
|
|
4697
4782
|
return this.file.getBigUint64(toNumber(offset), true);
|
|
4698
4783
|
}
|
|
4784
|
+
/**
|
|
4785
|
+
* returns an ArrayBuffer whose contents are a copy of this file bytes from startOffset, inclusive, up to endOffset, exclusive.
|
|
4786
|
+
* @param startOffset The offset, in bytes, from the start of the file where to start reading the data.
|
|
4787
|
+
* @param endOffset The offset, in bytes, from the start of the file where to end reading the data.
|
|
4788
|
+
*/
|
|
4699
4789
|
async slice(startOffset, endOffset) {
|
|
4700
4790
|
return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
|
|
4701
4791
|
}
|
|
4792
|
+
/** the length (in bytes) of the data. */
|
|
4702
4793
|
get length() {
|
|
4703
4794
|
return BigInt(this.file.byteLength);
|
|
4704
4795
|
}
|
|
@@ -8840,14 +8931,14 @@ var __exports__ = (() => {
|
|
|
8840
8931
|
var OBJECT_ID_ATTRIBUTE_TYPE = "Oid32";
|
|
8841
8932
|
var FLOAT_64_TYPE = "Float64";
|
|
8842
8933
|
var INT_16_ATTRIBUTE_TYPE = "Int16";
|
|
8843
|
-
var COORDINATE_SYSTEM =
|
|
8934
|
+
var COORDINATE_SYSTEM = /* @__PURE__ */ ((COORDINATE_SYSTEM2) => {
|
|
8844
8935
|
COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["DEFAULT"] = -1] = "DEFAULT";
|
|
8845
8936
|
COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["LNGLAT"] = 1] = "LNGLAT";
|
|
8846
8937
|
COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["METER_OFFSETS"] = 2] = "METER_OFFSETS";
|
|
8847
8938
|
COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["LNGLAT_OFFSETS"] = 3] = "LNGLAT_OFFSETS";
|
|
8848
8939
|
COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["CARTESIAN"] = 0] = "CARTESIAN";
|
|
8849
8940
|
return COORDINATE_SYSTEM2;
|
|
8850
|
-
}({});
|
|
8941
|
+
})(COORDINATE_SYSTEM || {});
|
|
8851
8942
|
|
|
8852
8943
|
// src/i3s-loader.ts
|
|
8853
8944
|
var import_core18 = __toESM(require_core(), 1);
|
|
@@ -9211,7 +9302,7 @@ var __exports__ = (() => {
|
|
|
9211
9302
|
_defineProperty(Ellipsoid, "WGS84", new Ellipsoid(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z));
|
|
9212
9303
|
|
|
9213
9304
|
// ../images/src/lib/utils/version.ts
|
|
9214
|
-
var VERSION2 =
|
|
9305
|
+
var VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
9215
9306
|
|
|
9216
9307
|
// ../images/src/lib/category-api/image-type.ts
|
|
9217
9308
|
var parseImageNode = globalThis.loaders?.parseImageNode;
|
|
@@ -9398,10 +9489,7 @@ var __exports__ = (() => {
|
|
|
9398
9489
|
switch (brandMajor) {
|
|
9399
9490
|
case "avif":
|
|
9400
9491
|
case "avis":
|
|
9401
|
-
return {
|
|
9402
|
-
extension: "avif",
|
|
9403
|
-
mimeType: "image/avif"
|
|
9404
|
-
};
|
|
9492
|
+
return { extension: "avif", mimeType: "image/avif" };
|
|
9405
9493
|
default:
|
|
9406
9494
|
return null;
|
|
9407
9495
|
}
|
|
@@ -9437,6 +9525,7 @@ var __exports__ = (() => {
|
|
|
9437
9525
|
}
|
|
9438
9526
|
return {
|
|
9439
9527
|
mimeType: mediaType.mimeType,
|
|
9528
|
+
// TODO - decode width and height
|
|
9440
9529
|
width: 0,
|
|
9441
9530
|
height: 0
|
|
9442
9531
|
};
|
|
@@ -9483,10 +9572,7 @@ var __exports__ = (() => {
|
|
|
9483
9572
|
if (!isJpeg) {
|
|
9484
9573
|
return null;
|
|
9485
9574
|
}
|
|
9486
|
-
const {
|
|
9487
|
-
tableMarkers,
|
|
9488
|
-
sofMarkers
|
|
9489
|
-
} = getJpegMarkers();
|
|
9575
|
+
const { tableMarkers, sofMarkers } = getJpegMarkers();
|
|
9490
9576
|
let i2 = 2;
|
|
9491
9577
|
while (i2 + 9 < dataView.byteLength) {
|
|
9492
9578
|
const marker = dataView.getUint16(i2, BIG_ENDIAN);
|
|
@@ -9494,7 +9580,9 @@ var __exports__ = (() => {
|
|
|
9494
9580
|
return {
|
|
9495
9581
|
mimeType: "image/jpeg",
|
|
9496
9582
|
height: dataView.getUint16(i2 + 5, BIG_ENDIAN),
|
|
9583
|
+
// Number of lines
|
|
9497
9584
|
width: dataView.getUint16(i2 + 7, BIG_ENDIAN)
|
|
9585
|
+
// Number of pixels per line
|
|
9498
9586
|
};
|
|
9499
9587
|
}
|
|
9500
9588
|
if (!tableMarkers.has(marker)) {
|
|
@@ -9510,11 +9598,23 @@ var __exports__ = (() => {
|
|
|
9510
9598
|
for (let i2 = 65504; i2 < 65520; ++i2) {
|
|
9511
9599
|
tableMarkers.add(i2);
|
|
9512
9600
|
}
|
|
9513
|
-
const sofMarkers = /* @__PURE__ */ new Set([
|
|
9514
|
-
|
|
9515
|
-
|
|
9516
|
-
|
|
9517
|
-
|
|
9601
|
+
const sofMarkers = /* @__PURE__ */ new Set([
|
|
9602
|
+
65472,
|
|
9603
|
+
65473,
|
|
9604
|
+
65474,
|
|
9605
|
+
65475,
|
|
9606
|
+
65477,
|
|
9607
|
+
65478,
|
|
9608
|
+
65479,
|
|
9609
|
+
65481,
|
|
9610
|
+
65482,
|
|
9611
|
+
65483,
|
|
9612
|
+
65485,
|
|
9613
|
+
65486,
|
|
9614
|
+
65487,
|
|
9615
|
+
65502
|
|
9616
|
+
]);
|
|
9617
|
+
return { tableMarkers, sofMarkers };
|
|
9518
9618
|
}
|
|
9519
9619
|
function toDataView(data) {
|
|
9520
9620
|
if (data instanceof DataView) {
|
|
@@ -9531,9 +9631,7 @@ var __exports__ = (() => {
|
|
|
9531
9631
|
|
|
9532
9632
|
// ../images/src/lib/parsers/parse-to-node-image.ts
|
|
9533
9633
|
async function parseToNodeImage(arrayBuffer, options) {
|
|
9534
|
-
const {
|
|
9535
|
-
mimeType
|
|
9536
|
-
} = getBinaryImageMetadata(arrayBuffer) || {};
|
|
9634
|
+
const { mimeType } = getBinaryImageMetadata(arrayBuffer) || {};
|
|
9537
9635
|
const parseImageNode2 = globalThis.loaders?.parseImageNode;
|
|
9538
9636
|
assert(parseImageNode2);
|
|
9539
9637
|
return await parseImageNode2(arrayBuffer, mimeType);
|
|
@@ -9544,9 +9642,7 @@ var __exports__ = (() => {
|
|
|
9544
9642
|
options = options || {};
|
|
9545
9643
|
const imageOptions = options.image || {};
|
|
9546
9644
|
const imageType = imageOptions.type || "auto";
|
|
9547
|
-
const {
|
|
9548
|
-
url
|
|
9549
|
-
} = context || {};
|
|
9645
|
+
const { url } = context || {};
|
|
9550
9646
|
const loadType = getLoadableImageType(imageType);
|
|
9551
9647
|
let image;
|
|
9552
9648
|
switch (loadType) {
|
|
@@ -9580,12 +9676,23 @@ var __exports__ = (() => {
|
|
|
9580
9676
|
|
|
9581
9677
|
// ../images/src/image-loader.ts
|
|
9582
9678
|
var EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "ico", "svg", "avif"];
|
|
9583
|
-
var MIME_TYPES = [
|
|
9679
|
+
var MIME_TYPES = [
|
|
9680
|
+
"image/png",
|
|
9681
|
+
"image/jpeg",
|
|
9682
|
+
"image/gif",
|
|
9683
|
+
"image/webp",
|
|
9684
|
+
"image/avif",
|
|
9685
|
+
"image/bmp",
|
|
9686
|
+
"image/vnd.microsoft.icon",
|
|
9687
|
+
"image/svg+xml"
|
|
9688
|
+
];
|
|
9584
9689
|
var DEFAULT_IMAGE_LOADER_OPTIONS = {
|
|
9585
9690
|
image: {
|
|
9586
9691
|
type: "auto",
|
|
9587
9692
|
decode: true
|
|
9693
|
+
// if format is HTML
|
|
9588
9694
|
}
|
|
9695
|
+
// imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor
|
|
9589
9696
|
};
|
|
9590
9697
|
var ImageLoader = {
|
|
9591
9698
|
id: "image",
|
|
@@ -9595,18 +9702,20 @@ var __exports__ = (() => {
|
|
|
9595
9702
|
mimeTypes: MIME_TYPES,
|
|
9596
9703
|
extensions: EXTENSIONS,
|
|
9597
9704
|
parse: parseImage,
|
|
9705
|
+
// TODO: byteOffset, byteLength;
|
|
9598
9706
|
tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],
|
|
9599
9707
|
options: DEFAULT_IMAGE_LOADER_OPTIONS
|
|
9600
9708
|
};
|
|
9601
9709
|
|
|
9602
9710
|
// ../draco/src/lib/utils/version.ts
|
|
9603
|
-
var VERSION3 =
|
|
9711
|
+
var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
9604
9712
|
|
|
9605
9713
|
// ../draco/src/draco-loader.ts
|
|
9606
9714
|
var DracoLoader = {
|
|
9607
9715
|
name: "Draco",
|
|
9608
9716
|
id: "draco",
|
|
9609
9717
|
module: "draco",
|
|
9718
|
+
// shapes: ['mesh'],
|
|
9610
9719
|
version: VERSION3,
|
|
9611
9720
|
worker: true,
|
|
9612
9721
|
extensions: ["drc"],
|
|
@@ -9616,6 +9725,7 @@ var __exports__ = (() => {
|
|
|
9616
9725
|
options: {
|
|
9617
9726
|
draco: {
|
|
9618
9727
|
decoderType: typeof WebAssembly === "object" ? "wasm" : "js",
|
|
9728
|
+
// 'js' for IE11
|
|
9619
9729
|
libraryPath: "libs/",
|
|
9620
9730
|
extraAttributes: {},
|
|
9621
9731
|
attributeNameEntry: void 0
|
|
@@ -9669,7 +9779,10 @@ var __exports__ = (() => {
|
|
|
9669
9779
|
maxY = y > maxY ? y : maxY;
|
|
9670
9780
|
maxZ = z > maxZ ? z : maxZ;
|
|
9671
9781
|
}
|
|
9672
|
-
return [
|
|
9782
|
+
return [
|
|
9783
|
+
[minX, minY, minZ],
|
|
9784
|
+
[maxX, maxY, maxZ]
|
|
9785
|
+
];
|
|
9673
9786
|
}
|
|
9674
9787
|
|
|
9675
9788
|
// ../schema/src/lib/mesh/deduce-mesh-schema.ts
|
|
@@ -9678,14 +9791,7 @@ var __exports__ = (() => {
|
|
|
9678
9791
|
const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);
|
|
9679
9792
|
return {
|
|
9680
9793
|
name,
|
|
9681
|
-
type: {
|
|
9682
|
-
type: "fixed-size-list",
|
|
9683
|
-
listSize: attribute.size,
|
|
9684
|
-
children: [{
|
|
9685
|
-
name: "value",
|
|
9686
|
-
type
|
|
9687
|
-
}]
|
|
9688
|
-
},
|
|
9794
|
+
type: { type: "fixed-size-list", listSize: attribute.size, children: [{ name: "value", type }] },
|
|
9689
9795
|
nullable: false,
|
|
9690
9796
|
metadata
|
|
9691
9797
|
};
|
|
@@ -9711,17 +9817,18 @@ var __exports__ = (() => {
|
|
|
9711
9817
|
const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);
|
|
9712
9818
|
for (const attributeName in attributes) {
|
|
9713
9819
|
const attribute = attributes[attributeName];
|
|
9714
|
-
const field = getArrowFieldFromAttribute(
|
|
9820
|
+
const field = getArrowFieldFromAttribute(
|
|
9821
|
+
attributeName,
|
|
9822
|
+
attribute,
|
|
9823
|
+
namedLoaderDataAttributes[attributeName]
|
|
9824
|
+
);
|
|
9715
9825
|
fields.push(field);
|
|
9716
9826
|
}
|
|
9717
9827
|
if (indices) {
|
|
9718
9828
|
const indicesField = getArrowFieldFromAttribute("indices", indices);
|
|
9719
9829
|
fields.push(indicesField);
|
|
9720
9830
|
}
|
|
9721
|
-
return {
|
|
9722
|
-
fields,
|
|
9723
|
-
metadata
|
|
9724
|
-
};
|
|
9831
|
+
return { fields, metadata };
|
|
9725
9832
|
}
|
|
9726
9833
|
function transformAttributesLoaderData(loaderData) {
|
|
9727
9834
|
const result = {};
|
|
@@ -9763,15 +9870,27 @@ var __exports__ = (() => {
|
|
|
9763
9870
|
};
|
|
9764
9871
|
var INDEX_ITEM_SIZE = 4;
|
|
9765
9872
|
var DracoParser = class {
|
|
9873
|
+
draco;
|
|
9874
|
+
decoder;
|
|
9875
|
+
metadataQuerier;
|
|
9876
|
+
// draco - the draco decoder, either import `draco3d` or load dynamically
|
|
9766
9877
|
constructor(draco) {
|
|
9767
9878
|
this.draco = draco;
|
|
9768
9879
|
this.decoder = new this.draco.Decoder();
|
|
9769
9880
|
this.metadataQuerier = new this.draco.MetadataQuerier();
|
|
9770
9881
|
}
|
|
9882
|
+
/**
|
|
9883
|
+
* Destroy draco resources
|
|
9884
|
+
*/
|
|
9771
9885
|
destroy() {
|
|
9772
9886
|
this.draco.destroy(this.decoder);
|
|
9773
9887
|
this.draco.destroy(this.metadataQuerier);
|
|
9774
9888
|
}
|
|
9889
|
+
/**
|
|
9890
|
+
* NOTE: caller must call `destroyGeometry` on the return value after using it
|
|
9891
|
+
* @param arrayBuffer
|
|
9892
|
+
* @param options
|
|
9893
|
+
*/
|
|
9775
9894
|
parseSync(arrayBuffer, options = {}) {
|
|
9776
9895
|
const buffer = new this.draco.DecoderBuffer();
|
|
9777
9896
|
buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);
|
|
@@ -9816,6 +9935,14 @@ var __exports__ = (() => {
|
|
|
9816
9935
|
}
|
|
9817
9936
|
}
|
|
9818
9937
|
}
|
|
9938
|
+
// Draco specific "loader data"
|
|
9939
|
+
/**
|
|
9940
|
+
* Extract
|
|
9941
|
+
* @param dracoGeometry
|
|
9942
|
+
* @param geometry_type
|
|
9943
|
+
* @param options
|
|
9944
|
+
* @returns
|
|
9945
|
+
*/
|
|
9819
9946
|
_getDracoLoaderData(dracoGeometry, geometry_type, options) {
|
|
9820
9947
|
const metadata = this._getTopLevelMetadata(dracoGeometry);
|
|
9821
9948
|
const attributes = this._getDracoAttributes(dracoGeometry, options);
|
|
@@ -9828,6 +9955,12 @@ var __exports__ = (() => {
|
|
|
9828
9955
|
attributes
|
|
9829
9956
|
};
|
|
9830
9957
|
}
|
|
9958
|
+
/**
|
|
9959
|
+
* Extract all draco provided information and metadata for each attribute
|
|
9960
|
+
* @param dracoGeometry
|
|
9961
|
+
* @param options
|
|
9962
|
+
* @returns
|
|
9963
|
+
*/
|
|
9831
9964
|
_getDracoAttributes(dracoGeometry, options) {
|
|
9832
9965
|
const dracoAttributes = {};
|
|
9833
9966
|
for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {
|
|
@@ -9855,6 +9988,12 @@ var __exports__ = (() => {
|
|
|
9855
9988
|
}
|
|
9856
9989
|
return dracoAttributes;
|
|
9857
9990
|
}
|
|
9991
|
+
/**
|
|
9992
|
+
* Get standard loaders.gl mesh category data
|
|
9993
|
+
* Extracts the geometry from draco
|
|
9994
|
+
* @param dracoGeometry
|
|
9995
|
+
* @param options
|
|
9996
|
+
*/
|
|
9858
9997
|
_getMeshData(dracoGeometry, loaderData, options) {
|
|
9859
9998
|
const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);
|
|
9860
9999
|
const positionAttribute = attributes.POSITION;
|
|
@@ -9867,6 +10006,7 @@ var __exports__ = (() => {
|
|
|
9867
10006
|
return {
|
|
9868
10007
|
topology: "triangle-strip",
|
|
9869
10008
|
mode: 4,
|
|
10009
|
+
// GL.TRIANGLES
|
|
9870
10010
|
attributes,
|
|
9871
10011
|
indices: {
|
|
9872
10012
|
value: this._getTriangleStripIndices(dracoGeometry),
|
|
@@ -9878,6 +10018,7 @@ var __exports__ = (() => {
|
|
|
9878
10018
|
return {
|
|
9879
10019
|
topology: "triangle-list",
|
|
9880
10020
|
mode: 5,
|
|
10021
|
+
// GL.TRIANGLE_STRIP
|
|
9881
10022
|
attributes,
|
|
9882
10023
|
indices: {
|
|
9883
10024
|
value: this._getTriangleListIndices(dracoGeometry),
|
|
@@ -9889,6 +10030,7 @@ var __exports__ = (() => {
|
|
|
9889
10030
|
return {
|
|
9890
10031
|
topology: "point-list",
|
|
9891
10032
|
mode: 0,
|
|
10033
|
+
// GL.POINTS
|
|
9892
10034
|
attributes
|
|
9893
10035
|
};
|
|
9894
10036
|
}
|
|
@@ -9897,10 +10039,7 @@ var __exports__ = (() => {
|
|
|
9897
10039
|
for (const loaderAttribute of Object.values(loaderData.attributes)) {
|
|
9898
10040
|
const attributeName = this._deduceAttributeName(loaderAttribute, options);
|
|
9899
10041
|
loaderAttribute.name = attributeName;
|
|
9900
|
-
const {
|
|
9901
|
-
value,
|
|
9902
|
-
size
|
|
9903
|
-
} = this._getAttributeValues(dracoGeometry, loaderAttribute);
|
|
10042
|
+
const { value, size } = this._getAttributeValues(dracoGeometry, loaderAttribute);
|
|
9904
10043
|
attributes[attributeName] = {
|
|
9905
10044
|
value,
|
|
9906
10045
|
size,
|
|
@@ -9911,6 +10050,11 @@ var __exports__ = (() => {
|
|
|
9911
10050
|
}
|
|
9912
10051
|
return attributes;
|
|
9913
10052
|
}
|
|
10053
|
+
// MESH INDICES EXTRACTION
|
|
10054
|
+
/**
|
|
10055
|
+
* For meshes, we need indices to define the faces.
|
|
10056
|
+
* @param dracoGeometry
|
|
10057
|
+
*/
|
|
9914
10058
|
_getTriangleListIndices(dracoGeometry) {
|
|
9915
10059
|
const numFaces = dracoGeometry.num_faces();
|
|
9916
10060
|
const numIndices = numFaces * 3;
|
|
@@ -9923,6 +10067,10 @@ var __exports__ = (() => {
|
|
|
9923
10067
|
this.draco._free(ptr);
|
|
9924
10068
|
}
|
|
9925
10069
|
}
|
|
10070
|
+
/**
|
|
10071
|
+
* For meshes, we need indices to define the faces.
|
|
10072
|
+
* @param dracoGeometry
|
|
10073
|
+
*/
|
|
9926
10074
|
_getTriangleStripIndices(dracoGeometry) {
|
|
9927
10075
|
const dracoArray = new this.draco.DracoInt32Array();
|
|
9928
10076
|
try {
|
|
@@ -9932,6 +10080,12 @@ var __exports__ = (() => {
|
|
|
9932
10080
|
this.draco.destroy(dracoArray);
|
|
9933
10081
|
}
|
|
9934
10082
|
}
|
|
10083
|
+
/**
|
|
10084
|
+
*
|
|
10085
|
+
* @param dracoGeometry
|
|
10086
|
+
* @param dracoAttribute
|
|
10087
|
+
* @param attributeName
|
|
10088
|
+
*/
|
|
9935
10089
|
_getAttributeValues(dracoGeometry, attribute) {
|
|
9936
10090
|
const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];
|
|
9937
10091
|
const numComponents = attribute.num_components;
|
|
@@ -9943,19 +10097,48 @@ var __exports__ = (() => {
|
|
|
9943
10097
|
const ptr = this.draco._malloc(byteLength);
|
|
9944
10098
|
try {
|
|
9945
10099
|
const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);
|
|
9946
|
-
this.decoder.GetAttributeDataArrayForAllPoints(
|
|
10100
|
+
this.decoder.GetAttributeDataArrayForAllPoints(
|
|
10101
|
+
dracoGeometry,
|
|
10102
|
+
dracoAttribute,
|
|
10103
|
+
dataType,
|
|
10104
|
+
byteLength,
|
|
10105
|
+
ptr
|
|
10106
|
+
);
|
|
9947
10107
|
value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();
|
|
9948
10108
|
} finally {
|
|
9949
10109
|
this.draco._free(ptr);
|
|
9950
10110
|
}
|
|
9951
|
-
return {
|
|
9952
|
-
|
|
9953
|
-
|
|
9954
|
-
|
|
9955
|
-
|
|
10111
|
+
return { value, size: numComponents };
|
|
10112
|
+
}
|
|
10113
|
+
// Attribute names
|
|
10114
|
+
/**
|
|
10115
|
+
* DRACO does not store attribute names - We need to deduce an attribute name
|
|
10116
|
+
* for each attribute
|
|
10117
|
+
_getAttributeNames(
|
|
10118
|
+
dracoGeometry: Mesh | PointCloud,
|
|
10119
|
+
options: DracoParseOptions
|
|
10120
|
+
): {[unique_id: number]: string} {
|
|
10121
|
+
const attributeNames: {[unique_id: number]: string} = {};
|
|
10122
|
+
for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {
|
|
10123
|
+
const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);
|
|
10124
|
+
const attributeName = this._deduceAttributeName(dracoAttribute, options);
|
|
10125
|
+
attributeNames[attributeName] = attributeName;
|
|
10126
|
+
}
|
|
10127
|
+
return attributeNames;
|
|
10128
|
+
}
|
|
10129
|
+
*/
|
|
10130
|
+
/**
|
|
10131
|
+
* Deduce an attribute name.
|
|
10132
|
+
* @note DRACO does not save attribute names, just general type (POSITION, COLOR)
|
|
10133
|
+
* to help optimize compression. We generate GLTF compatible names for the Draco-recognized
|
|
10134
|
+
* types
|
|
10135
|
+
* @param attributeData
|
|
10136
|
+
*/
|
|
9956
10137
|
_deduceAttributeName(attribute, options) {
|
|
9957
10138
|
const uniqueId = attribute.unique_id;
|
|
9958
|
-
for (const [attributeName, attributeUniqueId] of Object.entries(
|
|
10139
|
+
for (const [attributeName, attributeUniqueId] of Object.entries(
|
|
10140
|
+
options.extraAttributes || {}
|
|
10141
|
+
)) {
|
|
9959
10142
|
if (attributeUniqueId === uniqueId) {
|
|
9960
10143
|
return attributeName;
|
|
9961
10144
|
}
|
|
@@ -9973,14 +10156,22 @@ var __exports__ = (() => {
|
|
|
9973
10156
|
}
|
|
9974
10157
|
return `CUSTOM_ATTRIBUTE_${uniqueId}`;
|
|
9975
10158
|
}
|
|
10159
|
+
// METADATA EXTRACTION
|
|
10160
|
+
/** Get top level metadata */
|
|
9976
10161
|
_getTopLevelMetadata(dracoGeometry) {
|
|
9977
10162
|
const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);
|
|
9978
10163
|
return this._getDracoMetadata(dracoMetadata);
|
|
9979
10164
|
}
|
|
10165
|
+
/** Get per attribute metadata */
|
|
9980
10166
|
_getAttributeMetadata(dracoGeometry, attributeId) {
|
|
9981
10167
|
const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);
|
|
9982
10168
|
return this._getDracoMetadata(dracoMetadata);
|
|
9983
10169
|
}
|
|
10170
|
+
/**
|
|
10171
|
+
* Extract metadata field values
|
|
10172
|
+
* @param dracoMetadata
|
|
10173
|
+
* @returns
|
|
10174
|
+
*/
|
|
9984
10175
|
_getDracoMetadata(dracoMetadata) {
|
|
9985
10176
|
if (!dracoMetadata || !dracoMetadata.ptr) {
|
|
9986
10177
|
return {};
|
|
@@ -9993,6 +10184,11 @@ var __exports__ = (() => {
|
|
|
9993
10184
|
}
|
|
9994
10185
|
return result;
|
|
9995
10186
|
}
|
|
10187
|
+
/**
|
|
10188
|
+
* Extracts possible values for one metadata entry by name
|
|
10189
|
+
* @param dracoMetadata
|
|
10190
|
+
* @param entryName
|
|
10191
|
+
*/
|
|
9996
10192
|
_getDracoMetadataField(dracoMetadata, entryName) {
|
|
9997
10193
|
const dracoArray = new this.draco.DracoInt32Array();
|
|
9998
10194
|
try {
|
|
@@ -10008,20 +10204,21 @@ var __exports__ = (() => {
|
|
|
10008
10204
|
this.draco.destroy(dracoArray);
|
|
10009
10205
|
}
|
|
10010
10206
|
}
|
|
10207
|
+
// QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)
|
|
10208
|
+
/** Skip transforms for specific attribute types */
|
|
10011
10209
|
_disableAttributeTransforms(options) {
|
|
10012
|
-
const {
|
|
10013
|
-
quantizedAttributes = [],
|
|
10014
|
-
octahedronAttributes = []
|
|
10015
|
-
} = options;
|
|
10210
|
+
const { quantizedAttributes = [], octahedronAttributes = [] } = options;
|
|
10016
10211
|
const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];
|
|
10017
10212
|
for (const dracoAttributeName of skipAttributes) {
|
|
10018
10213
|
this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);
|
|
10019
10214
|
}
|
|
10020
10215
|
}
|
|
10216
|
+
/**
|
|
10217
|
+
* Extract (and apply?) Position Transform
|
|
10218
|
+
* @todo not used
|
|
10219
|
+
*/
|
|
10021
10220
|
_getQuantizationTransform(dracoAttribute, options) {
|
|
10022
|
-
const {
|
|
10023
|
-
quantizedAttributes = []
|
|
10024
|
-
} = options;
|
|
10221
|
+
const { quantizedAttributes = [] } = options;
|
|
10025
10222
|
const attribute_type = dracoAttribute.attribute_type();
|
|
10026
10223
|
const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);
|
|
10027
10224
|
if (skip) {
|
|
@@ -10041,9 +10238,7 @@ var __exports__ = (() => {
|
|
|
10041
10238
|
return null;
|
|
10042
10239
|
}
|
|
10043
10240
|
_getOctahedronTransform(dracoAttribute, options) {
|
|
10044
|
-
const {
|
|
10045
|
-
octahedronAttributes = []
|
|
10046
|
-
} = options;
|
|
10241
|
+
const { octahedronAttributes = [] } = options;
|
|
10047
10242
|
const attribute_type = dracoAttribute.attribute_type();
|
|
10048
10243
|
const octahedron = octahedronAttributes.map((type) => this.decoder[type]).includes(attribute_type);
|
|
10049
10244
|
if (octahedron) {
|
|
@@ -10060,6 +10255,7 @@ var __exports__ = (() => {
|
|
|
10060
10255
|
}
|
|
10061
10256
|
return null;
|
|
10062
10257
|
}
|
|
10258
|
+
// HELPERS
|
|
10063
10259
|
};
|
|
10064
10260
|
function getDracoDataType(draco, attributeType) {
|
|
10065
10261
|
switch (attributeType) {
|
|
@@ -10103,9 +10299,13 @@ var __exports__ = (() => {
|
|
|
10103
10299
|
var DRACO_ENCODER_VERSION = "1.4.1";
|
|
10104
10300
|
var STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
|
|
10105
10301
|
var DRACO_EXTERNAL_LIBRARIES = {
|
|
10302
|
+
/** The primary Draco3D encoder, javascript wrapper part */
|
|
10106
10303
|
DECODER: "draco_wasm_wrapper.js",
|
|
10304
|
+
/** The primary draco decoder, compiled web assembly part */
|
|
10107
10305
|
DECODER_WASM: "draco_decoder.wasm",
|
|
10306
|
+
/** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */
|
|
10108
10307
|
FALLBACK_DECODER: "draco_decoder.js",
|
|
10308
|
+
/** Draco encoder */
|
|
10109
10309
|
ENCODER: "draco_encoder.js"
|
|
10110
10310
|
};
|
|
10111
10311
|
var DRACO_EXTERNAL_LIBRARY_URLS = {
|
|
@@ -10119,9 +10319,7 @@ var __exports__ = (() => {
|
|
|
10119
10319
|
const modules = options.modules || {};
|
|
10120
10320
|
if (modules.draco3d) {
|
|
10121
10321
|
loadDecoderPromise = loadDecoderPromise || modules.draco3d.createDecoderModule({}).then((draco) => {
|
|
10122
|
-
return {
|
|
10123
|
-
draco
|
|
10124
|
-
};
|
|
10322
|
+
return { draco };
|
|
10125
10323
|
});
|
|
10126
10324
|
} else {
|
|
10127
10325
|
loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
|
|
@@ -10133,11 +10331,29 @@ var __exports__ = (() => {
|
|
|
10133
10331
|
let wasmBinary;
|
|
10134
10332
|
switch (options.draco && options.draco.decoderType) {
|
|
10135
10333
|
case "js":
|
|
10136
|
-
DracoDecoderModule = await loadLibrary(
|
|
10334
|
+
DracoDecoderModule = await loadLibrary(
|
|
10335
|
+
DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],
|
|
10336
|
+
"draco",
|
|
10337
|
+
options,
|
|
10338
|
+
DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER
|
|
10339
|
+
);
|
|
10137
10340
|
break;
|
|
10138
10341
|
case "wasm":
|
|
10139
10342
|
default:
|
|
10140
|
-
[DracoDecoderModule, wasmBinary] = await Promise.all([
|
|
10343
|
+
[DracoDecoderModule, wasmBinary] = await Promise.all([
|
|
10344
|
+
await loadLibrary(
|
|
10345
|
+
DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
|
|
10346
|
+
"draco",
|
|
10347
|
+
options,
|
|
10348
|
+
DRACO_EXTERNAL_LIBRARIES.DECODER
|
|
10349
|
+
),
|
|
10350
|
+
await loadLibrary(
|
|
10351
|
+
DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
|
|
10352
|
+
"draco",
|
|
10353
|
+
options,
|
|
10354
|
+
DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
|
|
10355
|
+
)
|
|
10356
|
+
]);
|
|
10141
10357
|
}
|
|
10142
10358
|
DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
|
|
10143
10359
|
return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
|
|
@@ -10150,9 +10366,8 @@ var __exports__ = (() => {
|
|
|
10150
10366
|
return new Promise((resolve) => {
|
|
10151
10367
|
DracoDecoderModule({
|
|
10152
10368
|
...options,
|
|
10153
|
-
onModuleLoaded: (draco) => resolve({
|
|
10154
|
-
|
|
10155
|
-
})
|
|
10369
|
+
onModuleLoaded: (draco) => resolve({ draco })
|
|
10370
|
+
// Module is Promise-like. Wrap in object to avoid loop.
|
|
10156
10371
|
});
|
|
10157
10372
|
});
|
|
10158
10373
|
}
|
|
@@ -10163,9 +10378,7 @@ var __exports__ = (() => {
|
|
|
10163
10378
|
parse
|
|
10164
10379
|
};
|
|
10165
10380
|
async function parse(arrayBuffer, options) {
|
|
10166
|
-
const {
|
|
10167
|
-
draco
|
|
10168
|
-
} = await loadDracoDecoderModule(options);
|
|
10381
|
+
const { draco } = await loadDracoDecoderModule(options);
|
|
10169
10382
|
const dracoParser = new DracoParser(draco);
|
|
10170
10383
|
try {
|
|
10171
10384
|
return dracoParser.parseSync(arrayBuffer, options?.draco);
|
|
@@ -10175,13 +10388,17 @@ var __exports__ = (() => {
|
|
|
10175
10388
|
}
|
|
10176
10389
|
|
|
10177
10390
|
// ../textures/src/lib/utils/version.ts
|
|
10178
|
-
var VERSION4 =
|
|
10391
|
+
var VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
10179
10392
|
|
|
10180
10393
|
// ../textures/src/lib/parsers/basis-module-loader.ts
|
|
10181
10394
|
var BASIS_EXTERNAL_LIBRARIES = {
|
|
10395
|
+
/** Basis transcoder, javascript wrapper part */
|
|
10182
10396
|
TRANSCODER: "basis_transcoder.js",
|
|
10397
|
+
/** Basis transcoder, compiled web assembly part */
|
|
10183
10398
|
TRANSCODER_WASM: "basis_transcoder.wasm",
|
|
10399
|
+
/** Basis encoder, javascript wrapper part */
|
|
10184
10400
|
ENCODER: "basis_encoder.js",
|
|
10401
|
+
/** Basis encoder, compiled web assembly part */
|
|
10185
10402
|
ENCODER_WASM: "basis_encoder.wasm"
|
|
10186
10403
|
};
|
|
10187
10404
|
var loadBasisTranscoderPromise;
|
|
@@ -10196,7 +10413,10 @@ var __exports__ = (() => {
|
|
|
10196
10413
|
async function loadBasisTranscoder(options) {
|
|
10197
10414
|
let BASIS = null;
|
|
10198
10415
|
let wasmBinary = null;
|
|
10199
|
-
[BASIS, wasmBinary] = await Promise.all([
|
|
10416
|
+
[BASIS, wasmBinary] = await Promise.all([
|
|
10417
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, "textures", options),
|
|
10418
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, "textures", options)
|
|
10419
|
+
]);
|
|
10200
10420
|
BASIS = BASIS || globalThis.BASIS;
|
|
10201
10421
|
return await initializeBasisTranscoderModule(BASIS, wasmBinary);
|
|
10202
10422
|
}
|
|
@@ -10207,14 +10427,9 @@ var __exports__ = (() => {
|
|
|
10207
10427
|
}
|
|
10208
10428
|
return new Promise((resolve) => {
|
|
10209
10429
|
BasisModule(options).then((module) => {
|
|
10210
|
-
const {
|
|
10211
|
-
BasisFile,
|
|
10212
|
-
initializeBasis
|
|
10213
|
-
} = module;
|
|
10430
|
+
const { BasisFile, initializeBasis } = module;
|
|
10214
10431
|
initializeBasis();
|
|
10215
|
-
resolve({
|
|
10216
|
-
BasisFile
|
|
10217
|
-
});
|
|
10432
|
+
resolve({ BasisFile });
|
|
10218
10433
|
});
|
|
10219
10434
|
});
|
|
10220
10435
|
}
|
|
@@ -10230,7 +10445,10 @@ var __exports__ = (() => {
|
|
|
10230
10445
|
async function loadBasisEncoder(options) {
|
|
10231
10446
|
let BASIS_ENCODER = null;
|
|
10232
10447
|
let wasmBinary = null;
|
|
10233
|
-
[BASIS_ENCODER, wasmBinary] = await Promise.all([
|
|
10448
|
+
[BASIS_ENCODER, wasmBinary] = await Promise.all([
|
|
10449
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
|
|
10450
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
|
|
10451
|
+
]);
|
|
10234
10452
|
BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
|
|
10235
10453
|
return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
|
|
10236
10454
|
}
|
|
@@ -10241,28 +10459,21 @@ var __exports__ = (() => {
|
|
|
10241
10459
|
}
|
|
10242
10460
|
return new Promise((resolve) => {
|
|
10243
10461
|
BasisEncoderModule(options).then((module) => {
|
|
10244
|
-
const {
|
|
10245
|
-
BasisFile,
|
|
10246
|
-
KTX2File,
|
|
10247
|
-
initializeBasis,
|
|
10248
|
-
BasisEncoder
|
|
10249
|
-
} = module;
|
|
10462
|
+
const { BasisFile, KTX2File, initializeBasis, BasisEncoder } = module;
|
|
10250
10463
|
initializeBasis();
|
|
10251
|
-
resolve({
|
|
10252
|
-
BasisFile,
|
|
10253
|
-
KTX2File,
|
|
10254
|
-
BasisEncoder
|
|
10255
|
-
});
|
|
10464
|
+
resolve({ BasisFile, KTX2File, BasisEncoder });
|
|
10256
10465
|
});
|
|
10257
10466
|
});
|
|
10258
10467
|
}
|
|
10259
10468
|
|
|
10260
10469
|
// ../textures/src/lib/gl-extensions.ts
|
|
10261
10470
|
var GL_EXTENSIONS_CONSTANTS = {
|
|
10471
|
+
// WEBGL_compressed_texture_s3tc
|
|
10262
10472
|
COMPRESSED_RGB_S3TC_DXT1_EXT: 33776,
|
|
10263
10473
|
COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777,
|
|
10264
10474
|
COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778,
|
|
10265
10475
|
COMPRESSED_RGBA_S3TC_DXT5_EXT: 33779,
|
|
10476
|
+
// WEBGL_compressed_texture_es3
|
|
10266
10477
|
COMPRESSED_R11_EAC: 37488,
|
|
10267
10478
|
COMPRESSED_SIGNED_R11_EAC: 37489,
|
|
10268
10479
|
COMPRESSED_RG11_EAC: 37490,
|
|
@@ -10273,14 +10484,18 @@ var __exports__ = (() => {
|
|
|
10273
10484
|
COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 37495,
|
|
10274
10485
|
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37496,
|
|
10275
10486
|
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37497,
|
|
10487
|
+
// WEBGL_compressed_texture_pvrtc
|
|
10276
10488
|
COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840,
|
|
10277
10489
|
COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842,
|
|
10278
10490
|
COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841,
|
|
10279
10491
|
COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843,
|
|
10492
|
+
// WEBGL_compressed_texture_etc1
|
|
10280
10493
|
COMPRESSED_RGB_ETC1_WEBGL: 36196,
|
|
10494
|
+
// WEBGL_compressed_texture_atc
|
|
10281
10495
|
COMPRESSED_RGB_ATC_WEBGL: 35986,
|
|
10282
10496
|
COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 35987,
|
|
10283
10497
|
COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 34798,
|
|
10498
|
+
// WEBGL_compressed_texture_astc
|
|
10284
10499
|
COMPRESSED_RGBA_ASTC_4X4_KHR: 37808,
|
|
10285
10500
|
COMPRESSED_RGBA_ASTC_5X4_KHR: 37809,
|
|
10286
10501
|
COMPRESSED_RGBA_ASTC_5X5_KHR: 37810,
|
|
@@ -10309,10 +10524,12 @@ var __exports__ = (() => {
|
|
|
10309
10524
|
COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 37851,
|
|
10310
10525
|
COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 37852,
|
|
10311
10526
|
COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 37853,
|
|
10527
|
+
// EXT_texture_compression_rgtc
|
|
10312
10528
|
COMPRESSED_RED_RGTC1_EXT: 36283,
|
|
10313
10529
|
COMPRESSED_SIGNED_RED_RGTC1_EXT: 36284,
|
|
10314
10530
|
COMPRESSED_RED_GREEN_RGTC2_EXT: 36285,
|
|
10315
10531
|
COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 36286,
|
|
10532
|
+
// WEBGL_compressed_texture_s3tc_srgb
|
|
10316
10533
|
COMPRESSED_SRGB_S3TC_DXT1_EXT: 35916,
|
|
10317
10534
|
COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 35917,
|
|
10318
10535
|
COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 35918,
|
|
@@ -10322,6 +10539,7 @@ var __exports__ = (() => {
|
|
|
10322
10539
|
// ../textures/src/lib/utils/texture-formats.ts
|
|
10323
10540
|
var BROWSER_PREFIXES = ["", "WEBKIT_", "MOZ_"];
|
|
10324
10541
|
var WEBGL_EXTENSIONS = {
|
|
10542
|
+
/* eslint-disable camelcase */
|
|
10325
10543
|
WEBGL_compressed_texture_s3tc: "dxt",
|
|
10326
10544
|
WEBGL_compressed_texture_s3tc_srgb: "dxt-srgb",
|
|
10327
10545
|
WEBGL_compressed_texture_etc1: "etc1",
|
|
@@ -10330,6 +10548,7 @@ var __exports__ = (() => {
|
|
|
10330
10548
|
WEBGL_compressed_texture_atc: "atc",
|
|
10331
10549
|
WEBGL_compressed_texture_astc: "astc",
|
|
10332
10550
|
EXT_texture_compression_rgtc: "rgtc"
|
|
10551
|
+
/* eslint-enable camelcase */
|
|
10333
10552
|
};
|
|
10334
10553
|
var formats = null;
|
|
10335
10554
|
function getSupportedGPUTextureFormats(gl) {
|
|
@@ -10512,49 +10731,91 @@ var __exports__ = (() => {
|
|
|
10512
10731
|
154: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_R11_EAC,
|
|
10513
10732
|
155: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC,
|
|
10514
10733
|
156: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RG11_EAC,
|
|
10734
|
+
// @ts-ignore
|
|
10515
10735
|
157: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
|
|
10736
|
+
// @ts-ignore
|
|
10516
10737
|
158: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
|
|
10738
|
+
// @ts-ignore
|
|
10517
10739
|
159: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
|
|
10740
|
+
// @ts-ignore
|
|
10518
10741
|
160: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,
|
|
10742
|
+
// @ts-ignore
|
|
10519
10743
|
161: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
|
|
10744
|
+
// @ts-ignore
|
|
10520
10745
|
162: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
|
|
10746
|
+
// @ts-ignore
|
|
10521
10747
|
163: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
|
|
10748
|
+
// @ts-ignore
|
|
10522
10749
|
164: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
|
|
10750
|
+
// @ts-ignore
|
|
10523
10751
|
165: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
|
|
10752
|
+
// @ts-ignore
|
|
10524
10753
|
166: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
|
|
10754
|
+
// @ts-ignore
|
|
10525
10755
|
167: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
|
|
10756
|
+
// @ts-ignore
|
|
10526
10757
|
168: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
|
|
10758
|
+
// @ts-ignore
|
|
10527
10759
|
169: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
|
|
10760
|
+
// @ts-ignore
|
|
10528
10761
|
170: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
|
|
10762
|
+
// @ts-ignore
|
|
10529
10763
|
171: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
|
|
10764
|
+
// @ts-ignore
|
|
10530
10765
|
172: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
|
|
10766
|
+
// @ts-ignore
|
|
10531
10767
|
173: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
|
|
10768
|
+
// @ts-ignore
|
|
10532
10769
|
174: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
|
|
10770
|
+
// @ts-ignore
|
|
10533
10771
|
175: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
|
|
10772
|
+
// @ts-ignore
|
|
10534
10773
|
176: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
|
|
10774
|
+
// @ts-ignore
|
|
10535
10775
|
177: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
|
|
10776
|
+
// @ts-ignore
|
|
10536
10777
|
178: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
|
|
10778
|
+
// @ts-ignore
|
|
10537
10779
|
179: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
|
|
10780
|
+
// @ts-ignore
|
|
10538
10781
|
180: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
|
|
10782
|
+
// @ts-ignore
|
|
10539
10783
|
181: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
|
|
10784
|
+
// @ts-ignore
|
|
10540
10785
|
182: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
|
|
10786
|
+
// @ts-ignore
|
|
10541
10787
|
183: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR,
|
|
10788
|
+
// @ts-ignore
|
|
10542
10789
|
184: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
|
|
10543
10790
|
1000054e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
|
|
10544
10791
|
1000054001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
|
|
10792
|
+
// @ts-ignore
|
|
10545
10793
|
1000066e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
|
|
10794
|
+
// @ts-ignore
|
|
10546
10795
|
1000066001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
|
|
10796
|
+
// @ts-ignore
|
|
10547
10797
|
1000066002: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
|
|
10798
|
+
// @ts-ignore
|
|
10548
10799
|
1000066003: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
|
|
10800
|
+
// @ts-ignore
|
|
10549
10801
|
1000066004: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
|
|
10802
|
+
// @ts-ignore
|
|
10550
10803
|
1000066005: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
|
|
10804
|
+
// @ts-ignore
|
|
10551
10805
|
1000066006: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
|
|
10806
|
+
// @ts-ignore
|
|
10552
10807
|
1000066007: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
|
|
10808
|
+
// @ts-ignore
|
|
10553
10809
|
1000066008: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
|
|
10810
|
+
// @ts-ignore
|
|
10554
10811
|
1000066009: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
|
|
10812
|
+
// @ts-ignore
|
|
10555
10813
|
1000066010: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
|
|
10814
|
+
// @ts-ignore
|
|
10556
10815
|
1000066011: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
|
|
10816
|
+
// @ts-ignore
|
|
10557
10817
|
1000066012: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
|
|
10818
|
+
// @ts-ignore
|
|
10558
10819
|
1000066013: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR
|
|
10559
10820
|
};
|
|
10560
10821
|
function mapVkFormatToWebGL(vkFormat) {
|
|
@@ -10562,10 +10823,35 @@ var __exports__ = (() => {
|
|
|
10562
10823
|
}
|
|
10563
10824
|
|
|
10564
10825
|
// ../textures/src/lib/parsers/parse-ktx.ts
|
|
10565
|
-
var KTX2_ID = [
|
|
10826
|
+
var KTX2_ID = [
|
|
10827
|
+
// '´', 'K', 'T', 'X', '2', '0', 'ª', '\r', '\n', '\x1A', '\n'
|
|
10828
|
+
171,
|
|
10829
|
+
75,
|
|
10830
|
+
84,
|
|
10831
|
+
88,
|
|
10832
|
+
32,
|
|
10833
|
+
50,
|
|
10834
|
+
48,
|
|
10835
|
+
187,
|
|
10836
|
+
13,
|
|
10837
|
+
10,
|
|
10838
|
+
26,
|
|
10839
|
+
10
|
|
10840
|
+
];
|
|
10566
10841
|
function isKTX(data) {
|
|
10567
10842
|
const id = new Uint8Array(data);
|
|
10568
|
-
const notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] ||
|
|
10843
|
+
const notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] || // '´'
|
|
10844
|
+
id[1] !== KTX2_ID[1] || // 'K'
|
|
10845
|
+
id[2] !== KTX2_ID[2] || // 'T'
|
|
10846
|
+
id[3] !== KTX2_ID[3] || // 'X'
|
|
10847
|
+
id[4] !== KTX2_ID[4] || // ' '
|
|
10848
|
+
id[5] !== KTX2_ID[5] || // '2'
|
|
10849
|
+
id[6] !== KTX2_ID[6] || // '0'
|
|
10850
|
+
id[7] !== KTX2_ID[7] || // 'ª'
|
|
10851
|
+
id[8] !== KTX2_ID[8] || // '\r'
|
|
10852
|
+
id[9] !== KTX2_ID[9] || // '\n'
|
|
10853
|
+
id[10] !== KTX2_ID[10] || // '\x1A'
|
|
10854
|
+
id[11] !== KTX2_ID[11];
|
|
10569
10855
|
return !notKTX;
|
|
10570
10856
|
}
|
|
10571
10857
|
function parseKTX(arrayBuffer) {
|
|
@@ -10591,10 +10877,7 @@ var __exports__ = (() => {
|
|
|
10591
10877
|
compressed: true,
|
|
10592
10878
|
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
|
|
10593
10879
|
},
|
|
10594
|
-
etc2: {
|
|
10595
|
-
basisFormat: 1,
|
|
10596
|
-
compressed: true
|
|
10597
|
-
},
|
|
10880
|
+
etc2: { basisFormat: 1, compressed: true },
|
|
10598
10881
|
bc1: {
|
|
10599
10882
|
basisFormat: 2,
|
|
10600
10883
|
compressed: true,
|
|
@@ -10605,22 +10888,10 @@ var __exports__ = (() => {
|
|
|
10605
10888
|
compressed: true,
|
|
10606
10889
|
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
|
|
10607
10890
|
},
|
|
10608
|
-
bc4: {
|
|
10609
|
-
|
|
10610
|
-
|
|
10611
|
-
},
|
|
10612
|
-
bc5: {
|
|
10613
|
-
basisFormat: 5,
|
|
10614
|
-
compressed: true
|
|
10615
|
-
},
|
|
10616
|
-
"bc7-m6-opaque-only": {
|
|
10617
|
-
basisFormat: 6,
|
|
10618
|
-
compressed: true
|
|
10619
|
-
},
|
|
10620
|
-
"bc7-m5": {
|
|
10621
|
-
basisFormat: 7,
|
|
10622
|
-
compressed: true
|
|
10623
|
-
},
|
|
10891
|
+
bc4: { basisFormat: 4, compressed: true },
|
|
10892
|
+
bc5: { basisFormat: 5, compressed: true },
|
|
10893
|
+
"bc7-m6-opaque-only": { basisFormat: 6, compressed: true },
|
|
10894
|
+
"bc7-m5": { basisFormat: 7, compressed: true },
|
|
10624
10895
|
"pvrtc1-4-rgb": {
|
|
10625
10896
|
basisFormat: 8,
|
|
10626
10897
|
compressed: true,
|
|
@@ -10636,30 +10907,12 @@ var __exports__ = (() => {
|
|
|
10636
10907
|
compressed: true,
|
|
10637
10908
|
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
|
|
10638
10909
|
},
|
|
10639
|
-
"atc-rgb": {
|
|
10640
|
-
|
|
10641
|
-
|
|
10642
|
-
},
|
|
10643
|
-
|
|
10644
|
-
|
|
10645
|
-
compressed: true
|
|
10646
|
-
},
|
|
10647
|
-
rgba32: {
|
|
10648
|
-
basisFormat: 13,
|
|
10649
|
-
compressed: false
|
|
10650
|
-
},
|
|
10651
|
-
rgb565: {
|
|
10652
|
-
basisFormat: 14,
|
|
10653
|
-
compressed: false
|
|
10654
|
-
},
|
|
10655
|
-
bgr565: {
|
|
10656
|
-
basisFormat: 15,
|
|
10657
|
-
compressed: false
|
|
10658
|
-
},
|
|
10659
|
-
rgba4444: {
|
|
10660
|
-
basisFormat: 16,
|
|
10661
|
-
compressed: false
|
|
10662
|
-
}
|
|
10910
|
+
"atc-rgb": { basisFormat: 11, compressed: true },
|
|
10911
|
+
"atc-rgba-interpolated-alpha": { basisFormat: 12, compressed: true },
|
|
10912
|
+
rgba32: { basisFormat: 13, compressed: false },
|
|
10913
|
+
rgb565: { basisFormat: 14, compressed: false },
|
|
10914
|
+
bgr565: { basisFormat: 15, compressed: false },
|
|
10915
|
+
rgba4444: { basisFormat: 16, compressed: false }
|
|
10663
10916
|
};
|
|
10664
10917
|
async function parseBasis(data, options) {
|
|
10665
10918
|
if (options.basis.containerFormat === "auto") {
|
|
@@ -10667,9 +10920,7 @@ var __exports__ = (() => {
|
|
|
10667
10920
|
const fileConstructors = await loadBasisEncoderModule(options);
|
|
10668
10921
|
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
10669
10922
|
}
|
|
10670
|
-
const {
|
|
10671
|
-
BasisFile
|
|
10672
|
-
} = await loadBasisTranscoderModule(options);
|
|
10923
|
+
const { BasisFile } = await loadBasisTranscoderModule(options);
|
|
10673
10924
|
return parseBasisFile(BasisFile, data, options);
|
|
10674
10925
|
}
|
|
10675
10926
|
switch (options.basis.module) {
|
|
@@ -10684,9 +10935,7 @@ var __exports__ = (() => {
|
|
|
10684
10935
|
}
|
|
10685
10936
|
case "transcoder":
|
|
10686
10937
|
default:
|
|
10687
|
-
const {
|
|
10688
|
-
BasisFile
|
|
10689
|
-
} = await loadBasisTranscoderModule(options);
|
|
10938
|
+
const { BasisFile } = await loadBasisTranscoderModule(options);
|
|
10690
10939
|
return parseBasisFile(BasisFile, data, options);
|
|
10691
10940
|
}
|
|
10692
10941
|
}
|
|
@@ -10715,23 +10964,24 @@ var __exports__ = (() => {
|
|
|
10715
10964
|
function transcodeImage(basisFile, imageIndex, levelIndex, options) {
|
|
10716
10965
|
const width = basisFile.getImageWidth(imageIndex, levelIndex);
|
|
10717
10966
|
const height = basisFile.getImageHeight(imageIndex, levelIndex);
|
|
10718
|
-
const hasAlpha = basisFile.getHasAlpha(
|
|
10719
|
-
|
|
10720
|
-
|
|
10721
|
-
|
|
10722
|
-
basisFormat
|
|
10723
|
-
} = getBasisOptions(options, hasAlpha);
|
|
10967
|
+
const hasAlpha = basisFile.getHasAlpha(
|
|
10968
|
+
/* imageIndex, levelIndex */
|
|
10969
|
+
);
|
|
10970
|
+
const { compressed, format, basisFormat } = getBasisOptions(options, hasAlpha);
|
|
10724
10971
|
const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
|
|
10725
10972
|
const decodedData = new Uint8Array(decodedSize);
|
|
10726
10973
|
if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
|
|
10727
10974
|
throw new Error("failed to start Basis transcoding");
|
|
10728
10975
|
}
|
|
10729
10976
|
return {
|
|
10977
|
+
// standard loaders.gl image category payload
|
|
10730
10978
|
width,
|
|
10731
10979
|
height,
|
|
10732
10980
|
data: decodedData,
|
|
10733
10981
|
compressed,
|
|
10734
10982
|
format,
|
|
10983
|
+
// Additional fields
|
|
10984
|
+
// Add levelSize field.
|
|
10735
10985
|
hasAlpha
|
|
10736
10986
|
};
|
|
10737
10987
|
}
|
|
@@ -10754,26 +11004,35 @@ var __exports__ = (() => {
|
|
|
10754
11004
|
}
|
|
10755
11005
|
}
|
|
10756
11006
|
function transcodeKTX2Image(ktx2File, levelIndex, options) {
|
|
10757
|
-
const {
|
|
10758
|
-
|
|
10759
|
-
|
|
10760
|
-
|
|
10761
|
-
|
|
10762
|
-
|
|
10763
|
-
compressed,
|
|
10764
|
-
format,
|
|
11007
|
+
const { alphaFlag, height, width } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
|
|
11008
|
+
const { compressed, format, basisFormat } = getBasisOptions(options, alphaFlag);
|
|
11009
|
+
const decodedSize = ktx2File.getImageTranscodedSizeInBytes(
|
|
11010
|
+
levelIndex,
|
|
11011
|
+
0,
|
|
11012
|
+
0,
|
|
10765
11013
|
basisFormat
|
|
10766
|
-
|
|
10767
|
-
const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
|
|
11014
|
+
);
|
|
10768
11015
|
const decodedData = new Uint8Array(decodedSize);
|
|
10769
|
-
if (!ktx2File.transcodeImage(
|
|
11016
|
+
if (!ktx2File.transcodeImage(
|
|
11017
|
+
decodedData,
|
|
11018
|
+
levelIndex,
|
|
11019
|
+
0,
|
|
11020
|
+
0,
|
|
11021
|
+
basisFormat,
|
|
11022
|
+
0,
|
|
11023
|
+
-1,
|
|
11024
|
+
-1
|
|
11025
|
+
/* channel1 */
|
|
11026
|
+
)) {
|
|
10770
11027
|
throw new Error("Failed to transcode KTX2 image");
|
|
10771
11028
|
}
|
|
10772
11029
|
return {
|
|
11030
|
+
// standard loaders.gl image category payload
|
|
10773
11031
|
width,
|
|
10774
11032
|
height,
|
|
10775
11033
|
data: decodedData,
|
|
10776
11034
|
compressed,
|
|
11035
|
+
// Additional fields
|
|
10777
11036
|
levelSize: decodedSize,
|
|
10778
11037
|
hasAlpha: alphaFlag,
|
|
10779
11038
|
format
|
|
@@ -10826,9 +11085,12 @@ var __exports__ = (() => {
|
|
|
10826
11085
|
options: {
|
|
10827
11086
|
basis: {
|
|
10828
11087
|
format: "auto",
|
|
11088
|
+
// gl context doesn't exist on a worker thread
|
|
10829
11089
|
libraryPath: "libs/",
|
|
10830
11090
|
containerFormat: "auto",
|
|
11091
|
+
// 'basis' || 'ktx2' || 'auto'
|
|
10831
11092
|
module: "transcoder"
|
|
11093
|
+
// 'transcoder' || 'encoder'
|
|
10832
11094
|
}
|
|
10833
11095
|
}
|
|
10834
11096
|
};
|
|
@@ -10879,7 +11141,10 @@ var __exports__ = (() => {
|
|
|
10879
11141
|
function parseDDS(data) {
|
|
10880
11142
|
const header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
|
|
10881
11143
|
const pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];
|
|
10882
|
-
assert(
|
|
11144
|
+
assert(
|
|
11145
|
+
Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC),
|
|
11146
|
+
"DDS: Unsupported format, must contain a FourCC code"
|
|
11147
|
+
);
|
|
10883
11148
|
const fourCC = int32ToFourCC(pixelFormatNumber);
|
|
10884
11149
|
const internalFormat = DDS_PIXEL_FORMATS[fourCC];
|
|
10885
11150
|
const sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];
|
|
@@ -10907,7 +11172,12 @@ var __exports__ = (() => {
|
|
|
10907
11172
|
return (width + 3 >> 2) * (height + 3 >> 2) * 16;
|
|
10908
11173
|
}
|
|
10909
11174
|
function int32ToFourCC(value) {
|
|
10910
|
-
return String.fromCharCode(
|
|
11175
|
+
return String.fromCharCode(
|
|
11176
|
+
value & 255,
|
|
11177
|
+
value >> 8 & 255,
|
|
11178
|
+
value >> 16 & 255,
|
|
11179
|
+
value >> 24 & 255
|
|
11180
|
+
);
|
|
10911
11181
|
}
|
|
10912
11182
|
|
|
10913
11183
|
// ../textures/src/lib/parsers/parse-pvr.ts
|
|
@@ -10938,20 +11208,62 @@ var __exports__ = (() => {
|
|
|
10938
11208
|
24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
|
|
10939
11209
|
25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
|
|
10940
11210
|
26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],
|
|
10941
|
-
27: [
|
|
10942
|
-
|
|
10943
|
-
|
|
10944
|
-
|
|
10945
|
-
|
|
10946
|
-
|
|
10947
|
-
|
|
10948
|
-
|
|
10949
|
-
|
|
10950
|
-
|
|
10951
|
-
|
|
10952
|
-
|
|
10953
|
-
|
|
10954
|
-
|
|
11211
|
+
27: [
|
|
11212
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,
|
|
11213
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR
|
|
11214
|
+
],
|
|
11215
|
+
28: [
|
|
11216
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,
|
|
11217
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR
|
|
11218
|
+
],
|
|
11219
|
+
29: [
|
|
11220
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,
|
|
11221
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR
|
|
11222
|
+
],
|
|
11223
|
+
30: [
|
|
11224
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,
|
|
11225
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR
|
|
11226
|
+
],
|
|
11227
|
+
31: [
|
|
11228
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,
|
|
11229
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR
|
|
11230
|
+
],
|
|
11231
|
+
32: [
|
|
11232
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,
|
|
11233
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR
|
|
11234
|
+
],
|
|
11235
|
+
33: [
|
|
11236
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,
|
|
11237
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR
|
|
11238
|
+
],
|
|
11239
|
+
34: [
|
|
11240
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,
|
|
11241
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR
|
|
11242
|
+
],
|
|
11243
|
+
35: [
|
|
11244
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,
|
|
11245
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR
|
|
11246
|
+
],
|
|
11247
|
+
36: [
|
|
11248
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,
|
|
11249
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR
|
|
11250
|
+
],
|
|
11251
|
+
37: [
|
|
11252
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,
|
|
11253
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR
|
|
11254
|
+
],
|
|
11255
|
+
38: [
|
|
11256
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,
|
|
11257
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR
|
|
11258
|
+
],
|
|
11259
|
+
39: [
|
|
11260
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,
|
|
11261
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR
|
|
11262
|
+
],
|
|
11263
|
+
40: [
|
|
11264
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,
|
|
11265
|
+
GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR
|
|
11266
|
+
]
|
|
10955
11267
|
};
|
|
10956
11268
|
var PVR_SIZE_FUNCTIONS = {
|
|
10957
11269
|
0: pvrtc2bppSize,
|
|
@@ -11084,8 +11396,21 @@ var __exports__ = (() => {
|
|
|
11084
11396
|
module: "textures",
|
|
11085
11397
|
version: VERSION4,
|
|
11086
11398
|
worker: true,
|
|
11087
|
-
extensions: [
|
|
11088
|
-
|
|
11399
|
+
extensions: [
|
|
11400
|
+
"ktx",
|
|
11401
|
+
"ktx2",
|
|
11402
|
+
"dds",
|
|
11403
|
+
// WEBGL_compressed_texture_s3tc, WEBGL_compressed_texture_atc
|
|
11404
|
+
"pvr"
|
|
11405
|
+
// WEBGL_compressed_texture_pvrtc
|
|
11406
|
+
],
|
|
11407
|
+
mimeTypes: [
|
|
11408
|
+
"image/ktx2",
|
|
11409
|
+
"image/ktx",
|
|
11410
|
+
"image/vnd-ms.dds",
|
|
11411
|
+
"image/x-dds",
|
|
11412
|
+
"application/octet-stream"
|
|
11413
|
+
],
|
|
11089
11414
|
binary: true,
|
|
11090
11415
|
options: {
|
|
11091
11416
|
"compressed-texture": {
|
|
@@ -11103,6 +11428,7 @@ var __exports__ = (() => {
|
|
|
11103
11428
|
alpha: "BC3",
|
|
11104
11429
|
noAlpha: "BC1"
|
|
11105
11430
|
},
|
|
11431
|
+
// @ts-expect-error TODO not allowed to modify inputs
|
|
11106
11432
|
...options.basis,
|
|
11107
11433
|
containerFormat: "ktx2",
|
|
11108
11434
|
module: "encoder"
|
|
@@ -11114,13 +11440,6 @@ var __exports__ = (() => {
|
|
|
11114
11440
|
}
|
|
11115
11441
|
};
|
|
11116
11442
|
|
|
11117
|
-
// src/types.ts
|
|
11118
|
-
var HeaderAttributeProperty = function(HeaderAttributeProperty2) {
|
|
11119
|
-
HeaderAttributeProperty2["vertexCount"] = "vertexCount";
|
|
11120
|
-
HeaderAttributeProperty2["featureCount"] = "featureCount";
|
|
11121
|
-
return HeaderAttributeProperty2;
|
|
11122
|
-
}({});
|
|
11123
|
-
|
|
11124
11443
|
// src/lib/utils/url-utils.ts
|
|
11125
11444
|
function getUrlWithoutParams(url) {
|
|
11126
11445
|
let urlWithoutParams;
|
|
@@ -11135,9 +11454,7 @@ var __exports__ = (() => {
|
|
|
11135
11454
|
return token ? `${url}?token=${token}` : url;
|
|
11136
11455
|
}
|
|
11137
11456
|
function generateTileAttributeUrls(url, tile) {
|
|
11138
|
-
const {
|
|
11139
|
-
attributeData = []
|
|
11140
|
-
} = tile;
|
|
11457
|
+
const { attributeData = [] } = tile;
|
|
11141
11458
|
const attributeUrls = [];
|
|
11142
11459
|
for (let index = 0; index < attributeData.length; index++) {
|
|
11143
11460
|
const attributeUrl = attributeData[index].href.replace("./", "");
|
|
@@ -11147,9 +11464,7 @@ var __exports__ = (() => {
|
|
|
11147
11464
|
}
|
|
11148
11465
|
function generateTilesetAttributeUrls(tileset, url, resource) {
|
|
11149
11466
|
const attributeUrls = [];
|
|
11150
|
-
const {
|
|
11151
|
-
attributeStorageInfo = []
|
|
11152
|
-
} = tileset;
|
|
11467
|
+
const { attributeStorageInfo = [] } = tileset;
|
|
11153
11468
|
for (let index = 0; index < attributeStorageInfo.length; index++) {
|
|
11154
11469
|
const fileName = attributeStorageInfo[index].key;
|
|
11155
11470
|
attributeUrls.push(`${url}/nodes/${resource}/attributes/${fileName}/0`);
|
|
@@ -11185,19 +11500,14 @@ var __exports__ = (() => {
|
|
|
11185
11500
|
texture: null
|
|
11186
11501
|
};
|
|
11187
11502
|
if (tileOptions.textureUrl) {
|
|
11188
|
-
const url = getUrlWithToken(
|
|
11503
|
+
const url = getUrlWithToken(tileOptions.textureUrl, options?.i3s?.token);
|
|
11189
11504
|
const loader = getLoaderForTextureFormat(tileOptions.textureFormat);
|
|
11190
11505
|
const fetchFunc = context?.fetch || fetch;
|
|
11191
11506
|
const response = await fetchFunc(url);
|
|
11192
11507
|
const arrayBuffer2 = await response.arrayBuffer();
|
|
11193
11508
|
if (options?.i3s.decodeTextures) {
|
|
11194
11509
|
if (loader === ImageLoader) {
|
|
11195
|
-
const options2 = {
|
|
11196
|
-
...tileOptions.textureLoaderOptions,
|
|
11197
|
-
image: {
|
|
11198
|
-
type: "data"
|
|
11199
|
-
}
|
|
11200
|
-
};
|
|
11510
|
+
const options2 = { ...tileOptions.textureLoaderOptions, image: { type: "data" } };
|
|
11201
11511
|
try {
|
|
11202
11512
|
const texture = await parseFromContext(arrayBuffer2, [], options2, context);
|
|
11203
11513
|
content.texture = texture;
|
|
@@ -11228,18 +11538,6 @@ var __exports__ = (() => {
|
|
|
11228
11538
|
}
|
|
11229
11539
|
return await parseI3SNodeGeometry(arrayBuffer, content, tileOptions, tilesetOptions, options);
|
|
11230
11540
|
}
|
|
11231
|
-
function getInternalPathFromUrl(url) {
|
|
11232
|
-
const slpkUrlParts = url.split(".slpk");
|
|
11233
|
-
let filename;
|
|
11234
|
-
if (slpkUrlParts.length === 1) {
|
|
11235
|
-
filename = url;
|
|
11236
|
-
} else if (slpkUrlParts.length === 2) {
|
|
11237
|
-
filename = slpkUrlParts[1].slice(1);
|
|
11238
|
-
} else {
|
|
11239
|
-
filename = url;
|
|
11240
|
-
}
|
|
11241
|
-
return filename;
|
|
11242
|
-
}
|
|
11243
11541
|
async function parseI3SNodeGeometry(arrayBuffer, content, tileOptions, tilesetOptions, options) {
|
|
11244
11542
|
const contentByteLength = arrayBuffer.byteLength;
|
|
11245
11543
|
let attributes;
|
|
@@ -11287,30 +11585,40 @@ var __exports__ = (() => {
|
|
|
11287
11585
|
byteOffset = headers.byteOffset;
|
|
11288
11586
|
vertexCount = headers.vertexCount;
|
|
11289
11587
|
featureCount = headers.featureCount;
|
|
11290
|
-
const {
|
|
11291
|
-
|
|
11292
|
-
byteOffset
|
|
11293
|
-
|
|
11294
|
-
|
|
11295
|
-
|
|
11296
|
-
|
|
11588
|
+
const { attributes: normalizedVertexAttributes, byteOffset: offset } = normalizeAttributes(
|
|
11589
|
+
arrayBuffer,
|
|
11590
|
+
byteOffset,
|
|
11591
|
+
vertexAttributes,
|
|
11592
|
+
vertexCount,
|
|
11593
|
+
attributesOrder
|
|
11594
|
+
);
|
|
11595
|
+
const { attributes: normalizedFeatureAttributes } = normalizeAttributes(
|
|
11596
|
+
arrayBuffer,
|
|
11597
|
+
offset,
|
|
11598
|
+
featureAttributes,
|
|
11599
|
+
featureCount,
|
|
11600
|
+
featureAttributeOrder
|
|
11601
|
+
);
|
|
11297
11602
|
flattenFeatureIdsByFaceRanges(normalizedFeatureAttributes);
|
|
11298
11603
|
attributes = concatAttributes(normalizedVertexAttributes, normalizedFeatureAttributes);
|
|
11299
11604
|
}
|
|
11300
|
-
if (!options?.i3s?.coordinateSystem ||
|
|
11605
|
+
if (!options?.i3s?.coordinateSystem || // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
11606
|
+
options.i3s.coordinateSystem === 2 /* METER_OFFSETS */) {
|
|
11301
11607
|
const enuMatrix = parsePositions(attributes.position, tileOptions);
|
|
11302
11608
|
content.modelMatrix = enuMatrix.invert();
|
|
11303
|
-
content.coordinateSystem =
|
|
11609
|
+
content.coordinateSystem = 2 /* METER_OFFSETS */;
|
|
11304
11610
|
} else {
|
|
11305
11611
|
content.modelMatrix = getModelMatrix(attributes.position);
|
|
11306
|
-
content.coordinateSystem =
|
|
11612
|
+
content.coordinateSystem = 3 /* LNGLAT_OFFSETS */;
|
|
11307
11613
|
}
|
|
11308
11614
|
content.attributes = {
|
|
11309
11615
|
positions: attributes.position,
|
|
11310
11616
|
normals: attributes.normal,
|
|
11311
11617
|
colors: normalizeAttribute(attributes.color),
|
|
11618
|
+
// Normalize from UInt8
|
|
11312
11619
|
texCoords: attributes.uv0,
|
|
11313
11620
|
uvRegions: normalizeAttribute(attributes.uvRegion || attributes.region)
|
|
11621
|
+
// Normalize from UInt16
|
|
11314
11622
|
};
|
|
11315
11623
|
content.indices = indices || null;
|
|
11316
11624
|
if (attributes.id && attributes.id.value) {
|
|
@@ -11341,10 +11649,7 @@ var __exports__ = (() => {
|
|
|
11341
11649
|
}
|
|
11342
11650
|
}
|
|
11343
11651
|
function concatAttributes(normalizedVertexAttributes, normalizedFeatureAttributes) {
|
|
11344
|
-
return {
|
|
11345
|
-
...normalizedVertexAttributes,
|
|
11346
|
-
...normalizedFeatureAttributes
|
|
11347
|
-
};
|
|
11652
|
+
return { ...normalizedVertexAttributes, ...normalizedFeatureAttributes };
|
|
11348
11653
|
}
|
|
11349
11654
|
function normalizeAttribute(attribute) {
|
|
11350
11655
|
if (!attribute) {
|
|
@@ -11357,17 +11662,14 @@ var __exports__ = (() => {
|
|
|
11357
11662
|
let byteOffset = 0;
|
|
11358
11663
|
let vertexCount = 0;
|
|
11359
11664
|
let featureCount = 0;
|
|
11360
|
-
for (const {
|
|
11361
|
-
property,
|
|
11362
|
-
type
|
|
11363
|
-
} of options.store.defaultGeometrySchema.header) {
|
|
11665
|
+
for (const { property, type } of options.store.defaultGeometrySchema.header) {
|
|
11364
11666
|
const TypedArrayTypeHeader = getConstructorForDataFormat(type);
|
|
11365
11667
|
switch (property) {
|
|
11366
|
-
case
|
|
11668
|
+
case "vertexCount" /* vertexCount */.toString():
|
|
11367
11669
|
vertexCount = new TypedArrayTypeHeader(arrayBuffer, 0, 4)[0];
|
|
11368
11670
|
byteOffset += sizeOf(type);
|
|
11369
11671
|
break;
|
|
11370
|
-
case
|
|
11672
|
+
case "featureCount" /* featureCount */.toString():
|
|
11371
11673
|
featureCount = new TypedArrayTypeHeader(arrayBuffer, 4, 4)[0];
|
|
11372
11674
|
byteOffset += sizeOf(type);
|
|
11373
11675
|
break;
|
|
@@ -11385,10 +11687,7 @@ var __exports__ = (() => {
|
|
|
11385
11687
|
const attributes = {};
|
|
11386
11688
|
for (const attribute of attributesOrder) {
|
|
11387
11689
|
if (vertexAttributes[attribute]) {
|
|
11388
|
-
const {
|
|
11389
|
-
valueType,
|
|
11390
|
-
valuesPerElement
|
|
11391
|
-
} = vertexAttributes[attribute];
|
|
11690
|
+
const { valueType, valuesPerElement } = vertexAttributes[attribute];
|
|
11392
11691
|
if (byteOffset + attributeCount * valuesPerElement * sizeOf(valueType) <= arrayBuffer.byteLength) {
|
|
11393
11692
|
const buffer = arrayBuffer.slice(byteOffset);
|
|
11394
11693
|
let value;
|
|
@@ -11418,10 +11717,7 @@ var __exports__ = (() => {
|
|
|
11418
11717
|
}
|
|
11419
11718
|
}
|
|
11420
11719
|
}
|
|
11421
|
-
return {
|
|
11422
|
-
attributes,
|
|
11423
|
-
byteOffset
|
|
11424
|
-
};
|
|
11720
|
+
return { attributes, byteOffset };
|
|
11425
11721
|
}
|
|
11426
11722
|
function parseUint64Values(buffer, elementsCount, attributeSize) {
|
|
11427
11723
|
const values = [];
|
|
@@ -11479,20 +11775,14 @@ var __exports__ = (() => {
|
|
|
11479
11775
|
if (materialDefinition) {
|
|
11480
11776
|
pbrMaterial = {
|
|
11481
11777
|
...materialDefinition,
|
|
11482
|
-
pbrMetallicRoughness: materialDefinition.pbrMetallicRoughness ? {
|
|
11483
|
-
...materialDefinition.pbrMetallicRoughness
|
|
11484
|
-
} : {
|
|
11485
|
-
baseColorFactor: [255, 255, 255, 255]
|
|
11486
|
-
}
|
|
11778
|
+
pbrMetallicRoughness: materialDefinition.pbrMetallicRoughness ? { ...materialDefinition.pbrMetallicRoughness } : { baseColorFactor: [255, 255, 255, 255] }
|
|
11487
11779
|
};
|
|
11488
11780
|
} else {
|
|
11489
11781
|
pbrMaterial = {
|
|
11490
11782
|
pbrMetallicRoughness: {}
|
|
11491
11783
|
};
|
|
11492
11784
|
if (texture) {
|
|
11493
|
-
pbrMaterial.pbrMetallicRoughness.baseColorTexture = {
|
|
11494
|
-
texCoord: 0
|
|
11495
|
-
};
|
|
11785
|
+
pbrMaterial.pbrMetallicRoughness.baseColorTexture = { texCoord: 0 };
|
|
11496
11786
|
} else {
|
|
11497
11787
|
pbrMaterial.pbrMetallicRoughness.baseColorFactor = [255, 255, 255, 255];
|
|
11498
11788
|
}
|
|
@@ -11505,7 +11795,9 @@ var __exports__ = (() => {
|
|
|
11505
11795
|
pbrMaterial.emissiveFactor = convertColorFormat(pbrMaterial.emissiveFactor);
|
|
11506
11796
|
}
|
|
11507
11797
|
if (pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorFactor) {
|
|
11508
|
-
pbrMaterial.pbrMetallicRoughness.baseColorFactor = convertColorFormat(
|
|
11798
|
+
pbrMaterial.pbrMetallicRoughness.baseColorFactor = convertColorFormat(
|
|
11799
|
+
pbrMaterial.pbrMetallicRoughness.baseColorFactor
|
|
11800
|
+
);
|
|
11509
11801
|
}
|
|
11510
11802
|
if (texture) {
|
|
11511
11803
|
setMaterialTexture(pbrMaterial, texture);
|
|
@@ -11520,43 +11812,27 @@ var __exports__ = (() => {
|
|
|
11520
11812
|
return normalizedColor;
|
|
11521
11813
|
}
|
|
11522
11814
|
function setMaterialTexture(material, image) {
|
|
11523
|
-
const texture = {
|
|
11524
|
-
source: {
|
|
11525
|
-
image
|
|
11526
|
-
}
|
|
11527
|
-
};
|
|
11815
|
+
const texture = { source: { image } };
|
|
11528
11816
|
if (material.pbrMetallicRoughness && material.pbrMetallicRoughness.baseColorTexture) {
|
|
11529
11817
|
material.pbrMetallicRoughness.baseColorTexture = {
|
|
11530
11818
|
...material.pbrMetallicRoughness.baseColorTexture,
|
|
11531
11819
|
texture
|
|
11532
11820
|
};
|
|
11533
11821
|
} else if (material.emissiveTexture) {
|
|
11534
|
-
material.emissiveTexture = {
|
|
11535
|
-
...material.emissiveTexture,
|
|
11536
|
-
texture
|
|
11537
|
-
};
|
|
11822
|
+
material.emissiveTexture = { ...material.emissiveTexture, texture };
|
|
11538
11823
|
} else if (material.pbrMetallicRoughness && material.pbrMetallicRoughness.metallicRoughnessTexture) {
|
|
11539
11824
|
material.pbrMetallicRoughness.metallicRoughnessTexture = {
|
|
11540
11825
|
...material.pbrMetallicRoughness.metallicRoughnessTexture,
|
|
11541
11826
|
texture
|
|
11542
11827
|
};
|
|
11543
11828
|
} else if (material.normalTexture) {
|
|
11544
|
-
material.normalTexture = {
|
|
11545
|
-
...material.normalTexture,
|
|
11546
|
-
texture
|
|
11547
|
-
};
|
|
11829
|
+
material.normalTexture = { ...material.normalTexture, texture };
|
|
11548
11830
|
} else if (material.occlusionTexture) {
|
|
11549
|
-
material.occlusionTexture = {
|
|
11550
|
-
...material.occlusionTexture,
|
|
11551
|
-
texture
|
|
11552
|
-
};
|
|
11831
|
+
material.occlusionTexture = { ...material.occlusionTexture, texture };
|
|
11553
11832
|
}
|
|
11554
11833
|
}
|
|
11555
11834
|
function flattenFeatureIdsByFaceRanges(normalizedFeatureAttributes) {
|
|
11556
|
-
const {
|
|
11557
|
-
id,
|
|
11558
|
-
faceRange
|
|
11559
|
-
} = normalizedFeatureAttributes;
|
|
11835
|
+
const { id, faceRange } = normalizedFeatureAttributes;
|
|
11560
11836
|
if (!id || !faceRange) {
|
|
11561
11837
|
return;
|
|
11562
11838
|
}
|
|
@@ -11591,7 +11867,7 @@ var __exports__ = (() => {
|
|
|
11591
11867
|
}
|
|
11592
11868
|
|
|
11593
11869
|
// src/i3s-content-loader.ts
|
|
11594
|
-
var VERSION5 =
|
|
11870
|
+
var VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
11595
11871
|
var I3SContentLoader = {
|
|
11596
11872
|
name: "I3S Content (Indexed Scene Layers)",
|
|
11597
11873
|
id: "i3s-content",
|
|
@@ -11606,18 +11882,19 @@ var __exports__ = (() => {
|
|
|
11606
11882
|
}
|
|
11607
11883
|
};
|
|
11608
11884
|
async function parse3(data, options, context) {
|
|
11609
|
-
const {
|
|
11610
|
-
tile,
|
|
11611
|
-
_tileOptions,
|
|
11612
|
-
tileset,
|
|
11613
|
-
_tilesetOptions
|
|
11614
|
-
} = options?.i3s || {};
|
|
11885
|
+
const { tile, _tileOptions, tileset, _tilesetOptions } = options?.i3s || {};
|
|
11615
11886
|
const tileOptions = _tileOptions || tile;
|
|
11616
11887
|
const tilesetOptions = _tilesetOptions || tileset;
|
|
11617
11888
|
if (!tileOptions || !tilesetOptions) {
|
|
11618
11889
|
return null;
|
|
11619
11890
|
}
|
|
11620
|
-
return await parseI3STileContent(
|
|
11891
|
+
return await parseI3STileContent(
|
|
11892
|
+
data,
|
|
11893
|
+
tileOptions,
|
|
11894
|
+
tilesetOptions,
|
|
11895
|
+
options,
|
|
11896
|
+
context
|
|
11897
|
+
);
|
|
11621
11898
|
}
|
|
11622
11899
|
|
|
11623
11900
|
// ../../node_modules/@math.gl/culling/dist/constants.js
|
|
@@ -12073,35 +12350,11 @@ var __exports__ = (() => {
|
|
|
12073
12350
|
// src/lib/parsers/parse-i3s.ts
|
|
12074
12351
|
var import_core17 = __toESM(require_core(), 1);
|
|
12075
12352
|
|
|
12076
|
-
// ../tiles/src/constants.ts
|
|
12077
|
-
var TILE_REFINEMENT = function(TILE_REFINEMENT2) {
|
|
12078
|
-
TILE_REFINEMENT2[TILE_REFINEMENT2["ADD"] = 1] = "ADD";
|
|
12079
|
-
TILE_REFINEMENT2[TILE_REFINEMENT2["REPLACE"] = 2] = "REPLACE";
|
|
12080
|
-
return TILE_REFINEMENT2;
|
|
12081
|
-
}({});
|
|
12082
|
-
var TILE_TYPE = function(TILE_TYPE2) {
|
|
12083
|
-
TILE_TYPE2["EMPTY"] = "empty";
|
|
12084
|
-
TILE_TYPE2["SCENEGRAPH"] = "scenegraph";
|
|
12085
|
-
TILE_TYPE2["POINTCLOUD"] = "pointcloud";
|
|
12086
|
-
TILE_TYPE2["MESH"] = "mesh";
|
|
12087
|
-
return TILE_TYPE2;
|
|
12088
|
-
}({});
|
|
12089
|
-
var TILESET_TYPE = function(TILESET_TYPE2) {
|
|
12090
|
-
TILESET_TYPE2["I3S"] = "I3S";
|
|
12091
|
-
TILESET_TYPE2["TILES3D"] = "TILES3D";
|
|
12092
|
-
return TILESET_TYPE2;
|
|
12093
|
-
}({});
|
|
12094
|
-
var LOD_METRIC_TYPE = function(LOD_METRIC_TYPE2) {
|
|
12095
|
-
LOD_METRIC_TYPE2["GEOMETRIC_ERROR"] = "geometricError";
|
|
12096
|
-
LOD_METRIC_TYPE2["MAX_SCREEN_THRESHOLD"] = "maxScreenThreshold";
|
|
12097
|
-
return LOD_METRIC_TYPE2;
|
|
12098
|
-
}({});
|
|
12099
|
-
|
|
12100
12353
|
// src/lib/helpers/i3s-nodepages-tiles.ts
|
|
12101
12354
|
var import_core16 = __toESM(require_core(), 1);
|
|
12102
12355
|
|
|
12103
12356
|
// src/i3s-node-page-loader.ts
|
|
12104
|
-
var VERSION6 =
|
|
12357
|
+
var VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
12105
12358
|
var I3SNodePageLoader = {
|
|
12106
12359
|
name: "I3S Node Page",
|
|
12107
12360
|
id: "i3s-node-page",
|
|
@@ -12120,14 +12373,25 @@ var __exports__ = (() => {
|
|
|
12120
12373
|
|
|
12121
12374
|
// src/lib/helpers/i3s-nodepages-tiles.ts
|
|
12122
12375
|
var I3SNodePagesTiles = class {
|
|
12376
|
+
tileset;
|
|
12123
12377
|
nodePages = [];
|
|
12124
12378
|
pendingNodePages = [];
|
|
12379
|
+
nodesPerPage;
|
|
12380
|
+
options;
|
|
12381
|
+
lodSelectionMetricType;
|
|
12125
12382
|
textureDefinitionsSelectedFormats = [];
|
|
12383
|
+
nodesInNodePages;
|
|
12384
|
+
url;
|
|
12126
12385
|
textureLoaderOptions = {};
|
|
12386
|
+
/**
|
|
12387
|
+
* @constructs
|
|
12388
|
+
* Create a I3SNodePagesTiles instance.
|
|
12389
|
+
* @param tileset - i3s tileset header ('layers/0')
|
|
12390
|
+
* @param url - tileset url
|
|
12391
|
+
* @param options - i3s loader options
|
|
12392
|
+
*/
|
|
12127
12393
|
constructor(tileset, url = "", options) {
|
|
12128
|
-
this.tileset = {
|
|
12129
|
-
...tileset
|
|
12130
|
-
};
|
|
12394
|
+
this.tileset = { ...tileset };
|
|
12131
12395
|
this.url = url;
|
|
12132
12396
|
this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;
|
|
12133
12397
|
this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;
|
|
@@ -12135,10 +12399,18 @@ var __exports__ = (() => {
|
|
|
12135
12399
|
this.nodesInNodePages = 0;
|
|
12136
12400
|
this.initSelectedFormatsForTextureDefinitions(tileset);
|
|
12137
12401
|
}
|
|
12402
|
+
/**
|
|
12403
|
+
* Loads some nodePage and return a particular node from it
|
|
12404
|
+
* @param id - id of node through all node pages
|
|
12405
|
+
*/
|
|
12138
12406
|
async getNodeById(id) {
|
|
12139
12407
|
const pageIndex = Math.floor(id / this.nodesPerPage);
|
|
12140
12408
|
if (!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex]) {
|
|
12141
|
-
const nodePageUrl = getUrlWithToken(
|
|
12409
|
+
const nodePageUrl = getUrlWithToken(
|
|
12410
|
+
`${this.url}/nodepages/${pageIndex}`,
|
|
12411
|
+
// @ts-expect-error this.options is not properly typed
|
|
12412
|
+
this.options.i3s?.token
|
|
12413
|
+
);
|
|
12142
12414
|
this.pendingNodePages[pageIndex] = {
|
|
12143
12415
|
status: "Pending",
|
|
12144
12416
|
promise: (0, import_core16.load)(nodePageUrl, I3SNodePageLoader, this.options)
|
|
@@ -12153,6 +12425,11 @@ var __exports__ = (() => {
|
|
|
12153
12425
|
const nodeIndex = id % this.nodesPerPage;
|
|
12154
12426
|
return this.nodePages[pageIndex].nodes[nodeIndex];
|
|
12155
12427
|
}
|
|
12428
|
+
/**
|
|
12429
|
+
* Forms tile header using node and tileset data
|
|
12430
|
+
* @param id - id of node through all node pages
|
|
12431
|
+
*/
|
|
12432
|
+
// eslint-disable-next-line complexity, max-statements
|
|
12156
12433
|
async formTileFromNodePages(id) {
|
|
12157
12434
|
const node2 = await this.getNodeById(id);
|
|
12158
12435
|
const children = [];
|
|
@@ -12174,25 +12451,21 @@ var __exports__ = (() => {
|
|
|
12174
12451
|
let attributeUrls = [];
|
|
12175
12452
|
let isDracoGeometry = false;
|
|
12176
12453
|
if (node2 && node2.mesh) {
|
|
12177
|
-
const {
|
|
12178
|
-
url,
|
|
12179
|
-
isDracoGeometry: isDracoGeometryResult
|
|
12180
|
-
} = node2.mesh.geometry && this.getContentUrl(node2.mesh.geometry) || {
|
|
12181
|
-
isDracoGeometry: false
|
|
12182
|
-
};
|
|
12454
|
+
const { url, isDracoGeometry: isDracoGeometryResult } = node2.mesh.geometry && this.getContentUrl(node2.mesh.geometry) || { isDracoGeometry: false };
|
|
12183
12455
|
contentUrl = url;
|
|
12184
12456
|
isDracoGeometry = isDracoGeometryResult;
|
|
12185
|
-
const {
|
|
12186
|
-
textureData,
|
|
12187
|
-
materialDefinition: nodeMaterialDefinition
|
|
12188
|
-
} = this.getInformationFromMaterial(node2.mesh.material);
|
|
12457
|
+
const { textureData, materialDefinition: nodeMaterialDefinition } = this.getInformationFromMaterial(node2.mesh.material);
|
|
12189
12458
|
materialDefinition = nodeMaterialDefinition;
|
|
12190
12459
|
textureFormat = textureData.format || textureFormat;
|
|
12191
12460
|
if (textureData.name) {
|
|
12192
12461
|
textureUrl = `${this.url}/nodes/${node2.mesh.material.resource}/textures/${textureData.name}`;
|
|
12193
12462
|
}
|
|
12194
12463
|
if (this.tileset.attributeStorageInfo) {
|
|
12195
|
-
attributeUrls = generateTilesetAttributeUrls(
|
|
12464
|
+
attributeUrls = generateTilesetAttributeUrls(
|
|
12465
|
+
this.tileset,
|
|
12466
|
+
this.url,
|
|
12467
|
+
node2.mesh.attribute.resource
|
|
12468
|
+
);
|
|
12196
12469
|
}
|
|
12197
12470
|
}
|
|
12198
12471
|
const lodSelection = this.getLodSelection(node2);
|
|
@@ -12210,18 +12483,31 @@ var __exports__ = (() => {
|
|
|
12210
12483
|
isDracoGeometry
|
|
12211
12484
|
});
|
|
12212
12485
|
}
|
|
12486
|
+
/**
|
|
12487
|
+
* Forms url and type of geometry resource by nodepage's data and `geometryDefinitions` in the tileset
|
|
12488
|
+
* @param - data about the node's mesh from the nodepage
|
|
12489
|
+
* @returns -
|
|
12490
|
+
* {string} url - url to the geometry resource
|
|
12491
|
+
* {boolean} isDracoGeometry - whether the geometry resource contain DRACO compressed geometry
|
|
12492
|
+
*/
|
|
12213
12493
|
getContentUrl(meshGeometryData) {
|
|
12214
12494
|
let result = null;
|
|
12215
12495
|
const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];
|
|
12216
12496
|
let geometryIndex = -1;
|
|
12217
12497
|
if (this.options.i3s && this.options.i3s.useDracoGeometry) {
|
|
12218
|
-
geometryIndex = geometryDefinition.geometryBuffers.findIndex(
|
|
12498
|
+
geometryIndex = geometryDefinition.geometryBuffers.findIndex(
|
|
12499
|
+
(buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === "draco"
|
|
12500
|
+
);
|
|
12219
12501
|
}
|
|
12220
12502
|
if (geometryIndex === -1) {
|
|
12221
|
-
geometryIndex = geometryDefinition.geometryBuffers.findIndex(
|
|
12503
|
+
geometryIndex = geometryDefinition.geometryBuffers.findIndex(
|
|
12504
|
+
(buffer) => !buffer.compressedAttributes
|
|
12505
|
+
);
|
|
12222
12506
|
}
|
|
12223
12507
|
if (geometryIndex !== -1) {
|
|
12224
|
-
const isDracoGeometry = Boolean(
|
|
12508
|
+
const isDracoGeometry = Boolean(
|
|
12509
|
+
geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes
|
|
12510
|
+
);
|
|
12225
12511
|
result = {
|
|
12226
12512
|
url: `${this.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,
|
|
12227
12513
|
isDracoGeometry
|
|
@@ -12229,26 +12515,37 @@ var __exports__ = (() => {
|
|
|
12229
12515
|
}
|
|
12230
12516
|
return result;
|
|
12231
12517
|
}
|
|
12518
|
+
/**
|
|
12519
|
+
* Forms 1.6 compatible LOD selection object from a nodepage's node data
|
|
12520
|
+
* @param node - a node from nodepage
|
|
12521
|
+
* @returns- Array of LodSelection
|
|
12522
|
+
*/
|
|
12232
12523
|
getLodSelection(node2) {
|
|
12233
12524
|
const lodSelection = [];
|
|
12234
12525
|
if (this.lodSelectionMetricType === "maxScreenThresholdSQ") {
|
|
12235
12526
|
lodSelection.push({
|
|
12236
12527
|
metricType: "maxScreenThreshold",
|
|
12528
|
+
// @ts-ignore
|
|
12237
12529
|
maxError: Math.sqrt(node2.lodThreshold / (Math.PI * 0.25))
|
|
12238
12530
|
});
|
|
12239
12531
|
}
|
|
12240
12532
|
lodSelection.push({
|
|
12241
12533
|
metricType: this.lodSelectionMetricType,
|
|
12534
|
+
// @ts-ignore
|
|
12242
12535
|
maxError: node2.lodThreshold
|
|
12243
12536
|
});
|
|
12244
12537
|
return lodSelection;
|
|
12245
12538
|
}
|
|
12539
|
+
/**
|
|
12540
|
+
* Returns information about texture and material from `materialDefinitions`
|
|
12541
|
+
* @param material - material data from nodepage
|
|
12542
|
+
* @returns - Couple {textureData, materialDefinition}
|
|
12543
|
+
* {string} textureData.name - path name of the texture
|
|
12544
|
+
* {string} textureData.format - format of the texture
|
|
12545
|
+
* materialDefinition - PBR-like material definition from `materialDefinitions`
|
|
12546
|
+
*/
|
|
12246
12547
|
getInformationFromMaterial(material) {
|
|
12247
|
-
const informationFromMaterial = {
|
|
12248
|
-
textureData: {
|
|
12249
|
-
name: null
|
|
12250
|
-
}
|
|
12251
|
-
};
|
|
12548
|
+
const informationFromMaterial = { textureData: { name: null } };
|
|
12252
12549
|
if (material) {
|
|
12253
12550
|
const materialDefinition = this.tileset.materialDefinitions?.[material.definition];
|
|
12254
12551
|
if (materialDefinition) {
|
|
@@ -12261,6 +12558,11 @@ var __exports__ = (() => {
|
|
|
12261
12558
|
}
|
|
12262
12559
|
return informationFromMaterial;
|
|
12263
12560
|
}
|
|
12561
|
+
/**
|
|
12562
|
+
* Sets preferable and supported format for each textureDefinition of the tileset
|
|
12563
|
+
* @param tileset - I3S layer data
|
|
12564
|
+
* @returns
|
|
12565
|
+
*/
|
|
12264
12566
|
initSelectedFormatsForTextureDefinitions(tileset) {
|
|
12265
12567
|
this.textureDefinitionsSelectedFormats = [];
|
|
12266
12568
|
const possibleI3sFormats = this.getSupportedTextureFormats();
|
|
@@ -12285,6 +12587,10 @@ var __exports__ = (() => {
|
|
|
12285
12587
|
this.textureDefinitionsSelectedFormats.push(selectedFormat);
|
|
12286
12588
|
}
|
|
12287
12589
|
}
|
|
12590
|
+
/**
|
|
12591
|
+
* Returns the array of supported texture format
|
|
12592
|
+
* @returns list of format strings
|
|
12593
|
+
*/
|
|
12288
12594
|
getSupportedTextureFormats() {
|
|
12289
12595
|
const formats2 = [];
|
|
12290
12596
|
if (!this.options.i3s || this.options.i3s.useCompressedTextures) {
|
|
@@ -12326,6 +12632,7 @@ var __exports__ = (() => {
|
|
|
12326
12632
|
contentUrl,
|
|
12327
12633
|
textureUrl,
|
|
12328
12634
|
textureFormat: "jpg",
|
|
12635
|
+
// `jpg` format will cause `ImageLoader` usage that will be able to handle `png` as well
|
|
12329
12636
|
attributeUrls,
|
|
12330
12637
|
isDracoGeometry: false
|
|
12331
12638
|
});
|
|
@@ -12335,27 +12642,35 @@ var __exports__ = (() => {
|
|
|
12335
12642
|
let mbs = [0, 0, 0, 1];
|
|
12336
12643
|
if (tile.mbs) {
|
|
12337
12644
|
mbs = tile.mbs;
|
|
12338
|
-
boundingVolume.sphere = [
|
|
12645
|
+
boundingVolume.sphere = [
|
|
12646
|
+
...Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)),
|
|
12647
|
+
// cartesian center of sphere
|
|
12648
|
+
tile.mbs[3]
|
|
12649
|
+
// radius of sphere
|
|
12650
|
+
];
|
|
12339
12651
|
} else if (tile.obb) {
|
|
12340
|
-
boundingVolume.box = [
|
|
12341
|
-
|
|
12652
|
+
boundingVolume.box = [
|
|
12653
|
+
...Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center),
|
|
12654
|
+
// cartesian center of box
|
|
12655
|
+
...tile.obb.halfSize,
|
|
12656
|
+
// halfSize
|
|
12657
|
+
...tile.obb.quaternion
|
|
12658
|
+
// quaternion
|
|
12659
|
+
];
|
|
12660
|
+
const obb = new OrientedBoundingBox().fromCenterHalfSizeQuaternion(
|
|
12661
|
+
boundingVolume.box.slice(0, 3),
|
|
12662
|
+
tile.obb.halfSize,
|
|
12663
|
+
tile.obb.quaternion
|
|
12664
|
+
);
|
|
12342
12665
|
const boundingSphere = obb.getBoundingSphere();
|
|
12343
12666
|
boundingVolume.sphere = [...boundingSphere.center, boundingSphere.radius];
|
|
12344
12667
|
mbs = [...tile.obb.center, boundingSphere.radius];
|
|
12345
12668
|
}
|
|
12346
12669
|
const lodMetricType = tile.lodSelection?.[0].metricType;
|
|
12347
12670
|
const lodMetricValue = tile.lodSelection?.[0].maxError;
|
|
12348
|
-
const type =
|
|
12349
|
-
const refine =
|
|
12350
|
-
return {
|
|
12351
|
-
...tile,
|
|
12352
|
-
mbs,
|
|
12353
|
-
boundingVolume,
|
|
12354
|
-
lodMetricType,
|
|
12355
|
-
lodMetricValue,
|
|
12356
|
-
type,
|
|
12357
|
-
refine
|
|
12358
|
-
};
|
|
12671
|
+
const type = "mesh" /* MESH */;
|
|
12672
|
+
const refine = 2 /* REPLACE */;
|
|
12673
|
+
return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, type, refine };
|
|
12359
12674
|
}
|
|
12360
12675
|
async function normalizeTilesetData(tileset, options, context) {
|
|
12361
12676
|
const url = getUrlWithoutParams(context.url || "");
|
|
@@ -12370,6 +12685,7 @@ var __exports__ = (() => {
|
|
|
12370
12685
|
root = await (0, import_core17.load)(rootNodeUrl, I3SLoader, {
|
|
12371
12686
|
...options,
|
|
12372
12687
|
i3s: {
|
|
12688
|
+
// @ts-expect-error options is not properly typed
|
|
12373
12689
|
...options.i3s,
|
|
12374
12690
|
loadContent: false,
|
|
12375
12691
|
isTileHeader: true,
|
|
@@ -12382,8 +12698,9 @@ var __exports__ = (() => {
|
|
|
12382
12698
|
loader: I3SLoader,
|
|
12383
12699
|
url,
|
|
12384
12700
|
basePath: url,
|
|
12385
|
-
type:
|
|
12701
|
+
type: "I3S" /* I3S */,
|
|
12386
12702
|
nodePagesTile,
|
|
12703
|
+
// @ts-expect-error
|
|
12387
12704
|
root,
|
|
12388
12705
|
lodMetricType: root.lodMetricType,
|
|
12389
12706
|
lodMetricValue: root.lodMetricValue
|
|
@@ -12391,8 +12708,9 @@ var __exports__ = (() => {
|
|
|
12391
12708
|
}
|
|
12392
12709
|
|
|
12393
12710
|
// src/i3s-loader.ts
|
|
12394
|
-
var VERSION7 =
|
|
12711
|
+
var VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
12395
12712
|
var TILESET_REGEX = /layers\/[0-9]+$/;
|
|
12713
|
+
var LOCAL_SLPK_REGEX = /\.slpk$/;
|
|
12396
12714
|
var TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
|
|
12397
12715
|
var SLPK_HEX = "504b0304";
|
|
12398
12716
|
var POINT_CLOUD = "PointCloud";
|
|
@@ -12416,7 +12734,7 @@ var __exports__ = (() => {
|
|
|
12416
12734
|
useDracoGeometry: true,
|
|
12417
12735
|
useCompressedTextures: true,
|
|
12418
12736
|
decodeTextures: true,
|
|
12419
|
-
coordinateSystem:
|
|
12737
|
+
coordinateSystem: 2 /* METER_OFFSETS */
|
|
12420
12738
|
}
|
|
12421
12739
|
}
|
|
12422
12740
|
};
|
|
@@ -12430,7 +12748,7 @@ var __exports__ = (() => {
|
|
|
12430
12748
|
const urlWithoutParams = getUrlWithoutParams(url);
|
|
12431
12749
|
let isTileset;
|
|
12432
12750
|
if (options.i3s.isTileset === "auto") {
|
|
12433
|
-
isTileset = TILESET_REGEX.test(urlWithoutParams);
|
|
12751
|
+
isTileset = TILESET_REGEX.test(urlWithoutParams) || LOCAL_SLPK_REGEX.test(urlWithoutParams);
|
|
12434
12752
|
} else {
|
|
12435
12753
|
isTileset = options.i3s.isTileset;
|
|
12436
12754
|
}
|
|
@@ -12473,7 +12791,12 @@ var __exports__ = (() => {
|
|
|
12473
12791
|
|
|
12474
12792
|
// ../zip/src/parse-zip/search-from-the-end.ts
|
|
12475
12793
|
var searchFromTheEnd = async (file, target) => {
|
|
12476
|
-
const searchWindow = [
|
|
12794
|
+
const searchWindow = [
|
|
12795
|
+
await file.getUint8(file.length - 1n),
|
|
12796
|
+
await file.getUint8(file.length - 2n),
|
|
12797
|
+
await file.getUint8(file.length - 3n),
|
|
12798
|
+
void 0
|
|
12799
|
+
];
|
|
12477
12800
|
let targetOffset = 0n;
|
|
12478
12801
|
for (let i2 = file.length - 4n; i2 > -1; i2--) {
|
|
12479
12802
|
searchWindow[3] = searchWindow[2];
|
|
@@ -12505,7 +12828,9 @@ var __exports__ = (() => {
|
|
|
12505
12828
|
let zip64EoCDOffset = 0n;
|
|
12506
12829
|
const magicBytes = await file.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n);
|
|
12507
12830
|
if (compareArrayBuffers(magicBytes, zip64EoCDLocatorSignature)) {
|
|
12508
|
-
zip64EoCDOffset = await file.getBigUint64(
|
|
12831
|
+
zip64EoCDOffset = await file.getBigUint64(
|
|
12832
|
+
zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET
|
|
12833
|
+
);
|
|
12509
12834
|
const endOfCDMagicBytes = await file.slice(zip64EoCDOffset, zip64EoCDOffset + 4n);
|
|
12510
12835
|
if (!compareArrayBuffers(endOfCDMagicBytes, zip64EoCDSignature.buffer)) {
|
|
12511
12836
|
throw new Error("zip64 EoCD not found");
|
|
@@ -12525,97 +12850,144 @@ var __exports__ = (() => {
|
|
|
12525
12850
|
}
|
|
12526
12851
|
};
|
|
12527
12852
|
};
|
|
12528
|
-
var EOCD_FIELDS = [
|
|
12529
|
-
|
|
12530
|
-
|
|
12531
|
-
|
|
12532
|
-
|
|
12533
|
-
|
|
12534
|
-
|
|
12535
|
-
|
|
12536
|
-
|
|
12537
|
-
|
|
12538
|
-
|
|
12539
|
-
|
|
12540
|
-
|
|
12541
|
-
|
|
12542
|
-
|
|
12543
|
-
|
|
12544
|
-
|
|
12545
|
-
|
|
12546
|
-
|
|
12547
|
-
|
|
12548
|
-
|
|
12549
|
-
|
|
12550
|
-
|
|
12551
|
-
|
|
12552
|
-
|
|
12553
|
-
|
|
12554
|
-
|
|
12555
|
-
|
|
12556
|
-
|
|
12557
|
-
|
|
12558
|
-
|
|
12559
|
-
|
|
12560
|
-
|
|
12561
|
-
|
|
12562
|
-
|
|
12563
|
-
|
|
12564
|
-
|
|
12565
|
-
|
|
12566
|
-
|
|
12567
|
-
|
|
12568
|
-
|
|
12569
|
-
|
|
12570
|
-
|
|
12571
|
-
|
|
12572
|
-
|
|
12573
|
-
|
|
12574
|
-
|
|
12575
|
-
|
|
12576
|
-
|
|
12577
|
-
|
|
12578
|
-
var
|
|
12579
|
-
|
|
12580
|
-
|
|
12581
|
-
|
|
12582
|
-
|
|
12583
|
-
|
|
12584
|
-
|
|
12585
|
-
|
|
12586
|
-
|
|
12587
|
-
|
|
12588
|
-
|
|
12589
|
-
|
|
12590
|
-
|
|
12591
|
-
|
|
12592
|
-
|
|
12593
|
-
|
|
12594
|
-
|
|
12595
|
-
|
|
12596
|
-
|
|
12597
|
-
|
|
12598
|
-
|
|
12599
|
-
|
|
12600
|
-
|
|
12601
|
-
|
|
12602
|
-
|
|
12603
|
-
|
|
12604
|
-
|
|
12605
|
-
|
|
12606
|
-
|
|
12607
|
-
|
|
12608
|
-
|
|
12609
|
-
|
|
12610
|
-
|
|
12611
|
-
|
|
12612
|
-
|
|
12613
|
-
|
|
12614
|
-
|
|
12615
|
-
|
|
12616
|
-
|
|
12617
|
-
|
|
12618
|
-
|
|
12853
|
+
var EOCD_FIELDS = [
|
|
12854
|
+
// End of central directory signature = 0x06054b50
|
|
12855
|
+
{
|
|
12856
|
+
offset: 0,
|
|
12857
|
+
size: 4,
|
|
12858
|
+
default: new DataView(eoCDSignature.buffer).getUint32(0, true)
|
|
12859
|
+
},
|
|
12860
|
+
// Number of this disk (or 0xffff for ZIP64)
|
|
12861
|
+
{
|
|
12862
|
+
offset: 4,
|
|
12863
|
+
size: 2,
|
|
12864
|
+
default: 0
|
|
12865
|
+
},
|
|
12866
|
+
// Disk where central directory starts (or 0xffff for ZIP64)
|
|
12867
|
+
{
|
|
12868
|
+
offset: 6,
|
|
12869
|
+
size: 2,
|
|
12870
|
+
default: 0
|
|
12871
|
+
},
|
|
12872
|
+
// Number of central directory records on this disk (or 0xffff for ZIP64)
|
|
12873
|
+
{
|
|
12874
|
+
offset: 8,
|
|
12875
|
+
size: 2,
|
|
12876
|
+
name: "recordsNumber"
|
|
12877
|
+
},
|
|
12878
|
+
// Total number of central directory records (or 0xffff for ZIP64)
|
|
12879
|
+
{
|
|
12880
|
+
offset: 10,
|
|
12881
|
+
size: 2,
|
|
12882
|
+
name: "recordsNumber"
|
|
12883
|
+
},
|
|
12884
|
+
// Size of central directory (bytes) (or 0xffffffff for ZIP64)
|
|
12885
|
+
{
|
|
12886
|
+
offset: 12,
|
|
12887
|
+
size: 4,
|
|
12888
|
+
name: "cdSize"
|
|
12889
|
+
},
|
|
12890
|
+
// Offset of start of central directory, relative to start of archive (or 0xffffffff for ZIP64)
|
|
12891
|
+
{
|
|
12892
|
+
offset: 16,
|
|
12893
|
+
size: 4,
|
|
12894
|
+
name: "cdOffset"
|
|
12895
|
+
},
|
|
12896
|
+
// Comment length (n)
|
|
12897
|
+
{
|
|
12898
|
+
offset: 20,
|
|
12899
|
+
size: 2,
|
|
12900
|
+
default: 0
|
|
12901
|
+
}
|
|
12902
|
+
];
|
|
12903
|
+
var ZIP64_EOCD_LOCATOR_FIELDS = [
|
|
12904
|
+
// zip64 end of central dir locator signature
|
|
12905
|
+
{
|
|
12906
|
+
offset: 0,
|
|
12907
|
+
size: 4,
|
|
12908
|
+
default: new DataView(zip64EoCDLocatorSignature.buffer).getUint32(0, true)
|
|
12909
|
+
},
|
|
12910
|
+
// number of the disk with the start of the zip64 end of
|
|
12911
|
+
{
|
|
12912
|
+
offset: 4,
|
|
12913
|
+
size: 4,
|
|
12914
|
+
default: 0
|
|
12915
|
+
},
|
|
12916
|
+
// start of the zip64 end of central directory
|
|
12917
|
+
{
|
|
12918
|
+
offset: 8,
|
|
12919
|
+
size: 8,
|
|
12920
|
+
name: "eoCDStart"
|
|
12921
|
+
},
|
|
12922
|
+
// total number of disks
|
|
12923
|
+
{
|
|
12924
|
+
offset: 16,
|
|
12925
|
+
size: 4,
|
|
12926
|
+
default: 1
|
|
12927
|
+
}
|
|
12928
|
+
];
|
|
12929
|
+
var ZIP64_EOCD_FIELDS = [
|
|
12930
|
+
// End of central directory signature = 0x06064b50
|
|
12931
|
+
{
|
|
12932
|
+
offset: 0,
|
|
12933
|
+
size: 4,
|
|
12934
|
+
default: new DataView(zip64EoCDSignature.buffer).getUint32(0, true)
|
|
12935
|
+
},
|
|
12936
|
+
// Size of the EOCD64 minus 12
|
|
12937
|
+
{
|
|
12938
|
+
offset: 4,
|
|
12939
|
+
size: 8,
|
|
12940
|
+
default: 44
|
|
12941
|
+
},
|
|
12942
|
+
// Version made by
|
|
12943
|
+
{
|
|
12944
|
+
offset: 12,
|
|
12945
|
+
size: 2,
|
|
12946
|
+
default: 45
|
|
12947
|
+
},
|
|
12948
|
+
// Version needed to extract (minimum)
|
|
12949
|
+
{
|
|
12950
|
+
offset: 14,
|
|
12951
|
+
size: 2,
|
|
12952
|
+
default: 45
|
|
12953
|
+
},
|
|
12954
|
+
// Number of this disk
|
|
12955
|
+
{
|
|
12956
|
+
offset: 16,
|
|
12957
|
+
size: 4,
|
|
12958
|
+
default: 0
|
|
12959
|
+
},
|
|
12960
|
+
// Disk where central directory starts
|
|
12961
|
+
{
|
|
12962
|
+
offset: 20,
|
|
12963
|
+
size: 4,
|
|
12964
|
+
default: 0
|
|
12965
|
+
},
|
|
12966
|
+
// Number of central directory records on this disk
|
|
12967
|
+
{
|
|
12968
|
+
offset: 24,
|
|
12969
|
+
size: 8,
|
|
12970
|
+
name: "recordsNumber"
|
|
12971
|
+
},
|
|
12972
|
+
// Total number of central directory records
|
|
12973
|
+
{
|
|
12974
|
+
offset: 32,
|
|
12975
|
+
size: 8,
|
|
12976
|
+
name: "recordsNumber"
|
|
12977
|
+
},
|
|
12978
|
+
// Size of central directory (bytes)
|
|
12979
|
+
{
|
|
12980
|
+
offset: 40,
|
|
12981
|
+
size: 8,
|
|
12982
|
+
name: "cdSize"
|
|
12983
|
+
},
|
|
12984
|
+
// Offset of start of central directory, relative to start of archive
|
|
12985
|
+
{
|
|
12986
|
+
offset: 48,
|
|
12987
|
+
size: 8,
|
|
12988
|
+
name: "cdOffset"
|
|
12989
|
+
}
|
|
12990
|
+
];
|
|
12619
12991
|
|
|
12620
12992
|
// ../zip/src/parse-zip/cd-file-header.ts
|
|
12621
12993
|
var CD_COMPRESSED_SIZE_OFFSET = 20n;
|
|
@@ -12636,12 +13008,17 @@ var __exports__ = (() => {
|
|
|
12636
13008
|
const extraFieldLength = await file.getUint16(headerOffset + CD_EXTRA_FIELD_LENGTH_OFFSET);
|
|
12637
13009
|
const startDisk = BigInt(await file.getUint16(headerOffset + CD_START_DISK_OFFSET));
|
|
12638
13010
|
const fileNameLength = await file.getUint16(headerOffset + CD_FILE_NAME_LENGTH_OFFSET);
|
|
12639
|
-
const filenameBytes = await file.slice(
|
|
13011
|
+
const filenameBytes = await file.slice(
|
|
13012
|
+
headerOffset + CD_FILE_NAME_OFFSET,
|
|
13013
|
+
headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength)
|
|
13014
|
+
);
|
|
12640
13015
|
const fileName = new TextDecoder().decode(filenameBytes);
|
|
12641
13016
|
const extraOffset = headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
12642
13017
|
const oldFormatOffset = await file.getUint32(headerOffset + CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
12643
13018
|
const localHeaderOffset = BigInt(oldFormatOffset);
|
|
12644
|
-
const extraField = new DataView(
|
|
13019
|
+
const extraField = new DataView(
|
|
13020
|
+
await file.slice(extraOffset, extraOffset + BigInt(extraFieldLength))
|
|
13021
|
+
);
|
|
12645
13022
|
const zip64data = {
|
|
12646
13023
|
uncompressedSize,
|
|
12647
13024
|
compressedSize,
|
|
@@ -12659,13 +13036,14 @@ var __exports__ = (() => {
|
|
|
12659
13036
|
};
|
|
12660
13037
|
};
|
|
12661
13038
|
async function* makeZipCDHeaderIterator(fileProvider) {
|
|
12662
|
-
const {
|
|
12663
|
-
cdStartOffset
|
|
12664
|
-
} = await parseEoCDRecord(fileProvider);
|
|
13039
|
+
const { cdStartOffset } = await parseEoCDRecord(fileProvider);
|
|
12665
13040
|
let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);
|
|
12666
13041
|
while (cdHeader) {
|
|
12667
13042
|
yield cdHeader;
|
|
12668
|
-
cdHeader = await parseZipCDFileHeader(
|
|
13043
|
+
cdHeader = await parseZipCDFileHeader(
|
|
13044
|
+
cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength),
|
|
13045
|
+
fileProvider
|
|
13046
|
+
);
|
|
12669
13047
|
}
|
|
12670
13048
|
}
|
|
12671
13049
|
var getUint16 = (...bytes) => {
|
|
@@ -12676,7 +13054,9 @@ var __exports__ = (() => {
|
|
|
12676
13054
|
const zip64DataRes = {};
|
|
12677
13055
|
if (zip64dataList.length > 0) {
|
|
12678
13056
|
const zip64chunkSize = zip64dataList.reduce((sum, curr) => sum + curr.length, 0);
|
|
12679
|
-
const offsetInExtraData = new Uint8Array(extraField.buffer).findIndex(
|
|
13057
|
+
const offsetInExtraData = new Uint8Array(extraField.buffer).findIndex(
|
|
13058
|
+
(_val, i2, arr) => getUint16(arr[i2], arr[i2 + 1]) === 1 && getUint16(arr[i2 + 2], arr[i2 + 3]) === zip64chunkSize
|
|
13059
|
+
);
|
|
12680
13060
|
let bytesRead = 0;
|
|
12681
13061
|
for (const note of zip64dataList) {
|
|
12682
13062
|
const offset = bytesRead;
|
|
@@ -12689,101 +13069,124 @@ var __exports__ = (() => {
|
|
|
12689
13069
|
var findExpectedData = (zip64data) => {
|
|
12690
13070
|
const zip64dataList = [];
|
|
12691
13071
|
if (zip64data.uncompressedSize === BigInt(4294967295)) {
|
|
12692
|
-
zip64dataList.push({
|
|
12693
|
-
name: "uncompressedSize",
|
|
12694
|
-
length: 8
|
|
12695
|
-
});
|
|
13072
|
+
zip64dataList.push({ name: "uncompressedSize", length: 8 });
|
|
12696
13073
|
}
|
|
12697
13074
|
if (zip64data.compressedSize === BigInt(4294967295)) {
|
|
12698
|
-
zip64dataList.push({
|
|
12699
|
-
name: "compressedSize",
|
|
12700
|
-
length: 8
|
|
12701
|
-
});
|
|
13075
|
+
zip64dataList.push({ name: "compressedSize", length: 8 });
|
|
12702
13076
|
}
|
|
12703
13077
|
if (zip64data.localHeaderOffset === BigInt(4294967295)) {
|
|
12704
|
-
zip64dataList.push({
|
|
12705
|
-
name: "localHeaderOffset",
|
|
12706
|
-
length: 8
|
|
12707
|
-
});
|
|
13078
|
+
zip64dataList.push({ name: "localHeaderOffset", length: 8 });
|
|
12708
13079
|
}
|
|
12709
13080
|
if (zip64data.startDisk === BigInt(4294967295)) {
|
|
12710
|
-
zip64dataList.push({
|
|
12711
|
-
name: "startDisk",
|
|
12712
|
-
length: 4
|
|
12713
|
-
});
|
|
13081
|
+
zip64dataList.push({ name: "startDisk", length: 4 });
|
|
12714
13082
|
}
|
|
12715
13083
|
return zip64dataList;
|
|
12716
13084
|
};
|
|
12717
|
-
var ZIP_HEADER_FIELDS = [
|
|
12718
|
-
|
|
12719
|
-
|
|
12720
|
-
|
|
12721
|
-
|
|
12722
|
-
|
|
12723
|
-
|
|
12724
|
-
|
|
12725
|
-
|
|
12726
|
-
|
|
12727
|
-
|
|
12728
|
-
|
|
12729
|
-
|
|
12730
|
-
|
|
12731
|
-
|
|
12732
|
-
|
|
12733
|
-
|
|
12734
|
-
|
|
12735
|
-
|
|
12736
|
-
|
|
12737
|
-
|
|
12738
|
-
|
|
12739
|
-
|
|
12740
|
-
|
|
12741
|
-
|
|
12742
|
-
|
|
12743
|
-
|
|
12744
|
-
|
|
12745
|
-
|
|
12746
|
-
|
|
12747
|
-
|
|
12748
|
-
|
|
12749
|
-
|
|
12750
|
-
|
|
12751
|
-
|
|
12752
|
-
|
|
12753
|
-
|
|
12754
|
-
|
|
12755
|
-
|
|
12756
|
-
|
|
12757
|
-
|
|
12758
|
-
|
|
12759
|
-
|
|
12760
|
-
|
|
12761
|
-
|
|
12762
|
-
|
|
12763
|
-
|
|
12764
|
-
|
|
12765
|
-
|
|
12766
|
-
|
|
12767
|
-
|
|
12768
|
-
|
|
12769
|
-
|
|
12770
|
-
|
|
12771
|
-
|
|
12772
|
-
size
|
|
12773
|
-
|
|
12774
|
-
|
|
12775
|
-
|
|
12776
|
-
|
|
12777
|
-
|
|
12778
|
-
|
|
12779
|
-
|
|
12780
|
-
|
|
12781
|
-
|
|
12782
|
-
|
|
12783
|
-
|
|
12784
|
-
|
|
12785
|
-
|
|
12786
|
-
|
|
13085
|
+
var ZIP_HEADER_FIELDS = [
|
|
13086
|
+
// Central directory file header signature = 0x02014b50
|
|
13087
|
+
{
|
|
13088
|
+
offset: 0,
|
|
13089
|
+
size: 4,
|
|
13090
|
+
default: new DataView(signature.buffer).getUint32(0, true)
|
|
13091
|
+
},
|
|
13092
|
+
// Version made by
|
|
13093
|
+
{
|
|
13094
|
+
offset: 4,
|
|
13095
|
+
size: 2,
|
|
13096
|
+
default: 45
|
|
13097
|
+
},
|
|
13098
|
+
// Version needed to extract (minimum)
|
|
13099
|
+
{
|
|
13100
|
+
offset: 6,
|
|
13101
|
+
size: 2,
|
|
13102
|
+
default: 45
|
|
13103
|
+
},
|
|
13104
|
+
// General purpose bit flag
|
|
13105
|
+
{
|
|
13106
|
+
offset: 8,
|
|
13107
|
+
size: 2,
|
|
13108
|
+
default: 0
|
|
13109
|
+
},
|
|
13110
|
+
// Compression method
|
|
13111
|
+
{
|
|
13112
|
+
offset: 10,
|
|
13113
|
+
size: 2,
|
|
13114
|
+
default: 0
|
|
13115
|
+
},
|
|
13116
|
+
// File last modification time
|
|
13117
|
+
{
|
|
13118
|
+
offset: 12,
|
|
13119
|
+
size: 2,
|
|
13120
|
+
default: 0
|
|
13121
|
+
},
|
|
13122
|
+
// File last modification date
|
|
13123
|
+
{
|
|
13124
|
+
offset: 14,
|
|
13125
|
+
size: 2,
|
|
13126
|
+
default: 0
|
|
13127
|
+
},
|
|
13128
|
+
// CRC-32 of uncompressed data
|
|
13129
|
+
{
|
|
13130
|
+
offset: 16,
|
|
13131
|
+
size: 4,
|
|
13132
|
+
name: "crc32"
|
|
13133
|
+
},
|
|
13134
|
+
// Compressed size (or 0xffffffff for ZIP64)
|
|
13135
|
+
{
|
|
13136
|
+
offset: 20,
|
|
13137
|
+
size: 4,
|
|
13138
|
+
name: "length"
|
|
13139
|
+
},
|
|
13140
|
+
// Uncompressed size (or 0xffffffff for ZIP64)
|
|
13141
|
+
{
|
|
13142
|
+
offset: 24,
|
|
13143
|
+
size: 4,
|
|
13144
|
+
name: "length"
|
|
13145
|
+
},
|
|
13146
|
+
// File name length (n)
|
|
13147
|
+
{
|
|
13148
|
+
offset: 28,
|
|
13149
|
+
size: 2,
|
|
13150
|
+
name: "fnlength"
|
|
13151
|
+
},
|
|
13152
|
+
// Extra field length (m)
|
|
13153
|
+
{
|
|
13154
|
+
offset: 30,
|
|
13155
|
+
size: 2,
|
|
13156
|
+
default: 0,
|
|
13157
|
+
name: "extraLength"
|
|
13158
|
+
},
|
|
13159
|
+
// File comment length (k)
|
|
13160
|
+
{
|
|
13161
|
+
offset: 32,
|
|
13162
|
+
size: 2,
|
|
13163
|
+
default: 0
|
|
13164
|
+
},
|
|
13165
|
+
// Disk number where file starts (or 0xffff for ZIP64)
|
|
13166
|
+
{
|
|
13167
|
+
offset: 34,
|
|
13168
|
+
size: 2,
|
|
13169
|
+
default: 0
|
|
13170
|
+
},
|
|
13171
|
+
// Internal file attributes
|
|
13172
|
+
{
|
|
13173
|
+
offset: 36,
|
|
13174
|
+
size: 2,
|
|
13175
|
+
default: 0
|
|
13176
|
+
},
|
|
13177
|
+
// External file attributes
|
|
13178
|
+
{
|
|
13179
|
+
offset: 38,
|
|
13180
|
+
size: 4,
|
|
13181
|
+
default: 0
|
|
13182
|
+
},
|
|
13183
|
+
// Relative offset of local file header
|
|
13184
|
+
{
|
|
13185
|
+
offset: 42,
|
|
13186
|
+
size: 4,
|
|
13187
|
+
name: "offset"
|
|
13188
|
+
}
|
|
13189
|
+
];
|
|
12787
13190
|
|
|
12788
13191
|
// ../zip/src/parse-zip/local-file-header.ts
|
|
12789
13192
|
var COMPRESSION_METHOD_OFFSET = 8n;
|
|
@@ -12799,7 +13202,12 @@ var __exports__ = (() => {
|
|
|
12799
13202
|
return null;
|
|
12800
13203
|
}
|
|
12801
13204
|
const fileNameLength = await buffer.getUint16(headerOffset + FILE_NAME_LENGTH_OFFSET);
|
|
12802
|
-
const fileName = new TextDecoder().decode(
|
|
13205
|
+
const fileName = new TextDecoder().decode(
|
|
13206
|
+
await buffer.slice(
|
|
13207
|
+
headerOffset + FILE_NAME_OFFSET,
|
|
13208
|
+
headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength)
|
|
13209
|
+
)
|
|
13210
|
+
).split("\\").join("/");
|
|
12803
13211
|
const extraFieldLength = await buffer.getUint16(headerOffset + EXTRA_FIELD_LENGTH_OFFSET);
|
|
12804
13212
|
let fileDataOffset = headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
|
|
12805
13213
|
const compressionMethod = await buffer.getUint16(headerOffset + COMPRESSION_METHOD_OFFSET);
|
|
@@ -12827,52 +13235,75 @@ var __exports__ = (() => {
|
|
|
12827
13235
|
compressionMethod
|
|
12828
13236
|
};
|
|
12829
13237
|
};
|
|
12830
|
-
var ZIP_HEADER_FIELDS2 = [
|
|
12831
|
-
|
|
12832
|
-
|
|
12833
|
-
|
|
12834
|
-
|
|
12835
|
-
|
|
12836
|
-
|
|
12837
|
-
|
|
12838
|
-
|
|
12839
|
-
|
|
12840
|
-
|
|
12841
|
-
|
|
12842
|
-
|
|
12843
|
-
|
|
12844
|
-
|
|
12845
|
-
|
|
12846
|
-
|
|
12847
|
-
|
|
12848
|
-
|
|
12849
|
-
|
|
12850
|
-
|
|
12851
|
-
|
|
12852
|
-
|
|
12853
|
-
|
|
12854
|
-
|
|
12855
|
-
|
|
12856
|
-
|
|
12857
|
-
|
|
12858
|
-
|
|
12859
|
-
|
|
12860
|
-
|
|
12861
|
-
|
|
12862
|
-
|
|
12863
|
-
|
|
12864
|
-
|
|
12865
|
-
|
|
12866
|
-
|
|
12867
|
-
|
|
12868
|
-
|
|
12869
|
-
|
|
12870
|
-
|
|
12871
|
-
|
|
12872
|
-
|
|
12873
|
-
|
|
12874
|
-
|
|
12875
|
-
|
|
13238
|
+
var ZIP_HEADER_FIELDS2 = [
|
|
13239
|
+
// Local file header signature = 0x04034b50
|
|
13240
|
+
{
|
|
13241
|
+
offset: 0,
|
|
13242
|
+
size: 4,
|
|
13243
|
+
default: new DataView(signature2.buffer).getUint32(0, true)
|
|
13244
|
+
},
|
|
13245
|
+
// Version needed to extract (minimum)
|
|
13246
|
+
{
|
|
13247
|
+
offset: 4,
|
|
13248
|
+
size: 2,
|
|
13249
|
+
default: 45
|
|
13250
|
+
},
|
|
13251
|
+
// General purpose bit flag
|
|
13252
|
+
{
|
|
13253
|
+
offset: 6,
|
|
13254
|
+
size: 2,
|
|
13255
|
+
default: 0
|
|
13256
|
+
},
|
|
13257
|
+
// Compression method
|
|
13258
|
+
{
|
|
13259
|
+
offset: 8,
|
|
13260
|
+
size: 2,
|
|
13261
|
+
default: 0
|
|
13262
|
+
},
|
|
13263
|
+
// File last modification time
|
|
13264
|
+
{
|
|
13265
|
+
offset: 10,
|
|
13266
|
+
size: 2,
|
|
13267
|
+
default: 0
|
|
13268
|
+
},
|
|
13269
|
+
// File last modification date
|
|
13270
|
+
{
|
|
13271
|
+
offset: 12,
|
|
13272
|
+
size: 2,
|
|
13273
|
+
default: 0
|
|
13274
|
+
},
|
|
13275
|
+
// CRC-32 of uncompressed data
|
|
13276
|
+
{
|
|
13277
|
+
offset: 14,
|
|
13278
|
+
size: 4,
|
|
13279
|
+
name: "crc32"
|
|
13280
|
+
},
|
|
13281
|
+
// Compressed size (or 0xffffffff for ZIP64)
|
|
13282
|
+
{
|
|
13283
|
+
offset: 18,
|
|
13284
|
+
size: 4,
|
|
13285
|
+
name: "length"
|
|
13286
|
+
},
|
|
13287
|
+
// Uncompressed size (or 0xffffffff for ZIP64)
|
|
13288
|
+
{
|
|
13289
|
+
offset: 22,
|
|
13290
|
+
size: 4,
|
|
13291
|
+
name: "length"
|
|
13292
|
+
},
|
|
13293
|
+
// File name length (n)
|
|
13294
|
+
{
|
|
13295
|
+
offset: 26,
|
|
13296
|
+
size: 2,
|
|
13297
|
+
name: "fnlength"
|
|
13298
|
+
},
|
|
13299
|
+
// Extra field length (m)
|
|
13300
|
+
{
|
|
13301
|
+
offset: 28,
|
|
13302
|
+
size: 2,
|
|
13303
|
+
default: 0,
|
|
13304
|
+
name: "extraLength"
|
|
13305
|
+
}
|
|
13306
|
+
];
|
|
12876
13307
|
|
|
12877
13308
|
// ../crypto/src/lib/hash.ts
|
|
12878
13309
|
var Hash = class {
|
|
@@ -12890,10 +13321,9 @@ var __exports__ = (() => {
|
|
|
12890
13321
|
}
|
|
12891
13322
|
const output = await this.concatenate(arrayBuffers);
|
|
12892
13323
|
const hash = await this.hash(output, encoding);
|
|
12893
|
-
this.options.crypto?.onEnd?.({
|
|
12894
|
-
hash
|
|
12895
|
-
});
|
|
13324
|
+
this.options.crypto?.onEnd?.({ hash });
|
|
12896
13325
|
}
|
|
13326
|
+
// HELPERS
|
|
12897
13327
|
async concatenate(asyncIterator) {
|
|
12898
13328
|
return await concatenateArrayBuffersAsync(asyncIterator);
|
|
12899
13329
|
}
|
|
@@ -12971,7 +13401,9 @@ var __exports__ = (() => {
|
|
|
12971
13401
|
|
|
12972
13402
|
// ../crypto/src/lib/algorithms/md5-wasm.ts
|
|
12973
13403
|
var atb = typeof atob === "function" ? atob : typeof Buffer === "function" ? nodeATOB : identity4;
|
|
12974
|
-
var wasmB64 = atb(
|
|
13404
|
+
var wasmB64 = atb(
|
|
13405
|
+
"AGFzbQEAAAABDANgAX8AYAAAYAABfwIeAgdpbXBvcnRzA2xvZwAAB2ltcG9ydHMDbWVtAgABAzIxAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgIAAAAAAAaYARt/AUGBxpS6Bgt/AUGJ17b+fgt/AUH+uevFeQt/AUH2qMmBAQt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAt/AUEAC38BQQALB7oCJQhvbmVGdWxsQQAYCG9uZUZ1bGxCABkIb25lRnVsbEMAGghvbmVGdWxsRAAbBWxvb3BzAAEEbG9vcAACBXByaW1lAAMFbG9vcEEABAZsb29wQTEABQZsb29wQTIABgZsb29wQTMABwZsb29wQTQACAVsb29wQgAJBmxvb3BCMQAKBmxvb3BCMgALBmxvb3BCMwAMBmxvb3BCNAANBWxvb3BDAA4GbG9vcEMxAA8GbG9vcEMyABAGbG9vcEMzABEGbG9vcEM0ABIFbG9vcEQAEwZsb29wRDEAFAZsb29wRDIAFQZsb29wRDMAFgZsb29wRDQAFwRnZXRBACgEZ2V0QgApBGdldEMAKgRnZXREACsEZ2V0WAAsBHNldEEALQRzZXRCAC4Ec2V0QwAvBHNldEQAMARzZXRYADEKzA0xWwEBf0EAJAggAEEGdCEBAkADQCMIIAFGDQEjACQEIwEkBSMCJAYjAyQHEAIjBCMAaiQAIwUjAWokASMGIwJqJAIjByMDaiQDIwhBwABqJAgMAAsLIwgjGmokGgsTACMIIxpqJAkQAxAEEAkQDhATC6IBAEEAIwlqKAIAJApBBCMJaigCACQLQQgjCWooAgAkDEEMIwlqKAIAJA1BECMJaigCACQOQRQjCWooAgAkD0EYIwlqKAIAJBBBHCMJaigCACQRQSAjCWooAgAkEkEkIwlqKAIAJBNBKCMJaigCACQUQSwjCWooAgAkFUEwIwlqKAIAJBZBNCMJaigCACQXQTgjCWooAgAkGEE8IwlqKAIAJBkLCgAQBRAGEAcQCAsuAEH4yKq7fSMKahAYQdbunsZ+IwtqEBtB2+GBoQIjDGoQGkHunfeNfCMNahAZCy0AQa+f8Kt/Iw5qEBhBqoyfvAQjD2oQG0GTjMHBeiMQahAaQYGqmmojEWoQGQssAEHYsYLMBiMSahAYQa/vk9p4IxNqEBtBsbd9IxRqEBpBvq/zyngjFWoQGQstAEGiosDcBiMWahAYQZPj4WwjF2oQG0GOh+WzeiMYahAaQaGQ0M0EIxlqEBkLCgAQChALEAwQDQsuAEHiyviwfyMLahAcQcDmgoJ8IxBqEB9B0bT5sgIjFWoQHkGqj9vNfiMKahAdCy0AQd2gvLF9Iw9qEBxB06iQEiMUahAfQYHNh8V9IxlqEB5ByPfPvn4jDmoQHQsuAEHmm4ePAiMTahAcQdaP3Jl8IxhqEB9Bh5vUpn8jDWoQHkHtqeiqBCMSahAdCy0AQYXSj896IxdqEBxB+Me+ZyMMahAfQdmFvLsGIxFqEB5Bipmp6XgjFmoQHQsKABAPEBAQERASCysAQcLyaCMPahAgQYHtx7t4IxJqECNBosL17AYjFWoQIkGM8JRvIxhqECELLgBBxNT7pXojC2oQIEGpn/veBCMOahAjQeCW7bV/IxFqECJB8Pj+9XsjFGoQIQstAEHG/e3EAiMXahAgQfrPhNV+IwpqECNBheG8p30jDWoQIkGFuqAkIxBqECELLgBBuaDTzn0jE2oQIEHls+62fiMWahAjQfj5if0BIxlqECJB5ayxpXwjDGoQIQsKABAUEBUQFhAXCy0AQcTEpKF/IwpqECRBl/+rmQQjEWoQJ0Gnx9DceiMYahAmQbnAzmQjD2oQJQstAEHDs+2qBiMWahAkQZKZs/h4Iw1qECdB/ei/fyMUahAmQdG7kax4IwtqECULLQBBz/yh/QYjEmoQJEHgzbNxIxlqECdBlIaFmHojEGoQJkGho6DwBCMXahAlCy4AQYL9zbp/Iw5qECRBteTr6XsjFWoQJ0G7pd/WAiMMahAmQZGnm9x+IxNqECULKAEBf0F/IwFzIwNxIwEjAnFyIwBqIABqIgFBB3QgAUEZdnIjAWokAAsoAQF/QX8jAnMjAHEjAiMDcXIjAWogAGoiAUEWdCABQQp2ciMCaiQBCygBAX9BfyMDcyMBcSMDIwBxciMCaiAAaiIBQRF0IAFBD3ZyIwNqJAILKAEBf0F/IwBzIwJxIwAjAXFyIwNqIABqIgFBDHQgAUEUdnIjAGokAwsoAQF/IwJBfyMDc3EjASMDcXIjAGogAGoiAUEFdCABQRt2ciMBaiQACygBAX8jA0F/IwBzcSMCIwBxciMBaiAAaiIBQRR0IAFBDHZyIwJqJAELKAEBfyMAQX8jAXNxIwMjAXFyIwJqIABqIgFBDnQgAUESdnIjA2okAgsoAQF/IwFBfyMCc3EjACMCcXIjA2ogAGoiAUEJdCABQRd2ciMAaiQDCyIBAX8jASMCcyMDcyMAaiAAaiIBQQR0IAFBHHZyIwFqJAALIgEBfyMCIwNzIwBzIwFqIABqIgFBF3QgAUEJdnIjAmokAQsiAQF/IwMjAHMjAXMjAmogAGoiAUEQdCABQRB2ciMDaiQCCyIBAX8jACMBcyMCcyMDaiAAaiIBQQt0IAFBFXZyIwBqJAMLJQEBf0F/IwNzIwFyIwJzIwBqIABqIgFBBnQgAUEadnIjAWokAAslAQF/QX8jAHMjAnIjA3MjAWogAGoiAUEVdCABQQt2ciMCaiQBCyUBAX9BfyMBcyMDciMAcyMCaiAAaiIBQQ90IAFBEXZyIwNqJAILJQEBf0F/IwJzIwByIwFzIwNqIABqIgFBCnQgAUEWdnIjAGokAwsEACMACwQAIwELBAAjAgsEACMDCwQAIxoLBgAgACQACwYAIAAkAQsGACAAJAILBgAgACQDCwYAIAAkGgsA6gQEbmFtZQGSAzIAA2xvZwEFbG9vcHMCBGxvb3ADBXByaW1lBAVsb29wQQUGbG9vcEExBgZsb29wQTIHBmxvb3BBMwgGbG9vcEE0CQVsb29wQgoGbG9vcEIxCwZsb29wQjIMBmxvb3BCMw0GbG9vcEI0DgVsb29wQw8GbG9vcEMxEAZsb29wQzIRBmxvb3BDMxIGbG9vcEM0EwVsb29wRBQGbG9vcEQxFQZsb29wRDIWBmxvb3BEMxcGbG9vcEQ0GAhvbmVGdWxsQRkIb25lRnVsbEIaCG9uZUZ1bGxDGwhvbmVGdWxsRBwIdHdvRnVsbEEdCHR3b0Z1bGxCHgh0d29GdWxsQx8IdHdvRnVsbEQgCHRyZUZ1bGxBIQh0cmVGdWxsQiIIdHJlRnVsbEMjCHRyZUZ1bGxEJAhxdWFGdWxsQSUIcXVhRnVsbEImCHF1YUZ1bGxDJwhxdWFGdWxsRCgEZ2V0QSkEZ2V0QioEZ2V0QysEZ2V0RCwEZ2V0WC0Ec2V0QS4Ec2V0Qi8Ec2V0QzAEc2V0RDEEc2V0WALNATIAAQAAAQIAAAEIbnVtbG9vcHMCAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgCAAABAW4ZAgAAAQFuGgIAAAEBbhsCAAABAW4cAgAAAQFuHQIAAAEBbh4CAAABAW4fAgAAAQFuIAIAAAEBbiECAAABAW4iAgAAAQFuIwIAAAEBbiQCAAABAW4lAgAAAQFuJgIAAAEBbicCAAABAW4oACkAKgArACwALQEAAC4BAAAvAQAAMAEAADEBAAA="
|
|
13406
|
+
);
|
|
12975
13407
|
var wasm = WebAssembly && atb !== identity4 ? str2AB(wasmB64).buffer : false;
|
|
12976
13408
|
var crypt = makeCrypt();
|
|
12977
13409
|
var biteSize = 240 * 16 * 16;
|
|
@@ -12980,7 +13412,9 @@ var __exports__ = (() => {
|
|
|
12980
13412
|
var parmTypeErrStr = "Parameter must be Buffer, ArrayBuffer or Uint8Array";
|
|
12981
13413
|
var tooBigErrStr = "Parameter exceeds max size of 255.9 Mbytes";
|
|
12982
13414
|
if (!wasm) {
|
|
12983
|
-
console.log(
|
|
13415
|
+
console.log(
|
|
13416
|
+
"WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript"
|
|
13417
|
+
);
|
|
12984
13418
|
}
|
|
12985
13419
|
function md5WASM(data) {
|
|
12986
13420
|
var mem, memView, importObj, imports, len2, buff, thenFun, catchFun, result, endTime;
|
|
@@ -13019,13 +13453,8 @@ var __exports__ = (() => {
|
|
|
13019
13453
|
initial: len2 > 32e6 ? len2 > 64e6 ? len2 > 128e6 ? 4096 : 2048 : 1024 : 512
|
|
13020
13454
|
});
|
|
13021
13455
|
memView = new Uint32Array(mem.buffer);
|
|
13022
|
-
imports = {
|
|
13023
|
-
|
|
13024
|
-
log: console.log
|
|
13025
|
-
};
|
|
13026
|
-
importObj = {
|
|
13027
|
-
imports
|
|
13028
|
-
};
|
|
13456
|
+
imports = { mem, log: console.log };
|
|
13457
|
+
importObj = { imports };
|
|
13029
13458
|
WebAssembly.instantiate(wasm, importObj).then(giterdone);
|
|
13030
13459
|
}
|
|
13031
13460
|
} else {
|
|
@@ -13381,12 +13810,22 @@ var __exports__ = (() => {
|
|
|
13381
13810
|
// ../crypto/src/lib/md5-hash.ts
|
|
13382
13811
|
var MD5Hash = class extends Hash {
|
|
13383
13812
|
name = "md5";
|
|
13813
|
+
options;
|
|
13384
13814
|
constructor(options = {}) {
|
|
13385
13815
|
super();
|
|
13386
13816
|
this.options = options;
|
|
13387
13817
|
}
|
|
13818
|
+
/**
|
|
13819
|
+
* Atomic hash calculation
|
|
13820
|
+
* @returns base64 encoded hash
|
|
13821
|
+
*/
|
|
13388
13822
|
async hash(input, encoding) {
|
|
13389
|
-
const md5Promise = new Promise(
|
|
13823
|
+
const md5Promise = new Promise(
|
|
13824
|
+
(resolve, reject) => (
|
|
13825
|
+
// @ts-expect-error
|
|
13826
|
+
md5WASM(input).then(resolve).catch(reject)
|
|
13827
|
+
)
|
|
13828
|
+
);
|
|
13390
13829
|
const hex = await md5Promise;
|
|
13391
13830
|
return encodeHex(hex, encoding);
|
|
13392
13831
|
}
|
|
@@ -13398,31 +13837,39 @@ var __exports__ = (() => {
|
|
|
13398
13837
|
this.compressBatches = this.compressBatches.bind(this);
|
|
13399
13838
|
this.decompressBatches = this.decompressBatches.bind(this);
|
|
13400
13839
|
}
|
|
13840
|
+
/** Preloads any dynamic libraries. May enable sync functions */
|
|
13401
13841
|
async preload() {
|
|
13402
13842
|
return;
|
|
13403
13843
|
}
|
|
13844
|
+
/** Asynchronously compress data */
|
|
13404
13845
|
async compress(input) {
|
|
13405
13846
|
await this.preload();
|
|
13406
13847
|
return this.compressSync(input);
|
|
13407
13848
|
}
|
|
13849
|
+
/** Asynchronously decompress data */
|
|
13408
13850
|
async decompress(input, size) {
|
|
13409
13851
|
await this.preload();
|
|
13410
13852
|
return this.decompressSync(input, size);
|
|
13411
13853
|
}
|
|
13854
|
+
/** Synchronously compress data */
|
|
13412
13855
|
compressSync(input) {
|
|
13413
13856
|
throw new Error(`${this.name}: sync compression not supported`);
|
|
13414
13857
|
}
|
|
13858
|
+
/** Synchronously compress data */
|
|
13415
13859
|
decompressSync(input, size) {
|
|
13416
13860
|
throw new Error(`${this.name}: sync decompression not supported`);
|
|
13417
13861
|
}
|
|
13862
|
+
/** Compress batches */
|
|
13418
13863
|
async *compressBatches(asyncIterator) {
|
|
13419
13864
|
const input = await this.concatenate(asyncIterator);
|
|
13420
13865
|
yield this.compress(input);
|
|
13421
13866
|
}
|
|
13867
|
+
/** Decompress batches */
|
|
13422
13868
|
async *decompressBatches(asyncIterator) {
|
|
13423
13869
|
const input = await this.concatenate(asyncIterator);
|
|
13424
13870
|
yield this.decompress(input);
|
|
13425
13871
|
}
|
|
13872
|
+
// HELPERS
|
|
13426
13873
|
concatenate(asyncIterator) {
|
|
13427
13874
|
return concatenateArrayBuffersAsync(asyncIterator);
|
|
13428
13875
|
}
|
|
@@ -13442,6 +13889,7 @@ var __exports__ = (() => {
|
|
|
13442
13889
|
extensions = [];
|
|
13443
13890
|
contentEncodings = ["deflate"];
|
|
13444
13891
|
isSupported = true;
|
|
13892
|
+
options;
|
|
13445
13893
|
_chunks = [];
|
|
13446
13894
|
constructor(options = {}) {
|
|
13447
13895
|
super(options);
|
|
@@ -13523,16 +13971,26 @@ var __exports__ = (() => {
|
|
|
13523
13971
|
this._chunks = [];
|
|
13524
13972
|
return chunks;
|
|
13525
13973
|
}
|
|
13974
|
+
// TODO - For some reason we don't get the error message from pako in _onEnd?
|
|
13526
13975
|
_getError(code = 0) {
|
|
13527
13976
|
const MESSAGES = {
|
|
13977
|
+
/* Z_NEED_DICT 2 */
|
|
13528
13978
|
2: "need dictionary",
|
|
13979
|
+
/* Z_STREAM_END 1 */
|
|
13529
13980
|
1: "stream end",
|
|
13981
|
+
/* Z_OK 0 */
|
|
13530
13982
|
0: "",
|
|
13983
|
+
/* Z_ERRNO (-1) */
|
|
13531
13984
|
"-1": "file error",
|
|
13985
|
+
/* Z_STREAM_ERROR (-2) */
|
|
13532
13986
|
"-2": "stream error",
|
|
13987
|
+
/* Z_DATA_ERROR (-3) */
|
|
13533
13988
|
"-3": "data error",
|
|
13989
|
+
/* Z_MEM_ERROR (-4) */
|
|
13534
13990
|
"-4": "insufficient memory",
|
|
13991
|
+
/* Z_BUF_ERROR (-5) */
|
|
13535
13992
|
"-5": "buffer error",
|
|
13993
|
+
/* Z_VERSION_ERROR (-6) */
|
|
13536
13994
|
"-6": "incompatible version"
|
|
13537
13995
|
};
|
|
13538
13996
|
return `${this.name}: ${MESSAGES[code]}`;
|
|
@@ -13546,30 +14004,30 @@ var __exports__ = (() => {
|
|
|
13546
14004
|
contentEncodings = ["gzip", "x-gzip"];
|
|
13547
14005
|
isSupported = true;
|
|
13548
14006
|
constructor(options) {
|
|
13549
|
-
super({
|
|
13550
|
-
...options,
|
|
13551
|
-
deflate: {
|
|
13552
|
-
...options?.gzip,
|
|
13553
|
-
gzip: true
|
|
13554
|
-
}
|
|
13555
|
-
});
|
|
14007
|
+
super({ ...options, deflate: { ...options?.gzip, gzip: true } });
|
|
13556
14008
|
}
|
|
13557
14009
|
};
|
|
13558
14010
|
|
|
13559
14011
|
// ../zip/src/filesystems/zip-filesystem.ts
|
|
13560
14012
|
var ZIP_COMPRESSION_HANDLERS = {
|
|
14013
|
+
/** No compression */
|
|
13561
14014
|
0: async (compressedFile) => compressedFile,
|
|
14015
|
+
/** Deflation */
|
|
13562
14016
|
8: async (compressedFile) => {
|
|
13563
|
-
const compression = new DeflateCompression({
|
|
13564
|
-
raw: true
|
|
13565
|
-
});
|
|
14017
|
+
const compression = new DeflateCompression({ raw: true });
|
|
13566
14018
|
const decompressedData = await compression.decompress(compressedFile);
|
|
13567
14019
|
return decompressedData;
|
|
13568
14020
|
}
|
|
13569
14021
|
};
|
|
13570
14022
|
var ZipFileSystem = class {
|
|
14023
|
+
/** FileProvider instance promise */
|
|
13571
14024
|
fileProvider = null;
|
|
14025
|
+
fileName;
|
|
13572
14026
|
archive = null;
|
|
14027
|
+
/**
|
|
14028
|
+
* Constructor
|
|
14029
|
+
* @param file - instance of FileProvider or file path string
|
|
14030
|
+
*/
|
|
13573
14031
|
constructor(file) {
|
|
13574
14032
|
if (typeof file === "string") {
|
|
13575
14033
|
this.fileName = file;
|
|
@@ -13586,11 +14044,16 @@ var __exports__ = (() => {
|
|
|
13586
14044
|
this.fileProvider = file;
|
|
13587
14045
|
}
|
|
13588
14046
|
}
|
|
14047
|
+
/** Clean up resources */
|
|
13589
14048
|
async destroy() {
|
|
13590
14049
|
if (this.fileProvider) {
|
|
13591
14050
|
await this.fileProvider.destroy();
|
|
13592
14051
|
}
|
|
13593
14052
|
}
|
|
14053
|
+
/**
|
|
14054
|
+
* Get file names list from zip archive
|
|
14055
|
+
* @returns array of file names
|
|
14056
|
+
*/
|
|
13594
14057
|
async readdir() {
|
|
13595
14058
|
if (!this.fileProvider) {
|
|
13596
14059
|
throw new Error("No data detected in the zip archive");
|
|
@@ -13602,14 +14065,24 @@ var __exports__ = (() => {
|
|
|
13602
14065
|
}
|
|
13603
14066
|
return fileNames;
|
|
13604
14067
|
}
|
|
14068
|
+
/**
|
|
14069
|
+
* Get file metadata
|
|
14070
|
+
* @param filename - name of a file
|
|
14071
|
+
* @returns central directory data
|
|
14072
|
+
*/
|
|
13605
14073
|
async stat(filename) {
|
|
13606
14074
|
const cdFileHeader = await this.getCDFileHeader(filename);
|
|
13607
|
-
return {
|
|
13608
|
-
...cdFileHeader,
|
|
13609
|
-
size: Number(cdFileHeader.uncompressedSize)
|
|
13610
|
-
};
|
|
14075
|
+
return { ...cdFileHeader, size: Number(cdFileHeader.uncompressedSize) };
|
|
13611
14076
|
}
|
|
14077
|
+
/**
|
|
14078
|
+
* Implementation of fetch against this file system
|
|
14079
|
+
* @param filename - name of a file
|
|
14080
|
+
* @returns - Response with file data
|
|
14081
|
+
*/
|
|
13612
14082
|
async fetch(filename) {
|
|
14083
|
+
if (this.fileName && filename.indexOf(this.fileName) === 0) {
|
|
14084
|
+
filename = filename.substring(this.fileName.length + 1);
|
|
14085
|
+
}
|
|
13613
14086
|
let uncompressedFile;
|
|
13614
14087
|
if (this.archive) {
|
|
13615
14088
|
uncompressedFile = await this.archive.getFile(filename, "http");
|
|
@@ -13618,7 +14091,10 @@ var __exports__ = (() => {
|
|
|
13618
14091
|
throw new Error("No data detected in the zip archive");
|
|
13619
14092
|
}
|
|
13620
14093
|
const cdFileHeader = await this.getCDFileHeader(filename);
|
|
13621
|
-
const localFileHeader = await parseZipLocalFileHeader(
|
|
14094
|
+
const localFileHeader = await parseZipLocalFileHeader(
|
|
14095
|
+
cdFileHeader.localHeaderOffset,
|
|
14096
|
+
this.fileProvider
|
|
14097
|
+
);
|
|
13622
14098
|
if (!localFileHeader) {
|
|
13623
14099
|
throw new Error("Local file header has not been found in the zip archive`");
|
|
13624
14100
|
}
|
|
@@ -13626,7 +14102,10 @@ var __exports__ = (() => {
|
|
|
13626
14102
|
if (!compressionHandler) {
|
|
13627
14103
|
throw Error("Only Deflation compression is supported");
|
|
13628
14104
|
}
|
|
13629
|
-
const compressedFile = await this.fileProvider.slice(
|
|
14105
|
+
const compressedFile = await this.fileProvider.slice(
|
|
14106
|
+
localFileHeader.fileDataOffset,
|
|
14107
|
+
localFileHeader.fileDataOffset + localFileHeader.compressedSize
|
|
14108
|
+
);
|
|
13630
14109
|
uncompressedFile = await compressionHandler(compressedFile);
|
|
13631
14110
|
}
|
|
13632
14111
|
const response = new Response(uncompressedFile);
|
|
@@ -13635,6 +14114,11 @@ var __exports__ = (() => {
|
|
|
13635
14114
|
});
|
|
13636
14115
|
return response;
|
|
13637
14116
|
}
|
|
14117
|
+
/**
|
|
14118
|
+
* Get central directory file header
|
|
14119
|
+
* @param filename - name of a file
|
|
14120
|
+
* @returns central directory file header
|
|
14121
|
+
*/
|
|
13638
14122
|
async getCDFileHeader(filename) {
|
|
13639
14123
|
if (!this.fileProvider) {
|
|
13640
14124
|
throw new Error("No data detected in the zip archive");
|
|
@@ -13656,10 +14140,23 @@ var __exports__ = (() => {
|
|
|
13656
14140
|
|
|
13657
14141
|
// ../zip/src/filesystems/IndexedArchive.ts
|
|
13658
14142
|
var IndexedArchive = class {
|
|
14143
|
+
fileProvider;
|
|
14144
|
+
fileName;
|
|
14145
|
+
/**
|
|
14146
|
+
* Constructor
|
|
14147
|
+
* @param fileProvider - instance of a binary data reader
|
|
14148
|
+
* @param hashTable - pre-loaded hashTable. If presented, getFile will skip reading the hash file
|
|
14149
|
+
* @param fileName - name of the archive. It is used to add to an URL of a loader context
|
|
14150
|
+
*/
|
|
13659
14151
|
constructor(fileProvider, hashTable, fileName) {
|
|
13660
14152
|
this.fileProvider = fileProvider;
|
|
13661
14153
|
this.fileName = fileName;
|
|
13662
14154
|
}
|
|
14155
|
+
/**
|
|
14156
|
+
* Get file as from order ZIP arhive without using the hash file
|
|
14157
|
+
* @param filename - path to the internal file
|
|
14158
|
+
* @returns
|
|
14159
|
+
*/
|
|
13663
14160
|
async getFileWithoutHash(filename) {
|
|
13664
14161
|
const zipFS = new ZipFileSystem(this.fileProvider);
|
|
13665
14162
|
const response = await zipFS.fetch(filename);
|
|
@@ -13699,39 +14196,62 @@ var __exports__ = (() => {
|
|
|
13699
14196
|
}
|
|
13700
14197
|
|
|
13701
14198
|
// src/lib/parsers/parse-slpk/slpk-archieve.ts
|
|
13702
|
-
var PATH_DESCRIPTIONS = [
|
|
13703
|
-
|
|
13704
|
-
|
|
13705
|
-
|
|
13706
|
-
|
|
13707
|
-
|
|
13708
|
-
|
|
13709
|
-
|
|
13710
|
-
|
|
13711
|
-
|
|
13712
|
-
|
|
13713
|
-
|
|
13714
|
-
|
|
13715
|
-
|
|
13716
|
-
|
|
13717
|
-
|
|
13718
|
-
|
|
13719
|
-
|
|
13720
|
-
|
|
13721
|
-
|
|
13722
|
-
|
|
13723
|
-
|
|
13724
|
-
|
|
13725
|
-
|
|
13726
|
-
|
|
14199
|
+
var PATH_DESCRIPTIONS = [
|
|
14200
|
+
{
|
|
14201
|
+
test: /^$/,
|
|
14202
|
+
extensions: ["3dSceneLayer.json.gz"]
|
|
14203
|
+
},
|
|
14204
|
+
{
|
|
14205
|
+
test: /^nodepages\/\d+$/,
|
|
14206
|
+
extensions: [".json.gz"]
|
|
14207
|
+
},
|
|
14208
|
+
{
|
|
14209
|
+
test: /^nodes\/(\d+|root)$/,
|
|
14210
|
+
extensions: ["/3dNodeIndexDocument.json.gz"]
|
|
14211
|
+
},
|
|
14212
|
+
{
|
|
14213
|
+
test: /^nodes\/\d+\/textures\/.+$/,
|
|
14214
|
+
extensions: [".jpg", ".png", ".bin.dds.gz", ".ktx"]
|
|
14215
|
+
},
|
|
14216
|
+
{
|
|
14217
|
+
test: /^nodes\/\d+\/geometries\/\d+$/,
|
|
14218
|
+
extensions: [".bin.gz", ".draco.gz"]
|
|
14219
|
+
},
|
|
14220
|
+
{
|
|
14221
|
+
test: /^nodes\/\d+\/attributes\/f_\d+\/\d+$/,
|
|
14222
|
+
extensions: [".bin.gz"]
|
|
14223
|
+
},
|
|
14224
|
+
{
|
|
14225
|
+
test: /^statistics\/f_\d+\/\d+$/,
|
|
14226
|
+
extensions: [".json.gz"]
|
|
14227
|
+
},
|
|
14228
|
+
{
|
|
14229
|
+
test: /^nodes\/\d+\/shared$/,
|
|
14230
|
+
extensions: ["/sharedResource.json.gz"]
|
|
14231
|
+
}
|
|
14232
|
+
];
|
|
13727
14233
|
var SLPKArchive = class extends IndexedArchive {
|
|
14234
|
+
// Maps hex-encoded md5 filename hashes to bigint offsets into the archive
|
|
14235
|
+
hashTable;
|
|
13728
14236
|
_textEncoder = new TextEncoder();
|
|
13729
14237
|
_textDecoder = new TextDecoder();
|
|
13730
14238
|
_md5Hash = new MD5Hash();
|
|
14239
|
+
/**
|
|
14240
|
+
* Constructor
|
|
14241
|
+
* @param fileProvider - instance of a binary data reader
|
|
14242
|
+
* @param hashTable - pre-loaded hashTable. If presented, getFile will skip reading the hash file
|
|
14243
|
+
* @param fileName - name of the archive. It is used to add to an URL of a loader context
|
|
14244
|
+
*/
|
|
13731
14245
|
constructor(fileProvider, hashTable, fileName) {
|
|
13732
14246
|
super(fileProvider, hashTable, fileName);
|
|
13733
14247
|
this.hashTable = hashTable;
|
|
13734
14248
|
}
|
|
14249
|
+
/**
|
|
14250
|
+
* Returns file with the given path from slpk archive
|
|
14251
|
+
* @param path - path inside the slpk
|
|
14252
|
+
* @param mode - currently only raw mode supported
|
|
14253
|
+
* @returns buffer with ready to use file
|
|
14254
|
+
*/
|
|
13735
14255
|
async getFile(path, mode = "raw") {
|
|
13736
14256
|
if (mode === "http") {
|
|
13737
14257
|
const extensions = PATH_DESCRIPTIONS.find((val) => val.test.test(path))?.extensions;
|
|
@@ -13760,6 +14280,11 @@ var __exports__ = (() => {
|
|
|
13760
14280
|
}
|
|
13761
14281
|
throw new Error(`No such file in the archive: ${path}`);
|
|
13762
14282
|
}
|
|
14283
|
+
/**
|
|
14284
|
+
* returning uncompressed data for paths that ends with .gz and raw data for all other paths
|
|
14285
|
+
* @param path - path inside the archive
|
|
14286
|
+
* @returns buffer with the file data
|
|
14287
|
+
*/
|
|
13763
14288
|
async getDataByPath(path) {
|
|
13764
14289
|
let data = await this.getFileBytes(path.toLocaleLowerCase());
|
|
13765
14290
|
if (!data) {
|
|
@@ -13775,6 +14300,11 @@ var __exports__ = (() => {
|
|
|
13775
14300
|
}
|
|
13776
14301
|
return data;
|
|
13777
14302
|
}
|
|
14303
|
+
/**
|
|
14304
|
+
* Trying to get raw file data by address
|
|
14305
|
+
* @param path - path inside the archive
|
|
14306
|
+
* @returns buffer with the raw file data
|
|
14307
|
+
*/
|
|
13778
14308
|
async getFileBytes(path) {
|
|
13779
14309
|
let compressedFile;
|
|
13780
14310
|
if (this.hashTable) {
|
|
@@ -13788,7 +14318,10 @@ var __exports__ = (() => {
|
|
|
13788
14318
|
if (!localFileHeader) {
|
|
13789
14319
|
return void 0;
|
|
13790
14320
|
}
|
|
13791
|
-
compressedFile = await this.fileProvider.slice(
|
|
14321
|
+
compressedFile = await this.fileProvider.slice(
|
|
14322
|
+
localFileHeader.fileDataOffset,
|
|
14323
|
+
localFileHeader.fileDataOffset + localFileHeader.compressedSize
|
|
14324
|
+
);
|
|
13792
14325
|
} else {
|
|
13793
14326
|
try {
|
|
13794
14327
|
compressedFile = await this.getFileWithoutHash(path);
|
|
@@ -13807,21 +14340,29 @@ var __exports__ = (() => {
|
|
|
13807
14340
|
let hashTable;
|
|
13808
14341
|
if (cdFileHeader?.fileName !== "@specialIndexFileHASH128@") {
|
|
13809
14342
|
hashTable = await makeHashTableFromZipHeaders(fileProvider);
|
|
13810
|
-
cb?.(
|
|
14343
|
+
cb?.(
|
|
14344
|
+
"SLPK doesnt contain hash file, hash info has been composed according to zip archive headers"
|
|
14345
|
+
);
|
|
13811
14346
|
} else {
|
|
13812
|
-
const localFileHeader = await parseZipLocalFileHeader(
|
|
14347
|
+
const localFileHeader = await parseZipLocalFileHeader(
|
|
14348
|
+
cdFileHeader.localHeaderOffset,
|
|
14349
|
+
fileProvider
|
|
14350
|
+
);
|
|
13813
14351
|
if (!localFileHeader) {
|
|
13814
14352
|
throw new Error("corrupted SLPK");
|
|
13815
14353
|
}
|
|
13816
14354
|
const fileDataOffset = localFileHeader.fileDataOffset;
|
|
13817
|
-
const hashFile = await fileProvider.slice(
|
|
14355
|
+
const hashFile = await fileProvider.slice(
|
|
14356
|
+
fileDataOffset,
|
|
14357
|
+
fileDataOffset + localFileHeader.compressedSize
|
|
14358
|
+
);
|
|
13818
14359
|
hashTable = parseHashTable(hashFile);
|
|
13819
14360
|
}
|
|
13820
14361
|
return new SLPKArchive(fileProvider, hashTable, fileName);
|
|
13821
14362
|
}
|
|
13822
14363
|
|
|
13823
14364
|
// src/i3s-slpk-loader.ts
|
|
13824
|
-
var VERSION8 =
|
|
14365
|
+
var VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
13825
14366
|
var SLPKLoader = {
|
|
13826
14367
|
name: "I3S SLPK (Scene Layer Package)",
|
|
13827
14368
|
id: "slpk",
|
|
@@ -13841,10 +14382,7 @@ var __exports__ = (() => {
|
|
|
13841
14382
|
|
|
13842
14383
|
// src/lib/parsers/parse-i3s-attribute.ts
|
|
13843
14384
|
function parseI3STileAttribute(arrayBuffer, options) {
|
|
13844
|
-
const {
|
|
13845
|
-
attributeName,
|
|
13846
|
-
attributeType
|
|
13847
|
-
} = options;
|
|
14385
|
+
const { attributeName, attributeType } = options;
|
|
13848
14386
|
if (!attributeName) {
|
|
13849
14387
|
return {};
|
|
13850
14388
|
}
|
|
@@ -13884,7 +14422,11 @@ var __exports__ = (() => {
|
|
|
13884
14422
|
const bytesPerStringSize = 4;
|
|
13885
14423
|
const stringsArray = [];
|
|
13886
14424
|
try {
|
|
13887
|
-
const stringsCount = new DataView(
|
|
14425
|
+
const stringsCount = new DataView(
|
|
14426
|
+
arrayBuffer,
|
|
14427
|
+
stringsCountOffset,
|
|
14428
|
+
bytesPerStringSize
|
|
14429
|
+
).getUint32(stringsCountOffset, true);
|
|
13888
14430
|
const stringSizes = new Uint32Array(arrayBuffer, dataOffset, stringsCount);
|
|
13889
14431
|
let stringOffset = dataOffset + stringsCount * bytesPerStringSize;
|
|
13890
14432
|
for (const stringByteSize of stringSizes) {
|
|
@@ -13900,7 +14442,7 @@ var __exports__ = (() => {
|
|
|
13900
14442
|
}
|
|
13901
14443
|
|
|
13902
14444
|
// src/i3s-attribute-loader.ts
|
|
13903
|
-
var VERSION9 =
|
|
14445
|
+
var VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
13904
14446
|
var EMPTY_VALUE = "";
|
|
13905
14447
|
var REJECTED_STATUS = "rejected";
|
|
13906
14448
|
var I3SAttributeLoader = {
|
|
@@ -13915,11 +14457,7 @@ var __exports__ = (() => {
|
|
|
13915
14457
|
binary: true
|
|
13916
14458
|
};
|
|
13917
14459
|
async function loadFeatureAttributes(tile, featureId, options = {}) {
|
|
13918
|
-
const {
|
|
13919
|
-
attributeStorageInfo,
|
|
13920
|
-
attributeUrls,
|
|
13921
|
-
tilesetFields
|
|
13922
|
-
} = getAttributesData(tile);
|
|
14460
|
+
const { attributeStorageInfo, attributeUrls, tilesetFields } = getAttributesData(tile);
|
|
13923
14461
|
if (!attributeStorageInfo || !attributeUrls || featureId < 0) {
|
|
13924
14462
|
return null;
|
|
13925
14463
|
}
|
|
@@ -13929,11 +14467,7 @@ var __exports__ = (() => {
|
|
|
13929
14467
|
const url = getUrlWithToken(attributeUrls[index], options.i3s?.token);
|
|
13930
14468
|
const attributeName = attributeStorageInfo[index].name;
|
|
13931
14469
|
const attributeType = getAttributeValueType(attributeStorageInfo[index]);
|
|
13932
|
-
const loadOptions = {
|
|
13933
|
-
...options,
|
|
13934
|
-
attributeName,
|
|
13935
|
-
attributeType
|
|
13936
|
-
};
|
|
14470
|
+
const loadOptions = { ...options, attributeName, attributeType };
|
|
13937
14471
|
const promise = (0, import_core19.load)(url, I3SAttributeLoader, loadOptions);
|
|
13938
14472
|
attributeLoadPromises.push(promise);
|
|
13939
14473
|
}
|
|
@@ -13950,11 +14484,7 @@ var __exports__ = (() => {
|
|
|
13950
14484
|
const attributeStorageInfo = tile.tileset?.tileset?.attributeStorageInfo;
|
|
13951
14485
|
const attributeUrls = tile.header?.attributeUrls;
|
|
13952
14486
|
const tilesetFields = tile.tileset?.tileset?.fields || [];
|
|
13953
|
-
return {
|
|
13954
|
-
attributeStorageInfo,
|
|
13955
|
-
attributeUrls,
|
|
13956
|
-
tilesetFields
|
|
13957
|
-
};
|
|
14487
|
+
return { attributeStorageInfo, attributeUrls, tilesetFields };
|
|
13958
14488
|
}
|
|
13959
14489
|
function getAttributeValueType(attribute) {
|
|
13960
14490
|
if (attribute.hasOwnProperty("objectIds")) {
|
|
@@ -14017,9 +14547,7 @@ var __exports__ = (() => {
|
|
|
14017
14547
|
var OBJECT_3D_LAYER_TYPE = "3DObject";
|
|
14018
14548
|
async function parseBuildingSceneLayer(data, url) {
|
|
14019
14549
|
const layer0 = JSON.parse(new TextDecoder().decode(data));
|
|
14020
|
-
const {
|
|
14021
|
-
sublayers
|
|
14022
|
-
} = layer0;
|
|
14550
|
+
const { sublayers } = layer0;
|
|
14023
14551
|
return {
|
|
14024
14552
|
header: layer0,
|
|
14025
14553
|
sublayers: parseSublayersTree(sublayers, url)
|
|
@@ -14029,12 +14557,7 @@ var __exports__ = (() => {
|
|
|
14029
14557
|
let layers = [];
|
|
14030
14558
|
for (let index = 0; index < sublayers.length; index++) {
|
|
14031
14559
|
const subLayer = sublayers[index];
|
|
14032
|
-
const {
|
|
14033
|
-
id,
|
|
14034
|
-
layerType,
|
|
14035
|
-
visibility = true,
|
|
14036
|
-
...rest
|
|
14037
|
-
} = subLayer;
|
|
14560
|
+
const { id, layerType, visibility = true, ...rest } = subLayer;
|
|
14038
14561
|
if (layerType === OBJECT_3D_LAYER_TYPE) {
|
|
14039
14562
|
const sublayerUrl = `${url}/sublayers/${id}`;
|
|
14040
14563
|
layers.push({
|
|
@@ -14053,7 +14576,7 @@ var __exports__ = (() => {
|
|
|
14053
14576
|
}
|
|
14054
14577
|
|
|
14055
14578
|
// src/i3s-building-scene-layer-loader.ts
|
|
14056
|
-
var VERSION10 =
|
|
14579
|
+
var VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
14057
14580
|
var I3SBuildingSceneLayerLoader = {
|
|
14058
14581
|
name: "I3S Building Scene Layer",
|
|
14059
14582
|
id: "i3s-building-scene-layer",
|
|
@@ -14078,7 +14601,12 @@ var __exports__ = (() => {
|
|
|
14078
14601
|
var BUILDING_SCENE_LAYER = "BuildingSceneLayer";
|
|
14079
14602
|
var INTEGRATED_MESH_LAYER = "IntegratedMeshLayer";
|
|
14080
14603
|
var GROUP_LAYER = "GroupLayer";
|
|
14081
|
-
var SUPPORTED_LAYERS_TYPES = [
|
|
14604
|
+
var SUPPORTED_LAYERS_TYPES = [
|
|
14605
|
+
ARCGIS_SCENE_SERVER_LAYER_TYPE,
|
|
14606
|
+
INTEGRATED_MESH_LAYER,
|
|
14607
|
+
BUILDING_SCENE_LAYER,
|
|
14608
|
+
GROUP_LAYER
|
|
14609
|
+
];
|
|
14082
14610
|
var NO_AVAILABLE_SUPPORTED_LAYERS_ERROR = "NO_AVAILABLE_SUPPORTED_LAYERS_ERROR";
|
|
14083
14611
|
var NOT_SUPPORTED_CRS_ERROR = "NOT_SUPPORTED_CRS_ERROR";
|
|
14084
14612
|
var LayerError = class extends Error {
|
|
@@ -14090,13 +14618,8 @@ var __exports__ = (() => {
|
|
|
14090
14618
|
};
|
|
14091
14619
|
async function parseWebscene(data) {
|
|
14092
14620
|
const layer0 = JSON.parse(new TextDecoder().decode(data));
|
|
14093
|
-
const {
|
|
14094
|
-
|
|
14095
|
-
} = layer0;
|
|
14096
|
-
const {
|
|
14097
|
-
layers,
|
|
14098
|
-
unsupportedLayers
|
|
14099
|
-
} = await parseOperationalLayers(operationalLayers, true);
|
|
14621
|
+
const { operationalLayers } = layer0;
|
|
14622
|
+
const { layers, unsupportedLayers } = await parseOperationalLayers(operationalLayers, true);
|
|
14100
14623
|
if (!layers.length) {
|
|
14101
14624
|
throw new LayerError(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR, unsupportedLayers);
|
|
14102
14625
|
}
|
|
@@ -14122,18 +14645,12 @@ var __exports__ = (() => {
|
|
|
14122
14645
|
unsupportedLayers.push(layer);
|
|
14123
14646
|
}
|
|
14124
14647
|
if (layer.layers?.length) {
|
|
14125
|
-
const {
|
|
14126
|
-
layers: childLayers,
|
|
14127
|
-
unsupportedLayers: childUnsupportedLayers
|
|
14128
|
-
} = await parseOperationalLayers(layer.layers, needToCheckCRS);
|
|
14648
|
+
const { layers: childLayers, unsupportedLayers: childUnsupportedLayers } = await parseOperationalLayers(layer.layers, needToCheckCRS);
|
|
14129
14649
|
layer.layers = childLayers;
|
|
14130
14650
|
unsupportedLayers = [...unsupportedLayers, ...childUnsupportedLayers];
|
|
14131
14651
|
}
|
|
14132
14652
|
}
|
|
14133
|
-
return {
|
|
14134
|
-
layers,
|
|
14135
|
-
unsupportedLayers
|
|
14136
|
-
};
|
|
14653
|
+
return { layers, unsupportedLayers };
|
|
14137
14654
|
}
|
|
14138
14655
|
async function checkSupportedIndexCRS(layer) {
|
|
14139
14656
|
try {
|
|
@@ -14148,7 +14665,7 @@ var __exports__ = (() => {
|
|
|
14148
14665
|
}
|
|
14149
14666
|
|
|
14150
14667
|
// src/arcgis-webscene-loader.ts
|
|
14151
|
-
var VERSION11 =
|
|
14668
|
+
var VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
14152
14669
|
var ArcGISWebSceneLoader = {
|
|
14153
14670
|
name: "ArcGIS Web Scene Loader",
|
|
14154
14671
|
id: "arcgis-web-scene",
|
|
@@ -14173,29 +14690,41 @@ var __exports__ = (() => {
|
|
|
14173
14690
|
...colors,
|
|
14174
14691
|
value: new Uint8Array(colors.value)
|
|
14175
14692
|
};
|
|
14176
|
-
const colorizeAttributeField = fields.find(({
|
|
14177
|
-
|
|
14178
|
-
|
|
14179
|
-
|
|
14693
|
+
const colorizeAttributeField = fields.find(({ name }) => name === colorsByAttribute?.attributeName);
|
|
14694
|
+
if (!colorizeAttributeField || !["esriFieldTypeDouble", "esriFieldTypeInteger", "esriFieldTypeSmallInteger"].includes(
|
|
14695
|
+
colorizeAttributeField.type
|
|
14696
|
+
)) {
|
|
14180
14697
|
return colors;
|
|
14181
14698
|
}
|
|
14182
|
-
const colorizeAttributeData = await loadFeatureAttributeData(
|
|
14699
|
+
const colorizeAttributeData = await loadFeatureAttributeData(
|
|
14700
|
+
colorizeAttributeField.name,
|
|
14701
|
+
attributeUrls,
|
|
14702
|
+
attributeStorageInfo,
|
|
14703
|
+
token
|
|
14704
|
+
);
|
|
14183
14705
|
if (!colorizeAttributeData) {
|
|
14184
14706
|
return colors;
|
|
14185
14707
|
}
|
|
14186
|
-
const objectIdField = fields.find(({
|
|
14187
|
-
type
|
|
14188
|
-
}) => type === "esriFieldTypeOID");
|
|
14708
|
+
const objectIdField = fields.find(({ type }) => type === "esriFieldTypeOID");
|
|
14189
14709
|
if (!objectIdField) {
|
|
14190
14710
|
return colors;
|
|
14191
14711
|
}
|
|
14192
|
-
const objectIdAttributeData = await loadFeatureAttributeData(
|
|
14712
|
+
const objectIdAttributeData = await loadFeatureAttributeData(
|
|
14713
|
+
objectIdField.name,
|
|
14714
|
+
attributeUrls,
|
|
14715
|
+
attributeStorageInfo,
|
|
14716
|
+
token
|
|
14717
|
+
);
|
|
14193
14718
|
if (!objectIdAttributeData) {
|
|
14194
14719
|
return colors;
|
|
14195
14720
|
}
|
|
14196
14721
|
const attributeValuesMap = {};
|
|
14197
14722
|
for (let i2 = 0; i2 < objectIdAttributeData[objectIdField.name].length; i2++) {
|
|
14198
|
-
attributeValuesMap[objectIdAttributeData[objectIdField.name][i2]] = calculateColorForAttribute(
|
|
14723
|
+
attributeValuesMap[objectIdAttributeData[objectIdField.name][i2]] = calculateColorForAttribute(
|
|
14724
|
+
// @ts-expect-error
|
|
14725
|
+
colorizeAttributeData[colorizeAttributeField.name][i2],
|
|
14726
|
+
colorsByAttribute
|
|
14727
|
+
);
|
|
14199
14728
|
}
|
|
14200
14729
|
for (let i2 = 0; i2 < featureIds.length; i2++) {
|
|
14201
14730
|
const color = attributeValuesMap[featureIds[i2]];
|
|
@@ -14216,12 +14745,7 @@ var __exports__ = (() => {
|
|
|
14216
14745
|
if (!colorsByAttribute) {
|
|
14217
14746
|
return [255, 255, 255, 255];
|
|
14218
14747
|
}
|
|
14219
|
-
const {
|
|
14220
|
-
minValue,
|
|
14221
|
-
maxValue,
|
|
14222
|
-
minColor,
|
|
14223
|
-
maxColor
|
|
14224
|
-
} = colorsByAttribute;
|
|
14748
|
+
const { minValue, maxValue, minColor, maxColor } = colorsByAttribute;
|
|
14225
14749
|
const rate = (attributeValue - minValue) / (maxValue - minValue);
|
|
14226
14750
|
const color = [255, 255, 255, 255];
|
|
14227
14751
|
for (let i2 = 0; i2 < minColor.length; i2++) {
|
|
@@ -14230,9 +14754,7 @@ var __exports__ = (() => {
|
|
|
14230
14754
|
return color;
|
|
14231
14755
|
}
|
|
14232
14756
|
async function loadFeatureAttributeData(attributeName, attributeUrls, attributeStorageInfo, token) {
|
|
14233
|
-
const attributeIndex = attributeStorageInfo.findIndex(({
|
|
14234
|
-
name
|
|
14235
|
-
}) => attributeName === name);
|
|
14757
|
+
const attributeIndex = attributeStorageInfo.findIndex(({ name }) => attributeName === name);
|
|
14236
14758
|
if (attributeIndex === -1) {
|
|
14237
14759
|
return null;
|
|
14238
14760
|
}
|
|
@@ -14244,7 +14766,7 @@ var __exports__ = (() => {
|
|
|
14244
14766
|
});
|
|
14245
14767
|
return objectIdAttributeData;
|
|
14246
14768
|
}
|
|
14247
|
-
return __toCommonJS(
|
|
14769
|
+
return __toCommonJS(bundle_exports);
|
|
14248
14770
|
})();
|
|
14249
14771
|
return __exports__;
|
|
14250
14772
|
});
|