@loaders.gl/i3s 4.0.0-alpha.19 → 4.0.0-alpha.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/dist.min.js +277 -260
  2. package/dist/es5/arcgis-webscene-loader.js +1 -1
  3. package/dist/es5/i3s-attribute-loader.js +1 -1
  4. package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
  5. package/dist/es5/i3s-content-loader.js +1 -1
  6. package/dist/es5/i3s-loader.js +1 -1
  7. package/dist/es5/i3s-node-page-loader.js +1 -1
  8. package/dist/es5/i3s-slpk-loader.js +3 -3
  9. package/dist/es5/i3s-slpk-loader.js.map +1 -1
  10. package/dist/es5/index.js +0 -7
  11. package/dist/es5/index.js.map +1 -1
  12. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +9 -25
  13. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
  14. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +9 -33
  15. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
  16. package/dist/esm/arcgis-webscene-loader.js +1 -1
  17. package/dist/esm/i3s-attribute-loader.js +1 -1
  18. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  19. package/dist/esm/i3s-content-loader.js +1 -1
  20. package/dist/esm/i3s-loader.js +1 -1
  21. package/dist/esm/i3s-node-page-loader.js +1 -1
  22. package/dist/esm/i3s-slpk-loader.js +3 -3
  23. package/dist/esm/i3s-slpk-loader.js.map +1 -1
  24. package/dist/esm/index.js +0 -1
  25. package/dist/esm/index.js.map +1 -1
  26. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +2 -18
  27. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
  28. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +5 -29
  29. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
  30. package/dist/i3s-content-worker-node.js +2 -2
  31. package/dist/i3s-content-worker-node.js.map +2 -2
  32. package/dist/i3s-content-worker.js +12 -12
  33. package/dist/i3s-slpk-loader.js +2 -2
  34. package/dist/index.d.ts +0 -2
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +1 -3
  37. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +1 -1
  38. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
  39. package/dist/lib/parsers/parse-slpk/parse-slpk.js +9 -30
  40. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +2 -21
  41. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -1
  42. package/dist/lib/parsers/parse-slpk/slpk-archieve.js +7 -46
  43. package/package.json +9 -9
  44. package/src/i3s-slpk-loader.ts +2 -2
  45. package/src/index.ts +0 -2
  46. package/src/lib/parsers/parse-slpk/parse-slpk.ts +12 -32
  47. package/src/lib/parsers/parse-slpk/slpk-archieve.ts +5 -54
  48. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +0 -121
  49. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +0 -1
  50. package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js +0 -129
  51. package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js.map +0 -1
  52. package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js +0 -100
  53. package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js.map +0 -1
  54. package/dist/es5/lib/parsers/parse-zip/file-provider.js +0 -2
  55. package/dist/es5/lib/parsers/parse-zip/file-provider.js.map +0 -1
  56. package/dist/es5/lib/parsers/parse-zip/local-file-header.js +0 -113
  57. package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +0 -1
  58. package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js +0 -69
  59. package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js.map +0 -1
  60. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +0 -45
  61. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +0 -1
  62. package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js +0 -32
  63. package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js.map +0 -1
  64. package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js +0 -33
  65. package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js.map +0 -1
  66. package/dist/esm/lib/parsers/parse-zip/file-provider.js +0 -2
  67. package/dist/esm/lib/parsers/parse-zip/file-provider.js.map +0 -1
  68. package/dist/esm/lib/parsers/parse-zip/local-file-header.js +0 -40
  69. package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +0 -1
  70. package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js +0 -16
  71. package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js.map +0 -1
  72. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +0 -31
  73. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +0 -1
  74. package/dist/lib/parsers/parse-zip/cd-file-header.js +0 -55
  75. package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts +0 -36
  76. package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts.map +0 -1
  77. package/dist/lib/parsers/parse-zip/data-view-file-provider.js +0 -61
  78. package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts +0 -18
  79. package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts.map +0 -1
  80. package/dist/lib/parsers/parse-zip/end-of-central-directory.js +0 -41
  81. package/dist/lib/parsers/parse-zip/file-provider.d.ts +0 -36
  82. package/dist/lib/parsers/parse-zip/file-provider.d.ts.map +0 -1
  83. package/dist/lib/parsers/parse-zip/file-provider.js +0 -2
  84. package/dist/lib/parsers/parse-zip/local-file-header.d.ts +0 -27
  85. package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +0 -1
  86. package/dist/lib/parsers/parse-zip/local-file-header.js +0 -53
  87. package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts +0 -11
  88. package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts.map +0 -1
  89. package/dist/lib/parsers/parse-zip/search-from-the-end.js +0 -31
  90. package/src/lib/parsers/parse-zip/cd-file-header.ts +0 -106
  91. package/src/lib/parsers/parse-zip/data-view-file-provider.ts +0 -69
  92. package/src/lib/parsers/parse-zip/end-of-central-directory.ts +0 -78
  93. package/src/lib/parsers/parse-zip/file-provider.ts +0 -40
  94. package/src/lib/parsers/parse-zip/local-file-header.ts +0 -91
  95. package/src/lib/parsers/parse-zip/search-from-the-end.ts +0 -38
package/dist/dist.min.js CHANGED
@@ -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 fetchOptions = options || globalOptions;
3258
- if (typeof fetchOptions.fetch === "function") {
3259
- return fetchOptions.fetch;
3257
+ const loaderOptions = options || globalOptions;
3258
+ if (typeof loaderOptions.fetch === "function") {
3259
+ return loaderOptions.fetch;
3260
3260
  }
3261
- if (isObject(fetchOptions.fetch)) {
3262
- return (url) => fetchFile(url, fetchOptions);
3261
+ if (isObject(loaderOptions.fetch)) {
3262
+ return (url) => fetchFile(url, loaderOptions.fetch);
3263
3263
  }
3264
3264
  if (context?.fetch) {
3265
3265
  return context?.fetch;
@@ -10532,6 +10532,264 @@
10532
10532
  }
10533
10533
  });
10534
10534
 
10535
+ // ../zip/src/parse-zip/cd-file-header.ts
10536
+ var offsets, signature, parseZipCDFileHeader;
10537
+ var init_cd_file_header = __esm({
10538
+ "../zip/src/parse-zip/cd-file-header.ts"() {
10539
+ offsets = {
10540
+ CD_COMPRESSED_SIZE_OFFSET: 20n,
10541
+ CD_UNCOMPRESSED_SIZE_OFFSET: 24n,
10542
+ CD_FILE_NAME_LENGTH_OFFSET: 28n,
10543
+ CD_EXTRA_FIELD_LENGTH_OFFSET: 30n,
10544
+ CD_LOCAL_HEADER_OFFSET_OFFSET: 42n,
10545
+ CD_FILE_NAME_OFFSET: 46n
10546
+ };
10547
+ signature = [80, 75, 1, 2];
10548
+ parseZipCDFileHeader = async (headerOffset, buffer) => {
10549
+ if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(Buffer.from(signature)) !== 0) {
10550
+ return null;
10551
+ }
10552
+ let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets.CD_COMPRESSED_SIZE_OFFSET));
10553
+ let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets.CD_UNCOMPRESSED_SIZE_OFFSET));
10554
+ const extraFieldLength = await buffer.getUint16(headerOffset + offsets.CD_EXTRA_FIELD_LENGTH_OFFSET);
10555
+ const fileNameLength = await buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET);
10556
+ const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength)));
10557
+ const extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
10558
+ const oldFormatOffset = await buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET);
10559
+ let fileDataOffset = BigInt(oldFormatOffset);
10560
+ let offsetInZip64Data = 4n;
10561
+ if (uncompressedSize === BigInt(4294967295)) {
10562
+ uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
10563
+ offsetInZip64Data += 8n;
10564
+ }
10565
+ if (compressedSize === BigInt(4294967295)) {
10566
+ compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
10567
+ offsetInZip64Data += 8n;
10568
+ }
10569
+ if (fileDataOffset === BigInt(4294967295)) {
10570
+ fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
10571
+ }
10572
+ const localHeaderOffset = fileDataOffset;
10573
+ return {
10574
+ compressedSize,
10575
+ uncompressedSize,
10576
+ extraFieldLength,
10577
+ fileNameLength,
10578
+ fileName,
10579
+ extraOffset,
10580
+ localHeaderOffset
10581
+ };
10582
+ };
10583
+ }
10584
+ });
10585
+
10586
+ // ../zip/src/parse-zip/local-file-header.ts
10587
+ var offsets2, signature2, parseZipLocalFileHeader;
10588
+ var init_local_file_header = __esm({
10589
+ "../zip/src/parse-zip/local-file-header.ts"() {
10590
+ offsets2 = {
10591
+ COMPRESSED_SIZE_OFFSET: 18n,
10592
+ UNCOMPRESSED_SIZE_OFFSET: 22n,
10593
+ FILE_NAME_LENGTH_OFFSET: 26n,
10594
+ EXTRA_FIELD_LENGTH_OFFSET: 28n,
10595
+ FILE_NAME_OFFSET: 30n
10596
+ };
10597
+ signature2 = Buffer.from([80, 75, 3, 4]);
10598
+ parseZipLocalFileHeader = async (headerOffset, buffer) => {
10599
+ if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(signature2) !== 0) {
10600
+ return null;
10601
+ }
10602
+ const fileNameLength = await buffer.getUint16(headerOffset + offsets2.FILE_NAME_LENGTH_OFFSET);
10603
+ const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets2.FILE_NAME_OFFSET, headerOffset + offsets2.FILE_NAME_OFFSET + BigInt(fileNameLength))).split("\\").join("/");
10604
+ const extraFieldLength = await buffer.getUint16(headerOffset + offsets2.EXTRA_FIELD_LENGTH_OFFSET);
10605
+ let fileDataOffset = headerOffset + offsets2.FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
10606
+ let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets2.COMPRESSED_SIZE_OFFSET));
10607
+ let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets2.UNCOMPRESSED_SIZE_OFFSET));
10608
+ const extraOffset = headerOffset + offsets2.FILE_NAME_OFFSET + BigInt(fileNameLength);
10609
+ let offsetInZip64Data = 4n;
10610
+ if (uncompressedSize === BigInt(4294967295)) {
10611
+ uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
10612
+ offsetInZip64Data += 8n;
10613
+ }
10614
+ if (compressedSize === BigInt(4294967295)) {
10615
+ compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
10616
+ offsetInZip64Data += 8n;
10617
+ }
10618
+ if (fileDataOffset === BigInt(4294967295)) {
10619
+ fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
10620
+ }
10621
+ return {
10622
+ fileNameLength,
10623
+ fileName,
10624
+ extraFieldLength,
10625
+ fileDataOffset,
10626
+ compressedSize
10627
+ };
10628
+ };
10629
+ }
10630
+ });
10631
+
10632
+ // ../zip/src/parse-zip/search-from-the-end.ts
10633
+ var searchFromTheEnd;
10634
+ var init_search_from_the_end = __esm({
10635
+ "../zip/src/parse-zip/search-from-the-end.ts"() {
10636
+ searchFromTheEnd = async (file, target) => {
10637
+ const searchWindow = [
10638
+ await file.getUint8(file.length - 1n),
10639
+ await file.getUint8(file.length - 2n),
10640
+ await file.getUint8(file.length - 3n),
10641
+ void 0
10642
+ ];
10643
+ let targetOffset = 0n;
10644
+ for (let i2 = file.length - 4n; i2 > -1; i2--) {
10645
+ searchWindow[3] = searchWindow[2];
10646
+ searchWindow[2] = searchWindow[1];
10647
+ searchWindow[1] = searchWindow[0];
10648
+ searchWindow[0] = await file.getUint8(i2);
10649
+ if (searchWindow.every((val, index) => val === target[index])) {
10650
+ targetOffset = i2;
10651
+ break;
10652
+ }
10653
+ }
10654
+ return targetOffset;
10655
+ };
10656
+ }
10657
+ });
10658
+
10659
+ // ../zip/src/parse-zip/end-of-central-directory.ts
10660
+ var eoCDSignature, zip64EoCDLocatorSignature, zip64EoCDSignature, offsets3, parseEoCDRecord;
10661
+ var init_end_of_central_directory = __esm({
10662
+ "../zip/src/parse-zip/end-of-central-directory.ts"() {
10663
+ init_search_from_the_end();
10664
+ eoCDSignature = [80, 75, 5, 6];
10665
+ zip64EoCDLocatorSignature = Buffer.from([80, 75, 6, 7]);
10666
+ zip64EoCDSignature = Buffer.from([80, 75, 6, 6]);
10667
+ offsets3 = {
10668
+ CD_RECORDS_NUMBER_OFFSET: 8n,
10669
+ CD_START_OFFSET_OFFSET: 16n,
10670
+ ZIP64_EOCD_START_OFFSET_OFFSET: 8n,
10671
+ ZIP64_CD_RECORDS_NUMBER_OFFSET: 24n,
10672
+ ZIP64_CD_START_OFFSET_OFFSET: 48n
10673
+ };
10674
+ parseEoCDRecord = async (fileProvider) => {
10675
+ const zipEoCDOffset = await searchFromTheEnd(fileProvider, eoCDSignature);
10676
+ let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset + offsets3.CD_RECORDS_NUMBER_OFFSET));
10677
+ let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset + offsets3.CD_START_OFFSET_OFFSET));
10678
+ if (cdStartOffset === BigInt(4294967295) || cdRecordsNumber === BigInt(4294967295)) {
10679
+ const zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
10680
+ if (Buffer.from(await fileProvider.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n)).compare(zip64EoCDLocatorSignature) !== 0) {
10681
+ throw new Error("zip64 EoCD locator not found");
10682
+ }
10683
+ const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset + offsets3.ZIP64_EOCD_START_OFFSET_OFFSET);
10684
+ if (Buffer.from(await fileProvider.slice(zip64EoCDOffset, zip64EoCDOffset + 4n)).compare(zip64EoCDSignature) !== 0) {
10685
+ throw new Error("zip64 EoCD not found");
10686
+ }
10687
+ cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset + offsets3.ZIP64_CD_RECORDS_NUMBER_OFFSET);
10688
+ cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset + offsets3.ZIP64_CD_START_OFFSET_OFFSET);
10689
+ }
10690
+ return {
10691
+ cdRecordsNumber,
10692
+ cdStartOffset
10693
+ };
10694
+ };
10695
+ }
10696
+ });
10697
+
10698
+ // ../zip/src/parse-zip/data-view-file.ts
10699
+ var toNumber, DataViewFile;
10700
+ var init_data_view_file = __esm({
10701
+ "../zip/src/parse-zip/data-view-file.ts"() {
10702
+ toNumber = (bigint) => {
10703
+ if (bigint > Number.MAX_SAFE_INTEGER) {
10704
+ throw new Error("Offset is out of bounds");
10705
+ }
10706
+ return Number(bigint);
10707
+ };
10708
+ DataViewFile = class {
10709
+ constructor(file) {
10710
+ this.file = file;
10711
+ }
10712
+ async getUint8(offset) {
10713
+ return this.file.getUint8(toNumber(offset));
10714
+ }
10715
+ async getUint16(offset) {
10716
+ return this.file.getUint16(toNumber(offset), true);
10717
+ }
10718
+ async getUint32(offset) {
10719
+ return this.file.getUint32(toNumber(offset), true);
10720
+ }
10721
+ async getBigUint64(offset) {
10722
+ return this.file.getBigUint64(toNumber(offset), true);
10723
+ }
10724
+ async slice(startOffset, endOffset) {
10725
+ return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
10726
+ }
10727
+ get length() {
10728
+ return BigInt(this.file.byteLength);
10729
+ }
10730
+ };
10731
+ }
10732
+ });
10733
+
10734
+ // ../zip/src/hash-file-utility.ts
10735
+ var compareHashes, parseHashFile, findBin;
10736
+ var init_hash_file_utility = __esm({
10737
+ "../zip/src/hash-file-utility.ts"() {
10738
+ compareHashes = (hash1, hash2) => {
10739
+ const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
10740
+ const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
10741
+ const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
10742
+ if (diff < 0n) {
10743
+ return -1;
10744
+ } else if (diff === 0n) {
10745
+ return 0;
10746
+ }
10747
+ return 1;
10748
+ };
10749
+ parseHashFile = (hashFile) => {
10750
+ const hashFileBuffer = Buffer.from(hashFile);
10751
+ const hashArray = [];
10752
+ for (let i2 = 0; i2 < hashFileBuffer.buffer.byteLength; i2 = i2 + 24) {
10753
+ const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i2 + 16, hashFileBuffer.byteOffset + i2 + 24));
10754
+ const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
10755
+ hashArray.push({
10756
+ hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i2, hashFileBuffer.byteOffset + i2 + 16)),
10757
+ offset
10758
+ });
10759
+ }
10760
+ return hashArray;
10761
+ };
10762
+ findBin = (hashToSearch, hashArray) => {
10763
+ let lowerBorder = 0;
10764
+ let upperBorder = hashArray.length;
10765
+ while (upperBorder - lowerBorder > 1) {
10766
+ const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
10767
+ const value = compareHashes(hashArray[middle].hash, hashToSearch);
10768
+ if (value === 0) {
10769
+ return hashArray[middle];
10770
+ } else if (value < 0) {
10771
+ lowerBorder = middle;
10772
+ } else {
10773
+ upperBorder = middle;
10774
+ }
10775
+ }
10776
+ return void 0;
10777
+ };
10778
+ }
10779
+ });
10780
+
10781
+ // ../zip/src/index.ts
10782
+ var init_src9 = __esm({
10783
+ "../zip/src/index.ts"() {
10784
+ init_cd_file_header();
10785
+ init_local_file_header();
10786
+ init_end_of_central_directory();
10787
+ init_search_from_the_end();
10788
+ init_data_view_file();
10789
+ init_hash_file_utility();
10790
+ }
10791
+ });
10792
+
10535
10793
  // ../../node_modules/crypt/crypt.js
10536
10794
  var require_crypt = __commonJS({
10537
10795
  "../../node_modules/crypt/crypt.js"(exports, module) {
@@ -10770,169 +11028,6 @@
10770
11028
  }
10771
11029
  });
10772
11030
 
10773
- // src/lib/parsers/parse-zip/cd-file-header.ts
10774
- var offsets, signature, parseZipCDFileHeader;
10775
- var init_cd_file_header = __esm({
10776
- "src/lib/parsers/parse-zip/cd-file-header.ts"() {
10777
- offsets = {
10778
- CD_COMPRESSED_SIZE_OFFSET: 20n,
10779
- CD_UNCOMPRESSED_SIZE_OFFSET: 24n,
10780
- CD_FILE_NAME_LENGTH_OFFSET: 28n,
10781
- CD_EXTRA_FIELD_LENGTH_OFFSET: 30n,
10782
- CD_LOCAL_HEADER_OFFSET_OFFSET: 42n,
10783
- CD_FILE_NAME_OFFSET: 46n
10784
- };
10785
- signature = [80, 75, 1, 2];
10786
- parseZipCDFileHeader = async (headerOffset, buffer) => {
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;
10806
- }
10807
- if (fileDataOffset === BigInt(4294967295)) {
10808
- fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
10809
- }
10810
- const localHeaderOffset = fileDataOffset;
10811
- return {
10812
- compressedSize,
10813
- uncompressedSize,
10814
- extraFieldLength,
10815
- fileNameLength,
10816
- fileName,
10817
- extraOffset,
10818
- localHeaderOffset
10819
- };
10820
- };
10821
- }
10822
- });
10823
-
10824
- // src/lib/parsers/parse-zip/search-from-the-end.ts
10825
- var searchFromTheEnd;
10826
- var init_search_from_the_end = __esm({
10827
- "src/lib/parsers/parse-zip/search-from-the-end.ts"() {
10828
- searchFromTheEnd = async (file, target) => {
10829
- const searchWindow = [
10830
- await file.getUint8(file.length - 1n),
10831
- await file.getUint8(file.length - 2n),
10832
- await file.getUint8(file.length - 3n),
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;
10844
- }
10845
- }
10846
- return targetOffset;
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
10865
- };
10866
- parseEoCDRecord = async (fileProvider) => {
10867
- const zipEoCDOffset = await searchFromTheEnd(fileProvider, eoCDSignature);
10868
- let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset + offsets2.CD_RECORDS_NUMBER_OFFSET));
10869
- let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset + offsets2.CD_START_OFFSET_OFFSET));
10870
- if (cdStartOffset === BigInt(4294967295) || cdRecordsNumber === BigInt(4294967295)) {
10871
- const zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
10872
- if (Buffer.from(await fileProvider.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n)).compare(zip64EoCDLocatorSignature) !== 0) {
10873
- throw new Error("zip64 EoCD locator not found");
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);
10881
- }
10882
- return {
10883
- cdRecordsNumber,
10884
- cdStartOffset
10885
- };
10886
- };
10887
- }
10888
- });
10889
-
10890
- // src/lib/parsers/parse-zip/local-file-header.ts
10891
- var offsets3, signature2, parseZipLocalFileHeader;
10892
- var init_local_file_header = __esm({
10893
- "src/lib/parsers/parse-zip/local-file-header.ts"() {
10894
- offsets3 = {
10895
- COMPRESSED_SIZE_OFFSET: 18n,
10896
- UNCOMPRESSED_SIZE_OFFSET: 22n,
10897
- FILE_NAME_LENGTH_OFFSET: 26n,
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
- };
10933
- }
10934
- });
10935
-
10936
11031
  // ../compression/src/lib/compression.ts
10937
11032
  var Compression;
10938
11033
  var init_compression = __esm({
@@ -15214,30 +15309,19 @@
15214
15309
  });
15215
15310
 
15216
15311
  // ../compression/src/index.ts
15217
- var init_src9 = __esm({
15312
+ var init_src10 = __esm({
15218
15313
  "../compression/src/index.ts"() {
15219
15314
  init_gzip_compression();
15220
15315
  }
15221
15316
  });
15222
15317
 
15223
15318
  // src/lib/parsers/parse-slpk/slpk-archieve.ts
15224
- var import_md5, compareHashes, PATH_DESCRIPTIONS, SLPKArchive;
15319
+ var import_md5, PATH_DESCRIPTIONS, SLPKArchive;
15225
15320
  var init_slpk_archieve = __esm({
15226
15321
  "src/lib/parsers/parse-slpk/slpk-archieve.ts"() {
15227
15322
  import_md5 = __toModule(require_md5());
15228
- init_local_file_header();
15229
15323
  init_src9();
15230
- compareHashes = (hash1, hash2) => {
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
- };
15324
+ init_src10();
15241
15325
  PATH_DESCRIPTIONS = [
15242
15326
  {
15243
15327
  test: /^$/,
@@ -15274,22 +15358,6 @@
15274
15358
  ];
15275
15359
  SLPKArchive = class {
15276
15360
  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
15361
  this.slpkArchive = slpkArchive;
15294
15362
  this.hashArray = hashFile;
15295
15363
  }
@@ -15338,7 +15406,7 @@
15338
15406
  }
15339
15407
  async getFileBytes(path) {
15340
15408
  const nameHash = Buffer.from((0, import_md5.default)(path), "hex");
15341
- const fileInfo = this.findBin(nameHash);
15409
+ const fileInfo = findBin(nameHash, this.hashArray);
15342
15410
  if (!fileInfo) {
15343
15411
  return void 0;
15344
15412
  }
@@ -15349,19 +15417,19 @@
15349
15417
  const compressedFile = this.slpkArchive.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
15350
15418
  return compressedFile;
15351
15419
  }
15420
+ findBin(nameHash) {
15421
+ throw new Error("Method not implemented.");
15422
+ }
15352
15423
  };
15353
15424
  }
15354
15425
  });
15355
15426
 
15356
15427
  // src/lib/parsers/parse-slpk/parse-slpk.ts
15357
- var import_md52, parseSLPK, generateHashInfo, parseHashFile;
15428
+ var import_md52, parseSLPK, generateHashInfo;
15358
15429
  var init_parse_slpk = __esm({
15359
15430
  "src/lib/parsers/parse-slpk/parse-slpk.ts"() {
15360
15431
  import_md52 = __toModule(require_md5());
15361
- init_cd_file_header();
15362
- init_end_of_central_directory();
15363
- init_local_file_header();
15364
- init_search_from_the_end();
15432
+ init_src9();
15365
15433
  init_slpk_archieve();
15366
15434
  parseSLPK = async (fileProvider, cb) => {
15367
15435
  const hashCDOffset = await searchFromTheEnd(fileProvider, signature);
@@ -15397,67 +15465,18 @@
15397
15465
  hashInfo.sort((a2, b) => compareHashes(a2.hash, b.hash));
15398
15466
  return hashInfo;
15399
15467
  };
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
15468
  }
15450
15469
  });
15451
15470
 
15452
15471
  // src/i3s-slpk-loader.ts
15453
15472
  async function parseSLPK2(data, options = {}) {
15454
- return (await parseSLPK(new DataViewFileProvider(new DataView(data)))).getFile(options.slpk?.path ?? "", options.slpk?.pathMode);
15473
+ return (await parseSLPK(new DataViewFile(new DataView(data)))).getFile(options.slpk?.path ?? "", options.slpk?.pathMode);
15455
15474
  }
15456
15475
  var VERSION12, SLPKLoader;
15457
15476
  var init_i3s_slpk_loader = __esm({
15458
15477
  "src/i3s-slpk-loader.ts"() {
15478
+ init_src9();
15459
15479
  init_parse_slpk();
15460
- init_data_view_file_provider();
15461
15480
  VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
15462
15481
  SLPKLoader = {
15463
15482
  name: "I3S SLPK (Scene Layer Package)",
@@ -15636,10 +15655,9 @@
15636
15655
  I3SNodePageLoader: () => I3SNodePageLoader,
15637
15656
  SLPKLoader: () => SLPKLoader,
15638
15657
  loadFeatureAttributes: () => loadFeatureAttributes,
15639
- parseSLPK: () => parseSLPK,
15640
- parseZipLocalFileHeader: () => parseZipLocalFileHeader
15658
+ parseSLPK: () => parseSLPK
15641
15659
  });
15642
- var init_src10 = __esm({
15660
+ var init_src11 = __esm({
15643
15661
  "src/index.ts"() {
15644
15662
  init_constants();
15645
15663
  init_i3s_loader();
@@ -15649,7 +15667,6 @@
15649
15667
  init_i3s_building_scene_layer_loader();
15650
15668
  init_i3s_node_page_loader();
15651
15669
  init_arcgis_webscene_loader();
15652
- init_local_file_header();
15653
15670
  init_parse_slpk();
15654
15671
  }
15655
15672
  });
@@ -15657,7 +15674,7 @@
15657
15674
  // src/bundle.ts
15658
15675
  var require_bundle = __commonJS({
15659
15676
  "src/bundle.ts"(exports, module) {
15660
- var moduleExports = (init_src10(), src_exports);
15677
+ var moduleExports = (init_src11(), src_exports);
15661
15678
  globalThis.loaders = globalThis.loaders || {};
15662
15679
  module.exports = Object.assign(globalThis.loaders, moduleExports);
15663
15680
  }
@@ -8,7 +8,7 @@ exports.ArcGisWebSceneLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseArcgisWebscene = require("./lib/parsers/parse-arcgis-webscene");
11
- var VERSION = typeof "4.0.0-alpha.19" !== 'undefined' ? "4.0.0-alpha.19" : 'beta';
11
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'beta';
12
12
  var ArcGisWebSceneLoader = {
13
13
  name: 'ArcGIS Web Scene Loader',
14
14
  id: 'arcgis-web-scene',
@@ -15,7 +15,7 @@ var _parseI3sAttribute = require("./lib/parsers/parse-i3s-attribute");
15
15
  var _urlUtils = require("./lib/utils/url-utils");
16
16
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
17
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
- var VERSION = typeof "4.0.0-alpha.19" !== 'undefined' ? "4.0.0-alpha.19" : 'latest';
18
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'latest';
19
19
  var EMPTY_VALUE = '';
20
20
  var REJECTED_STATUS = 'rejected';
21
21
  var I3SAttributeLoader = {
@@ -8,7 +8,7 @@ exports.I3SBuildingSceneLayerLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseI3sBuildingSceneLayer = require("./lib/parsers/parse-i3s-building-scene-layer");
11
- var VERSION = typeof "4.0.0-alpha.19" !== 'undefined' ? "4.0.0-alpha.19" : 'beta';
11
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'beta';
12
12
  var I3SBuildingSceneLayerLoader = {
13
13
  name: 'I3S Building Scene Layer',
14
14
  id: 'i3s-building-scene-layer',
@@ -8,7 +8,7 @@ exports.I3SContentLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseI3sTileContent = require("./lib/parsers/parse-i3s-tile-content");
11
- var VERSION = typeof "4.0.0-alpha.19" !== 'undefined' ? "4.0.0-alpha.19" : 'beta';
11
+ var VERSION = typeof "4.0.0-alpha.20" !== 'undefined' ? "4.0.0-alpha.20" : 'beta';
12
12
  var I3SContentLoader = {
13
13
  name: 'I3S Content (Indexed Scene Layers)',
14
14
  id: 'i3s-content',