@loaders.gl/i3s 4.0.0-alpha.20 → 4.0.0-alpha.22
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 +248 -227
- 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-loader.js.map +1 -1
- package/dist/es5/i3s-node-page-loader.js +1 -1
- package/dist/es5/i3s-slpk-loader.js +1 -1
- package/dist/es5/lib/parsers/parse-i3s-tile-content.js +34 -31
- package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -1
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +1 -48
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.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-loader.js.map +1 -1
- package/dist/esm/i3s-node-page-loader.js +1 -1
- package/dist/esm/i3s-slpk-loader.js +1 -1
- package/dist/esm/lib/parsers/parse-i3s-tile-content.js +5 -2
- package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -1
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +1 -18
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
- package/dist/i3s-content-worker-node.js +39 -39
- package/dist/i3s-content-worker-node.js.map +3 -3
- package/dist/i3s-content-worker.js +43 -30
- package/dist/i3s-loader.d.ts +1 -2
- package/dist/i3s-loader.d.ts.map +1 -1
- 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 +6 -3
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/parse-slpk.js +1 -24
- package/package.json +9 -9
- package/src/i3s-loader.ts +1 -2
- package/src/lib/parsers/parse-i3s-tile-content.ts +6 -4
- package/src/lib/parsers/parse-slpk/parse-slpk.ts +2 -27
package/dist/dist.min.js
CHANGED
|
@@ -713,6 +713,15 @@
|
|
|
713
713
|
}
|
|
714
714
|
});
|
|
715
715
|
|
|
716
|
+
// ../loader-utils/src/loader-types.ts
|
|
717
|
+
async function parseFromContext(data, loaders, options, context) {
|
|
718
|
+
return context._parse(data, loaders, options, context);
|
|
719
|
+
}
|
|
720
|
+
var init_loader_types = __esm({
|
|
721
|
+
"../loader-utils/src/loader-types.ts"() {
|
|
722
|
+
}
|
|
723
|
+
});
|
|
724
|
+
|
|
716
725
|
// ../loader-utils/src/lib/env-utils/assert.ts
|
|
717
726
|
function assert(condition, message) {
|
|
718
727
|
if (!condition) {
|
|
@@ -1768,6 +1777,7 @@
|
|
|
1768
1777
|
// ../loader-utils/src/index.ts
|
|
1769
1778
|
var init_src2 = __esm({
|
|
1770
1779
|
"../loader-utils/src/index.ts"() {
|
|
1780
|
+
init_loader_types();
|
|
1771
1781
|
init_assert();
|
|
1772
1782
|
init_globals();
|
|
1773
1783
|
init_parse_with_worker();
|
|
@@ -1789,7 +1799,7 @@
|
|
|
1789
1799
|
isFunction = (x) => typeof x === "function";
|
|
1790
1800
|
isObject = (x) => x !== null && typeof x === "object";
|
|
1791
1801
|
isPureObject = (x) => isObject(x) && x.constructor === {}.constructor;
|
|
1792
|
-
isIterable = (x) => x && typeof x[Symbol.iterator] === "function";
|
|
1802
|
+
isIterable = (x) => Boolean(x) && typeof x[Symbol.iterator] === "function";
|
|
1793
1803
|
isAsyncIterable = (x) => x && typeof x[Symbol.asyncIterator] === "function";
|
|
1794
1804
|
isResponse = (x) => typeof Response !== "undefined" && x instanceof Response || x && x.arrayBuffer && x.text && x.json;
|
|
1795
1805
|
isBlob = (x) => typeof Blob !== "undefined" && x instanceof Blob;
|
|
@@ -2715,6 +2725,11 @@
|
|
|
2715
2725
|
loaders._state = loaders._state || {};
|
|
2716
2726
|
return loaders._state;
|
|
2717
2727
|
}
|
|
2728
|
+
function getGlobalLoaderOptions() {
|
|
2729
|
+
const state = getGlobalLoaderState();
|
|
2730
|
+
state.globalOptions = state.globalOptions || { ...DEFAULT_LOADER_OPTIONS };
|
|
2731
|
+
return state.globalOptions;
|
|
2732
|
+
}
|
|
2718
2733
|
function normalizeOptions(options, loader, loaders, url) {
|
|
2719
2734
|
loaders = loaders || [];
|
|
2720
2735
|
loaders = Array.isArray(loaders) ? loaders : [loaders];
|
|
@@ -2795,17 +2810,11 @@
|
|
|
2795
2810
|
options.baseUri = url;
|
|
2796
2811
|
}
|
|
2797
2812
|
}
|
|
2798
|
-
var getGlobalLoaderOptions;
|
|
2799
2813
|
var init_option_utils = __esm({
|
|
2800
2814
|
"../core/src/lib/loader-utils/option-utils.ts"() {
|
|
2801
2815
|
init_is_type();
|
|
2802
2816
|
init_loggers();
|
|
2803
2817
|
init_option_defaults();
|
|
2804
|
-
getGlobalLoaderOptions = () => {
|
|
2805
|
-
const state = getGlobalLoaderState();
|
|
2806
|
-
state.globalOptions = state.globalOptions || { ...DEFAULT_LOADER_OPTIONS };
|
|
2807
|
-
return state.globalOptions;
|
|
2808
|
-
};
|
|
2809
2818
|
}
|
|
2810
2819
|
});
|
|
2811
2820
|
|
|
@@ -2926,8 +2935,10 @@
|
|
|
2926
2935
|
reason = reason || (loader ? `matched MIME type ${type}` : "");
|
|
2927
2936
|
loader = loader || findLoaderByInitialBytes(loaders, data);
|
|
2928
2937
|
reason = reason || (loader ? `matched initial data ${getFirstCharacters(data)}` : "");
|
|
2929
|
-
|
|
2930
|
-
|
|
2938
|
+
if (options?.fallbackMimeType) {
|
|
2939
|
+
loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);
|
|
2940
|
+
reason = reason || (loader ? `matched fallback MIME type ${type}` : "");
|
|
2941
|
+
}
|
|
2931
2942
|
if (reason) {
|
|
2932
2943
|
log.log(1, `selectLoader selected ${loader?.name}: ${reason}.`);
|
|
2933
2944
|
}
|
|
@@ -3023,7 +3034,7 @@
|
|
|
3023
3034
|
}
|
|
3024
3035
|
switch (typeof test) {
|
|
3025
3036
|
case "function":
|
|
3026
|
-
return test(data
|
|
3037
|
+
return test(data);
|
|
3027
3038
|
case "string":
|
|
3028
3039
|
const magic = getMagicString(data, byteOffset, test.length);
|
|
3029
3040
|
return test === magic;
|
|
@@ -3296,7 +3307,7 @@
|
|
|
3296
3307
|
return newContext;
|
|
3297
3308
|
}
|
|
3298
3309
|
function getLoadersFromContext(loaders, context) {
|
|
3299
|
-
if (
|
|
3310
|
+
if (loaders && !Array.isArray(loaders)) {
|
|
3300
3311
|
return loaders;
|
|
3301
3312
|
}
|
|
3302
3313
|
let candidateLoaders;
|
|
@@ -3307,7 +3318,7 @@
|
|
|
3307
3318
|
const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];
|
|
3308
3319
|
candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;
|
|
3309
3320
|
}
|
|
3310
|
-
return candidateLoaders && candidateLoaders.length ? candidateLoaders :
|
|
3321
|
+
return candidateLoaders && candidateLoaders.length ? candidateLoaders : void 0;
|
|
3311
3322
|
}
|
|
3312
3323
|
var init_loader_context = __esm({
|
|
3313
3324
|
"../core/src/lib/loader-utils/loader-context.ts"() {
|
|
@@ -3319,7 +3330,6 @@
|
|
|
3319
3330
|
|
|
3320
3331
|
// ../core/src/lib/api/parse.ts
|
|
3321
3332
|
async function parse(data, loaders, options, context) {
|
|
3322
|
-
assert2(!context || typeof context === "object");
|
|
3323
3333
|
if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {
|
|
3324
3334
|
context = void 0;
|
|
3325
3335
|
options = loaders;
|
|
@@ -3335,7 +3345,7 @@
|
|
|
3335
3345
|
return null;
|
|
3336
3346
|
}
|
|
3337
3347
|
options = normalizeOptions(options, loader, candidateLoaders, url);
|
|
3338
|
-
context = getLoaderContext({ url, parse, loaders: candidateLoaders }, options, context || null);
|
|
3348
|
+
context = getLoaderContext({ url, _parse: parse, loaders: candidateLoaders }, options, context || null);
|
|
3339
3349
|
return await parseWithLoader(loader, data, options, context);
|
|
3340
3350
|
}
|
|
3341
3351
|
async function parseWithLoader(loader, data, options, context) {
|
|
@@ -3347,26 +3357,26 @@
|
|
|
3347
3357
|
context.response = { headers, ok, redirected, status, statusText, type, url };
|
|
3348
3358
|
}
|
|
3349
3359
|
data = await getArrayBufferOrStringFromData(data, loader, options);
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
return
|
|
3360
|
+
const loaderWithParser = loader;
|
|
3361
|
+
if (loaderWithParser.parseTextSync && typeof data === "string") {
|
|
3362
|
+
return loaderWithParser.parseTextSync(data, options, context);
|
|
3353
3363
|
}
|
|
3354
3364
|
if (canParseWithWorker(loader, options)) {
|
|
3355
3365
|
return await parseWithWorker(loader, data, options, context, parse);
|
|
3356
3366
|
}
|
|
3357
|
-
if (
|
|
3358
|
-
return await
|
|
3367
|
+
if (loaderWithParser.parseText && typeof data === "string") {
|
|
3368
|
+
return await loaderWithParser.parseText(data, options, context);
|
|
3359
3369
|
}
|
|
3360
|
-
if (
|
|
3361
|
-
return await
|
|
3370
|
+
if (loaderWithParser.parse) {
|
|
3371
|
+
return await loaderWithParser.parse(data, options, context);
|
|
3362
3372
|
}
|
|
3363
|
-
assert2(!
|
|
3373
|
+
assert2(!loaderWithParser.parseSync);
|
|
3364
3374
|
throw new Error(`${loader.id} loader - no parser found and worker is disabled`);
|
|
3365
3375
|
}
|
|
3366
3376
|
var init_parse = __esm({
|
|
3367
3377
|
"../core/src/lib/api/parse.ts"() {
|
|
3368
|
-
init_src();
|
|
3369
3378
|
init_src2();
|
|
3379
|
+
init_src();
|
|
3370
3380
|
init_normalize_loader();
|
|
3371
3381
|
init_is_type();
|
|
3372
3382
|
init_option_utils();
|
|
@@ -9168,9 +9178,11 @@
|
|
|
9168
9178
|
if (loader === ImageLoader) {
|
|
9169
9179
|
const options2 = { ...tileOptions.textureLoaderOptions, image: { type: "data" } };
|
|
9170
9180
|
try {
|
|
9171
|
-
|
|
9181
|
+
const texture = await parseFromContext(arrayBuffer2, [], options2, context);
|
|
9182
|
+
content.texture = texture;
|
|
9172
9183
|
} catch (e2) {
|
|
9173
|
-
|
|
9184
|
+
const texture = await parse(arrayBuffer2, loader, options2, context);
|
|
9185
|
+
content.texture = texture;
|
|
9174
9186
|
}
|
|
9175
9187
|
} else if (loader === CompressedTextureLoader || loader === BasisLoader) {
|
|
9176
9188
|
let texture = await load(arrayBuffer2, loader, tileOptions.textureLoaderOptions);
|
|
@@ -9512,6 +9524,7 @@
|
|
|
9512
9524
|
init_src3();
|
|
9513
9525
|
init_esm2();
|
|
9514
9526
|
init_esm3();
|
|
9527
|
+
init_src2();
|
|
9515
9528
|
init_src4();
|
|
9516
9529
|
init_src6();
|
|
9517
9530
|
init_src7();
|
|
@@ -10532,99 +10545,40 @@
|
|
|
10532
10545
|
}
|
|
10533
10546
|
});
|
|
10534
10547
|
|
|
10535
|
-
// ../zip/src/
|
|
10536
|
-
var
|
|
10537
|
-
var
|
|
10538
|
-
"../zip/src/
|
|
10539
|
-
|
|
10540
|
-
|
|
10541
|
-
|
|
10542
|
-
|
|
10543
|
-
|
|
10544
|
-
CD_LOCAL_HEADER_OFFSET_OFFSET: 42n,
|
|
10545
|
-
CD_FILE_NAME_OFFSET: 46n
|
|
10548
|
+
// ../zip/src/file-provider/data-view-file.ts
|
|
10549
|
+
var toNumber, DataViewFile;
|
|
10550
|
+
var init_data_view_file = __esm({
|
|
10551
|
+
"../zip/src/file-provider/data-view-file.ts"() {
|
|
10552
|
+
toNumber = (bigint) => {
|
|
10553
|
+
if (bigint > Number.MAX_SAFE_INTEGER) {
|
|
10554
|
+
throw new Error("Offset is out of bounds");
|
|
10555
|
+
}
|
|
10556
|
+
return Number(bigint);
|
|
10546
10557
|
};
|
|
10547
|
-
|
|
10548
|
-
|
|
10549
|
-
|
|
10550
|
-
return null;
|
|
10558
|
+
DataViewFile = class {
|
|
10559
|
+
constructor(file) {
|
|
10560
|
+
this.file = file;
|
|
10551
10561
|
}
|
|
10552
|
-
|
|
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;
|
|
10562
|
+
async destroy() {
|
|
10564
10563
|
}
|
|
10565
|
-
|
|
10566
|
-
|
|
10567
|
-
offsetInZip64Data += 8n;
|
|
10564
|
+
async getUint8(offset) {
|
|
10565
|
+
return this.file.getUint8(toNumber(offset));
|
|
10568
10566
|
}
|
|
10569
|
-
|
|
10570
|
-
|
|
10567
|
+
async getUint16(offset) {
|
|
10568
|
+
return this.file.getUint16(toNumber(offset), true);
|
|
10571
10569
|
}
|
|
10572
|
-
|
|
10573
|
-
|
|
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;
|
|
10570
|
+
async getUint32(offset) {
|
|
10571
|
+
return this.file.getUint32(toNumber(offset), true);
|
|
10601
10572
|
}
|
|
10602
|
-
|
|
10603
|
-
|
|
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;
|
|
10573
|
+
async getBigUint64(offset) {
|
|
10574
|
+
return this.file.getBigUint64(toNumber(offset), true);
|
|
10613
10575
|
}
|
|
10614
|
-
|
|
10615
|
-
|
|
10616
|
-
offsetInZip64Data += 8n;
|
|
10576
|
+
async slice(startOffset, endOffset) {
|
|
10577
|
+
return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
|
|
10617
10578
|
}
|
|
10618
|
-
|
|
10619
|
-
|
|
10579
|
+
get length() {
|
|
10580
|
+
return BigInt(this.file.byteLength);
|
|
10620
10581
|
}
|
|
10621
|
-
return {
|
|
10622
|
-
fileNameLength,
|
|
10623
|
-
fileName,
|
|
10624
|
-
extraFieldLength,
|
|
10625
|
-
fileDataOffset,
|
|
10626
|
-
compressedSize
|
|
10627
|
-
};
|
|
10628
10582
|
};
|
|
10629
10583
|
}
|
|
10630
10584
|
});
|
|
@@ -10657,35 +10611,33 @@
|
|
|
10657
10611
|
});
|
|
10658
10612
|
|
|
10659
10613
|
// ../zip/src/parse-zip/end-of-central-directory.ts
|
|
10660
|
-
var eoCDSignature, zip64EoCDLocatorSignature, zip64EoCDSignature,
|
|
10614
|
+
var eoCDSignature, zip64EoCDLocatorSignature, zip64EoCDSignature, CD_RECORDS_NUMBER_OFFSET, CD_START_OFFSET_OFFSET, ZIP64_EOCD_START_OFFSET_OFFSET, ZIP64_CD_RECORDS_NUMBER_OFFSET, ZIP64_CD_START_OFFSET_OFFSET, parseEoCDRecord;
|
|
10661
10615
|
var init_end_of_central_directory = __esm({
|
|
10662
10616
|
"../zip/src/parse-zip/end-of-central-directory.ts"() {
|
|
10663
10617
|
init_search_from_the_end();
|
|
10664
10618
|
eoCDSignature = [80, 75, 5, 6];
|
|
10665
10619
|
zip64EoCDLocatorSignature = Buffer.from([80, 75, 6, 7]);
|
|
10666
10620
|
zip64EoCDSignature = Buffer.from([80, 75, 6, 6]);
|
|
10667
|
-
|
|
10668
|
-
|
|
10669
|
-
|
|
10670
|
-
|
|
10671
|
-
|
|
10672
|
-
ZIP64_CD_START_OFFSET_OFFSET: 48n
|
|
10673
|
-
};
|
|
10621
|
+
CD_RECORDS_NUMBER_OFFSET = 8n;
|
|
10622
|
+
CD_START_OFFSET_OFFSET = 16n;
|
|
10623
|
+
ZIP64_EOCD_START_OFFSET_OFFSET = 8n;
|
|
10624
|
+
ZIP64_CD_RECORDS_NUMBER_OFFSET = 24n;
|
|
10625
|
+
ZIP64_CD_START_OFFSET_OFFSET = 48n;
|
|
10674
10626
|
parseEoCDRecord = async (fileProvider) => {
|
|
10675
10627
|
const zipEoCDOffset = await searchFromTheEnd(fileProvider, eoCDSignature);
|
|
10676
|
-
let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset +
|
|
10677
|
-
let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset +
|
|
10628
|
+
let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset + CD_RECORDS_NUMBER_OFFSET));
|
|
10629
|
+
let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset + CD_START_OFFSET_OFFSET));
|
|
10678
10630
|
if (cdStartOffset === BigInt(4294967295) || cdRecordsNumber === BigInt(4294967295)) {
|
|
10679
10631
|
const zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
|
|
10680
10632
|
if (Buffer.from(await fileProvider.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n)).compare(zip64EoCDLocatorSignature) !== 0) {
|
|
10681
10633
|
throw new Error("zip64 EoCD locator not found");
|
|
10682
10634
|
}
|
|
10683
|
-
const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset +
|
|
10635
|
+
const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET);
|
|
10684
10636
|
if (Buffer.from(await fileProvider.slice(zip64EoCDOffset, zip64EoCDOffset + 4n)).compare(zip64EoCDSignature) !== 0) {
|
|
10685
10637
|
throw new Error("zip64 EoCD not found");
|
|
10686
10638
|
}
|
|
10687
|
-
cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset +
|
|
10688
|
-
cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset +
|
|
10639
|
+
cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset + ZIP64_CD_RECORDS_NUMBER_OFFSET);
|
|
10640
|
+
cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset + ZIP64_CD_START_OFFSET_OFFSET);
|
|
10689
10641
|
}
|
|
10690
10642
|
return {
|
|
10691
10643
|
cdRecordsNumber,
|
|
@@ -10695,101 +10647,111 @@
|
|
|
10695
10647
|
}
|
|
10696
10648
|
});
|
|
10697
10649
|
|
|
10698
|
-
// ../zip/src/parse-zip/
|
|
10699
|
-
|
|
10700
|
-
|
|
10701
|
-
|
|
10702
|
-
|
|
10703
|
-
|
|
10704
|
-
|
|
10705
|
-
|
|
10706
|
-
|
|
10707
|
-
|
|
10708
|
-
|
|
10709
|
-
|
|
10710
|
-
|
|
10711
|
-
|
|
10712
|
-
|
|
10713
|
-
|
|
10714
|
-
|
|
10715
|
-
|
|
10716
|
-
|
|
10717
|
-
|
|
10718
|
-
|
|
10719
|
-
|
|
10650
|
+
// ../zip/src/parse-zip/cd-file-header.ts
|
|
10651
|
+
async function* zipCDFileHeaderGenerator(fileProvider) {
|
|
10652
|
+
const { cdStartOffset } = await parseEoCDRecord(fileProvider);
|
|
10653
|
+
let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);
|
|
10654
|
+
while (cdHeader) {
|
|
10655
|
+
yield cdHeader;
|
|
10656
|
+
cdHeader = await parseZipCDFileHeader(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
|
|
10657
|
+
}
|
|
10658
|
+
}
|
|
10659
|
+
var CD_COMPRESSED_SIZE_OFFSET, CD_UNCOMPRESSED_SIZE_OFFSET, CD_FILE_NAME_LENGTH_OFFSET, CD_EXTRA_FIELD_LENGTH_OFFSET, CD_LOCAL_HEADER_OFFSET_OFFSET, CD_FILE_NAME_OFFSET, signature, parseZipCDFileHeader;
|
|
10660
|
+
var init_cd_file_header = __esm({
|
|
10661
|
+
"../zip/src/parse-zip/cd-file-header.ts"() {
|
|
10662
|
+
init_end_of_central_directory();
|
|
10663
|
+
CD_COMPRESSED_SIZE_OFFSET = 20n;
|
|
10664
|
+
CD_UNCOMPRESSED_SIZE_OFFSET = 24n;
|
|
10665
|
+
CD_FILE_NAME_LENGTH_OFFSET = 28n;
|
|
10666
|
+
CD_EXTRA_FIELD_LENGTH_OFFSET = 30n;
|
|
10667
|
+
CD_LOCAL_HEADER_OFFSET_OFFSET = 42n;
|
|
10668
|
+
CD_FILE_NAME_OFFSET = 46n;
|
|
10669
|
+
signature = [80, 75, 1, 2];
|
|
10670
|
+
parseZipCDFileHeader = async (headerOffset, buffer) => {
|
|
10671
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(Buffer.from(signature)) !== 0) {
|
|
10672
|
+
return null;
|
|
10720
10673
|
}
|
|
10721
|
-
|
|
10722
|
-
|
|
10674
|
+
let compressedSize = BigInt(await buffer.getUint32(headerOffset + CD_COMPRESSED_SIZE_OFFSET));
|
|
10675
|
+
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + CD_UNCOMPRESSED_SIZE_OFFSET));
|
|
10676
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + CD_EXTRA_FIELD_LENGTH_OFFSET);
|
|
10677
|
+
const fileNameLength = await buffer.getUint16(headerOffset + CD_FILE_NAME_LENGTH_OFFSET);
|
|
10678
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + CD_FILE_NAME_OFFSET, headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength)));
|
|
10679
|
+
const extraOffset = headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10680
|
+
const oldFormatOffset = await buffer.getUint32(headerOffset + CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
10681
|
+
let fileDataOffset = BigInt(oldFormatOffset);
|
|
10682
|
+
let offsetInZip64Data = 4n;
|
|
10683
|
+
if (uncompressedSize === BigInt(4294967295)) {
|
|
10684
|
+
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10685
|
+
offsetInZip64Data += 8n;
|
|
10723
10686
|
}
|
|
10724
|
-
|
|
10725
|
-
|
|
10687
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
10688
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10689
|
+
offsetInZip64Data += 8n;
|
|
10726
10690
|
}
|
|
10727
|
-
|
|
10728
|
-
|
|
10691
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
10692
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10729
10693
|
}
|
|
10694
|
+
const localHeaderOffset = fileDataOffset;
|
|
10695
|
+
return {
|
|
10696
|
+
compressedSize,
|
|
10697
|
+
uncompressedSize,
|
|
10698
|
+
extraFieldLength,
|
|
10699
|
+
fileNameLength,
|
|
10700
|
+
fileName,
|
|
10701
|
+
extraOffset,
|
|
10702
|
+
localHeaderOffset
|
|
10703
|
+
};
|
|
10730
10704
|
};
|
|
10731
10705
|
}
|
|
10732
10706
|
});
|
|
10733
10707
|
|
|
10734
|
-
// ../zip/src/
|
|
10735
|
-
var
|
|
10736
|
-
var
|
|
10737
|
-
"../zip/src/
|
|
10738
|
-
|
|
10739
|
-
|
|
10740
|
-
|
|
10741
|
-
|
|
10742
|
-
|
|
10743
|
-
|
|
10744
|
-
|
|
10745
|
-
|
|
10708
|
+
// ../zip/src/parse-zip/local-file-header.ts
|
|
10709
|
+
var COMPRESSION_METHOD_OFFSET, COMPRESSED_SIZE_OFFSET, UNCOMPRESSED_SIZE_OFFSET, FILE_NAME_LENGTH_OFFSET, EXTRA_FIELD_LENGTH_OFFSET, FILE_NAME_OFFSET, signature2, parseZipLocalFileHeader;
|
|
10710
|
+
var init_local_file_header = __esm({
|
|
10711
|
+
"../zip/src/parse-zip/local-file-header.ts"() {
|
|
10712
|
+
COMPRESSION_METHOD_OFFSET = 8n;
|
|
10713
|
+
COMPRESSED_SIZE_OFFSET = 18n;
|
|
10714
|
+
UNCOMPRESSED_SIZE_OFFSET = 22n;
|
|
10715
|
+
FILE_NAME_LENGTH_OFFSET = 26n;
|
|
10716
|
+
EXTRA_FIELD_LENGTH_OFFSET = 28n;
|
|
10717
|
+
FILE_NAME_OFFSET = 30n;
|
|
10718
|
+
signature2 = Buffer.from([80, 75, 3, 4]);
|
|
10719
|
+
parseZipLocalFileHeader = async (headerOffset, buffer) => {
|
|
10720
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(signature2) !== 0) {
|
|
10721
|
+
return null;
|
|
10746
10722
|
}
|
|
10747
|
-
|
|
10748
|
-
|
|
10749
|
-
|
|
10750
|
-
|
|
10751
|
-
const
|
|
10752
|
-
|
|
10753
|
-
|
|
10754
|
-
|
|
10755
|
-
|
|
10756
|
-
|
|
10757
|
-
|
|
10758
|
-
|
|
10723
|
+
const fileNameLength = await buffer.getUint16(headerOffset + FILE_NAME_LENGTH_OFFSET);
|
|
10724
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + FILE_NAME_OFFSET, headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength))).split("\\").join("/");
|
|
10725
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + EXTRA_FIELD_LENGTH_OFFSET);
|
|
10726
|
+
let fileDataOffset = headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
|
|
10727
|
+
const compressionMethod = await buffer.getUint16(headerOffset + COMPRESSION_METHOD_OFFSET);
|
|
10728
|
+
let compressedSize = BigInt(await buffer.getUint32(headerOffset + COMPRESSED_SIZE_OFFSET));
|
|
10729
|
+
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + UNCOMPRESSED_SIZE_OFFSET));
|
|
10730
|
+
const extraOffset = headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10731
|
+
let offsetInZip64Data = 4n;
|
|
10732
|
+
if (uncompressedSize === BigInt(4294967295)) {
|
|
10733
|
+
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10734
|
+
offsetInZip64Data += 8n;
|
|
10759
10735
|
}
|
|
10760
|
-
|
|
10761
|
-
|
|
10762
|
-
|
|
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
|
-
}
|
|
10736
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
10737
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10738
|
+
offsetInZip64Data += 8n;
|
|
10775
10739
|
}
|
|
10776
|
-
|
|
10740
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
10741
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10742
|
+
}
|
|
10743
|
+
return {
|
|
10744
|
+
fileNameLength,
|
|
10745
|
+
fileName,
|
|
10746
|
+
extraFieldLength,
|
|
10747
|
+
fileDataOffset,
|
|
10748
|
+
compressedSize,
|
|
10749
|
+
compressionMethod
|
|
10750
|
+
};
|
|
10777
10751
|
};
|
|
10778
10752
|
}
|
|
10779
10753
|
});
|
|
10780
10754
|
|
|
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
|
-
|
|
10793
10755
|
// ../../node_modules/crypt/crypt.js
|
|
10794
10756
|
var require_crypt = __commonJS({
|
|
10795
10757
|
"../../node_modules/crypt/crypt.js"(exports, module) {
|
|
@@ -11028,6 +10990,67 @@
|
|
|
11028
10990
|
}
|
|
11029
10991
|
});
|
|
11030
10992
|
|
|
10993
|
+
// ../zip/src/hash-file-utility.ts
|
|
10994
|
+
var import_md5, compareHashes, parseHashFile, findBin, generateHashInfo;
|
|
10995
|
+
var init_hash_file_utility = __esm({
|
|
10996
|
+
"../zip/src/hash-file-utility.ts"() {
|
|
10997
|
+
import_md5 = __toModule(require_md5());
|
|
10998
|
+
init_cd_file_header();
|
|
10999
|
+
compareHashes = (hash1, hash2) => {
|
|
11000
|
+
const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
|
|
11001
|
+
const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
|
|
11002
|
+
const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
|
|
11003
|
+
if (diff < 0n) {
|
|
11004
|
+
return -1;
|
|
11005
|
+
} else if (diff === 0n) {
|
|
11006
|
+
return 0;
|
|
11007
|
+
}
|
|
11008
|
+
return 1;
|
|
11009
|
+
};
|
|
11010
|
+
parseHashFile = (hashFile) => {
|
|
11011
|
+
const hashFileBuffer = Buffer.from(hashFile);
|
|
11012
|
+
const hashArray = [];
|
|
11013
|
+
for (let i2 = 0; i2 < hashFileBuffer.buffer.byteLength; i2 = i2 + 24) {
|
|
11014
|
+
const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i2 + 16, hashFileBuffer.byteOffset + i2 + 24));
|
|
11015
|
+
const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
|
|
11016
|
+
hashArray.push({
|
|
11017
|
+
hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i2, hashFileBuffer.byteOffset + i2 + 16)),
|
|
11018
|
+
offset
|
|
11019
|
+
});
|
|
11020
|
+
}
|
|
11021
|
+
return hashArray;
|
|
11022
|
+
};
|
|
11023
|
+
findBin = (hashToSearch, hashArray) => {
|
|
11024
|
+
let lowerBorder = 0;
|
|
11025
|
+
let upperBorder = hashArray.length;
|
|
11026
|
+
while (upperBorder - lowerBorder > 1) {
|
|
11027
|
+
const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
|
|
11028
|
+
const value = compareHashes(hashArray[middle].hash, hashToSearch);
|
|
11029
|
+
if (value === 0) {
|
|
11030
|
+
return hashArray[middle];
|
|
11031
|
+
} else if (value < 0) {
|
|
11032
|
+
lowerBorder = middle;
|
|
11033
|
+
} else {
|
|
11034
|
+
upperBorder = middle;
|
|
11035
|
+
}
|
|
11036
|
+
}
|
|
11037
|
+
return void 0;
|
|
11038
|
+
};
|
|
11039
|
+
generateHashInfo = async (fileProvider) => {
|
|
11040
|
+
const zipCDIterator = zipCDFileHeaderGenerator(fileProvider);
|
|
11041
|
+
const hashInfo = [];
|
|
11042
|
+
for await (const cdHeader of zipCDIterator) {
|
|
11043
|
+
hashInfo.push({
|
|
11044
|
+
hash: Buffer.from((0, import_md5.default)(cdHeader.fileName.split("\\").join("/").toLocaleLowerCase()), "hex"),
|
|
11045
|
+
offset: cdHeader.localHeaderOffset
|
|
11046
|
+
});
|
|
11047
|
+
}
|
|
11048
|
+
hashInfo.sort((a2, b) => compareHashes(a2.hash, b.hash));
|
|
11049
|
+
return hashInfo;
|
|
11050
|
+
};
|
|
11051
|
+
}
|
|
11052
|
+
});
|
|
11053
|
+
|
|
11031
11054
|
// ../compression/src/lib/compression.ts
|
|
11032
11055
|
var Compression;
|
|
11033
11056
|
var init_compression = __esm({
|
|
@@ -15220,7 +15243,8 @@
|
|
|
15220
15243
|
}
|
|
15221
15244
|
const pakoOptions = this.options?.deflate || {};
|
|
15222
15245
|
const inputArray = new Uint8Array(input);
|
|
15223
|
-
|
|
15246
|
+
const deflate = this.options?.raw ? import_pako.default.deflateRaw : import_pako.default.deflate;
|
|
15247
|
+
return deflate(inputArray, pakoOptions).buffer;
|
|
15224
15248
|
}
|
|
15225
15249
|
decompressSync(input) {
|
|
15226
15250
|
if (!isBrowser && this.options.deflate?.useZlib) {
|
|
@@ -15229,7 +15253,8 @@
|
|
|
15229
15253
|
}
|
|
15230
15254
|
const pakoOptions = this.options?.deflate || {};
|
|
15231
15255
|
const inputArray = new Uint8Array(input);
|
|
15232
|
-
|
|
15256
|
+
const inflate = this.options?.raw ? import_pako.default.inflateRaw : import_pako.default.inflate;
|
|
15257
|
+
return inflate(inputArray, pakoOptions).buffer;
|
|
15233
15258
|
}
|
|
15234
15259
|
async *compressBatches(asyncIterator) {
|
|
15235
15260
|
const pakoOptions = this.options?.deflate || {};
|
|
@@ -15309,19 +15334,30 @@
|
|
|
15309
15334
|
});
|
|
15310
15335
|
|
|
15311
15336
|
// ../compression/src/index.ts
|
|
15312
|
-
var
|
|
15337
|
+
var init_src9 = __esm({
|
|
15313
15338
|
"../compression/src/index.ts"() {
|
|
15314
15339
|
init_gzip_compression();
|
|
15315
15340
|
}
|
|
15316
15341
|
});
|
|
15317
15342
|
|
|
15343
|
+
// ../zip/src/index.ts
|
|
15344
|
+
var init_src10 = __esm({
|
|
15345
|
+
"../zip/src/index.ts"() {
|
|
15346
|
+
init_data_view_file();
|
|
15347
|
+
init_cd_file_header();
|
|
15348
|
+
init_local_file_header();
|
|
15349
|
+
init_search_from_the_end();
|
|
15350
|
+
init_hash_file_utility();
|
|
15351
|
+
}
|
|
15352
|
+
});
|
|
15353
|
+
|
|
15318
15354
|
// src/lib/parsers/parse-slpk/slpk-archieve.ts
|
|
15319
|
-
var
|
|
15355
|
+
var import_md52, PATH_DESCRIPTIONS, SLPKArchive;
|
|
15320
15356
|
var init_slpk_archieve = __esm({
|
|
15321
15357
|
"src/lib/parsers/parse-slpk/slpk-archieve.ts"() {
|
|
15322
|
-
|
|
15323
|
-
init_src9();
|
|
15358
|
+
import_md52 = __toModule(require_md5());
|
|
15324
15359
|
init_src10();
|
|
15360
|
+
init_src9();
|
|
15325
15361
|
PATH_DESCRIPTIONS = [
|
|
15326
15362
|
{
|
|
15327
15363
|
test: /^$/,
|
|
@@ -15405,7 +15441,7 @@
|
|
|
15405
15441
|
return Buffer.from(data);
|
|
15406
15442
|
}
|
|
15407
15443
|
async getFileBytes(path) {
|
|
15408
|
-
const nameHash = Buffer.from((0,
|
|
15444
|
+
const nameHash = Buffer.from((0, import_md52.default)(path), "hex");
|
|
15409
15445
|
const fileInfo = findBin(nameHash, this.hashArray);
|
|
15410
15446
|
if (!fileInfo) {
|
|
15411
15447
|
return void 0;
|
|
@@ -15425,11 +15461,10 @@
|
|
|
15425
15461
|
});
|
|
15426
15462
|
|
|
15427
15463
|
// src/lib/parsers/parse-slpk/parse-slpk.ts
|
|
15428
|
-
var
|
|
15464
|
+
var parseSLPK;
|
|
15429
15465
|
var init_parse_slpk = __esm({
|
|
15430
15466
|
"src/lib/parsers/parse-slpk/parse-slpk.ts"() {
|
|
15431
|
-
|
|
15432
|
-
init_src9();
|
|
15467
|
+
init_src10();
|
|
15433
15468
|
init_slpk_archieve();
|
|
15434
15469
|
parseSLPK = async (fileProvider, cb) => {
|
|
15435
15470
|
const hashCDOffset = await searchFromTheEnd(fileProvider, signature);
|
|
@@ -15451,20 +15486,6 @@
|
|
|
15451
15486
|
}
|
|
15452
15487
|
return new SLPKArchive(fileProvider, hashData);
|
|
15453
15488
|
};
|
|
15454
|
-
generateHashInfo = async (fileProvider) => {
|
|
15455
|
-
const { cdStartOffset } = await parseEoCDRecord(fileProvider);
|
|
15456
|
-
let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);
|
|
15457
|
-
const hashInfo = [];
|
|
15458
|
-
while (cdHeader) {
|
|
15459
|
-
hashInfo.push({
|
|
15460
|
-
hash: Buffer.from((0, import_md52.default)(cdHeader.fileName.split("\\").join("/").toLocaleLowerCase()), "hex"),
|
|
15461
|
-
offset: cdHeader.localHeaderOffset
|
|
15462
|
-
});
|
|
15463
|
-
cdHeader = await parseZipCDFileHeader(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
|
|
15464
|
-
}
|
|
15465
|
-
hashInfo.sort((a2, b) => compareHashes(a2.hash, b.hash));
|
|
15466
|
-
return hashInfo;
|
|
15467
|
-
};
|
|
15468
15489
|
}
|
|
15469
15490
|
});
|
|
15470
15491
|
|
|
@@ -15475,7 +15496,7 @@
|
|
|
15475
15496
|
var VERSION12, SLPKLoader;
|
|
15476
15497
|
var init_i3s_slpk_loader = __esm({
|
|
15477
15498
|
"src/i3s-slpk-loader.ts"() {
|
|
15478
|
-
|
|
15499
|
+
init_src10();
|
|
15479
15500
|
init_parse_slpk();
|
|
15480
15501
|
VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
15481
15502
|
SLPKLoader = {
|