@loaders.gl/i3s 4.0.0-alpha.14 → 4.0.0-alpha.16
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 +329 -211
- 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 +30 -2
- package/dist/es5/i3s-slpk-loader.js.map +1 -1
- package/dist/es5/index.js +7 -7
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/parsers/constants.js +14 -15
- package/dist/es5/lib/parsers/constants.js.map +1 -1
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +101 -76
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
- package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +54 -34
- package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
- package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +76 -39
- package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js +129 -0
- package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js.map +1 -0
- package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js +100 -0
- package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js.map +1 -0
- package/dist/es5/lib/parsers/parse-zip/file-provider.js.map +1 -1
- package/dist/es5/lib/parsers/parse-zip/local-file-header.js +55 -14
- package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js +69 -0
- package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js.map +1 -0
- package/dist/es5/types.js +1 -14
- 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 +8 -2
- package/dist/esm/i3s-slpk-loader.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/parsers/constants.js +14 -15
- package/dist/esm/lib/parsers/constants.js.map +1 -1
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +50 -35
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
- package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +38 -22
- package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
- package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +30 -22
- package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js +32 -0
- package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js.map +1 -0
- package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js +33 -0
- package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js.map +1 -0
- package/dist/esm/lib/parsers/parse-zip/file-provider.js.map +1 -1
- package/dist/esm/lib/parsers/parse-zip/local-file-header.js +25 -10
- package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js +16 -0
- package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js.map +1 -0
- package/dist/esm/types.js +0 -12
- 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 +22 -34
- package/dist/i3s-slpk-loader.d.ts +3 -0
- package/dist/i3s-slpk-loader.d.ts.map +1 -1
- package/dist/i3s-slpk-loader.js +11 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/lib/parsers/constants.d.ts.map +1 -1
- package/dist/lib/parsers/constants.js +14 -15
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +9 -3
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/parse-slpk.js +65 -42
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +22 -10
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/slpk-archieve.js +56 -28
- package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +9 -5
- package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-zip/cd-file-header.js +32 -25
- package/dist/lib/parsers/parse-zip/{buffer-file-provider.d.ts → data-view-file-provider.d.ts} +15 -16
- package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts.map +1 -0
- package/dist/lib/parsers/parse-zip/{buffer-file-provider.js → data-view-file-provider.js} +28 -14
- package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts +18 -0
- package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts.map +1 -0
- package/dist/lib/parsers/parse-zip/end-of-central-directory.js +41 -0
- package/dist/lib/parsers/parse-zip/file-provider.d.ts +10 -5
- package/dist/lib/parsers/parse-zip/file-provider.d.ts.map +1 -1
- package/dist/lib/parsers/parse-zip/local-file-header.d.ts +5 -3
- package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-zip/local-file-header.js +30 -11
- package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts +11 -0
- package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts.map +1 -0
- package/dist/lib/parsers/parse-zip/search-from-the-end.js +31 -0
- package/dist/types.d.ts +17 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -13
- package/package.json +9 -9
- package/src/i3s-slpk-loader.ts +19 -1
- package/src/index.ts +2 -2
- package/src/lib/parsers/constants.ts +14 -15
- package/src/lib/parsers/parse-slpk/parse-slpk.ts +83 -58
- package/src/lib/parsers/parse-slpk/slpk-archieve.ts +59 -44
- package/src/lib/parsers/parse-zip/cd-file-header.ts +52 -32
- package/src/lib/parsers/parse-zip/data-view-file-provider.ts +69 -0
- package/src/lib/parsers/parse-zip/end-of-central-directory.ts +78 -0
- package/src/lib/parsers/parse-zip/file-provider.ts +11 -5
- package/src/lib/parsers/parse-zip/local-file-header.ts +45 -19
- package/src/lib/parsers/parse-zip/search-from-the-end.ts +38 -0
- package/src/types.ts +25 -40
- package/dist/es5/lib/parsers/parse-zip/buffer-file-provider.js +0 -46
- package/dist/es5/lib/parsers/parse-zip/buffer-file-provider.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/buffer-file-provider.js +0 -23
- package/dist/esm/lib/parsers/parse-zip/buffer-file-provider.js.map +0 -1
- package/dist/lib/parsers/parse-zip/buffer-file-provider.d.ts.map +0 -1
- package/src/lib/parsers/parse-zip/buffer-file-provider.ts +0 -55
package/dist/dist.min.js
CHANGED
|
@@ -652,40 +652,18 @@
|
|
|
652
652
|
}
|
|
653
653
|
});
|
|
654
654
|
|
|
655
|
-
// src/types.ts
|
|
656
|
-
var DATA_TYPE, HeaderAttributeProperty;
|
|
657
|
-
var init_types = __esm({
|
|
658
|
-
"src/types.ts"() {
|
|
659
|
-
(function(DATA_TYPE2) {
|
|
660
|
-
DATA_TYPE2["UInt8"] = "UInt8";
|
|
661
|
-
DATA_TYPE2["UInt16"] = "UInt16";
|
|
662
|
-
DATA_TYPE2["UInt32"] = "UInt32";
|
|
663
|
-
DATA_TYPE2["UInt64"] = "UInt64";
|
|
664
|
-
DATA_TYPE2["Int16"] = "Int16";
|
|
665
|
-
DATA_TYPE2["Int32"] = "Int32";
|
|
666
|
-
DATA_TYPE2["Int64"] = "Int64";
|
|
667
|
-
DATA_TYPE2["Float32"] = "Float32";
|
|
668
|
-
DATA_TYPE2["Float64"] = "Float64";
|
|
669
|
-
})(DATA_TYPE || (DATA_TYPE = {}));
|
|
670
|
-
(function(HeaderAttributeProperty2) {
|
|
671
|
-
HeaderAttributeProperty2["vertexCount"] = "vertexCount";
|
|
672
|
-
HeaderAttributeProperty2["featureCount"] = "featureCount";
|
|
673
|
-
})(HeaderAttributeProperty || (HeaderAttributeProperty = {}));
|
|
674
|
-
}
|
|
675
|
-
});
|
|
676
|
-
|
|
677
655
|
// src/lib/parsers/constants.ts
|
|
678
656
|
function getConstructorForDataFormat(dataType) {
|
|
679
657
|
switch (dataType) {
|
|
680
|
-
case
|
|
658
|
+
case "UInt8":
|
|
681
659
|
return Uint8Array;
|
|
682
|
-
case
|
|
660
|
+
case "UInt16":
|
|
683
661
|
return Uint16Array;
|
|
684
|
-
case
|
|
662
|
+
case "UInt32":
|
|
685
663
|
return Uint32Array;
|
|
686
|
-
case
|
|
664
|
+
case "Float32":
|
|
687
665
|
return Float32Array;
|
|
688
|
-
case
|
|
666
|
+
case "UInt64":
|
|
689
667
|
return Float64Array;
|
|
690
668
|
default:
|
|
691
669
|
throw new Error(`parse i3s tile content: unknown type of data: ${dataType}`);
|
|
@@ -693,18 +671,18 @@
|
|
|
693
671
|
}
|
|
694
672
|
function sizeOf(dataType) {
|
|
695
673
|
switch (dataType) {
|
|
696
|
-
case
|
|
674
|
+
case "UInt8":
|
|
697
675
|
return 1;
|
|
698
|
-
case
|
|
699
|
-
case
|
|
676
|
+
case "UInt16":
|
|
677
|
+
case "Int16":
|
|
700
678
|
return 2;
|
|
701
|
-
case
|
|
702
|
-
case
|
|
703
|
-
case
|
|
679
|
+
case "UInt32":
|
|
680
|
+
case "Int32":
|
|
681
|
+
case "Float32":
|
|
704
682
|
return 4;
|
|
705
|
-
case
|
|
706
|
-
case
|
|
707
|
-
case
|
|
683
|
+
case "UInt64":
|
|
684
|
+
case "Int64":
|
|
685
|
+
case "Float64":
|
|
708
686
|
return 8;
|
|
709
687
|
default:
|
|
710
688
|
throw new Error(`parse i3s tile content: unknown size of data: ${dataType}`);
|
|
@@ -714,7 +692,6 @@
|
|
|
714
692
|
var init_constants = __esm({
|
|
715
693
|
"src/lib/parsers/constants.ts"() {
|
|
716
694
|
init_esm();
|
|
717
|
-
init_types();
|
|
718
695
|
GL_TYPE_MAP = {
|
|
719
696
|
UInt8: esm_default.UNSIGNED_BYTE,
|
|
720
697
|
UInt16: esm_default.UNSIGNED_SHORT,
|
|
@@ -8833,6 +8810,17 @@
|
|
|
8833
8810
|
}
|
|
8834
8811
|
});
|
|
8835
8812
|
|
|
8813
|
+
// src/types.ts
|
|
8814
|
+
var HeaderAttributeProperty;
|
|
8815
|
+
var init_types = __esm({
|
|
8816
|
+
"src/types.ts"() {
|
|
8817
|
+
(function(HeaderAttributeProperty2) {
|
|
8818
|
+
HeaderAttributeProperty2["vertexCount"] = "vertexCount";
|
|
8819
|
+
HeaderAttributeProperty2["featureCount"] = "featureCount";
|
|
8820
|
+
})(HeaderAttributeProperty || (HeaderAttributeProperty = {}));
|
|
8821
|
+
}
|
|
8822
|
+
});
|
|
8823
|
+
|
|
8836
8824
|
// src/lib/utils/url-utils.ts
|
|
8837
8825
|
function getUrlWithToken(url, token = null) {
|
|
8838
8826
|
return token ? `${url}?token=${token}` : url;
|
|
@@ -10491,107 +10479,6 @@
|
|
|
10491
10479
|
}
|
|
10492
10480
|
});
|
|
10493
10481
|
|
|
10494
|
-
// src/lib/parsers/parse-zip/buffer-file-provider.ts
|
|
10495
|
-
var DataViewFileProvider;
|
|
10496
|
-
var init_buffer_file_provider = __esm({
|
|
10497
|
-
"src/lib/parsers/parse-zip/buffer-file-provider.ts"() {
|
|
10498
|
-
DataViewFileProvider = class {
|
|
10499
|
-
constructor(file) {
|
|
10500
|
-
this.file = file;
|
|
10501
|
-
}
|
|
10502
|
-
getUint8(offset) {
|
|
10503
|
-
return Promise.resolve(this.file.getUint8(offset));
|
|
10504
|
-
}
|
|
10505
|
-
getUint16(offset) {
|
|
10506
|
-
return Promise.resolve(this.file.getUint16(offset, true));
|
|
10507
|
-
}
|
|
10508
|
-
getUint32(offset) {
|
|
10509
|
-
return Promise.resolve(this.file.getUint32(offset, true));
|
|
10510
|
-
}
|
|
10511
|
-
slice(startOffset, endOffset) {
|
|
10512
|
-
return Promise.resolve(this.file.buffer.slice(startOffset, endOffset));
|
|
10513
|
-
}
|
|
10514
|
-
get length() {
|
|
10515
|
-
return this.file.byteLength;
|
|
10516
|
-
}
|
|
10517
|
-
};
|
|
10518
|
-
}
|
|
10519
|
-
});
|
|
10520
|
-
|
|
10521
|
-
// src/lib/parsers/parse-zip/cd-file-header.ts
|
|
10522
|
-
var parseZipCDFileHeader;
|
|
10523
|
-
var init_cd_file_header = __esm({
|
|
10524
|
-
"src/lib/parsers/parse-zip/cd-file-header.ts"() {
|
|
10525
|
-
parseZipCDFileHeader = async (headerOffset, buffer) => {
|
|
10526
|
-
const offsets2 = {
|
|
10527
|
-
CD_COMPRESSED_SIZE_OFFSET: 20,
|
|
10528
|
-
CD_UNCOMPRESSED_SIZE_OFFSET: 24,
|
|
10529
|
-
CD_FILE_NAME_LENGTH_OFFSET: 28,
|
|
10530
|
-
CD_EXTRA_FIELD_LENGTH_OFFSET: 30,
|
|
10531
|
-
CD_LOCAL_HEADER_OFFSET_OFFSET: 42,
|
|
10532
|
-
CD_FILE_NAME_OFFSET: 46
|
|
10533
|
-
};
|
|
10534
|
-
const compressedSize = await buffer.getUint32(headerOffset + offsets2.CD_COMPRESSED_SIZE_OFFSET);
|
|
10535
|
-
const uncompressedSize = await buffer.getUint32(headerOffset + offsets2.CD_UNCOMPRESSED_SIZE_OFFSET);
|
|
10536
|
-
const fileNameLength = await buffer.getUint16(headerOffset + offsets2.CD_FILE_NAME_LENGTH_OFFSET);
|
|
10537
|
-
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets2.CD_FILE_NAME_OFFSET, headerOffset + offsets2.CD_FILE_NAME_OFFSET + fileNameLength));
|
|
10538
|
-
const extraOffset = headerOffset + offsets2.CD_FILE_NAME_OFFSET + fileNameLength;
|
|
10539
|
-
const oldFormatOffset = await buffer.getUint32(headerOffset + offsets2.CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
10540
|
-
let fileDataOffset = oldFormatOffset;
|
|
10541
|
-
if (fileDataOffset === 4294967295) {
|
|
10542
|
-
let offsetInZip64Data = 4;
|
|
10543
|
-
if (compressedSize === 4294967295) {
|
|
10544
|
-
offsetInZip64Data += 8;
|
|
10545
|
-
}
|
|
10546
|
-
if (uncompressedSize === 4294967295) {
|
|
10547
|
-
offsetInZip64Data += 8;
|
|
10548
|
-
}
|
|
10549
|
-
fileDataOffset = await buffer.getUint32(extraOffset + offsetInZip64Data);
|
|
10550
|
-
}
|
|
10551
|
-
const localHeaderOffset = fileDataOffset;
|
|
10552
|
-
return {
|
|
10553
|
-
compressedSize,
|
|
10554
|
-
uncompressedSize,
|
|
10555
|
-
fileNameLength,
|
|
10556
|
-
fileName,
|
|
10557
|
-
extraOffset,
|
|
10558
|
-
localHeaderOffset
|
|
10559
|
-
};
|
|
10560
|
-
};
|
|
10561
|
-
}
|
|
10562
|
-
});
|
|
10563
|
-
|
|
10564
|
-
// src/lib/parsers/parse-zip/local-file-header.ts
|
|
10565
|
-
var offsets, signature, parseZipLocalFileHeader;
|
|
10566
|
-
var init_local_file_header = __esm({
|
|
10567
|
-
"src/lib/parsers/parse-zip/local-file-header.ts"() {
|
|
10568
|
-
offsets = {
|
|
10569
|
-
COMPRESSED_SIZE_OFFSET: 18,
|
|
10570
|
-
FILE_NAME_LENGTH_OFFSET: 26,
|
|
10571
|
-
EXTRA_FIELD_LENGTH_OFFSET: 28,
|
|
10572
|
-
FILE_NAME_OFFSET: 30
|
|
10573
|
-
};
|
|
10574
|
-
signature = Buffer.from([80, 75, 3, 4]);
|
|
10575
|
-
parseZipLocalFileHeader = async (headerOffset, buffer) => {
|
|
10576
|
-
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4)).compare(signature) !== 0) {
|
|
10577
|
-
return Promise.resolve(void 0);
|
|
10578
|
-
}
|
|
10579
|
-
const fileNameLength = await buffer.getUint16(headerOffset + offsets.FILE_NAME_LENGTH_OFFSET);
|
|
10580
|
-
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets.FILE_NAME_OFFSET, headerOffset + offsets.FILE_NAME_OFFSET + fileNameLength));
|
|
10581
|
-
const extraFieldLength = await buffer.getUint16(headerOffset + offsets.EXTRA_FIELD_LENGTH_OFFSET);
|
|
10582
|
-
const fileDataOffset = headerOffset + offsets.FILE_NAME_OFFSET + fileNameLength + extraFieldLength;
|
|
10583
|
-
const compressedSize = await buffer.getUint32(headerOffset + offsets.COMPRESSED_SIZE_OFFSET);
|
|
10584
|
-
return {
|
|
10585
|
-
fileNameLength,
|
|
10586
|
-
fileName,
|
|
10587
|
-
extraFieldLength,
|
|
10588
|
-
fileDataOffset,
|
|
10589
|
-
compressedSize
|
|
10590
|
-
};
|
|
10591
|
-
};
|
|
10592
|
-
}
|
|
10593
|
-
});
|
|
10594
|
-
|
|
10595
10482
|
// ../../node_modules/crypt/crypt.js
|
|
10596
10483
|
var require_crypt = __commonJS({
|
|
10597
10484
|
"../../node_modules/crypt/crypt.js"(exports, module) {
|
|
@@ -10712,7 +10599,7 @@
|
|
|
10712
10599
|
var require_md5 = __commonJS({
|
|
10713
10600
|
"../../node_modules/md5/md5.js"(exports, module) {
|
|
10714
10601
|
(function() {
|
|
10715
|
-
var crypt = require_crypt(), utf8 = require_charenc().utf8, isBuffer3 = require_is_buffer(), bin = require_charenc().bin,
|
|
10602
|
+
var crypt = require_crypt(), utf8 = require_charenc().utf8, isBuffer3 = require_is_buffer(), bin = require_charenc().bin, md53 = function(message, options) {
|
|
10716
10603
|
if (message.constructor == String)
|
|
10717
10604
|
if (options && options.encoding === "binary")
|
|
10718
10605
|
message = bin.stringToBytes(message);
|
|
@@ -10728,7 +10615,7 @@
|
|
|
10728
10615
|
}
|
|
10729
10616
|
m[l2 >>> 5] |= 128 << l2 % 32;
|
|
10730
10617
|
m[(l2 + 64 >>> 9 << 4) + 14] = l2;
|
|
10731
|
-
var FF =
|
|
10618
|
+
var FF = md53._ff, GG = md53._gg, HH = md53._hh, II = md53._ii;
|
|
10732
10619
|
for (var i2 = 0; i2 < m.length; i2 += 16) {
|
|
10733
10620
|
var aa = a2, bb = b, cc = c2, dd = d;
|
|
10734
10621
|
a2 = FF(a2, b, c2, d, m[i2 + 0], 7, -680876936);
|
|
@@ -10802,34 +10689,197 @@
|
|
|
10802
10689
|
}
|
|
10803
10690
|
return crypt.endian([a2, b, c2, d]);
|
|
10804
10691
|
};
|
|
10805
|
-
|
|
10692
|
+
md53._ff = function(a2, b, c2, d, x, s2, t2) {
|
|
10806
10693
|
var n2 = a2 + (b & c2 | ~b & d) + (x >>> 0) + t2;
|
|
10807
10694
|
return (n2 << s2 | n2 >>> 32 - s2) + b;
|
|
10808
10695
|
};
|
|
10809
|
-
|
|
10696
|
+
md53._gg = function(a2, b, c2, d, x, s2, t2) {
|
|
10810
10697
|
var n2 = a2 + (b & d | c2 & ~d) + (x >>> 0) + t2;
|
|
10811
10698
|
return (n2 << s2 | n2 >>> 32 - s2) + b;
|
|
10812
10699
|
};
|
|
10813
|
-
|
|
10700
|
+
md53._hh = function(a2, b, c2, d, x, s2, t2) {
|
|
10814
10701
|
var n2 = a2 + (b ^ c2 ^ d) + (x >>> 0) + t2;
|
|
10815
10702
|
return (n2 << s2 | n2 >>> 32 - s2) + b;
|
|
10816
10703
|
};
|
|
10817
|
-
|
|
10704
|
+
md53._ii = function(a2, b, c2, d, x, s2, t2) {
|
|
10818
10705
|
var n2 = a2 + (c2 ^ (b | ~d)) + (x >>> 0) + t2;
|
|
10819
10706
|
return (n2 << s2 | n2 >>> 32 - s2) + b;
|
|
10820
10707
|
};
|
|
10821
|
-
|
|
10822
|
-
|
|
10708
|
+
md53._blocksize = 16;
|
|
10709
|
+
md53._digestsize = 16;
|
|
10823
10710
|
module.exports = function(message, options) {
|
|
10824
10711
|
if (message === void 0 || message === null)
|
|
10825
10712
|
throw new Error("Illegal argument " + message);
|
|
10826
|
-
var digestbytes = crypt.wordsToBytes(
|
|
10713
|
+
var digestbytes = crypt.wordsToBytes(md53(message, options));
|
|
10827
10714
|
return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);
|
|
10828
10715
|
};
|
|
10829
10716
|
})();
|
|
10830
10717
|
}
|
|
10831
10718
|
});
|
|
10832
10719
|
|
|
10720
|
+
// src/lib/parsers/parse-zip/cd-file-header.ts
|
|
10721
|
+
var offsets, signature, parseZipCDFileHeader;
|
|
10722
|
+
var init_cd_file_header = __esm({
|
|
10723
|
+
"src/lib/parsers/parse-zip/cd-file-header.ts"() {
|
|
10724
|
+
offsets = {
|
|
10725
|
+
CD_COMPRESSED_SIZE_OFFSET: 20n,
|
|
10726
|
+
CD_UNCOMPRESSED_SIZE_OFFSET: 24n,
|
|
10727
|
+
CD_FILE_NAME_LENGTH_OFFSET: 28n,
|
|
10728
|
+
CD_EXTRA_FIELD_LENGTH_OFFSET: 30n,
|
|
10729
|
+
CD_LOCAL_HEADER_OFFSET_OFFSET: 42n,
|
|
10730
|
+
CD_FILE_NAME_OFFSET: 46n
|
|
10731
|
+
};
|
|
10732
|
+
signature = [80, 75, 1, 2];
|
|
10733
|
+
parseZipCDFileHeader = async (headerOffset, buffer) => {
|
|
10734
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(Buffer.from(signature)) !== 0) {
|
|
10735
|
+
return null;
|
|
10736
|
+
}
|
|
10737
|
+
let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets.CD_COMPRESSED_SIZE_OFFSET));
|
|
10738
|
+
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets.CD_UNCOMPRESSED_SIZE_OFFSET));
|
|
10739
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + offsets.CD_EXTRA_FIELD_LENGTH_OFFSET);
|
|
10740
|
+
const fileNameLength = await buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET);
|
|
10741
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength)));
|
|
10742
|
+
const extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10743
|
+
const oldFormatOffset = await buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
10744
|
+
let fileDataOffset = BigInt(oldFormatOffset);
|
|
10745
|
+
let offsetInZip64Data = 4n;
|
|
10746
|
+
if (uncompressedSize === BigInt(4294967295)) {
|
|
10747
|
+
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10748
|
+
offsetInZip64Data += 8n;
|
|
10749
|
+
}
|
|
10750
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
10751
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10752
|
+
offsetInZip64Data += 8n;
|
|
10753
|
+
}
|
|
10754
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
10755
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10756
|
+
}
|
|
10757
|
+
const localHeaderOffset = fileDataOffset;
|
|
10758
|
+
return {
|
|
10759
|
+
compressedSize,
|
|
10760
|
+
uncompressedSize,
|
|
10761
|
+
extraFieldLength,
|
|
10762
|
+
fileNameLength,
|
|
10763
|
+
fileName,
|
|
10764
|
+
extraOffset,
|
|
10765
|
+
localHeaderOffset
|
|
10766
|
+
};
|
|
10767
|
+
};
|
|
10768
|
+
}
|
|
10769
|
+
});
|
|
10770
|
+
|
|
10771
|
+
// src/lib/parsers/parse-zip/search-from-the-end.ts
|
|
10772
|
+
var searchFromTheEnd;
|
|
10773
|
+
var init_search_from_the_end = __esm({
|
|
10774
|
+
"src/lib/parsers/parse-zip/search-from-the-end.ts"() {
|
|
10775
|
+
searchFromTheEnd = async (file, target) => {
|
|
10776
|
+
const searchWindow = [
|
|
10777
|
+
await file.getUint8(file.length - 1n),
|
|
10778
|
+
await file.getUint8(file.length - 2n),
|
|
10779
|
+
await file.getUint8(file.length - 3n),
|
|
10780
|
+
void 0
|
|
10781
|
+
];
|
|
10782
|
+
let targetOffset = 0n;
|
|
10783
|
+
for (let i2 = file.length - 4n; i2 > -1; i2--) {
|
|
10784
|
+
searchWindow[3] = searchWindow[2];
|
|
10785
|
+
searchWindow[2] = searchWindow[1];
|
|
10786
|
+
searchWindow[1] = searchWindow[0];
|
|
10787
|
+
searchWindow[0] = await file.getUint8(i2);
|
|
10788
|
+
if (searchWindow.every((val, index) => val === target[index])) {
|
|
10789
|
+
targetOffset = i2;
|
|
10790
|
+
break;
|
|
10791
|
+
}
|
|
10792
|
+
}
|
|
10793
|
+
return targetOffset;
|
|
10794
|
+
};
|
|
10795
|
+
}
|
|
10796
|
+
});
|
|
10797
|
+
|
|
10798
|
+
// src/lib/parsers/parse-zip/end-of-central-directory.ts
|
|
10799
|
+
var eoCDSignature, zip64EoCDLocatorSignature, zip64EoCDSignature, offsets2, parseEoCDRecord;
|
|
10800
|
+
var init_end_of_central_directory = __esm({
|
|
10801
|
+
"src/lib/parsers/parse-zip/end-of-central-directory.ts"() {
|
|
10802
|
+
init_search_from_the_end();
|
|
10803
|
+
eoCDSignature = [80, 75, 5, 6];
|
|
10804
|
+
zip64EoCDLocatorSignature = Buffer.from([80, 75, 6, 7]);
|
|
10805
|
+
zip64EoCDSignature = Buffer.from([80, 75, 6, 6]);
|
|
10806
|
+
offsets2 = {
|
|
10807
|
+
CD_RECORDS_NUMBER_OFFSET: 8n,
|
|
10808
|
+
CD_START_OFFSET_OFFSET: 16n,
|
|
10809
|
+
ZIP64_EOCD_START_OFFSET_OFFSET: 8n,
|
|
10810
|
+
ZIP64_CD_RECORDS_NUMBER_OFFSET: 24n,
|
|
10811
|
+
ZIP64_CD_START_OFFSET_OFFSET: 48n
|
|
10812
|
+
};
|
|
10813
|
+
parseEoCDRecord = async (fileProvider) => {
|
|
10814
|
+
const zipEoCDOffset = await searchFromTheEnd(fileProvider, eoCDSignature);
|
|
10815
|
+
let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset + offsets2.CD_RECORDS_NUMBER_OFFSET));
|
|
10816
|
+
let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset + offsets2.CD_START_OFFSET_OFFSET));
|
|
10817
|
+
if (cdStartOffset === BigInt(4294967295) || cdRecordsNumber === BigInt(4294967295)) {
|
|
10818
|
+
const zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
|
|
10819
|
+
if (Buffer.from(await fileProvider.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n)).compare(zip64EoCDLocatorSignature) !== 0) {
|
|
10820
|
+
throw new Error("zip64 EoCD locator not found");
|
|
10821
|
+
}
|
|
10822
|
+
const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset + offsets2.ZIP64_EOCD_START_OFFSET_OFFSET);
|
|
10823
|
+
if (Buffer.from(await fileProvider.slice(zip64EoCDOffset, zip64EoCDOffset + 4n)).compare(zip64EoCDSignature) !== 0) {
|
|
10824
|
+
throw new Error("zip64 EoCD not found");
|
|
10825
|
+
}
|
|
10826
|
+
cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset + offsets2.ZIP64_CD_RECORDS_NUMBER_OFFSET);
|
|
10827
|
+
cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset + offsets2.ZIP64_CD_START_OFFSET_OFFSET);
|
|
10828
|
+
}
|
|
10829
|
+
return {
|
|
10830
|
+
cdRecordsNumber,
|
|
10831
|
+
cdStartOffset
|
|
10832
|
+
};
|
|
10833
|
+
};
|
|
10834
|
+
}
|
|
10835
|
+
});
|
|
10836
|
+
|
|
10837
|
+
// src/lib/parsers/parse-zip/local-file-header.ts
|
|
10838
|
+
var offsets3, signature2, parseZipLocalFileHeader;
|
|
10839
|
+
var init_local_file_header = __esm({
|
|
10840
|
+
"src/lib/parsers/parse-zip/local-file-header.ts"() {
|
|
10841
|
+
offsets3 = {
|
|
10842
|
+
COMPRESSED_SIZE_OFFSET: 18n,
|
|
10843
|
+
UNCOMPRESSED_SIZE_OFFSET: 22n,
|
|
10844
|
+
FILE_NAME_LENGTH_OFFSET: 26n,
|
|
10845
|
+
EXTRA_FIELD_LENGTH_OFFSET: 28n,
|
|
10846
|
+
FILE_NAME_OFFSET: 30n
|
|
10847
|
+
};
|
|
10848
|
+
signature2 = Buffer.from([80, 75, 3, 4]);
|
|
10849
|
+
parseZipLocalFileHeader = async (headerOffset, buffer) => {
|
|
10850
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(signature2) !== 0) {
|
|
10851
|
+
return null;
|
|
10852
|
+
}
|
|
10853
|
+
const fileNameLength = await buffer.getUint16(headerOffset + offsets3.FILE_NAME_LENGTH_OFFSET);
|
|
10854
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets3.FILE_NAME_OFFSET, headerOffset + offsets3.FILE_NAME_OFFSET + BigInt(fileNameLength))).split("\\").join("/");
|
|
10855
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + offsets3.EXTRA_FIELD_LENGTH_OFFSET);
|
|
10856
|
+
let fileDataOffset = headerOffset + offsets3.FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
|
|
10857
|
+
let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets3.COMPRESSED_SIZE_OFFSET));
|
|
10858
|
+
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets3.UNCOMPRESSED_SIZE_OFFSET));
|
|
10859
|
+
const extraOffset = headerOffset + offsets3.FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
10860
|
+
let offsetInZip64Data = 4n;
|
|
10861
|
+
if (uncompressedSize === BigInt(4294967295)) {
|
|
10862
|
+
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10863
|
+
offsetInZip64Data += 8n;
|
|
10864
|
+
}
|
|
10865
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
10866
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10867
|
+
offsetInZip64Data += 8n;
|
|
10868
|
+
}
|
|
10869
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
10870
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
10871
|
+
}
|
|
10872
|
+
return {
|
|
10873
|
+
fileNameLength,
|
|
10874
|
+
fileName,
|
|
10875
|
+
extraFieldLength,
|
|
10876
|
+
fileDataOffset,
|
|
10877
|
+
compressedSize
|
|
10878
|
+
};
|
|
10879
|
+
};
|
|
10880
|
+
}
|
|
10881
|
+
});
|
|
10882
|
+
|
|
10833
10883
|
// ../compression/src/lib/compression.ts
|
|
10834
10884
|
var Compression;
|
|
10835
10885
|
var init_compression = __esm({
|
|
@@ -15118,13 +15168,23 @@
|
|
|
15118
15168
|
});
|
|
15119
15169
|
|
|
15120
15170
|
// src/lib/parsers/parse-slpk/slpk-archieve.ts
|
|
15121
|
-
var import_md5, PATH_DESCRIPTIONS, SLPKArchive;
|
|
15171
|
+
var import_md5, compareHashes, PATH_DESCRIPTIONS, SLPKArchive;
|
|
15122
15172
|
var init_slpk_archieve = __esm({
|
|
15123
15173
|
"src/lib/parsers/parse-slpk/slpk-archieve.ts"() {
|
|
15124
15174
|
import_md5 = __toModule(require_md5());
|
|
15125
15175
|
init_local_file_header();
|
|
15126
|
-
init_buffer_file_provider();
|
|
15127
15176
|
init_src9();
|
|
15177
|
+
compareHashes = (hash1, hash2) => {
|
|
15178
|
+
const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
|
|
15179
|
+
const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
|
|
15180
|
+
const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
|
|
15181
|
+
if (diff < 0n) {
|
|
15182
|
+
return -1;
|
|
15183
|
+
} else if (diff === 0n) {
|
|
15184
|
+
return 0;
|
|
15185
|
+
}
|
|
15186
|
+
return 1;
|
|
15187
|
+
};
|
|
15128
15188
|
PATH_DESCRIPTIONS = [
|
|
15129
15189
|
{
|
|
15130
15190
|
test: /^$/,
|
|
@@ -15135,7 +15195,7 @@
|
|
|
15135
15195
|
extensions: [".json.gz"]
|
|
15136
15196
|
},
|
|
15137
15197
|
{
|
|
15138
|
-
test: /^nodes
|
|
15198
|
+
test: /^nodes\/(\d+|root)$/,
|
|
15139
15199
|
extensions: ["/3dNodeIndexDocument.json.gz"]
|
|
15140
15200
|
},
|
|
15141
15201
|
{
|
|
@@ -15160,22 +15220,25 @@
|
|
|
15160
15220
|
}
|
|
15161
15221
|
];
|
|
15162
15222
|
SLPKArchive = class {
|
|
15163
|
-
constructor(
|
|
15164
|
-
this.
|
|
15165
|
-
|
|
15166
|
-
|
|
15167
|
-
|
|
15168
|
-
|
|
15169
|
-
|
|
15170
|
-
|
|
15171
|
-
|
|
15172
|
-
|
|
15173
|
-
|
|
15174
|
-
|
|
15175
|
-
|
|
15176
|
-
|
|
15177
|
-
|
|
15178
|
-
|
|
15223
|
+
constructor(slpkArchive, hashFile) {
|
|
15224
|
+
this.findBin = (hashToSearch) => {
|
|
15225
|
+
let lowerBorder = 0;
|
|
15226
|
+
let upperBorder = this.hashArray.length;
|
|
15227
|
+
while (upperBorder - lowerBorder > 1) {
|
|
15228
|
+
const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
|
|
15229
|
+
const value = compareHashes(this.hashArray[middle].hash, hashToSearch);
|
|
15230
|
+
if (value === 0) {
|
|
15231
|
+
return this.hashArray[middle];
|
|
15232
|
+
} else if (value < 0) {
|
|
15233
|
+
lowerBorder = middle;
|
|
15234
|
+
} else {
|
|
15235
|
+
upperBorder = middle;
|
|
15236
|
+
}
|
|
15237
|
+
}
|
|
15238
|
+
return void 0;
|
|
15239
|
+
};
|
|
15240
|
+
this.slpkArchive = slpkArchive;
|
|
15241
|
+
this.hashArray = hashFile;
|
|
15179
15242
|
}
|
|
15180
15243
|
async getFile(path, mode = "raw") {
|
|
15181
15244
|
if (mode === "http") {
|
|
@@ -15206,7 +15269,10 @@
|
|
|
15206
15269
|
throw new Error("No such file in the archieve");
|
|
15207
15270
|
}
|
|
15208
15271
|
async getDataByPath(path) {
|
|
15209
|
-
|
|
15272
|
+
let data = await this.getFileBytes(path.toLocaleLowerCase());
|
|
15273
|
+
if (!data) {
|
|
15274
|
+
data = await this.getFileBytes(path);
|
|
15275
|
+
}
|
|
15210
15276
|
if (!data) {
|
|
15211
15277
|
return void 0;
|
|
15212
15278
|
}
|
|
@@ -15219,15 +15285,15 @@
|
|
|
15219
15285
|
}
|
|
15220
15286
|
async getFileBytes(path) {
|
|
15221
15287
|
const nameHash = Buffer.from((0, import_md5.default)(path), "hex");
|
|
15222
|
-
const fileInfo = this.
|
|
15288
|
+
const fileInfo = this.findBin(nameHash);
|
|
15223
15289
|
if (!fileInfo) {
|
|
15224
15290
|
return void 0;
|
|
15225
15291
|
}
|
|
15226
|
-
const localFileHeader = await parseZipLocalFileHeader(
|
|
15292
|
+
const localFileHeader = await parseZipLocalFileHeader(fileInfo.offset, this.slpkArchive);
|
|
15227
15293
|
if (!localFileHeader) {
|
|
15228
15294
|
return void 0;
|
|
15229
15295
|
}
|
|
15230
|
-
const compressedFile = this.slpkArchive.
|
|
15296
|
+
const compressedFile = this.slpkArchive.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
|
|
15231
15297
|
return compressedFile;
|
|
15232
15298
|
}
|
|
15233
15299
|
};
|
|
@@ -15235,60 +15301,110 @@
|
|
|
15235
15301
|
});
|
|
15236
15302
|
|
|
15237
15303
|
// src/lib/parsers/parse-slpk/parse-slpk.ts
|
|
15238
|
-
|
|
15239
|
-
const archive = new DataView(data);
|
|
15240
|
-
const cdFileHeaderSignature = [80, 75, 1, 2];
|
|
15241
|
-
const searchWindow = [
|
|
15242
|
-
getByteAt(archive.byteLength - 1, archive),
|
|
15243
|
-
getByteAt(archive.byteLength - 2, archive),
|
|
15244
|
-
getByteAt(archive.byteLength - 3, archive),
|
|
15245
|
-
void 0
|
|
15246
|
-
];
|
|
15247
|
-
let hashCDOffset = 0;
|
|
15248
|
-
for (let i2 = archive.byteLength - 4; i2 > -1; i2--) {
|
|
15249
|
-
searchWindow[3] = searchWindow[2];
|
|
15250
|
-
searchWindow[2] = searchWindow[1];
|
|
15251
|
-
searchWindow[1] = searchWindow[0];
|
|
15252
|
-
searchWindow[0] = getByteAt(i2, archive);
|
|
15253
|
-
if (searchWindow.every((val, index) => val === cdFileHeaderSignature[index])) {
|
|
15254
|
-
hashCDOffset = i2;
|
|
15255
|
-
break;
|
|
15256
|
-
}
|
|
15257
|
-
}
|
|
15258
|
-
const fileProvider = new DataViewFileProvider(archive);
|
|
15259
|
-
const cdFileHeader = await parseZipCDFileHeader(hashCDOffset, fileProvider);
|
|
15260
|
-
if (cdFileHeader.fileName !== "@specialIndexFileHASH128@") {
|
|
15261
|
-
throw new Error("No hash file in slpk");
|
|
15262
|
-
}
|
|
15263
|
-
const localFileHeader = await parseZipLocalFileHeader(cdFileHeader.localHeaderOffset, fileProvider);
|
|
15264
|
-
if (!localFileHeader) {
|
|
15265
|
-
throw new Error("No hash file in slpk");
|
|
15266
|
-
}
|
|
15267
|
-
const fileDataOffset = localFileHeader.fileDataOffset;
|
|
15268
|
-
const hashFile = archive.buffer.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
|
|
15269
|
-
if (!hashFile) {
|
|
15270
|
-
throw new Error("No hash file in slpk");
|
|
15271
|
-
}
|
|
15272
|
-
return await new SLPKArchive(data, hashFile).getFile(options.slpk?.path ?? "", options.slpk?.pathMode);
|
|
15273
|
-
}
|
|
15274
|
-
var getByteAt;
|
|
15304
|
+
var import_md52, parseSLPK, generateHashInfo, parseHashFile;
|
|
15275
15305
|
var init_parse_slpk = __esm({
|
|
15276
15306
|
"src/lib/parsers/parse-slpk/parse-slpk.ts"() {
|
|
15277
|
-
|
|
15307
|
+
import_md52 = __toModule(require_md5());
|
|
15278
15308
|
init_cd_file_header();
|
|
15309
|
+
init_end_of_central_directory();
|
|
15279
15310
|
init_local_file_header();
|
|
15311
|
+
init_search_from_the_end();
|
|
15280
15312
|
init_slpk_archieve();
|
|
15281
|
-
|
|
15282
|
-
|
|
15313
|
+
parseSLPK = async (fileProvider, cb) => {
|
|
15314
|
+
const hashCDOffset = await searchFromTheEnd(fileProvider, signature);
|
|
15315
|
+
const cdFileHeader = await parseZipCDFileHeader(hashCDOffset, fileProvider);
|
|
15316
|
+
let hashData;
|
|
15317
|
+
if (cdFileHeader?.fileName !== "@specialIndexFileHASH128@") {
|
|
15318
|
+
cb?.("SLPK doesnt contain hash file");
|
|
15319
|
+
hashData = await generateHashInfo(fileProvider);
|
|
15320
|
+
cb?.("hash info has been composed according to central directory records");
|
|
15321
|
+
} else {
|
|
15322
|
+
cb?.("SLPK contains hash file");
|
|
15323
|
+
const localFileHeader = await parseZipLocalFileHeader(cdFileHeader.localHeaderOffset, fileProvider);
|
|
15324
|
+
if (!localFileHeader) {
|
|
15325
|
+
throw new Error("corrupted SLPK");
|
|
15326
|
+
}
|
|
15327
|
+
const fileDataOffset = localFileHeader.fileDataOffset;
|
|
15328
|
+
const hashFile = await fileProvider.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
|
|
15329
|
+
hashData = parseHashFile(hashFile);
|
|
15330
|
+
}
|
|
15331
|
+
return new SLPKArchive(fileProvider, hashData);
|
|
15332
|
+
};
|
|
15333
|
+
generateHashInfo = async (fileProvider) => {
|
|
15334
|
+
const { cdStartOffset } = await parseEoCDRecord(fileProvider);
|
|
15335
|
+
let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);
|
|
15336
|
+
const hashInfo = [];
|
|
15337
|
+
while (cdHeader) {
|
|
15338
|
+
hashInfo.push({
|
|
15339
|
+
hash: Buffer.from((0, import_md52.default)(cdHeader.fileName.split("\\").join("/").toLocaleLowerCase()), "hex"),
|
|
15340
|
+
offset: cdHeader.localHeaderOffset
|
|
15341
|
+
});
|
|
15342
|
+
cdHeader = await parseZipCDFileHeader(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
|
|
15343
|
+
}
|
|
15344
|
+
hashInfo.sort((a2, b) => compareHashes(a2.hash, b.hash));
|
|
15345
|
+
return hashInfo;
|
|
15346
|
+
};
|
|
15347
|
+
parseHashFile = (hashFile) => {
|
|
15348
|
+
const hashFileBuffer = Buffer.from(hashFile);
|
|
15349
|
+
const hashArray = [];
|
|
15350
|
+
for (let i2 = 0; i2 < hashFileBuffer.buffer.byteLength; i2 = i2 + 24) {
|
|
15351
|
+
const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i2 + 16, hashFileBuffer.byteOffset + i2 + 24));
|
|
15352
|
+
const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
|
|
15353
|
+
hashArray.push({
|
|
15354
|
+
hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i2, hashFileBuffer.byteOffset + i2 + 16)),
|
|
15355
|
+
offset
|
|
15356
|
+
});
|
|
15357
|
+
}
|
|
15358
|
+
return hashArray;
|
|
15359
|
+
};
|
|
15360
|
+
}
|
|
15361
|
+
});
|
|
15362
|
+
|
|
15363
|
+
// src/lib/parsers/parse-zip/data-view-file-provider.ts
|
|
15364
|
+
var toNumber, DataViewFileProvider;
|
|
15365
|
+
var init_data_view_file_provider = __esm({
|
|
15366
|
+
"src/lib/parsers/parse-zip/data-view-file-provider.ts"() {
|
|
15367
|
+
toNumber = (bigint) => {
|
|
15368
|
+
if (bigint > Number.MAX_SAFE_INTEGER) {
|
|
15369
|
+
throw new Error("Offset is out of bounds");
|
|
15370
|
+
}
|
|
15371
|
+
return Number(bigint);
|
|
15372
|
+
};
|
|
15373
|
+
DataViewFileProvider = class {
|
|
15374
|
+
constructor(file) {
|
|
15375
|
+
this.file = file;
|
|
15376
|
+
}
|
|
15377
|
+
async getUint8(offset) {
|
|
15378
|
+
return this.file.getUint8(toNumber(offset));
|
|
15379
|
+
}
|
|
15380
|
+
async getUint16(offset) {
|
|
15381
|
+
return this.file.getUint16(toNumber(offset), true);
|
|
15382
|
+
}
|
|
15383
|
+
async getUint32(offset) {
|
|
15384
|
+
return this.file.getUint32(toNumber(offset), true);
|
|
15385
|
+
}
|
|
15386
|
+
async getBigUint64(offset) {
|
|
15387
|
+
return this.file.getBigUint64(toNumber(offset), true);
|
|
15388
|
+
}
|
|
15389
|
+
async slice(startOffset, endOffset) {
|
|
15390
|
+
return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
|
|
15391
|
+
}
|
|
15392
|
+
get length() {
|
|
15393
|
+
return BigInt(this.file.byteLength);
|
|
15394
|
+
}
|
|
15283
15395
|
};
|
|
15284
15396
|
}
|
|
15285
15397
|
});
|
|
15286
15398
|
|
|
15287
15399
|
// src/i3s-slpk-loader.ts
|
|
15400
|
+
async function parseSLPK2(data, options = {}) {
|
|
15401
|
+
return (await parseSLPK(new DataViewFileProvider(new DataView(data)))).getFile(options.slpk?.path ?? "", options.slpk?.pathMode);
|
|
15402
|
+
}
|
|
15288
15403
|
var VERSION13, SLPKLoader;
|
|
15289
15404
|
var init_i3s_slpk_loader = __esm({
|
|
15290
15405
|
"src/i3s-slpk-loader.ts"() {
|
|
15291
15406
|
init_parse_slpk();
|
|
15407
|
+
init_data_view_file_provider();
|
|
15292
15408
|
VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
15293
15409
|
SLPKLoader = {
|
|
15294
15410
|
name: "I3S SLPK (Scene Layer Package)",
|
|
@@ -15296,7 +15412,7 @@
|
|
|
15296
15412
|
module: "i3s",
|
|
15297
15413
|
version: VERSION13,
|
|
15298
15414
|
mimeTypes: ["application/octet-stream"],
|
|
15299
|
-
parse:
|
|
15415
|
+
parse: parseSLPK2,
|
|
15300
15416
|
extensions: ["slpk"],
|
|
15301
15417
|
options: {}
|
|
15302
15418
|
};
|
|
@@ -15467,6 +15583,7 @@
|
|
|
15467
15583
|
I3SNodePageLoader: () => I3SNodePageLoader,
|
|
15468
15584
|
SLPKLoader: () => SLPKLoader,
|
|
15469
15585
|
loadFeatureAttributes: () => loadFeatureAttributes,
|
|
15586
|
+
parseSLPK: () => parseSLPK,
|
|
15470
15587
|
parseZipLocalFileHeader: () => parseZipLocalFileHeader
|
|
15471
15588
|
});
|
|
15472
15589
|
var init_src10 = __esm({
|
|
@@ -15480,6 +15597,7 @@
|
|
|
15480
15597
|
init_i3s_node_page_loader();
|
|
15481
15598
|
init_arcgis_webscene_loader();
|
|
15482
15599
|
init_local_file_header();
|
|
15600
|
+
init_parse_slpk();
|
|
15483
15601
|
}
|
|
15484
15602
|
});
|
|
15485
15603
|
|