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

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