@loaders.gl/i3s 4.0.0-alpha.19 → 4.0.0-alpha.21
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 +300 -275
- 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-slpk/parse-slpk.js +6 -69
- 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/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-slpk/parse-slpk.js +2 -35
- 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/i3s-content-worker-node.js +2 -2
- package/dist/i3s-content-worker-node.js.map +2 -2
- package/dist/i3s-content-worker.js +21 -21
- 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-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 +6 -50
- 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/package.json +9 -9
- package/src/i3s-slpk-loader.ts +2 -2
- package/src/index.ts +0 -2
- package/src/lib/parsers/parse-slpk/parse-slpk.ts +11 -56
- package/src/lib/parsers/parse-slpk/slpk-archieve.ts +5 -54
- 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
|
@@ -1789,7 +1789,7 @@
|
|
|
1789
1789
|
isFunction = (x) => typeof x === "function";
|
|
1790
1790
|
isObject = (x) => x !== null && typeof x === "object";
|
|
1791
1791
|
isPureObject = (x) => isObject(x) && x.constructor === {}.constructor;
|
|
1792
|
-
isIterable = (x) => x && typeof x[Symbol.iterator] === "function";
|
|
1792
|
+
isIterable = (x) => Boolean(x) && typeof x[Symbol.iterator] === "function";
|
|
1793
1793
|
isAsyncIterable = (x) => x && typeof x[Symbol.asyncIterator] === "function";
|
|
1794
1794
|
isResponse = (x) => typeof Response !== "undefined" && x instanceof Response || x && x.arrayBuffer && x.text && x.json;
|
|
1795
1795
|
isBlob = (x) => typeof Blob !== "undefined" && x instanceof Blob;
|
|
@@ -3254,12 +3254,12 @@
|
|
|
3254
3254
|
// ../core/src/lib/loader-utils/get-fetch-function.ts
|
|
3255
3255
|
function getFetchFunction(options, context) {
|
|
3256
3256
|
const globalOptions = getGlobalLoaderOptions();
|
|
3257
|
-
const
|
|
3258
|
-
if (typeof
|
|
3259
|
-
return
|
|
3257
|
+
const loaderOptions = options || globalOptions;
|
|
3258
|
+
if (typeof loaderOptions.fetch === "function") {
|
|
3259
|
+
return loaderOptions.fetch;
|
|
3260
3260
|
}
|
|
3261
|
-
if (isObject(
|
|
3262
|
-
return (url) => fetchFile(url,
|
|
3261
|
+
if (isObject(loaderOptions.fetch)) {
|
|
3262
|
+
return (url) => fetchFile(url, loaderOptions.fetch);
|
|
3263
3263
|
}
|
|
3264
3264
|
if (context?.fetch) {
|
|
3265
3265
|
return context?.fetch;
|
|
@@ -3347,26 +3347,26 @@
|
|
|
3347
3347
|
context.response = { headers, ok, redirected, status, statusText, type, url };
|
|
3348
3348
|
}
|
|
3349
3349
|
data = await getArrayBufferOrStringFromData(data, loader, options);
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
return
|
|
3350
|
+
const loaderWithParser = loader;
|
|
3351
|
+
if (loaderWithParser.parseTextSync && typeof data === "string") {
|
|
3352
|
+
return loaderWithParser.parseTextSync(data, options, context);
|
|
3353
3353
|
}
|
|
3354
3354
|
if (canParseWithWorker(loader, options)) {
|
|
3355
3355
|
return await parseWithWorker(loader, data, options, context, parse);
|
|
3356
3356
|
}
|
|
3357
|
-
if (
|
|
3358
|
-
return await
|
|
3357
|
+
if (loaderWithParser.parseText && typeof data === "string") {
|
|
3358
|
+
return await loaderWithParser.parseText(data, options, context);
|
|
3359
3359
|
}
|
|
3360
|
-
if (
|
|
3361
|
-
return await
|
|
3360
|
+
if (loaderWithParser.parse) {
|
|
3361
|
+
return await loaderWithParser.parse(data, options, context);
|
|
3362
3362
|
}
|
|
3363
|
-
assert2(!
|
|
3363
|
+
assert2(!loaderWithParser.parseSync);
|
|
3364
3364
|
throw new Error(`${loader.id} loader - no parser found and worker is disabled`);
|
|
3365
3365
|
}
|
|
3366
3366
|
var init_parse = __esm({
|
|
3367
3367
|
"../core/src/lib/api/parse.ts"() {
|
|
3368
|
-
init_src();
|
|
3369
3368
|
init_src2();
|
|
3369
|
+
init_src();
|
|
3370
3370
|
init_normalize_loader();
|
|
3371
3371
|
init_is_type();
|
|
3372
3372
|
init_option_utils();
|
|
@@ -10532,6 +10532,213 @@
|
|
|
10532
10532
|
}
|
|
10533
10533
|
});
|
|
10534
10534
|
|
|
10535
|
+
// ../zip/src/file-provider/data-view-file.ts
|
|
10536
|
+
var toNumber, DataViewFile;
|
|
10537
|
+
var init_data_view_file = __esm({
|
|
10538
|
+
"../zip/src/file-provider/data-view-file.ts"() {
|
|
10539
|
+
toNumber = (bigint) => {
|
|
10540
|
+
if (bigint > Number.MAX_SAFE_INTEGER) {
|
|
10541
|
+
throw new Error("Offset is out of bounds");
|
|
10542
|
+
}
|
|
10543
|
+
return Number(bigint);
|
|
10544
|
+
};
|
|
10545
|
+
DataViewFile = class {
|
|
10546
|
+
constructor(file) {
|
|
10547
|
+
this.file = file;
|
|
10548
|
+
}
|
|
10549
|
+
async destroy() {
|
|
10550
|
+
}
|
|
10551
|
+
async getUint8(offset) {
|
|
10552
|
+
return this.file.getUint8(toNumber(offset));
|
|
10553
|
+
}
|
|
10554
|
+
async getUint16(offset) {
|
|
10555
|
+
return this.file.getUint16(toNumber(offset), true);
|
|
10556
|
+
}
|
|
10557
|
+
async getUint32(offset) {
|
|
10558
|
+
return this.file.getUint32(toNumber(offset), true);
|
|
10559
|
+
}
|
|
10560
|
+
async getBigUint64(offset) {
|
|
10561
|
+
return this.file.getBigUint64(toNumber(offset), true);
|
|
10562
|
+
}
|
|
10563
|
+
async slice(startOffset, endOffset) {
|
|
10564
|
+
return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
|
|
10565
|
+
}
|
|
10566
|
+
get length() {
|
|
10567
|
+
return BigInt(this.file.byteLength);
|
|
10568
|
+
}
|
|
10569
|
+
};
|
|
10570
|
+
}
|
|
10571
|
+
});
|
|
10572
|
+
|
|
10573
|
+
// ../zip/src/parse-zip/search-from-the-end.ts
|
|
10574
|
+
var searchFromTheEnd;
|
|
10575
|
+
var init_search_from_the_end = __esm({
|
|
10576
|
+
"../zip/src/parse-zip/search-from-the-end.ts"() {
|
|
10577
|
+
searchFromTheEnd = async (file, target) => {
|
|
10578
|
+
const searchWindow = [
|
|
10579
|
+
await file.getUint8(file.length - 1n),
|
|
10580
|
+
await file.getUint8(file.length - 2n),
|
|
10581
|
+
await file.getUint8(file.length - 3n),
|
|
10582
|
+
void 0
|
|
10583
|
+
];
|
|
10584
|
+
let targetOffset = 0n;
|
|
10585
|
+
for (let i2 = file.length - 4n; i2 > -1; i2--) {
|
|
10586
|
+
searchWindow[3] = searchWindow[2];
|
|
10587
|
+
searchWindow[2] = searchWindow[1];
|
|
10588
|
+
searchWindow[1] = searchWindow[0];
|
|
10589
|
+
searchWindow[0] = await file.getUint8(i2);
|
|
10590
|
+
if (searchWindow.every((val, index) => val === target[index])) {
|
|
10591
|
+
targetOffset = i2;
|
|
10592
|
+
break;
|
|
10593
|
+
}
|
|
10594
|
+
}
|
|
10595
|
+
return targetOffset;
|
|
10596
|
+
};
|
|
10597
|
+
}
|
|
10598
|
+
});
|
|
10599
|
+
|
|
10600
|
+
// ../zip/src/parse-zip/end-of-central-directory.ts
|
|
10601
|
+
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;
|
|
10602
|
+
var init_end_of_central_directory = __esm({
|
|
10603
|
+
"../zip/src/parse-zip/end-of-central-directory.ts"() {
|
|
10604
|
+
init_search_from_the_end();
|
|
10605
|
+
eoCDSignature = [80, 75, 5, 6];
|
|
10606
|
+
zip64EoCDLocatorSignature = Buffer.from([80, 75, 6, 7]);
|
|
10607
|
+
zip64EoCDSignature = Buffer.from([80, 75, 6, 6]);
|
|
10608
|
+
CD_RECORDS_NUMBER_OFFSET = 8n;
|
|
10609
|
+
CD_START_OFFSET_OFFSET = 16n;
|
|
10610
|
+
ZIP64_EOCD_START_OFFSET_OFFSET = 8n;
|
|
10611
|
+
ZIP64_CD_RECORDS_NUMBER_OFFSET = 24n;
|
|
10612
|
+
ZIP64_CD_START_OFFSET_OFFSET = 48n;
|
|
10613
|
+
parseEoCDRecord = async (fileProvider) => {
|
|
10614
|
+
const zipEoCDOffset = await searchFromTheEnd(fileProvider, eoCDSignature);
|
|
10615
|
+
let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset + CD_RECORDS_NUMBER_OFFSET));
|
|
10616
|
+
let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset + CD_START_OFFSET_OFFSET));
|
|
10617
|
+
if (cdStartOffset === BigInt(4294967295) || cdRecordsNumber === BigInt(4294967295)) {
|
|
10618
|
+
const zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
|
|
10619
|
+
if (Buffer.from(await fileProvider.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n)).compare(zip64EoCDLocatorSignature) !== 0) {
|
|
10620
|
+
throw new Error("zip64 EoCD locator not found");
|
|
10621
|
+
}
|
|
10622
|
+
const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET);
|
|
10623
|
+
if (Buffer.from(await fileProvider.slice(zip64EoCDOffset, zip64EoCDOffset + 4n)).compare(zip64EoCDSignature) !== 0) {
|
|
10624
|
+
throw new Error("zip64 EoCD not found");
|
|
10625
|
+
}
|
|
10626
|
+
cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset + ZIP64_CD_RECORDS_NUMBER_OFFSET);
|
|
10627
|
+
cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset + ZIP64_CD_START_OFFSET_OFFSET);
|
|
10628
|
+
}
|
|
10629
|
+
return {
|
|
10630
|
+
cdRecordsNumber,
|
|
10631
|
+
cdStartOffset
|
|
10632
|
+
};
|
|
10633
|
+
};
|
|
10634
|
+
}
|
|
10635
|
+
});
|
|
10636
|
+
|
|
10637
|
+
// ../zip/src/parse-zip/cd-file-header.ts
|
|
10638
|
+
async function* zipCDFileHeaderGenerator(fileProvider) {
|
|
10639
|
+
const { cdStartOffset } = await parseEoCDRecord(fileProvider);
|
|
10640
|
+
let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);
|
|
10641
|
+
while (cdHeader) {
|
|
10642
|
+
yield cdHeader;
|
|
10643
|
+
cdHeader = await parseZipCDFileHeader(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
|
|
10644
|
+
}
|
|
10645
|
+
}
|
|
10646
|
+
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;
|
|
10647
|
+
var init_cd_file_header = __esm({
|
|
10648
|
+
"../zip/src/parse-zip/cd-file-header.ts"() {
|
|
10649
|
+
init_end_of_central_directory();
|
|
10650
|
+
CD_COMPRESSED_SIZE_OFFSET = 20n;
|
|
10651
|
+
CD_UNCOMPRESSED_SIZE_OFFSET = 24n;
|
|
10652
|
+
CD_FILE_NAME_LENGTH_OFFSET = 28n;
|
|
10653
|
+
CD_EXTRA_FIELD_LENGTH_OFFSET = 30n;
|
|
10654
|
+
CD_LOCAL_HEADER_OFFSET_OFFSET = 42n;
|
|
10655
|
+
CD_FILE_NAME_OFFSET = 46n;
|
|
10656
|
+
signature = [80, 75, 1, 2];
|
|
10657
|
+
parseZipCDFileHeader = async (headerOffset, buffer) => {
|
|
10658
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(Buffer.from(signature)) !== 0) {
|
|
10659
|
+
return null;
|
|
10660
|
+
}
|
|
10661
|
+
let compressedSize = BigInt(await buffer.getUint32(headerOffset + CD_COMPRESSED_SIZE_OFFSET));
|
|
10662
|
+
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + CD_UNCOMPRESSED_SIZE_OFFSET));
|
|
10663
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + CD_EXTRA_FIELD_LENGTH_OFFSET);
|
|
10664
|
+
const fileNameLength = await buffer.getUint16(headerOffset + CD_FILE_NAME_LENGTH_OFFSET);
|
|
10665
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + CD_FILE_NAME_OFFSET, headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength)));
|
|
10666
|
+
const extraOffset = headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10667
|
+
const oldFormatOffset = await buffer.getUint32(headerOffset + CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
10668
|
+
let fileDataOffset = BigInt(oldFormatOffset);
|
|
10669
|
+
let offsetInZip64Data = 4n;
|
|
10670
|
+
if (uncompressedSize === BigInt(4294967295)) {
|
|
10671
|
+
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10672
|
+
offsetInZip64Data += 8n;
|
|
10673
|
+
}
|
|
10674
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
10675
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10676
|
+
offsetInZip64Data += 8n;
|
|
10677
|
+
}
|
|
10678
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
10679
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10680
|
+
}
|
|
10681
|
+
const localHeaderOffset = fileDataOffset;
|
|
10682
|
+
return {
|
|
10683
|
+
compressedSize,
|
|
10684
|
+
uncompressedSize,
|
|
10685
|
+
extraFieldLength,
|
|
10686
|
+
fileNameLength,
|
|
10687
|
+
fileName,
|
|
10688
|
+
extraOffset,
|
|
10689
|
+
localHeaderOffset
|
|
10690
|
+
};
|
|
10691
|
+
};
|
|
10692
|
+
}
|
|
10693
|
+
});
|
|
10694
|
+
|
|
10695
|
+
// ../zip/src/parse-zip/local-file-header.ts
|
|
10696
|
+
var COMPRESSION_METHOD_OFFSET, COMPRESSED_SIZE_OFFSET, UNCOMPRESSED_SIZE_OFFSET, FILE_NAME_LENGTH_OFFSET, EXTRA_FIELD_LENGTH_OFFSET, FILE_NAME_OFFSET, signature2, parseZipLocalFileHeader;
|
|
10697
|
+
var init_local_file_header = __esm({
|
|
10698
|
+
"../zip/src/parse-zip/local-file-header.ts"() {
|
|
10699
|
+
COMPRESSION_METHOD_OFFSET = 8n;
|
|
10700
|
+
COMPRESSED_SIZE_OFFSET = 18n;
|
|
10701
|
+
UNCOMPRESSED_SIZE_OFFSET = 22n;
|
|
10702
|
+
FILE_NAME_LENGTH_OFFSET = 26n;
|
|
10703
|
+
EXTRA_FIELD_LENGTH_OFFSET = 28n;
|
|
10704
|
+
FILE_NAME_OFFSET = 30n;
|
|
10705
|
+
signature2 = Buffer.from([80, 75, 3, 4]);
|
|
10706
|
+
parseZipLocalFileHeader = async (headerOffset, buffer) => {
|
|
10707
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(signature2) !== 0) {
|
|
10708
|
+
return null;
|
|
10709
|
+
}
|
|
10710
|
+
const fileNameLength = await buffer.getUint16(headerOffset + FILE_NAME_LENGTH_OFFSET);
|
|
10711
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + FILE_NAME_OFFSET, headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength))).split("\\").join("/");
|
|
10712
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + EXTRA_FIELD_LENGTH_OFFSET);
|
|
10713
|
+
let fileDataOffset = headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
|
|
10714
|
+
const compressionMethod = await buffer.getUint16(headerOffset + COMPRESSION_METHOD_OFFSET);
|
|
10715
|
+
let compressedSize = BigInt(await buffer.getUint32(headerOffset + COMPRESSED_SIZE_OFFSET));
|
|
10716
|
+
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + UNCOMPRESSED_SIZE_OFFSET));
|
|
10717
|
+
const extraOffset = headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10718
|
+
let offsetInZip64Data = 4n;
|
|
10719
|
+
if (uncompressedSize === BigInt(4294967295)) {
|
|
10720
|
+
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10721
|
+
offsetInZip64Data += 8n;
|
|
10722
|
+
}
|
|
10723
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
10724
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10725
|
+
offsetInZip64Data += 8n;
|
|
10726
|
+
}
|
|
10727
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
10728
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10729
|
+
}
|
|
10730
|
+
return {
|
|
10731
|
+
fileNameLength,
|
|
10732
|
+
fileName,
|
|
10733
|
+
extraFieldLength,
|
|
10734
|
+
fileDataOffset,
|
|
10735
|
+
compressedSize,
|
|
10736
|
+
compressionMethod
|
|
10737
|
+
};
|
|
10738
|
+
};
|
|
10739
|
+
}
|
|
10740
|
+
});
|
|
10741
|
+
|
|
10535
10742
|
// ../../node_modules/crypt/crypt.js
|
|
10536
10743
|
var require_crypt = __commonJS({
|
|
10537
10744
|
"../../node_modules/crypt/crypt.js"(exports, module) {
|
|
@@ -10770,166 +10977,75 @@
|
|
|
10770
10977
|
}
|
|
10771
10978
|
});
|
|
10772
10979
|
|
|
10773
|
-
// src/
|
|
10774
|
-
var
|
|
10775
|
-
var
|
|
10776
|
-
"src/
|
|
10777
|
-
|
|
10778
|
-
|
|
10779
|
-
|
|
10780
|
-
|
|
10781
|
-
|
|
10782
|
-
|
|
10783
|
-
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
|
|
10787
|
-
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(Buffer.from(signature)) !== 0) {
|
|
10788
|
-
return null;
|
|
10789
|
-
}
|
|
10790
|
-
let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets.CD_COMPRESSED_SIZE_OFFSET));
|
|
10791
|
-
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets.CD_UNCOMPRESSED_SIZE_OFFSET));
|
|
10792
|
-
const extraFieldLength = await buffer.getUint16(headerOffset + offsets.CD_EXTRA_FIELD_LENGTH_OFFSET);
|
|
10793
|
-
const fileNameLength = await buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET);
|
|
10794
|
-
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength)));
|
|
10795
|
-
const extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10796
|
-
const oldFormatOffset = await buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
10797
|
-
let fileDataOffset = BigInt(oldFormatOffset);
|
|
10798
|
-
let offsetInZip64Data = 4n;
|
|
10799
|
-
if (uncompressedSize === BigInt(4294967295)) {
|
|
10800
|
-
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10801
|
-
offsetInZip64Data += 8n;
|
|
10802
|
-
}
|
|
10803
|
-
if (compressedSize === BigInt(4294967295)) {
|
|
10804
|
-
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10805
|
-
offsetInZip64Data += 8n;
|
|
10980
|
+
// ../zip/src/hash-file-utility.ts
|
|
10981
|
+
var import_md5, compareHashes, parseHashFile, findBin, generateHashInfo;
|
|
10982
|
+
var init_hash_file_utility = __esm({
|
|
10983
|
+
"../zip/src/hash-file-utility.ts"() {
|
|
10984
|
+
import_md5 = __toModule(require_md5());
|
|
10985
|
+
init_cd_file_header();
|
|
10986
|
+
compareHashes = (hash1, hash2) => {
|
|
10987
|
+
const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
|
|
10988
|
+
const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
|
|
10989
|
+
const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
|
|
10990
|
+
if (diff < 0n) {
|
|
10991
|
+
return -1;
|
|
10992
|
+
} else if (diff === 0n) {
|
|
10993
|
+
return 0;
|
|
10806
10994
|
}
|
|
10807
|
-
|
|
10808
|
-
|
|
10995
|
+
return 1;
|
|
10996
|
+
};
|
|
10997
|
+
parseHashFile = (hashFile) => {
|
|
10998
|
+
const hashFileBuffer = Buffer.from(hashFile);
|
|
10999
|
+
const hashArray = [];
|
|
11000
|
+
for (let i2 = 0; i2 < hashFileBuffer.buffer.byteLength; i2 = i2 + 24) {
|
|
11001
|
+
const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i2 + 16, hashFileBuffer.byteOffset + i2 + 24));
|
|
11002
|
+
const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
|
|
11003
|
+
hashArray.push({
|
|
11004
|
+
hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i2, hashFileBuffer.byteOffset + i2 + 16)),
|
|
11005
|
+
offset
|
|
11006
|
+
});
|
|
10809
11007
|
}
|
|
10810
|
-
|
|
10811
|
-
return {
|
|
10812
|
-
compressedSize,
|
|
10813
|
-
uncompressedSize,
|
|
10814
|
-
extraFieldLength,
|
|
10815
|
-
fileNameLength,
|
|
10816
|
-
fileName,
|
|
10817
|
-
extraOffset,
|
|
10818
|
-
localHeaderOffset
|
|
10819
|
-
};
|
|
11008
|
+
return hashArray;
|
|
10820
11009
|
};
|
|
10821
|
-
|
|
10822
|
-
|
|
10823
|
-
|
|
10824
|
-
|
|
10825
|
-
|
|
10826
|
-
|
|
10827
|
-
|
|
10828
|
-
|
|
10829
|
-
|
|
10830
|
-
|
|
10831
|
-
|
|
10832
|
-
|
|
10833
|
-
void 0
|
|
10834
|
-
];
|
|
10835
|
-
let targetOffset = 0n;
|
|
10836
|
-
for (let i2 = file.length - 4n; i2 > -1; i2--) {
|
|
10837
|
-
searchWindow[3] = searchWindow[2];
|
|
10838
|
-
searchWindow[2] = searchWindow[1];
|
|
10839
|
-
searchWindow[1] = searchWindow[0];
|
|
10840
|
-
searchWindow[0] = await file.getUint8(i2);
|
|
10841
|
-
if (searchWindow.every((val, index) => val === target[index])) {
|
|
10842
|
-
targetOffset = i2;
|
|
10843
|
-
break;
|
|
11010
|
+
findBin = (hashToSearch, hashArray) => {
|
|
11011
|
+
let lowerBorder = 0;
|
|
11012
|
+
let upperBorder = hashArray.length;
|
|
11013
|
+
while (upperBorder - lowerBorder > 1) {
|
|
11014
|
+
const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
|
|
11015
|
+
const value = compareHashes(hashArray[middle].hash, hashToSearch);
|
|
11016
|
+
if (value === 0) {
|
|
11017
|
+
return hashArray[middle];
|
|
11018
|
+
} else if (value < 0) {
|
|
11019
|
+
lowerBorder = middle;
|
|
11020
|
+
} else {
|
|
11021
|
+
upperBorder = middle;
|
|
10844
11022
|
}
|
|
10845
11023
|
}
|
|
10846
|
-
return
|
|
10847
|
-
};
|
|
10848
|
-
}
|
|
10849
|
-
});
|
|
10850
|
-
|
|
10851
|
-
// src/lib/parsers/parse-zip/end-of-central-directory.ts
|
|
10852
|
-
var eoCDSignature, zip64EoCDLocatorSignature, zip64EoCDSignature, offsets2, parseEoCDRecord;
|
|
10853
|
-
var init_end_of_central_directory = __esm({
|
|
10854
|
-
"src/lib/parsers/parse-zip/end-of-central-directory.ts"() {
|
|
10855
|
-
init_search_from_the_end();
|
|
10856
|
-
eoCDSignature = [80, 75, 5, 6];
|
|
10857
|
-
zip64EoCDLocatorSignature = Buffer.from([80, 75, 6, 7]);
|
|
10858
|
-
zip64EoCDSignature = Buffer.from([80, 75, 6, 6]);
|
|
10859
|
-
offsets2 = {
|
|
10860
|
-
CD_RECORDS_NUMBER_OFFSET: 8n,
|
|
10861
|
-
CD_START_OFFSET_OFFSET: 16n,
|
|
10862
|
-
ZIP64_EOCD_START_OFFSET_OFFSET: 8n,
|
|
10863
|
-
ZIP64_CD_RECORDS_NUMBER_OFFSET: 24n,
|
|
10864
|
-
ZIP64_CD_START_OFFSET_OFFSET: 48n
|
|
11024
|
+
return void 0;
|
|
10865
11025
|
};
|
|
10866
|
-
|
|
10867
|
-
const
|
|
10868
|
-
|
|
10869
|
-
|
|
10870
|
-
|
|
10871
|
-
|
|
10872
|
-
|
|
10873
|
-
|
|
10874
|
-
}
|
|
10875
|
-
const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset + offsets2.ZIP64_EOCD_START_OFFSET_OFFSET);
|
|
10876
|
-
if (Buffer.from(await fileProvider.slice(zip64EoCDOffset, zip64EoCDOffset + 4n)).compare(zip64EoCDSignature) !== 0) {
|
|
10877
|
-
throw new Error("zip64 EoCD not found");
|
|
10878
|
-
}
|
|
10879
|
-
cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset + offsets2.ZIP64_CD_RECORDS_NUMBER_OFFSET);
|
|
10880
|
-
cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset + offsets2.ZIP64_CD_START_OFFSET_OFFSET);
|
|
11026
|
+
generateHashInfo = async (fileProvider) => {
|
|
11027
|
+
const zipCDIterator = zipCDFileHeaderGenerator(fileProvider);
|
|
11028
|
+
const hashInfo = [];
|
|
11029
|
+
for await (const cdHeader of zipCDIterator) {
|
|
11030
|
+
hashInfo.push({
|
|
11031
|
+
hash: Buffer.from((0, import_md5.default)(cdHeader.fileName.split("\\").join("/").toLocaleLowerCase()), "hex"),
|
|
11032
|
+
offset: cdHeader.localHeaderOffset
|
|
11033
|
+
});
|
|
10881
11034
|
}
|
|
10882
|
-
|
|
10883
|
-
|
|
10884
|
-
cdStartOffset
|
|
10885
|
-
};
|
|
11035
|
+
hashInfo.sort((a2, b) => compareHashes(a2.hash, b.hash));
|
|
11036
|
+
return hashInfo;
|
|
10886
11037
|
};
|
|
10887
11038
|
}
|
|
10888
11039
|
});
|
|
10889
11040
|
|
|
10890
|
-
// src/
|
|
10891
|
-
var
|
|
10892
|
-
|
|
10893
|
-
|
|
10894
|
-
|
|
10895
|
-
|
|
10896
|
-
|
|
10897
|
-
|
|
10898
|
-
EXTRA_FIELD_LENGTH_OFFSET: 28n,
|
|
10899
|
-
FILE_NAME_OFFSET: 30n
|
|
10900
|
-
};
|
|
10901
|
-
signature2 = Buffer.from([80, 75, 3, 4]);
|
|
10902
|
-
parseZipLocalFileHeader = async (headerOffset, buffer) => {
|
|
10903
|
-
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(signature2) !== 0) {
|
|
10904
|
-
return null;
|
|
10905
|
-
}
|
|
10906
|
-
const fileNameLength = await buffer.getUint16(headerOffset + offsets3.FILE_NAME_LENGTH_OFFSET);
|
|
10907
|
-
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets3.FILE_NAME_OFFSET, headerOffset + offsets3.FILE_NAME_OFFSET + BigInt(fileNameLength))).split("\\").join("/");
|
|
10908
|
-
const extraFieldLength = await buffer.getUint16(headerOffset + offsets3.EXTRA_FIELD_LENGTH_OFFSET);
|
|
10909
|
-
let fileDataOffset = headerOffset + offsets3.FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
|
|
10910
|
-
let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets3.COMPRESSED_SIZE_OFFSET));
|
|
10911
|
-
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets3.UNCOMPRESSED_SIZE_OFFSET));
|
|
10912
|
-
const extraOffset = headerOffset + offsets3.FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10913
|
-
let offsetInZip64Data = 4n;
|
|
10914
|
-
if (uncompressedSize === BigInt(4294967295)) {
|
|
10915
|
-
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10916
|
-
offsetInZip64Data += 8n;
|
|
10917
|
-
}
|
|
10918
|
-
if (compressedSize === BigInt(4294967295)) {
|
|
10919
|
-
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10920
|
-
offsetInZip64Data += 8n;
|
|
10921
|
-
}
|
|
10922
|
-
if (fileDataOffset === BigInt(4294967295)) {
|
|
10923
|
-
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10924
|
-
}
|
|
10925
|
-
return {
|
|
10926
|
-
fileNameLength,
|
|
10927
|
-
fileName,
|
|
10928
|
-
extraFieldLength,
|
|
10929
|
-
fileDataOffset,
|
|
10930
|
-
compressedSize
|
|
10931
|
-
};
|
|
10932
|
-
};
|
|
11041
|
+
// ../zip/src/index.ts
|
|
11042
|
+
var init_src9 = __esm({
|
|
11043
|
+
"../zip/src/index.ts"() {
|
|
11044
|
+
init_data_view_file();
|
|
11045
|
+
init_cd_file_header();
|
|
11046
|
+
init_local_file_header();
|
|
11047
|
+
init_search_from_the_end();
|
|
11048
|
+
init_hash_file_utility();
|
|
10933
11049
|
}
|
|
10934
11050
|
});
|
|
10935
11051
|
|
|
@@ -15125,7 +15241,8 @@
|
|
|
15125
15241
|
}
|
|
15126
15242
|
const pakoOptions = this.options?.deflate || {};
|
|
15127
15243
|
const inputArray = new Uint8Array(input);
|
|
15128
|
-
|
|
15244
|
+
const deflate = this.options?.raw ? import_pako.default.deflateRaw : import_pako.default.deflate;
|
|
15245
|
+
return deflate(inputArray, pakoOptions).buffer;
|
|
15129
15246
|
}
|
|
15130
15247
|
decompressSync(input) {
|
|
15131
15248
|
if (!isBrowser && this.options.deflate?.useZlib) {
|
|
@@ -15134,7 +15251,8 @@
|
|
|
15134
15251
|
}
|
|
15135
15252
|
const pakoOptions = this.options?.deflate || {};
|
|
15136
15253
|
const inputArray = new Uint8Array(input);
|
|
15137
|
-
|
|
15254
|
+
const inflate = this.options?.raw ? import_pako.default.inflateRaw : import_pako.default.inflate;
|
|
15255
|
+
return inflate(inputArray, pakoOptions).buffer;
|
|
15138
15256
|
}
|
|
15139
15257
|
async *compressBatches(asyncIterator) {
|
|
15140
15258
|
const pakoOptions = this.options?.deflate || {};
|
|
@@ -15214,30 +15332,19 @@
|
|
|
15214
15332
|
});
|
|
15215
15333
|
|
|
15216
15334
|
// ../compression/src/index.ts
|
|
15217
|
-
var
|
|
15335
|
+
var init_src10 = __esm({
|
|
15218
15336
|
"../compression/src/index.ts"() {
|
|
15219
15337
|
init_gzip_compression();
|
|
15220
15338
|
}
|
|
15221
15339
|
});
|
|
15222
15340
|
|
|
15223
15341
|
// src/lib/parsers/parse-slpk/slpk-archieve.ts
|
|
15224
|
-
var
|
|
15342
|
+
var import_md52, PATH_DESCRIPTIONS, SLPKArchive;
|
|
15225
15343
|
var init_slpk_archieve = __esm({
|
|
15226
15344
|
"src/lib/parsers/parse-slpk/slpk-archieve.ts"() {
|
|
15227
|
-
|
|
15228
|
-
init_local_file_header();
|
|
15345
|
+
import_md52 = __toModule(require_md5());
|
|
15229
15346
|
init_src9();
|
|
15230
|
-
|
|
15231
|
-
const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
|
|
15232
|
-
const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
|
|
15233
|
-
const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
|
|
15234
|
-
if (diff < 0n) {
|
|
15235
|
-
return -1;
|
|
15236
|
-
} else if (diff === 0n) {
|
|
15237
|
-
return 0;
|
|
15238
|
-
}
|
|
15239
|
-
return 1;
|
|
15240
|
-
};
|
|
15347
|
+
init_src10();
|
|
15241
15348
|
PATH_DESCRIPTIONS = [
|
|
15242
15349
|
{
|
|
15243
15350
|
test: /^$/,
|
|
@@ -15274,22 +15381,6 @@
|
|
|
15274
15381
|
];
|
|
15275
15382
|
SLPKArchive = class {
|
|
15276
15383
|
constructor(slpkArchive, hashFile) {
|
|
15277
|
-
this.findBin = (hashToSearch) => {
|
|
15278
|
-
let lowerBorder = 0;
|
|
15279
|
-
let upperBorder = this.hashArray.length;
|
|
15280
|
-
while (upperBorder - lowerBorder > 1) {
|
|
15281
|
-
const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
|
|
15282
|
-
const value = compareHashes(this.hashArray[middle].hash, hashToSearch);
|
|
15283
|
-
if (value === 0) {
|
|
15284
|
-
return this.hashArray[middle];
|
|
15285
|
-
} else if (value < 0) {
|
|
15286
|
-
lowerBorder = middle;
|
|
15287
|
-
} else {
|
|
15288
|
-
upperBorder = middle;
|
|
15289
|
-
}
|
|
15290
|
-
}
|
|
15291
|
-
return void 0;
|
|
15292
|
-
};
|
|
15293
15384
|
this.slpkArchive = slpkArchive;
|
|
15294
15385
|
this.hashArray = hashFile;
|
|
15295
15386
|
}
|
|
@@ -15337,8 +15428,8 @@
|
|
|
15337
15428
|
return Buffer.from(data);
|
|
15338
15429
|
}
|
|
15339
15430
|
async getFileBytes(path) {
|
|
15340
|
-
const nameHash = Buffer.from((0,
|
|
15341
|
-
const fileInfo =
|
|
15431
|
+
const nameHash = Buffer.from((0, import_md52.default)(path), "hex");
|
|
15432
|
+
const fileInfo = findBin(nameHash, this.hashArray);
|
|
15342
15433
|
if (!fileInfo) {
|
|
15343
15434
|
return void 0;
|
|
15344
15435
|
}
|
|
@@ -15349,19 +15440,18 @@
|
|
|
15349
15440
|
const compressedFile = this.slpkArchive.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
|
|
15350
15441
|
return compressedFile;
|
|
15351
15442
|
}
|
|
15443
|
+
findBin(nameHash) {
|
|
15444
|
+
throw new Error("Method not implemented.");
|
|
15445
|
+
}
|
|
15352
15446
|
};
|
|
15353
15447
|
}
|
|
15354
15448
|
});
|
|
15355
15449
|
|
|
15356
15450
|
// src/lib/parsers/parse-slpk/parse-slpk.ts
|
|
15357
|
-
var
|
|
15451
|
+
var parseSLPK;
|
|
15358
15452
|
var init_parse_slpk = __esm({
|
|
15359
15453
|
"src/lib/parsers/parse-slpk/parse-slpk.ts"() {
|
|
15360
|
-
|
|
15361
|
-
init_cd_file_header();
|
|
15362
|
-
init_end_of_central_directory();
|
|
15363
|
-
init_local_file_header();
|
|
15364
|
-
init_search_from_the_end();
|
|
15454
|
+
init_src9();
|
|
15365
15455
|
init_slpk_archieve();
|
|
15366
15456
|
parseSLPK = async (fileProvider, cb) => {
|
|
15367
15457
|
const hashCDOffset = await searchFromTheEnd(fileProvider, signature);
|
|
@@ -15383,81 +15473,18 @@
|
|
|
15383
15473
|
}
|
|
15384
15474
|
return new SLPKArchive(fileProvider, hashData);
|
|
15385
15475
|
};
|
|
15386
|
-
generateHashInfo = async (fileProvider) => {
|
|
15387
|
-
const { cdStartOffset } = await parseEoCDRecord(fileProvider);
|
|
15388
|
-
let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);
|
|
15389
|
-
const hashInfo = [];
|
|
15390
|
-
while (cdHeader) {
|
|
15391
|
-
hashInfo.push({
|
|
15392
|
-
hash: Buffer.from((0, import_md52.default)(cdHeader.fileName.split("\\").join("/").toLocaleLowerCase()), "hex"),
|
|
15393
|
-
offset: cdHeader.localHeaderOffset
|
|
15394
|
-
});
|
|
15395
|
-
cdHeader = await parseZipCDFileHeader(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
|
|
15396
|
-
}
|
|
15397
|
-
hashInfo.sort((a2, b) => compareHashes(a2.hash, b.hash));
|
|
15398
|
-
return hashInfo;
|
|
15399
|
-
};
|
|
15400
|
-
parseHashFile = (hashFile) => {
|
|
15401
|
-
const hashFileBuffer = Buffer.from(hashFile);
|
|
15402
|
-
const hashArray = [];
|
|
15403
|
-
for (let i2 = 0; i2 < hashFileBuffer.buffer.byteLength; i2 = i2 + 24) {
|
|
15404
|
-
const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i2 + 16, hashFileBuffer.byteOffset + i2 + 24));
|
|
15405
|
-
const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
|
|
15406
|
-
hashArray.push({
|
|
15407
|
-
hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i2, hashFileBuffer.byteOffset + i2 + 16)),
|
|
15408
|
-
offset
|
|
15409
|
-
});
|
|
15410
|
-
}
|
|
15411
|
-
return hashArray;
|
|
15412
|
-
};
|
|
15413
|
-
}
|
|
15414
|
-
});
|
|
15415
|
-
|
|
15416
|
-
// src/lib/parsers/parse-zip/data-view-file-provider.ts
|
|
15417
|
-
var toNumber, DataViewFileProvider;
|
|
15418
|
-
var init_data_view_file_provider = __esm({
|
|
15419
|
-
"src/lib/parsers/parse-zip/data-view-file-provider.ts"() {
|
|
15420
|
-
toNumber = (bigint) => {
|
|
15421
|
-
if (bigint > Number.MAX_SAFE_INTEGER) {
|
|
15422
|
-
throw new Error("Offset is out of bounds");
|
|
15423
|
-
}
|
|
15424
|
-
return Number(bigint);
|
|
15425
|
-
};
|
|
15426
|
-
DataViewFileProvider = class {
|
|
15427
|
-
constructor(file) {
|
|
15428
|
-
this.file = file;
|
|
15429
|
-
}
|
|
15430
|
-
async getUint8(offset) {
|
|
15431
|
-
return this.file.getUint8(toNumber(offset));
|
|
15432
|
-
}
|
|
15433
|
-
async getUint16(offset) {
|
|
15434
|
-
return this.file.getUint16(toNumber(offset), true);
|
|
15435
|
-
}
|
|
15436
|
-
async getUint32(offset) {
|
|
15437
|
-
return this.file.getUint32(toNumber(offset), true);
|
|
15438
|
-
}
|
|
15439
|
-
async getBigUint64(offset) {
|
|
15440
|
-
return this.file.getBigUint64(toNumber(offset), true);
|
|
15441
|
-
}
|
|
15442
|
-
async slice(startOffset, endOffset) {
|
|
15443
|
-
return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
|
|
15444
|
-
}
|
|
15445
|
-
get length() {
|
|
15446
|
-
return BigInt(this.file.byteLength);
|
|
15447
|
-
}
|
|
15448
|
-
};
|
|
15449
15476
|
}
|
|
15450
15477
|
});
|
|
15451
15478
|
|
|
15452
15479
|
// src/i3s-slpk-loader.ts
|
|
15453
15480
|
async function parseSLPK2(data, options = {}) {
|
|
15454
|
-
return (await parseSLPK(new
|
|
15481
|
+
return (await parseSLPK(new DataViewFile(new DataView(data)))).getFile(options.slpk?.path ?? "", options.slpk?.pathMode);
|
|
15455
15482
|
}
|
|
15456
15483
|
var VERSION12, SLPKLoader;
|
|
15457
15484
|
var init_i3s_slpk_loader = __esm({
|
|
15458
15485
|
"src/i3s-slpk-loader.ts"() {
|
|
15486
|
+
init_src9();
|
|
15459
15487
|
init_parse_slpk();
|
|
15460
|
-
init_data_view_file_provider();
|
|
15461
15488
|
VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
15462
15489
|
SLPKLoader = {
|
|
15463
15490
|
name: "I3S SLPK (Scene Layer Package)",
|
|
@@ -15636,10 +15663,9 @@
|
|
|
15636
15663
|
I3SNodePageLoader: () => I3SNodePageLoader,
|
|
15637
15664
|
SLPKLoader: () => SLPKLoader,
|
|
15638
15665
|
loadFeatureAttributes: () => loadFeatureAttributes,
|
|
15639
|
-
parseSLPK: () => parseSLPK
|
|
15640
|
-
parseZipLocalFileHeader: () => parseZipLocalFileHeader
|
|
15666
|
+
parseSLPK: () => parseSLPK
|
|
15641
15667
|
});
|
|
15642
|
-
var
|
|
15668
|
+
var init_src11 = __esm({
|
|
15643
15669
|
"src/index.ts"() {
|
|
15644
15670
|
init_constants();
|
|
15645
15671
|
init_i3s_loader();
|
|
@@ -15649,7 +15675,6 @@
|
|
|
15649
15675
|
init_i3s_building_scene_layer_loader();
|
|
15650
15676
|
init_i3s_node_page_loader();
|
|
15651
15677
|
init_arcgis_webscene_loader();
|
|
15652
|
-
init_local_file_header();
|
|
15653
15678
|
init_parse_slpk();
|
|
15654
15679
|
}
|
|
15655
15680
|
});
|
|
@@ -15657,7 +15682,7 @@
|
|
|
15657
15682
|
// src/bundle.ts
|
|
15658
15683
|
var require_bundle = __commonJS({
|
|
15659
15684
|
"src/bundle.ts"(exports, module) {
|
|
15660
|
-
var moduleExports = (
|
|
15685
|
+
var moduleExports = (init_src11(), src_exports);
|
|
15661
15686
|
globalThis.loaders = globalThis.loaders || {};
|
|
15662
15687
|
module.exports = Object.assign(globalThis.loaders, moduleExports);
|
|
15663
15688
|
}
|