@loaders.gl/i3s 4.0.0-alpha.18 → 4.0.0-alpha.20
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/dist.min.js +338 -307
- package/dist/es5/arcgis-webscene-loader.js +1 -1
- package/dist/es5/i3s-attribute-loader.js +1 -1
- package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
- package/dist/es5/i3s-content-loader.js +1 -1
- package/dist/es5/i3s-loader.js +1 -1
- package/dist/es5/i3s-node-page-loader.js +1 -1
- package/dist/es5/i3s-slpk-loader.js +3 -3
- package/dist/es5/i3s-slpk-loader.js.map +1 -1
- package/dist/es5/index.js +0 -7
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/parsers/parse-i3s.js +1 -0
- package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +9 -25
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
- package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +9 -33
- package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/esm/arcgis-webscene-loader.js +1 -1
- package/dist/esm/i3s-attribute-loader.js +1 -1
- package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
- package/dist/esm/i3s-content-loader.js +1 -1
- package/dist/esm/i3s-loader.js +1 -1
- package/dist/esm/i3s-node-page-loader.js +1 -1
- package/dist/esm/i3s-slpk-loader.js +3 -3
- package/dist/esm/i3s-slpk-loader.js.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/parsers/parse-i3s.js +1 -0
- package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +2 -18
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
- package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +5 -29
- package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/i3s-content-worker-node.js +47 -47
- package/dist/i3s-content-worker-node.js.map +2 -2
- package/dist/i3s-content-worker.js +51 -38
- package/dist/i3s-slpk-loader.js +2 -2
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
- package/dist/lib/parsers/parse-i3s.js +1 -0
- 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 +9 -30
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +2 -21
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/slpk-archieve.js +7 -46
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/i3s-slpk-loader.ts +2 -2
- package/src/index.ts +0 -2
- package/src/lib/parsers/parse-i3s.ts +1 -0
- package/src/lib/parsers/parse-slpk/parse-slpk.ts +12 -32
- package/src/lib/parsers/parse-slpk/slpk-archieve.ts +5 -54
- package/src/types.ts +3 -0
- package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +0 -121
- package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +0 -1
- package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js +0 -129
- package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js.map +0 -1
- package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js +0 -100
- package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js.map +0 -1
- package/dist/es5/lib/parsers/parse-zip/file-provider.js +0 -2
- package/dist/es5/lib/parsers/parse-zip/file-provider.js.map +0 -1
- package/dist/es5/lib/parsers/parse-zip/local-file-header.js +0 -113
- package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +0 -1
- package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js +0 -69
- package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +0 -45
- package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js +0 -32
- package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js +0 -33
- package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/file-provider.js +0 -2
- package/dist/esm/lib/parsers/parse-zip/file-provider.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/local-file-header.js +0 -40
- package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js +0 -16
- package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js.map +0 -1
- package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +0 -31
- package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/cd-file-header.js +0 -55
- package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts +0 -36
- package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/data-view-file-provider.js +0 -61
- package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts +0 -18
- package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/end-of-central-directory.js +0 -41
- package/dist/lib/parsers/parse-zip/file-provider.d.ts +0 -36
- package/dist/lib/parsers/parse-zip/file-provider.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/file-provider.js +0 -2
- package/dist/lib/parsers/parse-zip/local-file-header.d.ts +0 -27
- package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/local-file-header.js +0 -53
- package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts +0 -11
- package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/search-from-the-end.js +0 -31
- package/src/lib/parsers/parse-zip/cd-file-header.ts +0 -106
- package/src/lib/parsers/parse-zip/data-view-file-provider.ts +0 -69
- package/src/lib/parsers/parse-zip/end-of-central-directory.ts +0 -78
- package/src/lib/parsers/parse-zip/file-provider.ts +0 -40
- package/src/lib/parsers/parse-zip/local-file-header.ts +0 -91
- package/src/lib/parsers/parse-zip/search-from-the-end.ts +0 -38
package/dist/dist.min.js
CHANGED
|
@@ -1250,32 +1250,33 @@
|
|
|
1250
1250
|
});
|
|
1251
1251
|
|
|
1252
1252
|
// ../worker-utils/src/lib/library-utils/library-utils.ts
|
|
1253
|
-
async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
|
|
1253
|
+
async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
|
|
1254
1254
|
if (moduleName) {
|
|
1255
|
-
libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
|
|
1255
|
+
libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
|
|
1256
1256
|
}
|
|
1257
1257
|
loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
|
|
1258
1258
|
return await loadLibraryPromises[libraryUrl];
|
|
1259
1259
|
}
|
|
1260
|
-
function getLibraryUrl(library, moduleName, options) {
|
|
1261
|
-
if (library.startsWith("http")) {
|
|
1260
|
+
function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
|
|
1261
|
+
if (!options.useLocalLibraries && library.startsWith("http")) {
|
|
1262
1262
|
return library;
|
|
1263
1263
|
}
|
|
1264
|
+
libraryName = libraryName || library;
|
|
1264
1265
|
const modules = options.modules || {};
|
|
1265
|
-
if (modules[
|
|
1266
|
-
return modules[
|
|
1266
|
+
if (modules[libraryName]) {
|
|
1267
|
+
return modules[libraryName];
|
|
1267
1268
|
}
|
|
1268
1269
|
if (!isBrowser2) {
|
|
1269
|
-
return `modules/${moduleName}/dist/libs/${
|
|
1270
|
+
return `modules/${moduleName}/dist/libs/${libraryName}`;
|
|
1270
1271
|
}
|
|
1271
1272
|
if (options.CDN) {
|
|
1272
1273
|
assert2(options.CDN.startsWith("http"));
|
|
1273
|
-
return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${
|
|
1274
|
+
return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${libraryName}`;
|
|
1274
1275
|
}
|
|
1275
1276
|
if (isWorker) {
|
|
1276
|
-
return `../src/libs/${
|
|
1277
|
+
return `../src/libs/${libraryName}`;
|
|
1277
1278
|
}
|
|
1278
|
-
return `modules/${moduleName}/src/libs/${
|
|
1279
|
+
return `modules/${moduleName}/src/libs/${libraryName}`;
|
|
1279
1280
|
}
|
|
1280
1281
|
async function loadLibraryFromFile(libraryUrl) {
|
|
1281
1282
|
if (libraryUrl.endsWith("wasm")) {
|
|
@@ -2672,6 +2673,7 @@
|
|
|
2672
2673
|
mimeType: void 0,
|
|
2673
2674
|
nothrow: false,
|
|
2674
2675
|
log: new ConsoleLog(),
|
|
2676
|
+
useLocalLibraries: false,
|
|
2675
2677
|
CDN: "https://unpkg.com/@loaders.gl",
|
|
2676
2678
|
worker: true,
|
|
2677
2679
|
maxConcurrency: 3,
|
|
@@ -3252,12 +3254,12 @@
|
|
|
3252
3254
|
// ../core/src/lib/loader-utils/get-fetch-function.ts
|
|
3253
3255
|
function getFetchFunction(options, context) {
|
|
3254
3256
|
const globalOptions = getGlobalLoaderOptions();
|
|
3255
|
-
const
|
|
3256
|
-
if (typeof
|
|
3257
|
-
return
|
|
3257
|
+
const loaderOptions = options || globalOptions;
|
|
3258
|
+
if (typeof loaderOptions.fetch === "function") {
|
|
3259
|
+
return loaderOptions.fetch;
|
|
3258
3260
|
}
|
|
3259
|
-
if (isObject(
|
|
3260
|
-
return (url) => fetchFile(url,
|
|
3261
|
+
if (isObject(loaderOptions.fetch)) {
|
|
3262
|
+
return (url) => fetchFile(url, loaderOptions.fetch);
|
|
3261
3263
|
}
|
|
3262
3264
|
if (context?.fetch) {
|
|
3263
3265
|
return context?.fetch;
|
|
@@ -7741,13 +7743,13 @@
|
|
|
7741
7743
|
let wasmBinary;
|
|
7742
7744
|
switch (options.draco && options.draco.decoderType) {
|
|
7743
7745
|
case "js":
|
|
7744
|
-
DracoDecoderModule = await loadLibrary(
|
|
7746
|
+
DracoDecoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER], "draco", options, DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER);
|
|
7745
7747
|
break;
|
|
7746
7748
|
case "wasm":
|
|
7747
7749
|
default:
|
|
7748
7750
|
[DracoDecoderModule, wasmBinary] = await Promise.all([
|
|
7749
|
-
await loadLibrary(
|
|
7750
|
-
await loadLibrary(
|
|
7751
|
+
await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER], "draco", options, DRACO_EXTERNAL_LIBRARIES.DECODER),
|
|
7752
|
+
await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM], "draco", options, DRACO_EXTERNAL_LIBRARIES.DECODER_WASM)
|
|
7751
7753
|
]);
|
|
7752
7754
|
}
|
|
7753
7755
|
DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
|
|
@@ -7765,17 +7767,25 @@
|
|
|
7765
7767
|
});
|
|
7766
7768
|
});
|
|
7767
7769
|
}
|
|
7768
|
-
var DRACO_DECODER_VERSION, DRACO_ENCODER_VERSION, STATIC_DECODER_URL,
|
|
7770
|
+
var DRACO_DECODER_VERSION, DRACO_ENCODER_VERSION, STATIC_DECODER_URL, DRACO_EXTERNAL_LIBRARIES, DRACO_EXTERNAL_LIBRARY_URLS, loadDecoderPromise;
|
|
7769
7771
|
var init_draco_module_loader = __esm({
|
|
7770
7772
|
"../draco/src/lib/draco-module-loader.ts"() {
|
|
7771
7773
|
init_src();
|
|
7772
7774
|
DRACO_DECODER_VERSION = "1.5.5";
|
|
7773
7775
|
DRACO_ENCODER_VERSION = "1.4.1";
|
|
7774
7776
|
STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
|
|
7775
|
-
|
|
7776
|
-
|
|
7777
|
-
|
|
7778
|
-
|
|
7777
|
+
DRACO_EXTERNAL_LIBRARIES = {
|
|
7778
|
+
DECODER: "draco_wasm_wrapper.js",
|
|
7779
|
+
DECODER_WASM: "draco_decoder.wasm",
|
|
7780
|
+
FALLBACK_DECODER: "draco_decoder.js",
|
|
7781
|
+
ENCODER: "draco_encoder.js"
|
|
7782
|
+
};
|
|
7783
|
+
DRACO_EXTERNAL_LIBRARY_URLS = {
|
|
7784
|
+
[DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,
|
|
7785
|
+
[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,
|
|
7786
|
+
[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,
|
|
7787
|
+
[DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`
|
|
7788
|
+
};
|
|
7779
7789
|
}
|
|
7780
7790
|
});
|
|
7781
7791
|
|
|
@@ -7823,8 +7833,8 @@
|
|
|
7823
7833
|
let BASIS = null;
|
|
7824
7834
|
let wasmBinary = null;
|
|
7825
7835
|
[BASIS, wasmBinary] = await Promise.all([
|
|
7826
|
-
await loadLibrary(
|
|
7827
|
-
await loadLibrary(
|
|
7836
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, "textures", options),
|
|
7837
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, "textures", options)
|
|
7828
7838
|
]);
|
|
7829
7839
|
BASIS = BASIS || globalThis.BASIS;
|
|
7830
7840
|
return await initializeBasisTranscoderModule(BASIS, wasmBinary);
|
|
@@ -7854,8 +7864,8 @@
|
|
|
7854
7864
|
let BASIS_ENCODER = null;
|
|
7855
7865
|
let wasmBinary = null;
|
|
7856
7866
|
[BASIS_ENCODER, wasmBinary] = await Promise.all([
|
|
7857
|
-
await loadLibrary(
|
|
7858
|
-
await loadLibrary(
|
|
7867
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
|
|
7868
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
|
|
7859
7869
|
]);
|
|
7860
7870
|
BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
|
|
7861
7871
|
return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
|
|
@@ -7873,13 +7883,16 @@
|
|
|
7873
7883
|
});
|
|
7874
7884
|
});
|
|
7875
7885
|
}
|
|
7876
|
-
var
|
|
7886
|
+
var BASIS_EXTERNAL_LIBRARIES, loadBasisTranscoderPromise, loadBasisEncoderPromise;
|
|
7877
7887
|
var init_basis_module_loader = __esm({
|
|
7878
7888
|
"../textures/src/lib/parsers/basis-module-loader.ts"() {
|
|
7879
7889
|
init_src();
|
|
7880
|
-
|
|
7881
|
-
|
|
7882
|
-
|
|
7890
|
+
BASIS_EXTERNAL_LIBRARIES = {
|
|
7891
|
+
TRANSCODER: "basis_transcoder.js",
|
|
7892
|
+
TRANSCODER_WASM: "basis_transcoder.wasm",
|
|
7893
|
+
ENCODER: "basis_encoder.js",
|
|
7894
|
+
ENCODER_WASM: "basis_encoder.wasm"
|
|
7895
|
+
};
|
|
7883
7896
|
}
|
|
7884
7897
|
});
|
|
7885
7898
|
|
|
@@ -9025,20 +9038,20 @@
|
|
|
9025
9038
|
}
|
|
9026
9039
|
return value;
|
|
9027
9040
|
}
|
|
9028
|
-
var
|
|
9041
|
+
var VERSION8, EMPTY_VALUE, REJECTED_STATUS, I3SAttributeLoader;
|
|
9029
9042
|
var init_i3s_attribute_loader = __esm({
|
|
9030
9043
|
"src/i3s-attribute-loader.ts"() {
|
|
9031
9044
|
init_src3();
|
|
9032
9045
|
init_parse_i3s_attribute();
|
|
9033
9046
|
init_url_utils2();
|
|
9034
|
-
|
|
9047
|
+
VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
9035
9048
|
EMPTY_VALUE = "";
|
|
9036
9049
|
REJECTED_STATUS = "rejected";
|
|
9037
9050
|
I3SAttributeLoader = {
|
|
9038
9051
|
name: "I3S Attribute",
|
|
9039
9052
|
id: "i3s-attribute",
|
|
9040
9053
|
module: "i3s",
|
|
9041
|
-
version:
|
|
9054
|
+
version: VERSION8,
|
|
9042
9055
|
mimeTypes: ["application/binary"],
|
|
9043
9056
|
parse: async (arrayBuffer, options) => parseI3STileAttribute(arrayBuffer, options),
|
|
9044
9057
|
extensions: ["bin"],
|
|
@@ -9521,17 +9534,17 @@
|
|
|
9521
9534
|
}
|
|
9522
9535
|
return await parseI3STileContent(data, tileOptions, tilesetOptions, options, context);
|
|
9523
9536
|
}
|
|
9524
|
-
var
|
|
9537
|
+
var VERSION9, I3SContentLoader;
|
|
9525
9538
|
var init_i3s_content_loader = __esm({
|
|
9526
9539
|
"src/i3s-content-loader.ts"() {
|
|
9527
9540
|
init_parse_i3s_tile_content();
|
|
9528
|
-
|
|
9541
|
+
VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
|
|
9529
9542
|
I3SContentLoader = {
|
|
9530
9543
|
name: "I3S Content (Indexed Scene Layers)",
|
|
9531
9544
|
id: "i3s-content",
|
|
9532
9545
|
module: "i3s",
|
|
9533
9546
|
worker: true,
|
|
9534
|
-
version:
|
|
9547
|
+
version: VERSION9,
|
|
9535
9548
|
mimeTypes: ["application/octet-stream"],
|
|
9536
9549
|
parse: parse3,
|
|
9537
9550
|
extensions: ["bin"],
|
|
@@ -10135,15 +10148,15 @@
|
|
|
10135
10148
|
async function parseNodePage(data, options) {
|
|
10136
10149
|
return JSON.parse(new TextDecoder().decode(data));
|
|
10137
10150
|
}
|
|
10138
|
-
var
|
|
10151
|
+
var VERSION10, I3SNodePageLoader;
|
|
10139
10152
|
var init_i3s_node_page_loader = __esm({
|
|
10140
10153
|
"src/i3s-node-page-loader.ts"() {
|
|
10141
|
-
|
|
10154
|
+
VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
10142
10155
|
I3SNodePageLoader = {
|
|
10143
10156
|
name: "I3S Node Page",
|
|
10144
10157
|
id: "i3s-node-page",
|
|
10145
10158
|
module: "i3s",
|
|
10146
|
-
version:
|
|
10159
|
+
version: VERSION10,
|
|
10147
10160
|
mimeTypes: ["application/json"],
|
|
10148
10161
|
parse: parseNodePage,
|
|
10149
10162
|
extensions: ["json"],
|
|
@@ -10407,6 +10420,7 @@
|
|
|
10407
10420
|
}
|
|
10408
10421
|
return {
|
|
10409
10422
|
...tileset,
|
|
10423
|
+
loader: I3SLoader,
|
|
10410
10424
|
url,
|
|
10411
10425
|
basePath: url,
|
|
10412
10426
|
type: TILESET_TYPE.I3S,
|
|
@@ -10478,14 +10492,14 @@
|
|
|
10478
10492
|
}
|
|
10479
10493
|
return null;
|
|
10480
10494
|
}
|
|
10481
|
-
var
|
|
10495
|
+
var VERSION11, TILESET_REGEX, TILE_HEADER_REGEX, SLPK_HEX, POINT_CLOUD, I3SLoader;
|
|
10482
10496
|
var init_i3s_loader = __esm({
|
|
10483
10497
|
"src/i3s-loader.ts"() {
|
|
10484
10498
|
init_src3();
|
|
10485
10499
|
init_i3s_content_loader();
|
|
10486
10500
|
init_parse_i3s();
|
|
10487
10501
|
init_constants();
|
|
10488
|
-
|
|
10502
|
+
VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
10489
10503
|
TILESET_REGEX = /layers\/[0-9]+$/;
|
|
10490
10504
|
TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
|
|
10491
10505
|
SLPK_HEX = "504b0304";
|
|
@@ -10494,7 +10508,7 @@
|
|
|
10494
10508
|
name: "I3S (Indexed Scene Layers)",
|
|
10495
10509
|
id: "i3s",
|
|
10496
10510
|
module: "i3s",
|
|
10497
|
-
version:
|
|
10511
|
+
version: VERSION11,
|
|
10498
10512
|
mimeTypes: ["application/octet-stream"],
|
|
10499
10513
|
parse: parseI3S,
|
|
10500
10514
|
extensions: ["bin"],
|
|
@@ -10518,6 +10532,264 @@
|
|
|
10518
10532
|
}
|
|
10519
10533
|
});
|
|
10520
10534
|
|
|
10535
|
+
// ../zip/src/parse-zip/cd-file-header.ts
|
|
10536
|
+
var offsets, signature, parseZipCDFileHeader;
|
|
10537
|
+
var init_cd_file_header = __esm({
|
|
10538
|
+
"../zip/src/parse-zip/cd-file-header.ts"() {
|
|
10539
|
+
offsets = {
|
|
10540
|
+
CD_COMPRESSED_SIZE_OFFSET: 20n,
|
|
10541
|
+
CD_UNCOMPRESSED_SIZE_OFFSET: 24n,
|
|
10542
|
+
CD_FILE_NAME_LENGTH_OFFSET: 28n,
|
|
10543
|
+
CD_EXTRA_FIELD_LENGTH_OFFSET: 30n,
|
|
10544
|
+
CD_LOCAL_HEADER_OFFSET_OFFSET: 42n,
|
|
10545
|
+
CD_FILE_NAME_OFFSET: 46n
|
|
10546
|
+
};
|
|
10547
|
+
signature = [80, 75, 1, 2];
|
|
10548
|
+
parseZipCDFileHeader = async (headerOffset, buffer) => {
|
|
10549
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(Buffer.from(signature)) !== 0) {
|
|
10550
|
+
return null;
|
|
10551
|
+
}
|
|
10552
|
+
let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets.CD_COMPRESSED_SIZE_OFFSET));
|
|
10553
|
+
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets.CD_UNCOMPRESSED_SIZE_OFFSET));
|
|
10554
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + offsets.CD_EXTRA_FIELD_LENGTH_OFFSET);
|
|
10555
|
+
const fileNameLength = await buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET);
|
|
10556
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength)));
|
|
10557
|
+
const extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10558
|
+
const oldFormatOffset = await buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
10559
|
+
let fileDataOffset = BigInt(oldFormatOffset);
|
|
10560
|
+
let offsetInZip64Data = 4n;
|
|
10561
|
+
if (uncompressedSize === BigInt(4294967295)) {
|
|
10562
|
+
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10563
|
+
offsetInZip64Data += 8n;
|
|
10564
|
+
}
|
|
10565
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
10566
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10567
|
+
offsetInZip64Data += 8n;
|
|
10568
|
+
}
|
|
10569
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
10570
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10571
|
+
}
|
|
10572
|
+
const localHeaderOffset = fileDataOffset;
|
|
10573
|
+
return {
|
|
10574
|
+
compressedSize,
|
|
10575
|
+
uncompressedSize,
|
|
10576
|
+
extraFieldLength,
|
|
10577
|
+
fileNameLength,
|
|
10578
|
+
fileName,
|
|
10579
|
+
extraOffset,
|
|
10580
|
+
localHeaderOffset
|
|
10581
|
+
};
|
|
10582
|
+
};
|
|
10583
|
+
}
|
|
10584
|
+
});
|
|
10585
|
+
|
|
10586
|
+
// ../zip/src/parse-zip/local-file-header.ts
|
|
10587
|
+
var offsets2, signature2, parseZipLocalFileHeader;
|
|
10588
|
+
var init_local_file_header = __esm({
|
|
10589
|
+
"../zip/src/parse-zip/local-file-header.ts"() {
|
|
10590
|
+
offsets2 = {
|
|
10591
|
+
COMPRESSED_SIZE_OFFSET: 18n,
|
|
10592
|
+
UNCOMPRESSED_SIZE_OFFSET: 22n,
|
|
10593
|
+
FILE_NAME_LENGTH_OFFSET: 26n,
|
|
10594
|
+
EXTRA_FIELD_LENGTH_OFFSET: 28n,
|
|
10595
|
+
FILE_NAME_OFFSET: 30n
|
|
10596
|
+
};
|
|
10597
|
+
signature2 = Buffer.from([80, 75, 3, 4]);
|
|
10598
|
+
parseZipLocalFileHeader = async (headerOffset, buffer) => {
|
|
10599
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(signature2) !== 0) {
|
|
10600
|
+
return null;
|
|
10601
|
+
}
|
|
10602
|
+
const fileNameLength = await buffer.getUint16(headerOffset + offsets2.FILE_NAME_LENGTH_OFFSET);
|
|
10603
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets2.FILE_NAME_OFFSET, headerOffset + offsets2.FILE_NAME_OFFSET + BigInt(fileNameLength))).split("\\").join("/");
|
|
10604
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + offsets2.EXTRA_FIELD_LENGTH_OFFSET);
|
|
10605
|
+
let fileDataOffset = headerOffset + offsets2.FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
|
|
10606
|
+
let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets2.COMPRESSED_SIZE_OFFSET));
|
|
10607
|
+
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets2.UNCOMPRESSED_SIZE_OFFSET));
|
|
10608
|
+
const extraOffset = headerOffset + offsets2.FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10609
|
+
let offsetInZip64Data = 4n;
|
|
10610
|
+
if (uncompressedSize === BigInt(4294967295)) {
|
|
10611
|
+
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10612
|
+
offsetInZip64Data += 8n;
|
|
10613
|
+
}
|
|
10614
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
10615
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10616
|
+
offsetInZip64Data += 8n;
|
|
10617
|
+
}
|
|
10618
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
10619
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10620
|
+
}
|
|
10621
|
+
return {
|
|
10622
|
+
fileNameLength,
|
|
10623
|
+
fileName,
|
|
10624
|
+
extraFieldLength,
|
|
10625
|
+
fileDataOffset,
|
|
10626
|
+
compressedSize
|
|
10627
|
+
};
|
|
10628
|
+
};
|
|
10629
|
+
}
|
|
10630
|
+
});
|
|
10631
|
+
|
|
10632
|
+
// ../zip/src/parse-zip/search-from-the-end.ts
|
|
10633
|
+
var searchFromTheEnd;
|
|
10634
|
+
var init_search_from_the_end = __esm({
|
|
10635
|
+
"../zip/src/parse-zip/search-from-the-end.ts"() {
|
|
10636
|
+
searchFromTheEnd = async (file, target) => {
|
|
10637
|
+
const searchWindow = [
|
|
10638
|
+
await file.getUint8(file.length - 1n),
|
|
10639
|
+
await file.getUint8(file.length - 2n),
|
|
10640
|
+
await file.getUint8(file.length - 3n),
|
|
10641
|
+
void 0
|
|
10642
|
+
];
|
|
10643
|
+
let targetOffset = 0n;
|
|
10644
|
+
for (let i2 = file.length - 4n; i2 > -1; i2--) {
|
|
10645
|
+
searchWindow[3] = searchWindow[2];
|
|
10646
|
+
searchWindow[2] = searchWindow[1];
|
|
10647
|
+
searchWindow[1] = searchWindow[0];
|
|
10648
|
+
searchWindow[0] = await file.getUint8(i2);
|
|
10649
|
+
if (searchWindow.every((val, index) => val === target[index])) {
|
|
10650
|
+
targetOffset = i2;
|
|
10651
|
+
break;
|
|
10652
|
+
}
|
|
10653
|
+
}
|
|
10654
|
+
return targetOffset;
|
|
10655
|
+
};
|
|
10656
|
+
}
|
|
10657
|
+
});
|
|
10658
|
+
|
|
10659
|
+
// ../zip/src/parse-zip/end-of-central-directory.ts
|
|
10660
|
+
var eoCDSignature, zip64EoCDLocatorSignature, zip64EoCDSignature, offsets3, parseEoCDRecord;
|
|
10661
|
+
var init_end_of_central_directory = __esm({
|
|
10662
|
+
"../zip/src/parse-zip/end-of-central-directory.ts"() {
|
|
10663
|
+
init_search_from_the_end();
|
|
10664
|
+
eoCDSignature = [80, 75, 5, 6];
|
|
10665
|
+
zip64EoCDLocatorSignature = Buffer.from([80, 75, 6, 7]);
|
|
10666
|
+
zip64EoCDSignature = Buffer.from([80, 75, 6, 6]);
|
|
10667
|
+
offsets3 = {
|
|
10668
|
+
CD_RECORDS_NUMBER_OFFSET: 8n,
|
|
10669
|
+
CD_START_OFFSET_OFFSET: 16n,
|
|
10670
|
+
ZIP64_EOCD_START_OFFSET_OFFSET: 8n,
|
|
10671
|
+
ZIP64_CD_RECORDS_NUMBER_OFFSET: 24n,
|
|
10672
|
+
ZIP64_CD_START_OFFSET_OFFSET: 48n
|
|
10673
|
+
};
|
|
10674
|
+
parseEoCDRecord = async (fileProvider) => {
|
|
10675
|
+
const zipEoCDOffset = await searchFromTheEnd(fileProvider, eoCDSignature);
|
|
10676
|
+
let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset + offsets3.CD_RECORDS_NUMBER_OFFSET));
|
|
10677
|
+
let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset + offsets3.CD_START_OFFSET_OFFSET));
|
|
10678
|
+
if (cdStartOffset === BigInt(4294967295) || cdRecordsNumber === BigInt(4294967295)) {
|
|
10679
|
+
const zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
|
|
10680
|
+
if (Buffer.from(await fileProvider.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n)).compare(zip64EoCDLocatorSignature) !== 0) {
|
|
10681
|
+
throw new Error("zip64 EoCD locator not found");
|
|
10682
|
+
}
|
|
10683
|
+
const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset + offsets3.ZIP64_EOCD_START_OFFSET_OFFSET);
|
|
10684
|
+
if (Buffer.from(await fileProvider.slice(zip64EoCDOffset, zip64EoCDOffset + 4n)).compare(zip64EoCDSignature) !== 0) {
|
|
10685
|
+
throw new Error("zip64 EoCD not found");
|
|
10686
|
+
}
|
|
10687
|
+
cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset + offsets3.ZIP64_CD_RECORDS_NUMBER_OFFSET);
|
|
10688
|
+
cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset + offsets3.ZIP64_CD_START_OFFSET_OFFSET);
|
|
10689
|
+
}
|
|
10690
|
+
return {
|
|
10691
|
+
cdRecordsNumber,
|
|
10692
|
+
cdStartOffset
|
|
10693
|
+
};
|
|
10694
|
+
};
|
|
10695
|
+
}
|
|
10696
|
+
});
|
|
10697
|
+
|
|
10698
|
+
// ../zip/src/parse-zip/data-view-file.ts
|
|
10699
|
+
var toNumber, DataViewFile;
|
|
10700
|
+
var init_data_view_file = __esm({
|
|
10701
|
+
"../zip/src/parse-zip/data-view-file.ts"() {
|
|
10702
|
+
toNumber = (bigint) => {
|
|
10703
|
+
if (bigint > Number.MAX_SAFE_INTEGER) {
|
|
10704
|
+
throw new Error("Offset is out of bounds");
|
|
10705
|
+
}
|
|
10706
|
+
return Number(bigint);
|
|
10707
|
+
};
|
|
10708
|
+
DataViewFile = class {
|
|
10709
|
+
constructor(file) {
|
|
10710
|
+
this.file = file;
|
|
10711
|
+
}
|
|
10712
|
+
async getUint8(offset) {
|
|
10713
|
+
return this.file.getUint8(toNumber(offset));
|
|
10714
|
+
}
|
|
10715
|
+
async getUint16(offset) {
|
|
10716
|
+
return this.file.getUint16(toNumber(offset), true);
|
|
10717
|
+
}
|
|
10718
|
+
async getUint32(offset) {
|
|
10719
|
+
return this.file.getUint32(toNumber(offset), true);
|
|
10720
|
+
}
|
|
10721
|
+
async getBigUint64(offset) {
|
|
10722
|
+
return this.file.getBigUint64(toNumber(offset), true);
|
|
10723
|
+
}
|
|
10724
|
+
async slice(startOffset, endOffset) {
|
|
10725
|
+
return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
|
|
10726
|
+
}
|
|
10727
|
+
get length() {
|
|
10728
|
+
return BigInt(this.file.byteLength);
|
|
10729
|
+
}
|
|
10730
|
+
};
|
|
10731
|
+
}
|
|
10732
|
+
});
|
|
10733
|
+
|
|
10734
|
+
// ../zip/src/hash-file-utility.ts
|
|
10735
|
+
var compareHashes, parseHashFile, findBin;
|
|
10736
|
+
var init_hash_file_utility = __esm({
|
|
10737
|
+
"../zip/src/hash-file-utility.ts"() {
|
|
10738
|
+
compareHashes = (hash1, hash2) => {
|
|
10739
|
+
const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
|
|
10740
|
+
const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
|
|
10741
|
+
const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
|
|
10742
|
+
if (diff < 0n) {
|
|
10743
|
+
return -1;
|
|
10744
|
+
} else if (diff === 0n) {
|
|
10745
|
+
return 0;
|
|
10746
|
+
}
|
|
10747
|
+
return 1;
|
|
10748
|
+
};
|
|
10749
|
+
parseHashFile = (hashFile) => {
|
|
10750
|
+
const hashFileBuffer = Buffer.from(hashFile);
|
|
10751
|
+
const hashArray = [];
|
|
10752
|
+
for (let i2 = 0; i2 < hashFileBuffer.buffer.byteLength; i2 = i2 + 24) {
|
|
10753
|
+
const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i2 + 16, hashFileBuffer.byteOffset + i2 + 24));
|
|
10754
|
+
const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
|
|
10755
|
+
hashArray.push({
|
|
10756
|
+
hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i2, hashFileBuffer.byteOffset + i2 + 16)),
|
|
10757
|
+
offset
|
|
10758
|
+
});
|
|
10759
|
+
}
|
|
10760
|
+
return hashArray;
|
|
10761
|
+
};
|
|
10762
|
+
findBin = (hashToSearch, hashArray) => {
|
|
10763
|
+
let lowerBorder = 0;
|
|
10764
|
+
let upperBorder = hashArray.length;
|
|
10765
|
+
while (upperBorder - lowerBorder > 1) {
|
|
10766
|
+
const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
|
|
10767
|
+
const value = compareHashes(hashArray[middle].hash, hashToSearch);
|
|
10768
|
+
if (value === 0) {
|
|
10769
|
+
return hashArray[middle];
|
|
10770
|
+
} else if (value < 0) {
|
|
10771
|
+
lowerBorder = middle;
|
|
10772
|
+
} else {
|
|
10773
|
+
upperBorder = middle;
|
|
10774
|
+
}
|
|
10775
|
+
}
|
|
10776
|
+
return void 0;
|
|
10777
|
+
};
|
|
10778
|
+
}
|
|
10779
|
+
});
|
|
10780
|
+
|
|
10781
|
+
// ../zip/src/index.ts
|
|
10782
|
+
var init_src9 = __esm({
|
|
10783
|
+
"../zip/src/index.ts"() {
|
|
10784
|
+
init_cd_file_header();
|
|
10785
|
+
init_local_file_header();
|
|
10786
|
+
init_end_of_central_directory();
|
|
10787
|
+
init_search_from_the_end();
|
|
10788
|
+
init_data_view_file();
|
|
10789
|
+
init_hash_file_utility();
|
|
10790
|
+
}
|
|
10791
|
+
});
|
|
10792
|
+
|
|
10521
10793
|
// ../../node_modules/crypt/crypt.js
|
|
10522
10794
|
var require_crypt = __commonJS({
|
|
10523
10795
|
"../../node_modules/crypt/crypt.js"(exports, module) {
|
|
@@ -10756,169 +11028,6 @@
|
|
|
10756
11028
|
}
|
|
10757
11029
|
});
|
|
10758
11030
|
|
|
10759
|
-
// src/lib/parsers/parse-zip/cd-file-header.ts
|
|
10760
|
-
var offsets, signature, parseZipCDFileHeader;
|
|
10761
|
-
var init_cd_file_header = __esm({
|
|
10762
|
-
"src/lib/parsers/parse-zip/cd-file-header.ts"() {
|
|
10763
|
-
offsets = {
|
|
10764
|
-
CD_COMPRESSED_SIZE_OFFSET: 20n,
|
|
10765
|
-
CD_UNCOMPRESSED_SIZE_OFFSET: 24n,
|
|
10766
|
-
CD_FILE_NAME_LENGTH_OFFSET: 28n,
|
|
10767
|
-
CD_EXTRA_FIELD_LENGTH_OFFSET: 30n,
|
|
10768
|
-
CD_LOCAL_HEADER_OFFSET_OFFSET: 42n,
|
|
10769
|
-
CD_FILE_NAME_OFFSET: 46n
|
|
10770
|
-
};
|
|
10771
|
-
signature = [80, 75, 1, 2];
|
|
10772
|
-
parseZipCDFileHeader = async (headerOffset, buffer) => {
|
|
10773
|
-
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(Buffer.from(signature)) !== 0) {
|
|
10774
|
-
return null;
|
|
10775
|
-
}
|
|
10776
|
-
let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets.CD_COMPRESSED_SIZE_OFFSET));
|
|
10777
|
-
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets.CD_UNCOMPRESSED_SIZE_OFFSET));
|
|
10778
|
-
const extraFieldLength = await buffer.getUint16(headerOffset + offsets.CD_EXTRA_FIELD_LENGTH_OFFSET);
|
|
10779
|
-
const fileNameLength = await buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET);
|
|
10780
|
-
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength)));
|
|
10781
|
-
const extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10782
|
-
const oldFormatOffset = await buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
10783
|
-
let fileDataOffset = BigInt(oldFormatOffset);
|
|
10784
|
-
let offsetInZip64Data = 4n;
|
|
10785
|
-
if (uncompressedSize === BigInt(4294967295)) {
|
|
10786
|
-
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10787
|
-
offsetInZip64Data += 8n;
|
|
10788
|
-
}
|
|
10789
|
-
if (compressedSize === BigInt(4294967295)) {
|
|
10790
|
-
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10791
|
-
offsetInZip64Data += 8n;
|
|
10792
|
-
}
|
|
10793
|
-
if (fileDataOffset === BigInt(4294967295)) {
|
|
10794
|
-
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10795
|
-
}
|
|
10796
|
-
const localHeaderOffset = fileDataOffset;
|
|
10797
|
-
return {
|
|
10798
|
-
compressedSize,
|
|
10799
|
-
uncompressedSize,
|
|
10800
|
-
extraFieldLength,
|
|
10801
|
-
fileNameLength,
|
|
10802
|
-
fileName,
|
|
10803
|
-
extraOffset,
|
|
10804
|
-
localHeaderOffset
|
|
10805
|
-
};
|
|
10806
|
-
};
|
|
10807
|
-
}
|
|
10808
|
-
});
|
|
10809
|
-
|
|
10810
|
-
// src/lib/parsers/parse-zip/search-from-the-end.ts
|
|
10811
|
-
var searchFromTheEnd;
|
|
10812
|
-
var init_search_from_the_end = __esm({
|
|
10813
|
-
"src/lib/parsers/parse-zip/search-from-the-end.ts"() {
|
|
10814
|
-
searchFromTheEnd = async (file, target) => {
|
|
10815
|
-
const searchWindow = [
|
|
10816
|
-
await file.getUint8(file.length - 1n),
|
|
10817
|
-
await file.getUint8(file.length - 2n),
|
|
10818
|
-
await file.getUint8(file.length - 3n),
|
|
10819
|
-
void 0
|
|
10820
|
-
];
|
|
10821
|
-
let targetOffset = 0n;
|
|
10822
|
-
for (let i2 = file.length - 4n; i2 > -1; i2--) {
|
|
10823
|
-
searchWindow[3] = searchWindow[2];
|
|
10824
|
-
searchWindow[2] = searchWindow[1];
|
|
10825
|
-
searchWindow[1] = searchWindow[0];
|
|
10826
|
-
searchWindow[0] = await file.getUint8(i2);
|
|
10827
|
-
if (searchWindow.every((val, index) => val === target[index])) {
|
|
10828
|
-
targetOffset = i2;
|
|
10829
|
-
break;
|
|
10830
|
-
}
|
|
10831
|
-
}
|
|
10832
|
-
return targetOffset;
|
|
10833
|
-
};
|
|
10834
|
-
}
|
|
10835
|
-
});
|
|
10836
|
-
|
|
10837
|
-
// src/lib/parsers/parse-zip/end-of-central-directory.ts
|
|
10838
|
-
var eoCDSignature, zip64EoCDLocatorSignature, zip64EoCDSignature, offsets2, parseEoCDRecord;
|
|
10839
|
-
var init_end_of_central_directory = __esm({
|
|
10840
|
-
"src/lib/parsers/parse-zip/end-of-central-directory.ts"() {
|
|
10841
|
-
init_search_from_the_end();
|
|
10842
|
-
eoCDSignature = [80, 75, 5, 6];
|
|
10843
|
-
zip64EoCDLocatorSignature = Buffer.from([80, 75, 6, 7]);
|
|
10844
|
-
zip64EoCDSignature = Buffer.from([80, 75, 6, 6]);
|
|
10845
|
-
offsets2 = {
|
|
10846
|
-
CD_RECORDS_NUMBER_OFFSET: 8n,
|
|
10847
|
-
CD_START_OFFSET_OFFSET: 16n,
|
|
10848
|
-
ZIP64_EOCD_START_OFFSET_OFFSET: 8n,
|
|
10849
|
-
ZIP64_CD_RECORDS_NUMBER_OFFSET: 24n,
|
|
10850
|
-
ZIP64_CD_START_OFFSET_OFFSET: 48n
|
|
10851
|
-
};
|
|
10852
|
-
parseEoCDRecord = async (fileProvider) => {
|
|
10853
|
-
const zipEoCDOffset = await searchFromTheEnd(fileProvider, eoCDSignature);
|
|
10854
|
-
let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset + offsets2.CD_RECORDS_NUMBER_OFFSET));
|
|
10855
|
-
let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset + offsets2.CD_START_OFFSET_OFFSET));
|
|
10856
|
-
if (cdStartOffset === BigInt(4294967295) || cdRecordsNumber === BigInt(4294967295)) {
|
|
10857
|
-
const zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
|
|
10858
|
-
if (Buffer.from(await fileProvider.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n)).compare(zip64EoCDLocatorSignature) !== 0) {
|
|
10859
|
-
throw new Error("zip64 EoCD locator not found");
|
|
10860
|
-
}
|
|
10861
|
-
const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset + offsets2.ZIP64_EOCD_START_OFFSET_OFFSET);
|
|
10862
|
-
if (Buffer.from(await fileProvider.slice(zip64EoCDOffset, zip64EoCDOffset + 4n)).compare(zip64EoCDSignature) !== 0) {
|
|
10863
|
-
throw new Error("zip64 EoCD not found");
|
|
10864
|
-
}
|
|
10865
|
-
cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset + offsets2.ZIP64_CD_RECORDS_NUMBER_OFFSET);
|
|
10866
|
-
cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset + offsets2.ZIP64_CD_START_OFFSET_OFFSET);
|
|
10867
|
-
}
|
|
10868
|
-
return {
|
|
10869
|
-
cdRecordsNumber,
|
|
10870
|
-
cdStartOffset
|
|
10871
|
-
};
|
|
10872
|
-
};
|
|
10873
|
-
}
|
|
10874
|
-
});
|
|
10875
|
-
|
|
10876
|
-
// src/lib/parsers/parse-zip/local-file-header.ts
|
|
10877
|
-
var offsets3, signature2, parseZipLocalFileHeader;
|
|
10878
|
-
var init_local_file_header = __esm({
|
|
10879
|
-
"src/lib/parsers/parse-zip/local-file-header.ts"() {
|
|
10880
|
-
offsets3 = {
|
|
10881
|
-
COMPRESSED_SIZE_OFFSET: 18n,
|
|
10882
|
-
UNCOMPRESSED_SIZE_OFFSET: 22n,
|
|
10883
|
-
FILE_NAME_LENGTH_OFFSET: 26n,
|
|
10884
|
-
EXTRA_FIELD_LENGTH_OFFSET: 28n,
|
|
10885
|
-
FILE_NAME_OFFSET: 30n
|
|
10886
|
-
};
|
|
10887
|
-
signature2 = Buffer.from([80, 75, 3, 4]);
|
|
10888
|
-
parseZipLocalFileHeader = async (headerOffset, buffer) => {
|
|
10889
|
-
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(signature2) !== 0) {
|
|
10890
|
-
return null;
|
|
10891
|
-
}
|
|
10892
|
-
const fileNameLength = await buffer.getUint16(headerOffset + offsets3.FILE_NAME_LENGTH_OFFSET);
|
|
10893
|
-
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets3.FILE_NAME_OFFSET, headerOffset + offsets3.FILE_NAME_OFFSET + BigInt(fileNameLength))).split("\\").join("/");
|
|
10894
|
-
const extraFieldLength = await buffer.getUint16(headerOffset + offsets3.EXTRA_FIELD_LENGTH_OFFSET);
|
|
10895
|
-
let fileDataOffset = headerOffset + offsets3.FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
|
|
10896
|
-
let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets3.COMPRESSED_SIZE_OFFSET));
|
|
10897
|
-
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets3.UNCOMPRESSED_SIZE_OFFSET));
|
|
10898
|
-
const extraOffset = headerOffset + offsets3.FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10899
|
-
let offsetInZip64Data = 4n;
|
|
10900
|
-
if (uncompressedSize === BigInt(4294967295)) {
|
|
10901
|
-
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10902
|
-
offsetInZip64Data += 8n;
|
|
10903
|
-
}
|
|
10904
|
-
if (compressedSize === BigInt(4294967295)) {
|
|
10905
|
-
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10906
|
-
offsetInZip64Data += 8n;
|
|
10907
|
-
}
|
|
10908
|
-
if (fileDataOffset === BigInt(4294967295)) {
|
|
10909
|
-
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10910
|
-
}
|
|
10911
|
-
return {
|
|
10912
|
-
fileNameLength,
|
|
10913
|
-
fileName,
|
|
10914
|
-
extraFieldLength,
|
|
10915
|
-
fileDataOffset,
|
|
10916
|
-
compressedSize
|
|
10917
|
-
};
|
|
10918
|
-
};
|
|
10919
|
-
}
|
|
10920
|
-
});
|
|
10921
|
-
|
|
10922
11031
|
// ../compression/src/lib/compression.ts
|
|
10923
11032
|
var Compression;
|
|
10924
11033
|
var init_compression = __esm({
|
|
@@ -15200,30 +15309,19 @@
|
|
|
15200
15309
|
});
|
|
15201
15310
|
|
|
15202
15311
|
// ../compression/src/index.ts
|
|
15203
|
-
var
|
|
15312
|
+
var init_src10 = __esm({
|
|
15204
15313
|
"../compression/src/index.ts"() {
|
|
15205
15314
|
init_gzip_compression();
|
|
15206
15315
|
}
|
|
15207
15316
|
});
|
|
15208
15317
|
|
|
15209
15318
|
// src/lib/parsers/parse-slpk/slpk-archieve.ts
|
|
15210
|
-
var import_md5,
|
|
15319
|
+
var import_md5, PATH_DESCRIPTIONS, SLPKArchive;
|
|
15211
15320
|
var init_slpk_archieve = __esm({
|
|
15212
15321
|
"src/lib/parsers/parse-slpk/slpk-archieve.ts"() {
|
|
15213
15322
|
import_md5 = __toModule(require_md5());
|
|
15214
|
-
init_local_file_header();
|
|
15215
15323
|
init_src9();
|
|
15216
|
-
|
|
15217
|
-
const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
|
|
15218
|
-
const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
|
|
15219
|
-
const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
|
|
15220
|
-
if (diff < 0n) {
|
|
15221
|
-
return -1;
|
|
15222
|
-
} else if (diff === 0n) {
|
|
15223
|
-
return 0;
|
|
15224
|
-
}
|
|
15225
|
-
return 1;
|
|
15226
|
-
};
|
|
15324
|
+
init_src10();
|
|
15227
15325
|
PATH_DESCRIPTIONS = [
|
|
15228
15326
|
{
|
|
15229
15327
|
test: /^$/,
|
|
@@ -15260,22 +15358,6 @@
|
|
|
15260
15358
|
];
|
|
15261
15359
|
SLPKArchive = class {
|
|
15262
15360
|
constructor(slpkArchive, hashFile) {
|
|
15263
|
-
this.findBin = (hashToSearch) => {
|
|
15264
|
-
let lowerBorder = 0;
|
|
15265
|
-
let upperBorder = this.hashArray.length;
|
|
15266
|
-
while (upperBorder - lowerBorder > 1) {
|
|
15267
|
-
const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
|
|
15268
|
-
const value = compareHashes(this.hashArray[middle].hash, hashToSearch);
|
|
15269
|
-
if (value === 0) {
|
|
15270
|
-
return this.hashArray[middle];
|
|
15271
|
-
} else if (value < 0) {
|
|
15272
|
-
lowerBorder = middle;
|
|
15273
|
-
} else {
|
|
15274
|
-
upperBorder = middle;
|
|
15275
|
-
}
|
|
15276
|
-
}
|
|
15277
|
-
return void 0;
|
|
15278
|
-
};
|
|
15279
15361
|
this.slpkArchive = slpkArchive;
|
|
15280
15362
|
this.hashArray = hashFile;
|
|
15281
15363
|
}
|
|
@@ -15324,7 +15406,7 @@
|
|
|
15324
15406
|
}
|
|
15325
15407
|
async getFileBytes(path) {
|
|
15326
15408
|
const nameHash = Buffer.from((0, import_md5.default)(path), "hex");
|
|
15327
|
-
const fileInfo =
|
|
15409
|
+
const fileInfo = findBin(nameHash, this.hashArray);
|
|
15328
15410
|
if (!fileInfo) {
|
|
15329
15411
|
return void 0;
|
|
15330
15412
|
}
|
|
@@ -15335,19 +15417,19 @@
|
|
|
15335
15417
|
const compressedFile = this.slpkArchive.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
|
|
15336
15418
|
return compressedFile;
|
|
15337
15419
|
}
|
|
15420
|
+
findBin(nameHash) {
|
|
15421
|
+
throw new Error("Method not implemented.");
|
|
15422
|
+
}
|
|
15338
15423
|
};
|
|
15339
15424
|
}
|
|
15340
15425
|
});
|
|
15341
15426
|
|
|
15342
15427
|
// src/lib/parsers/parse-slpk/parse-slpk.ts
|
|
15343
|
-
var import_md52, parseSLPK, generateHashInfo
|
|
15428
|
+
var import_md52, parseSLPK, generateHashInfo;
|
|
15344
15429
|
var init_parse_slpk = __esm({
|
|
15345
15430
|
"src/lib/parsers/parse-slpk/parse-slpk.ts"() {
|
|
15346
15431
|
import_md52 = __toModule(require_md5());
|
|
15347
|
-
|
|
15348
|
-
init_end_of_central_directory();
|
|
15349
|
-
init_local_file_header();
|
|
15350
|
-
init_search_from_the_end();
|
|
15432
|
+
init_src9();
|
|
15351
15433
|
init_slpk_archieve();
|
|
15352
15434
|
parseSLPK = async (fileProvider, cb) => {
|
|
15353
15435
|
const hashCDOffset = await searchFromTheEnd(fileProvider, signature);
|
|
@@ -15383,73 +15465,24 @@
|
|
|
15383
15465
|
hashInfo.sort((a2, b) => compareHashes(a2.hash, b.hash));
|
|
15384
15466
|
return hashInfo;
|
|
15385
15467
|
};
|
|
15386
|
-
parseHashFile = (hashFile) => {
|
|
15387
|
-
const hashFileBuffer = Buffer.from(hashFile);
|
|
15388
|
-
const hashArray = [];
|
|
15389
|
-
for (let i2 = 0; i2 < hashFileBuffer.buffer.byteLength; i2 = i2 + 24) {
|
|
15390
|
-
const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i2 + 16, hashFileBuffer.byteOffset + i2 + 24));
|
|
15391
|
-
const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
|
|
15392
|
-
hashArray.push({
|
|
15393
|
-
hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i2, hashFileBuffer.byteOffset + i2 + 16)),
|
|
15394
|
-
offset
|
|
15395
|
-
});
|
|
15396
|
-
}
|
|
15397
|
-
return hashArray;
|
|
15398
|
-
};
|
|
15399
|
-
}
|
|
15400
|
-
});
|
|
15401
|
-
|
|
15402
|
-
// src/lib/parsers/parse-zip/data-view-file-provider.ts
|
|
15403
|
-
var toNumber, DataViewFileProvider;
|
|
15404
|
-
var init_data_view_file_provider = __esm({
|
|
15405
|
-
"src/lib/parsers/parse-zip/data-view-file-provider.ts"() {
|
|
15406
|
-
toNumber = (bigint) => {
|
|
15407
|
-
if (bigint > Number.MAX_SAFE_INTEGER) {
|
|
15408
|
-
throw new Error("Offset is out of bounds");
|
|
15409
|
-
}
|
|
15410
|
-
return Number(bigint);
|
|
15411
|
-
};
|
|
15412
|
-
DataViewFileProvider = class {
|
|
15413
|
-
constructor(file) {
|
|
15414
|
-
this.file = file;
|
|
15415
|
-
}
|
|
15416
|
-
async getUint8(offset) {
|
|
15417
|
-
return this.file.getUint8(toNumber(offset));
|
|
15418
|
-
}
|
|
15419
|
-
async getUint16(offset) {
|
|
15420
|
-
return this.file.getUint16(toNumber(offset), true);
|
|
15421
|
-
}
|
|
15422
|
-
async getUint32(offset) {
|
|
15423
|
-
return this.file.getUint32(toNumber(offset), true);
|
|
15424
|
-
}
|
|
15425
|
-
async getBigUint64(offset) {
|
|
15426
|
-
return this.file.getBigUint64(toNumber(offset), true);
|
|
15427
|
-
}
|
|
15428
|
-
async slice(startOffset, endOffset) {
|
|
15429
|
-
return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
|
|
15430
|
-
}
|
|
15431
|
-
get length() {
|
|
15432
|
-
return BigInt(this.file.byteLength);
|
|
15433
|
-
}
|
|
15434
|
-
};
|
|
15435
15468
|
}
|
|
15436
15469
|
});
|
|
15437
15470
|
|
|
15438
15471
|
// src/i3s-slpk-loader.ts
|
|
15439
15472
|
async function parseSLPK2(data, options = {}) {
|
|
15440
|
-
return (await parseSLPK(new
|
|
15473
|
+
return (await parseSLPK(new DataViewFile(new DataView(data)))).getFile(options.slpk?.path ?? "", options.slpk?.pathMode);
|
|
15441
15474
|
}
|
|
15442
|
-
var
|
|
15475
|
+
var VERSION12, SLPKLoader;
|
|
15443
15476
|
var init_i3s_slpk_loader = __esm({
|
|
15444
15477
|
"src/i3s-slpk-loader.ts"() {
|
|
15478
|
+
init_src9();
|
|
15445
15479
|
init_parse_slpk();
|
|
15446
|
-
|
|
15447
|
-
VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
15480
|
+
VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
15448
15481
|
SLPKLoader = {
|
|
15449
15482
|
name: "I3S SLPK (Scene Layer Package)",
|
|
15450
15483
|
id: "slpk",
|
|
15451
15484
|
module: "i3s",
|
|
15452
|
-
version:
|
|
15485
|
+
version: VERSION12,
|
|
15453
15486
|
mimeTypes: ["application/octet-stream"],
|
|
15454
15487
|
parse: parseSLPK2,
|
|
15455
15488
|
extensions: ["slpk"],
|
|
@@ -15502,16 +15535,16 @@
|
|
|
15502
15535
|
}
|
|
15503
15536
|
return parseBuildingSceneLayer(data, context.url);
|
|
15504
15537
|
}
|
|
15505
|
-
var
|
|
15538
|
+
var VERSION13, I3SBuildingSceneLayerLoader;
|
|
15506
15539
|
var init_i3s_building_scene_layer_loader = __esm({
|
|
15507
15540
|
"src/i3s-building-scene-layer-loader.ts"() {
|
|
15508
15541
|
init_parse_i3s_building_scene_layer();
|
|
15509
|
-
|
|
15542
|
+
VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
|
|
15510
15543
|
I3SBuildingSceneLayerLoader = {
|
|
15511
15544
|
name: "I3S Building Scene Layer",
|
|
15512
15545
|
id: "i3s-building-scene-layer",
|
|
15513
15546
|
module: "i3s",
|
|
15514
|
-
version:
|
|
15547
|
+
version: VERSION13,
|
|
15515
15548
|
mimeTypes: ["application/json"],
|
|
15516
15549
|
parse: parse4,
|
|
15517
15550
|
extensions: ["json"],
|
|
@@ -15592,16 +15625,16 @@
|
|
|
15592
15625
|
async function parse5(data) {
|
|
15593
15626
|
return parseWebscene(data);
|
|
15594
15627
|
}
|
|
15595
|
-
var
|
|
15628
|
+
var VERSION14, ArcGisWebSceneLoader;
|
|
15596
15629
|
var init_arcgis_webscene_loader = __esm({
|
|
15597
15630
|
"src/arcgis-webscene-loader.ts"() {
|
|
15598
15631
|
init_parse_arcgis_webscene();
|
|
15599
|
-
|
|
15632
|
+
VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
|
|
15600
15633
|
ArcGisWebSceneLoader = {
|
|
15601
15634
|
name: "ArcGIS Web Scene Loader",
|
|
15602
15635
|
id: "arcgis-web-scene",
|
|
15603
15636
|
module: "i3s",
|
|
15604
|
-
version:
|
|
15637
|
+
version: VERSION14,
|
|
15605
15638
|
mimeTypes: ["application/json"],
|
|
15606
15639
|
parse: parse5,
|
|
15607
15640
|
extensions: ["json"],
|
|
@@ -15622,10 +15655,9 @@
|
|
|
15622
15655
|
I3SNodePageLoader: () => I3SNodePageLoader,
|
|
15623
15656
|
SLPKLoader: () => SLPKLoader,
|
|
15624
15657
|
loadFeatureAttributes: () => loadFeatureAttributes,
|
|
15625
|
-
parseSLPK: () => parseSLPK
|
|
15626
|
-
parseZipLocalFileHeader: () => parseZipLocalFileHeader
|
|
15658
|
+
parseSLPK: () => parseSLPK
|
|
15627
15659
|
});
|
|
15628
|
-
var
|
|
15660
|
+
var init_src11 = __esm({
|
|
15629
15661
|
"src/index.ts"() {
|
|
15630
15662
|
init_constants();
|
|
15631
15663
|
init_i3s_loader();
|
|
@@ -15635,7 +15667,6 @@
|
|
|
15635
15667
|
init_i3s_building_scene_layer_loader();
|
|
15636
15668
|
init_i3s_node_page_loader();
|
|
15637
15669
|
init_arcgis_webscene_loader();
|
|
15638
|
-
init_local_file_header();
|
|
15639
15670
|
init_parse_slpk();
|
|
15640
15671
|
}
|
|
15641
15672
|
});
|
|
@@ -15643,7 +15674,7 @@
|
|
|
15643
15674
|
// src/bundle.ts
|
|
15644
15675
|
var require_bundle = __commonJS({
|
|
15645
15676
|
"src/bundle.ts"(exports, module) {
|
|
15646
|
-
var moduleExports = (
|
|
15677
|
+
var moduleExports = (init_src11(), src_exports);
|
|
15647
15678
|
globalThis.loaders = globalThis.loaders || {};
|
|
15648
15679
|
module.exports = Object.assign(globalThis.loaders, moduleExports);
|
|
15649
15680
|
}
|