@loaders.gl/i3s 4.0.0-alpha.18 → 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 (107) hide show
  1. package/dist/dist.min.js +338 -307
  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-i3s.js +1 -0
  13. package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
  14. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +9 -25
  15. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
  16. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +9 -33
  17. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
  18. package/dist/es5/types.js.map +1 -1
  19. package/dist/esm/arcgis-webscene-loader.js +1 -1
  20. package/dist/esm/i3s-attribute-loader.js +1 -1
  21. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  22. package/dist/esm/i3s-content-loader.js +1 -1
  23. package/dist/esm/i3s-loader.js +1 -1
  24. package/dist/esm/i3s-node-page-loader.js +1 -1
  25. package/dist/esm/i3s-slpk-loader.js +3 -3
  26. package/dist/esm/i3s-slpk-loader.js.map +1 -1
  27. package/dist/esm/index.js +0 -1
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/lib/parsers/parse-i3s.js +1 -0
  30. package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
  31. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +2 -18
  32. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
  33. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +5 -29
  34. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
  35. package/dist/esm/types.js.map +1 -1
  36. package/dist/i3s-content-worker-node.js +47 -47
  37. package/dist/i3s-content-worker-node.js.map +2 -2
  38. package/dist/i3s-content-worker.js +51 -38
  39. package/dist/i3s-slpk-loader.js +2 -2
  40. package/dist/index.d.ts +0 -2
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -3
  43. package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
  44. package/dist/lib/parsers/parse-i3s.js +1 -0
  45. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +1 -1
  46. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
  47. package/dist/lib/parsers/parse-slpk/parse-slpk.js +9 -30
  48. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +2 -21
  49. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -1
  50. package/dist/lib/parsers/parse-slpk/slpk-archieve.js +7 -46
  51. package/dist/types.d.ts +3 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +9 -9
  54. package/src/i3s-slpk-loader.ts +2 -2
  55. package/src/index.ts +0 -2
  56. package/src/lib/parsers/parse-i3s.ts +1 -0
  57. package/src/lib/parsers/parse-slpk/parse-slpk.ts +12 -32
  58. package/src/lib/parsers/parse-slpk/slpk-archieve.ts +5 -54
  59. package/src/types.ts +3 -0
  60. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +0 -121
  61. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +0 -1
  62. package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js +0 -129
  63. package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js.map +0 -1
  64. package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js +0 -100
  65. package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js.map +0 -1
  66. package/dist/es5/lib/parsers/parse-zip/file-provider.js +0 -2
  67. package/dist/es5/lib/parsers/parse-zip/file-provider.js.map +0 -1
  68. package/dist/es5/lib/parsers/parse-zip/local-file-header.js +0 -113
  69. package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +0 -1
  70. package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js +0 -69
  71. package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js.map +0 -1
  72. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +0 -45
  73. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +0 -1
  74. package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js +0 -32
  75. package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js.map +0 -1
  76. package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js +0 -33
  77. package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js.map +0 -1
  78. package/dist/esm/lib/parsers/parse-zip/file-provider.js +0 -2
  79. package/dist/esm/lib/parsers/parse-zip/file-provider.js.map +0 -1
  80. package/dist/esm/lib/parsers/parse-zip/local-file-header.js +0 -40
  81. package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +0 -1
  82. package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js +0 -16
  83. package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js.map +0 -1
  84. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +0 -31
  85. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +0 -1
  86. package/dist/lib/parsers/parse-zip/cd-file-header.js +0 -55
  87. package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts +0 -36
  88. package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts.map +0 -1
  89. package/dist/lib/parsers/parse-zip/data-view-file-provider.js +0 -61
  90. package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts +0 -18
  91. package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts.map +0 -1
  92. package/dist/lib/parsers/parse-zip/end-of-central-directory.js +0 -41
  93. package/dist/lib/parsers/parse-zip/file-provider.d.ts +0 -36
  94. package/dist/lib/parsers/parse-zip/file-provider.d.ts.map +0 -1
  95. package/dist/lib/parsers/parse-zip/file-provider.js +0 -2
  96. package/dist/lib/parsers/parse-zip/local-file-header.d.ts +0 -27
  97. package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +0 -1
  98. package/dist/lib/parsers/parse-zip/local-file-header.js +0 -53
  99. package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts +0 -11
  100. package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts.map +0 -1
  101. package/dist/lib/parsers/parse-zip/search-from-the-end.js +0 -31
  102. package/src/lib/parsers/parse-zip/cd-file-header.ts +0 -106
  103. package/src/lib/parsers/parse-zip/data-view-file-provider.ts +0 -69
  104. package/src/lib/parsers/parse-zip/end-of-central-directory.ts +0 -78
  105. package/src/lib/parsers/parse-zip/file-provider.ts +0 -40
  106. package/src/lib/parsers/parse-zip/local-file-header.ts +0 -91
  107. package/src/lib/parsers/parse-zip/search-from-the-end.ts +0 -38
@@ -61,7 +61,7 @@
61
61
  var nodeVersion = matches && parseFloat(matches[1]) || 0;
62
62
 
63
63
  // ../worker-utils/src/lib/env-utils/version.ts
64
- var VERSION = true ? "4.0.0-alpha.18" : DEFAULT_VERSION;
64
+ var VERSION = true ? "4.0.0-alpha.20" : DEFAULT_VERSION;
65
65
  if (false) {
66
66
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
67
67
  }
@@ -564,32 +564,33 @@
564
564
  var LATEST = "beta";
565
565
  var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
566
566
  var loadLibraryPromises = {};
567
- async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
567
+ async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
568
568
  if (moduleName) {
569
- libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
569
+ libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
570
570
  }
571
571
  loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
572
572
  return await loadLibraryPromises[libraryUrl];
573
573
  }
574
- function getLibraryUrl(library, moduleName, options) {
575
- if (library.startsWith("http")) {
574
+ function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
575
+ if (!options.useLocalLibraries && library.startsWith("http")) {
576
576
  return library;
577
577
  }
578
+ libraryName = libraryName || library;
578
579
  const modules = options.modules || {};
579
- if (modules[library]) {
580
- return modules[library];
580
+ if (modules[libraryName]) {
581
+ return modules[libraryName];
581
582
  }
582
583
  if (!isBrowser2) {
583
- return `modules/${moduleName}/dist/libs/${library}`;
584
+ return `modules/${moduleName}/dist/libs/${libraryName}`;
584
585
  }
585
586
  if (options.CDN) {
586
587
  assert2(options.CDN.startsWith("http"));
587
- return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
588
+ return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${libraryName}`;
588
589
  }
589
590
  if (isWorker) {
590
- return `../src/libs/${library}`;
591
+ return `../src/libs/${libraryName}`;
591
592
  }
592
- return `modules/${moduleName}/src/libs/${library}`;
593
+ return `modules/${moduleName}/src/libs/${libraryName}`;
593
594
  }
594
595
  async function loadLibraryFromFile(libraryUrl) {
595
596
  if (libraryUrl.endsWith("wasm")) {
@@ -1261,7 +1262,7 @@
1261
1262
  var navigator_ = globalThis.navigator || {};
1262
1263
 
1263
1264
  // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/utils/globals.js
1264
- var VERSION3 = true ? "4.0.0-alpha.18" : "untranspiled source";
1265
+ var VERSION3 = true ? "4.0.0-alpha.20" : "untranspiled source";
1265
1266
  var isBrowser4 = isBrowser3();
1266
1267
 
1267
1268
  // ../../node_modules/@probe.gl/log/dist/utils/local-storage.js
@@ -1802,6 +1803,7 @@
1802
1803
  mimeType: void 0,
1803
1804
  nothrow: false,
1804
1805
  log: new ConsoleLog(),
1806
+ useLocalLibraries: false,
1805
1807
  CDN: "https://unpkg.com/@loaders.gl",
1806
1808
  worker: true,
1807
1809
  maxConcurrency: 3,
@@ -2305,12 +2307,12 @@
2305
2307
  // ../core/src/lib/loader-utils/get-fetch-function.ts
2306
2308
  function getFetchFunction(options, context) {
2307
2309
  const globalOptions = getGlobalLoaderOptions();
2308
- const fetchOptions = options || globalOptions;
2309
- if (typeof fetchOptions.fetch === "function") {
2310
- return fetchOptions.fetch;
2310
+ const loaderOptions = options || globalOptions;
2311
+ if (typeof loaderOptions.fetch === "function") {
2312
+ return loaderOptions.fetch;
2311
2313
  }
2312
- if (isObject(fetchOptions.fetch)) {
2313
- return (url) => fetchFile(url, fetchOptions);
2314
+ if (isObject(loaderOptions.fetch)) {
2315
+ return (url) => fetchFile(url, loaderOptions.fetch);
2314
2316
  }
2315
2317
  if (context?.fetch) {
2316
2318
  return context?.fetch;
@@ -4609,7 +4611,7 @@
4609
4611
  _defineProperty(Ellipsoid, "WGS84", new Ellipsoid(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z));
4610
4612
 
4611
4613
  // ../images/src/lib/utils/version.ts
4612
- var VERSION4 = true ? "4.0.0-alpha.18" : "latest";
4614
+ var VERSION4 = true ? "4.0.0-alpha.20" : "latest";
4613
4615
 
4614
4616
  // ../images/src/lib/category-api/image-type.ts
4615
4617
  var { _parseImageNode } = globalThis;
@@ -5006,7 +5008,7 @@
5006
5008
  };
5007
5009
 
5008
5010
  // ../draco/src/lib/utils/version.ts
5009
- var VERSION5 = true ? "4.0.0-alpha.18" : "latest";
5011
+ var VERSION5 = true ? "4.0.0-alpha.20" : "latest";
5010
5012
 
5011
5013
  // ../draco/src/draco-loader.ts
5012
5014
  var DEFAULT_DRACO_OPTIONS = {
@@ -5489,10 +5491,18 @@
5489
5491
  var DRACO_DECODER_VERSION = "1.5.5";
5490
5492
  var DRACO_ENCODER_VERSION = "1.4.1";
5491
5493
  var STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
5492
- var DRACO_JS_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.js`;
5493
- var DRACO_WASM_WRAPPER_URL = `${STATIC_DECODER_URL}/draco_wasm_wrapper.js`;
5494
- var DRACO_WASM_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.wasm`;
5495
- var DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/draco_encoder.js`;
5494
+ var DRACO_EXTERNAL_LIBRARIES = {
5495
+ DECODER: "draco_wasm_wrapper.js",
5496
+ DECODER_WASM: "draco_decoder.wasm",
5497
+ FALLBACK_DECODER: "draco_decoder.js",
5498
+ ENCODER: "draco_encoder.js"
5499
+ };
5500
+ var DRACO_EXTERNAL_LIBRARY_URLS = {
5501
+ [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,
5502
+ [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,
5503
+ [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,
5504
+ [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`
5505
+ };
5496
5506
  var loadDecoderPromise;
5497
5507
  async function loadDracoDecoderModule(options) {
5498
5508
  const modules = options.modules || {};
@@ -5510,13 +5520,13 @@
5510
5520
  let wasmBinary;
5511
5521
  switch (options.draco && options.draco.decoderType) {
5512
5522
  case "js":
5513
- DracoDecoderModule = await loadLibrary(DRACO_JS_DECODER_URL, "draco", options);
5523
+ DracoDecoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER], "draco", options, DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER);
5514
5524
  break;
5515
5525
  case "wasm":
5516
5526
  default:
5517
5527
  [DracoDecoderModule, wasmBinary] = await Promise.all([
5518
- await loadLibrary(DRACO_WASM_WRAPPER_URL, "draco", options),
5519
- await loadLibrary(DRACO_WASM_DECODER_URL, "draco", options)
5528
+ await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER], "draco", options, DRACO_EXTERNAL_LIBRARIES.DECODER),
5529
+ await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM], "draco", options, DRACO_EXTERNAL_LIBRARIES.DECODER_WASM)
5520
5530
  ]);
5521
5531
  }
5522
5532
  DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
@@ -5551,12 +5561,15 @@
5551
5561
  }
5552
5562
 
5553
5563
  // ../textures/src/lib/utils/version.ts
5554
- var VERSION6 = true ? "4.0.0-alpha.18" : "beta";
5564
+ var VERSION6 = true ? "4.0.0-alpha.20" : "beta";
5555
5565
 
5556
5566
  // ../textures/src/lib/parsers/basis-module-loader.ts
5557
- var VERSION7 = true ? "4.0.0-alpha.18" : "beta";
5558
- var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION7}/dist/libs/basis_encoder.wasm`;
5559
- var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION7}/dist/libs/basis_encoder.js`;
5567
+ var BASIS_EXTERNAL_LIBRARIES = {
5568
+ TRANSCODER: "basis_transcoder.js",
5569
+ TRANSCODER_WASM: "basis_transcoder.wasm",
5570
+ ENCODER: "basis_encoder.js",
5571
+ ENCODER_WASM: "basis_encoder.wasm"
5572
+ };
5560
5573
  var loadBasisTranscoderPromise;
5561
5574
  async function loadBasisTranscoderModule(options) {
5562
5575
  const modules = options.modules || {};
@@ -5570,8 +5583,8 @@
5570
5583
  let BASIS = null;
5571
5584
  let wasmBinary = null;
5572
5585
  [BASIS, wasmBinary] = await Promise.all([
5573
- await loadLibrary("basis_transcoder.js", "textures", options),
5574
- await loadLibrary("basis_transcoder.wasm", "textures", options)
5586
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, "textures", options),
5587
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, "textures", options)
5575
5588
  ]);
5576
5589
  BASIS = BASIS || globalThis.BASIS;
5577
5590
  return await initializeBasisTranscoderModule(BASIS, wasmBinary);
@@ -5602,8 +5615,8 @@
5602
5615
  let BASIS_ENCODER = null;
5603
5616
  let wasmBinary = null;
5604
5617
  [BASIS_ENCODER, wasmBinary] = await Promise.all([
5605
- await loadLibrary(BASIS_CDN_ENCODER_JS, "textures", options),
5606
- await loadLibrary(BASIS_CDN_ENCODER_WASM, "textures", options)
5618
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
5619
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
5607
5620
  ]);
5608
5621
  BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
5609
5622
  return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
@@ -7240,12 +7253,12 @@
7240
7253
  }
7241
7254
 
7242
7255
  // src/i3s-attribute-loader.ts
7243
- var VERSION8 = true ? "4.0.0-alpha.18" : "latest";
7256
+ var VERSION7 = true ? "4.0.0-alpha.20" : "latest";
7244
7257
  var I3SAttributeLoader = {
7245
7258
  name: "I3S Attribute",
7246
7259
  id: "i3s-attribute",
7247
7260
  module: "i3s",
7248
- version: VERSION8,
7261
+ version: VERSION7,
7249
7262
  mimeTypes: ["application/binary"],
7250
7263
  parse: async (arrayBuffer, options) => parseI3STileAttribute(arrayBuffer, options),
7251
7264
  extensions: ["bin"],
@@ -7703,13 +7716,13 @@
7703
7716
  }
7704
7717
 
7705
7718
  // src/i3s-content-loader.ts
7706
- var VERSION9 = true ? "4.0.0-alpha.18" : "beta";
7719
+ var VERSION8 = true ? "4.0.0-alpha.20" : "beta";
7707
7720
  var I3SContentLoader = {
7708
7721
  name: "I3S Content (Indexed Scene Layers)",
7709
7722
  id: "i3s-content",
7710
7723
  module: "i3s",
7711
7724
  worker: true,
7712
- version: VERSION9,
7725
+ version: VERSION8,
7713
7726
  mimeTypes: ["application/octet-stream"],
7714
7727
  parse: parse3,
7715
7728
  extensions: ["bin"],
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SLPKLoader = void 0;
4
+ const zip_1 = require("@loaders.gl/zip");
4
5
  const parse_slpk_1 = require("./lib/parsers/parse-slpk/parse-slpk");
5
- const data_view_file_provider_1 = require("./lib/parsers/parse-zip/data-view-file-provider");
6
6
  // __VERSION__ is injected by babel-plugin-version-inline
7
7
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
8
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
@@ -26,5 +26,5 @@ exports.SLPKLoader = {
26
26
  * @returns requested file
27
27
  */
28
28
  async function parseSLPK(data, options = {}) {
29
- return (await (0, parse_slpk_1.parseSLPK)(new data_view_file_provider_1.DataViewFileProvider(new DataView(data)))).getFile(options.slpk?.path ?? '', options.slpk?.pathMode);
29
+ return (await (0, parse_slpk_1.parseSLPK)(new zip_1.DataViewFile(new DataView(data)))).getFile(options.slpk?.path ?? '', options.slpk?.pathMode);
30
30
  }
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export type { BoundingVolumes, Mbs, Obb, I3STilesetHeader, I3STileContent, I3STileHeader, SceneLayer3D, AttributeStorageInfo, Field, ESRIField, PopupInfo, Node3DIndexDocument, LodSelection, NodeReference, Resource, MaxScreenThresholdSQ, NodeInPage, SharedResources, Attribute, Extent, FeatureAttribute, FieldInfo, I3SMaterialDefinition, TextureDefinitionInfo, MaterialDefinitionInfo, FullExtent, StatisticsInfo, StatsInfo, Histogram, ValueCount, BuildingSceneSublayer, OperationalLayer, TextureSetDefinitionFormats } from './types';
2
- export type { FileProvider } from './lib/parsers/parse-zip/file-provider';
3
2
  export type { I3SLoaderOptions } from './i3s-loader';
4
3
  export { COORDINATE_SYSTEM } from './lib/parsers/constants';
5
4
  export { I3SLoader } from './i3s-loader';
@@ -9,6 +8,5 @@ export { I3SAttributeLoader, loadFeatureAttributes } from './i3s-attribute-loade
9
8
  export { I3SBuildingSceneLayerLoader } from './i3s-building-scene-layer-loader';
10
9
  export { I3SNodePageLoader } from './i3s-node-page-loader';
11
10
  export { ArcGisWebSceneLoader } from './arcgis-webscene-loader';
12
- export { parseZipLocalFileHeader } from './lib/parsers/parse-zip/local-file-header';
13
11
  export { parseSLPK } from './lib/parsers/parse-slpk/parse-slpk';
14
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,YAAY,EAAC,MAAM,uCAAuC,CAAC;AACxE,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAC,2BAA2B,EAAC,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAC,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAC,SAAS,EAAC,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAC,2BAA2B,EAAC,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,SAAS,EAAC,MAAM,qCAAqC,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  // loaders.gl, MIT license
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.parseSLPK = exports.parseZipLocalFileHeader = exports.ArcGisWebSceneLoader = exports.I3SNodePageLoader = exports.I3SBuildingSceneLayerLoader = exports.loadFeatureAttributes = exports.I3SAttributeLoader = exports.I3SContentLoader = exports.SLPKLoader = exports.I3SLoader = exports.COORDINATE_SYSTEM = void 0;
4
+ exports.parseSLPK = exports.ArcGisWebSceneLoader = exports.I3SNodePageLoader = exports.I3SBuildingSceneLayerLoader = exports.loadFeatureAttributes = exports.I3SAttributeLoader = exports.I3SContentLoader = exports.SLPKLoader = exports.I3SLoader = exports.COORDINATE_SYSTEM = void 0;
5
5
  var constants_1 = require("./lib/parsers/constants");
6
6
  Object.defineProperty(exports, "COORDINATE_SYSTEM", { enumerable: true, get: function () { return constants_1.COORDINATE_SYSTEM; } });
7
7
  var i3s_loader_1 = require("./i3s-loader");
@@ -19,7 +19,5 @@ var i3s_node_page_loader_1 = require("./i3s-node-page-loader");
19
19
  Object.defineProperty(exports, "I3SNodePageLoader", { enumerable: true, get: function () { return i3s_node_page_loader_1.I3SNodePageLoader; } });
20
20
  var arcgis_webscene_loader_1 = require("./arcgis-webscene-loader");
21
21
  Object.defineProperty(exports, "ArcGisWebSceneLoader", { enumerable: true, get: function () { return arcgis_webscene_loader_1.ArcGisWebSceneLoader; } });
22
- var local_file_header_1 = require("./lib/parsers/parse-zip/local-file-header");
23
- Object.defineProperty(exports, "parseZipLocalFileHeader", { enumerable: true, get: function () { return local_file_header_1.parseZipLocalFileHeader; } });
24
22
  var parse_slpk_1 = require("./lib/parsers/parse-slpk/parse-slpk");
25
23
  Object.defineProperty(exports, "parseSLPK", { enumerable: true, get: function () { return parse_slpk_1.parseSLPK; } });
@@ -1 +1 @@
1
- {"version":3,"file":"parse-i3s.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-i3s.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAG3E,wBAAgB,iBAAiB,CAAC,IAAI,EAAG,mBAAmB,EAAE,OAAO,EAAE,aAAa,GAAG,aAAa,CA6BnG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAG,kBAAkB,GAAG,aAAa,CAkChF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAG,YAAY,EAAE,OAAO,EAAG,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8B7I"}
1
+ {"version":3,"file":"parse-i3s.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-i3s.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAG3E,wBAAgB,iBAAiB,CAAC,IAAI,EAAG,mBAAmB,EAAE,OAAO,EAAE,aAAa,GAAG,aAAa,CA6BnG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAG,kBAAkB,GAAG,aAAa,CAkChF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAG,YAAY,EAAE,OAAO,EAAG,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+B7I"}
@@ -92,6 +92,7 @@ async function normalizeTilesetData(tileset, options, context) {
92
92
  }
93
93
  return {
94
94
  ...tileset,
95
+ loader: i3s_loader_1.I3SLoader,
95
96
  url,
96
97
  basePath: url,
97
98
  type: tiles_1.TILESET_TYPE.I3S,
@@ -1,4 +1,4 @@
1
- import { FileProvider } from '../parse-zip/file-provider';
1
+ import { FileProvider } from '@loaders.gl/zip';
2
2
  import { SLPKArchive } from './slpk-archieve';
3
3
  /**
4
4
  * Creates slpk file handler from raw file
@@ -1 +1 @@
1
- {"version":3,"file":"parse-slpk.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-slpk/parse-slpk.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAGxD,OAAO,EAAc,WAAW,EAAgB,MAAM,iBAAiB,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,SAAS,iBACN,YAAY,cACf,MAAM,KAAK,IAAI,kBACzB,QAAQ,WAAW,CA8BrB,CAAC"}
1
+ {"version":3,"file":"parse-slpk.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-slpk/parse-slpk.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,YAAY,EAMb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,SAAS,iBACN,YAAY,cACf,MAAM,KAAK,IAAI,kBACzB,QAAQ,WAAW,CA8BrB,CAAC"}
@@ -5,10 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.parseSLPK = void 0;
7
7
  const md5_1 = __importDefault(require("md5"));
8
- const cd_file_header_1 = require("../parse-zip/cd-file-header");
9
- const end_of_central_directory_1 = require("../parse-zip/end-of-central-directory");
10
- const local_file_header_1 = require("../parse-zip/local-file-header");
11
- const search_from_the_end_1 = require("../parse-zip/search-from-the-end");
8
+ const zip_1 = require("@loaders.gl/zip");
12
9
  const slpk_archieve_1 = require("./slpk-archieve");
13
10
  /**
14
11
  * Creates slpk file handler from raw file
@@ -17,8 +14,8 @@ const slpk_archieve_1 = require("./slpk-archieve");
17
14
  * @returns slpk file handler
18
15
  */
19
16
  const parseSLPK = async (fileProvider, cb) => {
20
- const hashCDOffset = await (0, search_from_the_end_1.searchFromTheEnd)(fileProvider, cd_file_header_1.signature);
21
- const cdFileHeader = await (0, cd_file_header_1.parseZipCDFileHeader)(hashCDOffset, fileProvider);
17
+ const hashCDOffset = await (0, zip_1.searchFromTheEnd)(fileProvider, zip_1.cdSignature);
18
+ const cdFileHeader = await (0, zip_1.parseZipCDFileHeader)(hashCDOffset, fileProvider);
22
19
  let hashData;
23
20
  if (cdFileHeader?.fileName !== '@specialIndexFileHASH128@') {
24
21
  cb?.('SLPK doesnt contain hash file');
@@ -27,13 +24,13 @@ const parseSLPK = async (fileProvider, cb) => {
27
24
  }
28
25
  else {
29
26
  cb?.('SLPK contains hash file');
30
- const localFileHeader = await (0, local_file_header_1.parseZipLocalFileHeader)(cdFileHeader.localHeaderOffset, fileProvider);
27
+ const localFileHeader = await (0, zip_1.parseZipLocalFileHeader)(cdFileHeader.localHeaderOffset, fileProvider);
31
28
  if (!localFileHeader) {
32
29
  throw new Error('corrupted SLPK');
33
30
  }
34
31
  const fileDataOffset = localFileHeader.fileDataOffset;
35
32
  const hashFile = await fileProvider.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
36
- hashData = parseHashFile(hashFile);
33
+ hashData = (0, zip_1.parseHashFile)(hashFile);
37
34
  }
38
35
  return new slpk_archieve_1.SLPKArchive(fileProvider, hashData);
39
36
  };
@@ -44,34 +41,16 @@ exports.parseSLPK = parseSLPK;
44
41
  * @returns ready to use hash info
45
42
  */
46
43
  const generateHashInfo = async (fileProvider) => {
47
- const { cdStartOffset } = await (0, end_of_central_directory_1.parseEoCDRecord)(fileProvider);
48
- let cdHeader = await (0, cd_file_header_1.parseZipCDFileHeader)(cdStartOffset, fileProvider);
44
+ const { cdStartOffset } = await (0, zip_1.parseEoCDRecord)(fileProvider);
45
+ let cdHeader = await (0, zip_1.parseZipCDFileHeader)(cdStartOffset, fileProvider);
49
46
  const hashInfo = [];
50
47
  while (cdHeader) {
51
48
  hashInfo.push({
52
49
  hash: Buffer.from((0, md5_1.default)(cdHeader.fileName.split('\\').join('/').toLocaleLowerCase()), 'hex'),
53
50
  offset: cdHeader.localHeaderOffset
54
51
  });
55
- cdHeader = await (0, cd_file_header_1.parseZipCDFileHeader)(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
52
+ cdHeader = await (0, zip_1.parseZipCDFileHeader)(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
56
53
  }
57
- hashInfo.sort((a, b) => (0, slpk_archieve_1.compareHashes)(a.hash, b.hash));
54
+ hashInfo.sort((a, b) => (0, zip_1.compareHashes)(a.hash, b.hash));
58
55
  return hashInfo;
59
56
  };
60
- /**
61
- * Reads hash file from buffer and returns it in ready-to-use form
62
- * @param hashFile - bufer containing hash file
63
- * @returns Array containing file info
64
- */
65
- const parseHashFile = (hashFile) => {
66
- const hashFileBuffer = Buffer.from(hashFile);
67
- const hashArray = [];
68
- for (let i = 0; i < hashFileBuffer.buffer.byteLength; i = i + 24) {
69
- const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i + 16, hashFileBuffer.byteOffset + i + 24));
70
- const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
71
- hashArray.push({
72
- hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i, hashFileBuffer.byteOffset + i + 16)),
73
- offset
74
- });
75
- }
76
- return hashArray;
77
- };
@@ -1,19 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { FileProvider } from '../parse-zip/file-provider';
3
- /** Element of hash array */
4
- export type HashElement = {
5
- /** File name hash */
6
- hash: Buffer;
7
- /** File offset in the archive */
8
- offset: bigint;
9
- };
10
- /**
11
- * Comparing md5 hashes according to https://github.com/Esri/i3s-spec/blob/master/docs/2.0/slpk_hashtable.pcsl.md step 5
12
- * @param hash1 hash to compare
13
- * @param hash2 hash to compare
14
- * @returns -1 if hash1 < hash2, 0 of hash1 === hash2, 1 if hash1 > hash2
15
- */
16
- export declare const compareHashes: (hash1: Buffer, hash2: Buffer) => number;
2
+ import { FileProvider, HashElement } from '@loaders.gl/zip';
17
3
  /**
18
4
  * Class for handling information about slpk file
19
5
  */
@@ -21,12 +7,6 @@ export declare class SLPKArchive {
21
7
  private slpkArchive;
22
8
  private hashArray;
23
9
  constructor(slpkArchive: FileProvider, hashFile: HashElement[]);
24
- /**
25
- * Binary search in the hash info
26
- * @param hashToSearch hash that we need to find
27
- * @returns required hash element or undefined if not found
28
- */
29
- private findBin;
30
10
  /**
31
11
  * Returns file with the given path from slpk archive
32
12
  * @param path - path inside the slpk
@@ -46,5 +26,6 @@ export declare class SLPKArchive {
46
26
  * @returns buffer with the raw file data
47
27
  */
48
28
  private getFileBytes;
29
+ findBin(nameHash: Buffer): void;
49
30
  }
50
31
  //# sourceMappingURL=slpk-archieve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slpk-archieve.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-slpk/slpk-archieve.ts"],"names":[],"mappings":";AAGA,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAExD,4BAA4B;AAC5B,MAAM,MAAM,WAAW,GAAG;IACxB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAW,MAAM,SAAS,MAAM,KAAG,MAY5D,CAAC;AAsCF;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,SAAS,CAAgB;gBACrB,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE;IAK9D;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAgBb;IAEF;;;;;OAKG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,KAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B1E;;;;OAIG;YACW,aAAa;IAmB3B;;;;OAIG;YACW,YAAY;CAmB3B"}
1
+ {"version":3,"file":"slpk-archieve.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-slpk/slpk-archieve.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,YAAY,EAA2B,WAAW,EAAU,MAAM,iBAAiB,CAAC;AAuC5F;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,SAAS,CAAgB;gBACrB,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE;IAK9D;;;;;OAKG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,KAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B1E;;;;OAIG;YACW,aAAa;IAmB3B;;;;OAIG;YACW,YAAY;IAmB1B,OAAO,CAAC,QAAQ,EAAE,MAAM;CAGzB"}
@@ -3,29 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SLPKArchive = exports.compareHashes = void 0;
6
+ exports.SLPKArchive = void 0;
7
7
  const md5_1 = __importDefault(require("md5"));
8
- const local_file_header_1 = require("../parse-zip/local-file-header");
8
+ const zip_1 = require("@loaders.gl/zip");
9
9
  const compression_1 = require("@loaders.gl/compression");
10
- /**
11
- * Comparing md5 hashes according to https://github.com/Esri/i3s-spec/blob/master/docs/2.0/slpk_hashtable.pcsl.md step 5
12
- * @param hash1 hash to compare
13
- * @param hash2 hash to compare
14
- * @returns -1 if hash1 < hash2, 0 of hash1 === hash2, 1 if hash1 > hash2
15
- */
16
- const compareHashes = (hash1, hash2) => {
17
- const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
18
- const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
19
- const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
20
- if (diff < 0n) {
21
- return -1;
22
- }
23
- else if (diff === 0n) {
24
- return 0;
25
- }
26
- return 1;
27
- };
28
- exports.compareHashes = compareHashes;
29
10
  /** Description of real paths for different file types */
30
11
  const PATH_DESCRIPTIONS = [
31
12
  {
@@ -66,29 +47,6 @@ const PATH_DESCRIPTIONS = [
66
47
  */
67
48
  class SLPKArchive {
68
49
  constructor(slpkArchive, hashFile) {
69
- /**
70
- * Binary search in the hash info
71
- * @param hashToSearch hash that we need to find
72
- * @returns required hash element or undefined if not found
73
- */
74
- this.findBin = (hashToSearch) => {
75
- let lowerBorder = 0;
76
- let upperBorder = this.hashArray.length;
77
- while (upperBorder - lowerBorder > 1) {
78
- const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
79
- const value = (0, exports.compareHashes)(this.hashArray[middle].hash, hashToSearch);
80
- if (value === 0) {
81
- return this.hashArray[middle];
82
- }
83
- else if (value < 0) {
84
- lowerBorder = middle;
85
- }
86
- else {
87
- upperBorder = middle;
88
- }
89
- }
90
- return undefined;
91
- };
92
50
  this.slpkArchive = slpkArchive;
93
51
  this.hashArray = hashFile;
94
52
  }
@@ -155,16 +113,19 @@ class SLPKArchive {
155
113
  */
156
114
  async getFileBytes(path) {
157
115
  const nameHash = Buffer.from((0, md5_1.default)(path), 'hex');
158
- const fileInfo = this.findBin(nameHash); // implement binary search
116
+ const fileInfo = (0, zip_1.findBin)(nameHash, this.hashArray); // implement binary search
159
117
  if (!fileInfo) {
160
118
  return undefined;
161
119
  }
162
- const localFileHeader = await (0, local_file_header_1.parseZipLocalFileHeader)(fileInfo.offset, this.slpkArchive);
120
+ const localFileHeader = await (0, zip_1.parseZipLocalFileHeader)(fileInfo.offset, this.slpkArchive);
163
121
  if (!localFileHeader) {
164
122
  return undefined;
165
123
  }
166
124
  const compressedFile = this.slpkArchive.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
167
125
  return compressedFile;
168
126
  }
127
+ findBin(nameHash) {
128
+ throw new Error('Method not implemented.');
129
+ }
169
130
  }
170
131
  exports.SLPKArchive = SLPKArchive;
package/dist/types.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { Matrix4, Quaternion, Vector3 } from '@math.gl/core';
2
2
  import type { TypedArray, MeshAttribute, TextureLevel } from '@loaders.gl/schema';
3
3
  import { TILESET_TYPE, TILE_REFINEMENT, TILE_TYPE, Tile3D, Tileset3D } from '@loaders.gl/tiles';
4
4
  import I3SNodePagesTiles from './lib/helpers/i3s-nodepages-tiles';
5
+ import { LoaderWithParser } from '@loaders.gl/loader-utils';
5
6
  export type COLOR = [number, number, number, number];
6
7
  /**
7
8
  * Extension of SceneLayer3D JSON with postprocessed loader data
@@ -21,6 +22,8 @@ export interface I3STilesetHeader extends SceneLayer3D {
21
22
  lodMetricType?: string;
22
23
  /** LOD metric value */
23
24
  lodMetricValue?: number;
25
+ /** Loader that has to be used to load content */
26
+ loader: LoaderWithParser;
24
27
  }
25
28
  /** https://github.com/Esri/i3s-spec/blob/master/docs/1.8/nodePage.cmn.md */
26
29
  export type NodePage = {