@loaders.gl/i3s 3.4.0-alpha.4 → 3.4.0

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 (77) hide show
  1. package/dist/dist.min.js +659 -94
  2. package/dist/es5/arcgis-webscene-loader.js +1 -1
  3. package/dist/es5/arcgis-webscene-loader.js.map +1 -1
  4. package/dist/es5/i3s-attribute-loader.js +1 -1
  5. package/dist/es5/i3s-attribute-loader.js.map +1 -1
  6. package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
  7. package/dist/es5/i3s-building-scene-layer-loader.js.map +1 -1
  8. package/dist/es5/i3s-content-loader.js +1 -1
  9. package/dist/es5/i3s-content-loader.js.map +1 -1
  10. package/dist/es5/i3s-loader.js +1 -1
  11. package/dist/es5/i3s-loader.js.map +1 -1
  12. package/dist/es5/i3s-node-page-loader.js +1 -1
  13. package/dist/es5/i3s-node-page-loader.js.map +1 -1
  14. package/dist/es5/i3s-slpk-loader.js +20 -0
  15. package/dist/es5/i3s-slpk-loader.js.map +1 -0
  16. package/dist/es5/index.js +7 -0
  17. package/dist/es5/index.js.map +1 -1
  18. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +94 -0
  19. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
  20. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +112 -0
  21. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
  22. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +44 -0
  23. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +1 -0
  24. package/dist/es5/lib/parsers/parse-zip/local-file-header.js +26 -0
  25. package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +1 -0
  26. package/dist/esm/arcgis-webscene-loader.js +1 -1
  27. package/dist/esm/arcgis-webscene-loader.js.map +1 -1
  28. package/dist/esm/i3s-attribute-loader.js +1 -1
  29. package/dist/esm/i3s-attribute-loader.js.map +1 -1
  30. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  31. package/dist/esm/i3s-building-scene-layer-loader.js.map +1 -1
  32. package/dist/esm/i3s-content-loader.js +1 -1
  33. package/dist/esm/i3s-content-loader.js.map +1 -1
  34. package/dist/esm/i3s-loader.js +1 -1
  35. package/dist/esm/i3s-loader.js.map +1 -1
  36. package/dist/esm/i3s-node-page-loader.js +1 -1
  37. package/dist/esm/i3s-node-page-loader.js.map +1 -1
  38. package/dist/esm/i3s-slpk-loader.js +13 -0
  39. package/dist/esm/i3s-slpk-loader.js.map +1 -0
  40. package/dist/esm/index.js +1 -0
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +37 -0
  43. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
  44. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +58 -0
  45. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
  46. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +37 -0
  47. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +1 -0
  48. package/dist/esm/lib/parsers/parse-zip/local-file-header.js +19 -0
  49. package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +1 -0
  50. package/dist/i3s-content-nodejs-worker.js +48 -48
  51. package/dist/i3s-content-nodejs-worker.js.map +3 -3
  52. package/dist/i3s-content-worker.js +68 -46
  53. package/dist/i3s-slpk-loader.d.ts +10 -0
  54. package/dist/i3s-slpk-loader.d.ts.map +1 -0
  55. package/dist/i3s-slpk-loader.js +20 -0
  56. package/dist/index.d.ts +1 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +3 -1
  59. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +4 -0
  60. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -0
  61. package/dist/lib/parsers/parse-slpk/parse-slpk.js +50 -0
  62. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +32 -0
  63. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -0
  64. package/dist/lib/parsers/parse-slpk/slpk-archieve.js +79 -0
  65. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +38 -0
  66. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +1 -0
  67. package/dist/lib/parsers/parse-zip/cd-file-header.js +48 -0
  68. package/dist/lib/parsers/parse-zip/local-file-header.d.ts +30 -0
  69. package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +1 -0
  70. package/dist/lib/parsers/parse-zip/local-file-header.js +28 -0
  71. package/package.json +9 -8
  72. package/src/i3s-slpk-loader.ts +25 -0
  73. package/src/index.ts +1 -0
  74. package/src/lib/parsers/parse-slpk/parse-slpk.ts +61 -0
  75. package/src/lib/parsers/parse-slpk/slpk-archieve.ts +108 -0
  76. package/src/lib/parsers/parse-zip/cd-file-header.ts +93 -0
  77. package/src/lib/parsers/parse-zip/local-file-header.ts +56 -0
package/dist/dist.min.js CHANGED
@@ -234,6 +234,22 @@
234
234
  }
235
235
  return false;
236
236
  }
237
+ function getTransferListForWriter(object) {
238
+ if (object === null) {
239
+ return {};
240
+ }
241
+ const clone3 = Object.assign({}, object);
242
+ Object.keys(clone3).forEach((key) => {
243
+ if (typeof object[key] === "object" && !ArrayBuffer.isView(object[key]) && !(object[key] instanceof Array)) {
244
+ clone3[key] = getTransferListForWriter(object[key]);
245
+ } else if (typeof clone3[key] === "function" || clone3[key] instanceof RegExp) {
246
+ clone3[key] = {};
247
+ } else {
248
+ clone3[key] = object[key];
249
+ }
250
+ });
251
+ return clone3;
252
+ }
237
253
  var init_get_transfer_list = __esm({
238
254
  "../worker-utils/src/lib/worker-utils/get-transfer-list.ts"() {
239
255
  }
@@ -381,9 +397,9 @@
381
397
  this.onDebug = props.onDebug;
382
398
  }
383
399
  }
384
- async startJob(name, onMessage2 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
400
+ async startJob(name, onMessage3 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
385
401
  const startPromise = new Promise((onStart) => {
386
- this.jobQueue.push({ name, onMessage: onMessage2, onError, onStart });
402
+ this.jobQueue.push({ name, onMessage: onMessage3, onError, onStart });
387
403
  return this;
388
404
  });
389
405
  this._startQueuedJob();
@@ -513,6 +529,10 @@
513
529
  });
514
530
 
515
531
  // ../worker-utils/src/lib/worker-api/get-worker-url.ts
532
+ function getWorkerName(worker) {
533
+ const warning = worker.version !== VERSION2 ? ` (worker-utils@${VERSION2})` : "";
534
+ return `${worker.name}@${worker.version}${warning}`;
535
+ }
516
536
  function getWorkerURL(worker, options = {}) {
517
537
  const workerOptions = options[worker.id] || {};
518
538
  const workerFile = `${worker.id}-worker.js`;
@@ -534,11 +554,64 @@
534
554
  assert2(url);
535
555
  return url;
536
556
  }
537
- var NPM_TAG;
557
+ var NPM_TAG, VERSION2;
538
558
  var init_get_worker_url = __esm({
539
559
  "../worker-utils/src/lib/worker-api/get-worker-url.ts"() {
540
560
  init_assert2();
561
+ init_version();
541
562
  NPM_TAG = "beta";
563
+ VERSION2 = typeof VERSION !== "undefined" ? VERSION : NPM_TAG;
564
+ }
565
+ });
566
+
567
+ // ../worker-utils/src/lib/worker-api/process-on-worker.ts
568
+ async function processOnWorker(worker, data, options = {}, context = {}) {
569
+ const name = getWorkerName(worker);
570
+ const workerFarm = WorkerFarm.getWorkerFarm(options);
571
+ const { source } = options;
572
+ const workerPoolProps = { name, source };
573
+ if (!source) {
574
+ workerPoolProps.url = getWorkerURL(worker, options);
575
+ }
576
+ const workerPool = workerFarm.getWorkerPool(workerPoolProps);
577
+ const jobName = options.jobName || worker.name;
578
+ const job = await workerPool.startJob(jobName, onMessage.bind(null, context));
579
+ const transferableOptions = getTransferListForWriter(options);
580
+ job.postMessage("process", { input: data, options: transferableOptions });
581
+ const result = await job.result;
582
+ return result.result;
583
+ }
584
+ async function onMessage(context, job, type, payload) {
585
+ switch (type) {
586
+ case "done":
587
+ job.done(payload);
588
+ break;
589
+ case "error":
590
+ job.error(new Error(payload.error));
591
+ break;
592
+ case "process":
593
+ const { id, input, options } = payload;
594
+ try {
595
+ if (!context.process) {
596
+ job.postMessage("error", { id, error: "Worker not set up to process on main thread" });
597
+ return;
598
+ }
599
+ const result = await context.process(input, options);
600
+ job.postMessage("done", { id, result });
601
+ } catch (error) {
602
+ const message = error instanceof Error ? error.message : "unknown error";
603
+ job.postMessage("error", { id, error: message });
604
+ }
605
+ break;
606
+ default:
607
+ console.warn(`process-on-worker: unknown message ${type}`);
608
+ }
609
+ }
610
+ var init_process_on_worker = __esm({
611
+ "../worker-utils/src/lib/worker-api/process-on-worker.ts"() {
612
+ init_worker_farm();
613
+ init_get_worker_url();
614
+ init_get_transfer_list();
542
615
  }
543
616
  });
544
617
 
@@ -585,7 +658,7 @@
585
658
  }
586
659
  if (options.CDN) {
587
660
  assert2(options.CDN.startsWith("http"));
588
- return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
661
+ return `${options.CDN}/${moduleName}@${VERSION3}/dist/libs/${library}`;
589
662
  }
590
663
  if (isWorker) {
591
664
  return `../src/libs/${library}`;
@@ -629,7 +702,7 @@
629
702
  document.body.appendChild(script);
630
703
  return null;
631
704
  }
632
- var node, LATEST, VERSION2, loadLibraryPromises;
705
+ var node, LATEST, VERSION3, loadLibraryPromises;
633
706
  var init_library_utils = __esm({
634
707
  "../worker-utils/src/lib/library-utils/library-utils.ts"() {
635
708
  init_globals2();
@@ -637,7 +710,7 @@
637
710
  init_assert2();
638
711
  init_version();
639
712
  LATEST = "beta";
640
- VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
713
+ VERSION3 = typeof VERSION !== "undefined" ? VERSION : LATEST;
641
714
  loadLibraryPromises = {};
642
715
  }
643
716
  });
@@ -648,6 +721,7 @@
648
721
  init_assert2();
649
722
  init_globals2();
650
723
  init_worker_farm();
724
+ init_process_on_worker();
651
725
  init_get_worker_url();
652
726
  init_validate_worker_version();
653
727
  init_library_utils();
@@ -671,7 +745,7 @@
671
745
  const workerPool = workerFarm.getWorkerPool({ name, url });
672
746
  options = JSON.parse(JSON.stringify(options));
673
747
  context = JSON.parse(JSON.stringify(context || {}));
674
- const job = await workerPool.startJob("process-on-worker", onMessage.bind(null, parseOnMainThread));
748
+ const job = await workerPool.startJob("process-on-worker", onMessage2.bind(null, parseOnMainThread));
675
749
  job.postMessage("process", {
676
750
  input: data,
677
751
  options,
@@ -680,7 +754,7 @@
680
754
  const result = await job.result;
681
755
  return await result.result;
682
756
  }
683
- async function onMessage(parseOnMainThread, job, type, payload) {
757
+ async function onMessage2(parseOnMainThread, job, type, payload) {
684
758
  switch (type) {
685
759
  case "done":
686
760
  job.done(payload);
@@ -845,15 +919,15 @@
845
919
  function parseTextSync(text) {
846
920
  return JSON.parse(text);
847
921
  }
848
- var VERSION3, JSONLoader;
922
+ var VERSION4, JSONLoader;
849
923
  var init_json_loader = __esm({
850
924
  "../loader-utils/src/json-loader.ts"() {
851
- VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
925
+ VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
852
926
  JSONLoader = {
853
927
  name: "JSON",
854
928
  id: "json",
855
929
  module: "json",
856
- version: VERSION3,
930
+ version: VERSION4,
857
931
  extensions: ["json", "geojson"],
858
932
  mimeTypes: ["application/json"],
859
933
  category: "json",
@@ -1115,39 +1189,60 @@
1115
1189
  }
1116
1190
  });
1117
1191
 
1192
+ // ../core/src/lib/utils/url-utils.ts
1193
+ function extractQueryString(url) {
1194
+ const matches3 = url.match(QUERY_STRING_PATTERN);
1195
+ return matches3 && matches3[0];
1196
+ }
1197
+ function stripQueryString(url) {
1198
+ return url.replace(QUERY_STRING_PATTERN, "");
1199
+ }
1200
+ var QUERY_STRING_PATTERN;
1201
+ var init_url_utils = __esm({
1202
+ "../core/src/lib/utils/url-utils.ts"() {
1203
+ QUERY_STRING_PATTERN = /\?.*/;
1204
+ }
1205
+ });
1206
+
1118
1207
  // ../core/src/lib/utils/resource-utils.ts
1119
- function getResourceUrlAndType(resource) {
1208
+ function getResourceUrl(resource) {
1120
1209
  if (isResponse(resource)) {
1121
- const url = stripQueryString(resource.url || "");
1122
- const contentTypeHeader = resource.headers.get("content-type") || "";
1123
- return {
1124
- url,
1125
- type: parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(url)
1126
- };
1210
+ const response = resource;
1211
+ return response.url;
1127
1212
  }
1128
1213
  if (isBlob(resource)) {
1129
- return {
1130
- url: stripQueryString(resource.name || ""),
1131
- type: resource.type || ""
1132
- };
1214
+ const blob = resource;
1215
+ return blob.name || "";
1133
1216
  }
1134
1217
  if (typeof resource === "string") {
1135
- return {
1136
- url: stripQueryString(resource),
1137
- type: parseMIMETypeFromURL(resource)
1138
- };
1218
+ return resource;
1139
1219
  }
1140
- return {
1141
- url: "",
1142
- type: ""
1143
- };
1220
+ return "";
1221
+ }
1222
+ function getResourceMIMEType(resource) {
1223
+ if (isResponse(resource)) {
1224
+ const response = resource;
1225
+ const contentTypeHeader = response.headers.get("content-type") || "";
1226
+ const noQueryUrl = stripQueryString(response.url);
1227
+ return parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(noQueryUrl);
1228
+ }
1229
+ if (isBlob(resource)) {
1230
+ const blob = resource;
1231
+ return blob.type || "";
1232
+ }
1233
+ if (typeof resource === "string") {
1234
+ return parseMIMETypeFromURL(resource);
1235
+ }
1236
+ return "";
1144
1237
  }
1145
1238
  function getResourceContentLength(resource) {
1146
1239
  if (isResponse(resource)) {
1147
- return resource.headers["content-length"] || -1;
1240
+ const response = resource;
1241
+ return response.headers["content-length"] || -1;
1148
1242
  }
1149
1243
  if (isBlob(resource)) {
1150
- return resource.size;
1244
+ const blob = resource;
1245
+ return blob.size;
1151
1246
  }
1152
1247
  if (typeof resource === "string") {
1153
1248
  return resource.length;
@@ -1160,15 +1255,11 @@
1160
1255
  }
1161
1256
  return -1;
1162
1257
  }
1163
- function stripQueryString(url) {
1164
- return url.replace(QUERY_STRING_PATTERN, "");
1165
- }
1166
- var QUERY_STRING_PATTERN;
1167
1258
  var init_resource_utils = __esm({
1168
1259
  "../core/src/lib/utils/resource-utils.ts"() {
1169
1260
  init_is_type();
1170
1261
  init_mime_type_utils();
1171
- QUERY_STRING_PATTERN = /\?.*/;
1262
+ init_url_utils();
1172
1263
  }
1173
1264
  });
1174
1265
 
@@ -1182,7 +1273,8 @@
1182
1273
  if (contentLength >= 0) {
1183
1274
  headers["content-length"] = String(contentLength);
1184
1275
  }
1185
- const { url, type } = getResourceUrlAndType(resource);
1276
+ const url = getResourceUrl(resource);
1277
+ const type = getResourceMIMEType(resource);
1186
1278
  if (type) {
1187
1279
  headers["content-type"] = type;
1188
1280
  }
@@ -1316,11 +1408,11 @@
1316
1408
  });
1317
1409
 
1318
1410
  // ../../node_modules/@probe.gl/env/dist/utils/globals.js
1319
- var VERSION4, isBrowser4;
1411
+ var VERSION5, isBrowser4;
1320
1412
  var init_globals4 = __esm({
1321
1413
  "../../node_modules/@probe.gl/env/dist/utils/globals.js"() {
1322
1414
  init_is_browser();
1323
- VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
1415
+ VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
1324
1416
  isBrowser4 = isBrowser3();
1325
1417
  }
1326
1418
  });
@@ -1657,7 +1749,7 @@
1657
1749
  id: ""
1658
1750
  };
1659
1751
  _defineProperty(this, "id", void 0);
1660
- _defineProperty(this, "VERSION", VERSION4);
1752
+ _defineProperty(this, "VERSION", VERSION5);
1661
1753
  _defineProperty(this, "_startTs", getHiResTimestamp());
1662
1754
  _defineProperty(this, "_deltaTs", getHiResTimestamp());
1663
1755
  _defineProperty(this, "_storage", void 0);
@@ -1860,7 +1952,7 @@
1860
1952
  return noop;
1861
1953
  }
1862
1954
  };
1863
- _defineProperty(Log, "VERSION", VERSION4);
1955
+ _defineProperty(Log, "VERSION", VERSION5);
1864
1956
  }
1865
1957
  });
1866
1958
 
@@ -2168,8 +2260,9 @@
2168
2260
  return loader;
2169
2261
  }
2170
2262
  function selectLoaderInternal(data, loaders, options, context) {
2171
- const { url, type } = getResourceUrlAndType(data);
2172
- const testUrl = url || context?.url;
2263
+ const url = getResourceUrl(data);
2264
+ const type = getResourceMIMEType(data);
2265
+ const testUrl = stripQueryString(url) || context?.url;
2173
2266
  let loader = null;
2174
2267
  let reason = "";
2175
2268
  if (options?.mimeType) {
@@ -2198,7 +2291,8 @@
2198
2291
  return true;
2199
2292
  }
2200
2293
  function getNoValidLoaderMessage(data) {
2201
- const { url, type } = getResourceUrlAndType(data);
2294
+ const url = getResourceUrl(data);
2295
+ const type = getResourceMIMEType(data);
2202
2296
  let message = "No valid loader found (";
2203
2297
  message += url ? `${path_exports.filename(url)}, ` : "no url provided, ";
2204
2298
  message += `MIME type: ${type ? `"${type}"` : "not provided"}, `;
@@ -2317,6 +2411,7 @@
2317
2411
  init_resource_utils();
2318
2412
  init_register_loaders();
2319
2413
  init_is_type();
2414
+ init_url_utils();
2320
2415
  EXT_PATTERN = /\.([^.]+)$/;
2321
2416
  }
2322
2417
  });
@@ -2529,18 +2624,25 @@
2529
2624
  });
2530
2625
 
2531
2626
  // ../core/src/lib/loader-utils/loader-context.ts
2532
- function getLoaderContext(context, options, previousContext = null) {
2533
- if (previousContext) {
2534
- return previousContext;
2627
+ function getLoaderContext(context, options, parentContext) {
2628
+ if (parentContext) {
2629
+ return parentContext;
2535
2630
  }
2536
- const resolvedContext = {
2631
+ const newContext = {
2537
2632
  fetch: getFetchFunction(options, context),
2538
2633
  ...context
2539
2634
  };
2540
- if (!Array.isArray(resolvedContext.loaders)) {
2541
- resolvedContext.loaders = null;
2635
+ if (newContext.url) {
2636
+ const baseUrl = stripQueryString(newContext.url);
2637
+ newContext.baseUrl = baseUrl;
2638
+ newContext.queryString = extractQueryString(newContext.url);
2639
+ newContext.filename = path_exports.filename(baseUrl);
2640
+ newContext.baseUrl = path_exports.dirname(baseUrl);
2641
+ }
2642
+ if (!Array.isArray(newContext.loaders)) {
2643
+ newContext.loaders = null;
2542
2644
  }
2543
- return resolvedContext;
2645
+ return newContext;
2544
2646
  }
2545
2647
  function getLoadersFromContext(loaders, context) {
2546
2648
  if (!context && loaders && !Array.isArray(loaders)) {
@@ -2559,6 +2661,8 @@
2559
2661
  var init_loader_context = __esm({
2560
2662
  "../core/src/lib/loader-utils/loader-context.ts"() {
2561
2663
  init_get_fetch_function();
2664
+ init_url_utils();
2665
+ init_src2();
2562
2666
  }
2563
2667
  });
2564
2668
 
@@ -2572,7 +2676,7 @@
2572
2676
  }
2573
2677
  data = await data;
2574
2678
  options = options || {};
2575
- const { url } = getResourceUrlAndType(data);
2679
+ const url = getResourceUrl(data);
2576
2680
  const typedLoaders = loaders;
2577
2681
  const candidateLoaders = getLoadersFromContext(typedLoaders, context);
2578
2682
  const loader = await selectLoader(data, candidateLoaders, options);
@@ -2580,7 +2684,7 @@
2580
2684
  return null;
2581
2685
  }
2582
2686
  options = normalizeOptions(options, loader, candidateLoaders, url);
2583
- context = getLoaderContext({ url, parse, loaders: candidateLoaders }, options, context);
2687
+ context = getLoaderContext({ url, parse, loaders: candidateLoaders }, options, context || null);
2584
2688
  return await parseWithLoader(loader, data, options, context);
2585
2689
  }
2586
2690
  async function parseWithLoader(loader, data, options, context) {
@@ -5973,10 +6077,10 @@
5973
6077
  });
5974
6078
 
5975
6079
  // ../images/src/lib/utils/version.ts
5976
- var VERSION5;
6080
+ var VERSION6;
5977
6081
  var init_version2 = __esm({
5978
6082
  "../images/src/lib/utils/version.ts"() {
5979
- VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
6083
+ VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
5980
6084
  }
5981
6085
  });
5982
6086
 
@@ -6425,7 +6529,7 @@
6425
6529
  id: "image",
6426
6530
  module: "images",
6427
6531
  name: "Images",
6428
- version: VERSION5,
6532
+ version: VERSION6,
6429
6533
  mimeTypes: MIME_TYPES,
6430
6534
  extensions: EXTENSIONS,
6431
6535
  parse: parseImage,
@@ -6443,10 +6547,10 @@
6443
6547
  });
6444
6548
 
6445
6549
  // ../draco/src/lib/utils/version.ts
6446
- var VERSION6;
6550
+ var VERSION7;
6447
6551
  var init_version3 = __esm({
6448
6552
  "../draco/src/lib/utils/version.ts"() {
6449
- VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
6553
+ VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
6450
6554
  }
6451
6555
  });
6452
6556
 
@@ -6469,7 +6573,7 @@
6469
6573
  id: isBrowser2 ? "draco" : "draco-nodejs",
6470
6574
  module: "draco",
6471
6575
  shapes: ["mesh"],
6472
- version: VERSION6,
6576
+ version: VERSION7,
6473
6577
  worker: true,
6474
6578
  extensions: ["drc"],
6475
6579
  mimeTypes: ["application/octet-stream"],
@@ -7525,10 +7629,10 @@
7525
7629
  });
7526
7630
 
7527
7631
  // ../textures/src/lib/utils/version.ts
7528
- var VERSION7;
7632
+ var VERSION8;
7529
7633
  var init_version4 = __esm({
7530
7634
  "../textures/src/lib/utils/version.ts"() {
7531
- VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
7635
+ VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
7532
7636
  }
7533
7637
  });
7534
7638
 
@@ -7595,13 +7699,13 @@
7595
7699
  });
7596
7700
  });
7597
7701
  }
7598
- var VERSION8, BASIS_CDN_ENCODER_WASM, BASIS_CDN_ENCODER_JS, loadBasisTranscoderPromise, loadBasisEncoderPromise;
7702
+ var VERSION9, BASIS_CDN_ENCODER_WASM, BASIS_CDN_ENCODER_JS, loadBasisTranscoderPromise, loadBasisEncoderPromise;
7599
7703
  var init_basis_module_loader = __esm({
7600
7704
  "../textures/src/lib/parsers/basis-module-loader.ts"() {
7601
7705
  init_src();
7602
- VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
7603
- BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.wasm`;
7604
- BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.js`;
7706
+ VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
7707
+ BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION9}/dist/libs/basis_encoder.wasm`;
7708
+ BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION9}/dist/libs/basis_encoder.js`;
7605
7709
  }
7606
7710
  });
7607
7711
 
@@ -8169,7 +8273,7 @@
8169
8273
  name: "Basis",
8170
8274
  id: isBrowser2 ? "basis" : "basis-nodejs",
8171
8275
  module: "textures",
8172
- version: VERSION7,
8276
+ version: VERSION8,
8173
8277
  worker: true,
8174
8278
  extensions: ["basis", "ktx2"],
8175
8279
  mimeTypes: ["application/octet-stream", "image/ktx2"],
@@ -8512,7 +8616,7 @@
8512
8616
  name: "Texture Containers",
8513
8617
  id: "compressed-texture",
8514
8618
  module: "textures",
8515
- version: VERSION7,
8619
+ version: VERSION8,
8516
8620
  worker: true,
8517
8621
  extensions: [
8518
8622
  "ktx",
@@ -8605,7 +8709,7 @@
8605
8709
  }
8606
8710
  return attributeUrls;
8607
8711
  }
8608
- var init_url_utils = __esm({
8712
+ var init_url_utils2 = __esm({
8609
8713
  "src/lib/utils/url-utils.ts"() {
8610
8714
  }
8611
8715
  });
@@ -9448,20 +9552,20 @@
9448
9552
  }
9449
9553
  return value;
9450
9554
  }
9451
- var VERSION9, EMPTY_VALUE, REJECTED_STATUS, I3SAttributeLoader;
9555
+ var VERSION10, EMPTY_VALUE, REJECTED_STATUS, I3SAttributeLoader;
9452
9556
  var init_i3s_attribute_loader = __esm({
9453
9557
  "src/i3s-attribute-loader.ts"() {
9454
9558
  init_src3();
9455
9559
  init_parse_i3s_attribute();
9456
- init_url_utils();
9457
- VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
9560
+ init_url_utils2();
9561
+ VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
9458
9562
  EMPTY_VALUE = "";
9459
9563
  REJECTED_STATUS = "rejected";
9460
9564
  I3SAttributeLoader = {
9461
9565
  name: "I3S Attribute",
9462
9566
  id: "i3s-attribute",
9463
9567
  module: "i3s",
9464
- version: VERSION9,
9568
+ version: VERSION10,
9465
9569
  mimeTypes: ["application/binary"],
9466
9570
  parse: parse3,
9467
9571
  extensions: ["bin"],
@@ -9534,7 +9638,7 @@
9534
9638
  "src/lib/utils/customizeColors.ts"() {
9535
9639
  init_src3();
9536
9640
  init_i3s_attribute_loader();
9537
- init_url_utils();
9641
+ init_url_utils2();
9538
9642
  }
9539
9643
  });
9540
9644
 
@@ -9920,7 +10024,7 @@
9920
10024
  init_src6();
9921
10025
  init_src7();
9922
10026
  init_types();
9923
- init_url_utils();
10027
+ init_url_utils2();
9924
10028
  init_constants2();
9925
10029
  init_customizeColors();
9926
10030
  scratchVector5 = new Vector3([0, 0, 0]);
@@ -9938,18 +10042,18 @@
9938
10042
  }
9939
10043
  return await parseI3STileContent(data, tileOptions, tilesetOptions, options, context);
9940
10044
  }
9941
- var VERSION10, I3SContentLoader;
10045
+ var VERSION11, I3SContentLoader;
9942
10046
  var init_i3s_content_loader = __esm({
9943
10047
  "src/i3s-content-loader.ts"() {
9944
10048
  init_src();
9945
10049
  init_parse_i3s_tile_content();
9946
- VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
10050
+ VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
9947
10051
  I3SContentLoader = {
9948
10052
  name: "I3S Content (Indexed Scene Layers)",
9949
10053
  id: isBrowser2 ? "i3s-content" : "i3s-content-nodejs",
9950
10054
  module: "i3s",
9951
10055
  worker: true,
9952
- version: VERSION10,
10056
+ version: VERSION11,
9953
10057
  mimeTypes: ["application/octet-stream"],
9954
10058
  parse: parse4,
9955
10059
  extensions: ["bin"],
@@ -10553,15 +10657,15 @@
10553
10657
  data = parseNodePage(data);
10554
10658
  return data;
10555
10659
  }
10556
- var VERSION11, I3SNodePageLoader;
10660
+ var VERSION12, I3SNodePageLoader;
10557
10661
  var init_i3s_node_page_loader = __esm({
10558
10662
  "src/i3s-node-page-loader.ts"() {
10559
- VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10663
+ VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10560
10664
  I3SNodePageLoader = {
10561
10665
  name: "I3S Node Page",
10562
10666
  id: "i3s-node-page",
10563
10667
  module: "i3s",
10564
- version: VERSION11,
10668
+ version: VERSION12,
10565
10669
  mimeTypes: ["application/json"],
10566
10670
  parse: parse5,
10567
10671
  extensions: ["json"],
@@ -10578,7 +10682,7 @@
10578
10682
  init_src7();
10579
10683
  init_i3s_node_page_loader();
10580
10684
  init_parse_i3s();
10581
- init_url_utils();
10685
+ init_url_utils2();
10582
10686
  I3SNodePagesTiles = class {
10583
10687
  constructor(tileset, options) {
10584
10688
  this.nodePages = [];
@@ -10830,7 +10934,7 @@
10830
10934
  init_src3();
10831
10935
  init_src8();
10832
10936
  init_i3s_nodepages_tiles();
10833
- init_url_utils();
10937
+ init_url_utils2();
10834
10938
  }
10835
10939
  });
10836
10940
 
@@ -10885,14 +10989,14 @@
10885
10989
  }
10886
10990
  return null;
10887
10991
  }
10888
- var VERSION12, TILESET_REGEX, TILE_HEADER_REGEX, SLPK_HEX, POINT_CLOUD, I3SLoader;
10992
+ var VERSION13, TILESET_REGEX, TILE_HEADER_REGEX, SLPK_HEX, POINT_CLOUD, I3SLoader;
10889
10993
  var init_i3s_loader = __esm({
10890
10994
  "src/i3s-loader.ts"() {
10891
10995
  init_src3();
10892
10996
  init_i3s_content_loader();
10893
10997
  init_parse_i3s();
10894
10998
  init_constants2();
10895
- VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10999
+ VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10896
11000
  TILESET_REGEX = /layers\/[0-9]+$/;
10897
11001
  TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
10898
11002
  SLPK_HEX = "504b0304";
@@ -10901,7 +11005,7 @@
10901
11005
  name: "I3S (Indexed Scene Layers)",
10902
11006
  id: "i3s",
10903
11007
  module: "i3s",
10904
- version: VERSION12,
11008
+ version: VERSION13,
10905
11009
  mimeTypes: ["application/octet-stream"],
10906
11010
  parse: parseI3S,
10907
11011
  extensions: ["bin"],
@@ -10925,6 +11029,459 @@
10925
11029
  }
10926
11030
  });
10927
11031
 
11032
+ // src/lib/parsers/parse-zip/cd-file-header.ts
11033
+ var parseZipCDFileHeader;
11034
+ var init_cd_file_header = __esm({
11035
+ "src/lib/parsers/parse-zip/cd-file-header.ts"() {
11036
+ parseZipCDFileHeader = (headerOffset, buffer) => {
11037
+ const offsets = {
11038
+ CD_COMPRESSED_SIZE_OFFSET: 20,
11039
+ CD_UNCOMPRESSED_SIZE_OFFSET: 24,
11040
+ CD_FILE_NAME_LENGTH_OFFSET: 28,
11041
+ CD_EXTRA_FIELD_LENGTH_OFFSET: 30,
11042
+ CD_LOCAL_HEADER_OFFSET_OFFSET: 42,
11043
+ CD_FILE_NAME_OFFSET: 46
11044
+ };
11045
+ const compressedSize = buffer.getUint32(headerOffset + offsets.CD_COMPRESSED_SIZE_OFFSET, true);
11046
+ const uncompressedSize = buffer.getUint32(headerOffset + offsets.CD_UNCOMPRESSED_SIZE_OFFSET, true);
11047
+ const fileNameLength = buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET, true);
11048
+ const fileName = buffer.buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + fileNameLength);
11049
+ const extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + fileNameLength;
11050
+ const oldFormatOffset = buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET, true);
11051
+ let fileDataOffset = oldFormatOffset;
11052
+ if (fileDataOffset === 4294967295) {
11053
+ let offsetInZip64Data = 4;
11054
+ if (compressedSize === 4294967295) {
11055
+ offsetInZip64Data += 8;
11056
+ }
11057
+ if (uncompressedSize === 4294967295) {
11058
+ offsetInZip64Data += 8;
11059
+ }
11060
+ fileDataOffset = buffer.getUint32(extraOffset + offsetInZip64Data, true);
11061
+ }
11062
+ const localHeaderOffset = fileDataOffset;
11063
+ return {
11064
+ compressedSize,
11065
+ uncompressedSize,
11066
+ fileNameLength,
11067
+ fileName,
11068
+ extraOffset,
11069
+ localHeaderOffset
11070
+ };
11071
+ };
11072
+ }
11073
+ });
11074
+
11075
+ // src/lib/parsers/parse-zip/local-file-header.ts
11076
+ var parseZipLocalFileHeader;
11077
+ var init_local_file_header = __esm({
11078
+ "src/lib/parsers/parse-zip/local-file-header.ts"() {
11079
+ parseZipLocalFileHeader = (headerOffset, buffer) => {
11080
+ const offsets = {
11081
+ COMPRESSED_SIZE_OFFSET: 18,
11082
+ FILE_NAME_LENGTH_OFFSET: 26,
11083
+ EXTRA_FIELD_LENGTH_OFFSET: 28,
11084
+ FILE_NAME_OFFSET: 30
11085
+ };
11086
+ const fileNameLength = buffer.getUint16(headerOffset + offsets.FILE_NAME_LENGTH_OFFSET, true);
11087
+ const extraFieldLength = buffer.getUint16(headerOffset + offsets.EXTRA_FIELD_LENGTH_OFFSET, true);
11088
+ const fileDataOffset = headerOffset + offsets.FILE_NAME_OFFSET + fileNameLength + extraFieldLength;
11089
+ const compressedSize = buffer.getUint32(headerOffset + offsets.COMPRESSED_SIZE_OFFSET, true);
11090
+ return {
11091
+ fileNameLength,
11092
+ extraFieldLength,
11093
+ fileDataOffset,
11094
+ compressedSize
11095
+ };
11096
+ };
11097
+ }
11098
+ });
11099
+
11100
+ // ../../node_modules/crypt/crypt.js
11101
+ var require_crypt = __commonJS({
11102
+ "../../node_modules/crypt/crypt.js"(exports, module) {
11103
+ (function() {
11104
+ var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", crypt = {
11105
+ rotl: function(n2, b) {
11106
+ return n2 << b | n2 >>> 32 - b;
11107
+ },
11108
+ rotr: function(n2, b) {
11109
+ return n2 << 32 - b | n2 >>> b;
11110
+ },
11111
+ endian: function(n2) {
11112
+ if (n2.constructor == Number) {
11113
+ return crypt.rotl(n2, 8) & 16711935 | crypt.rotl(n2, 24) & 4278255360;
11114
+ }
11115
+ for (var i2 = 0; i2 < n2.length; i2++)
11116
+ n2[i2] = crypt.endian(n2[i2]);
11117
+ return n2;
11118
+ },
11119
+ randomBytes: function(n2) {
11120
+ for (var bytes = []; n2 > 0; n2--)
11121
+ bytes.push(Math.floor(Math.random() * 256));
11122
+ return bytes;
11123
+ },
11124
+ bytesToWords: function(bytes) {
11125
+ for (var words = [], i2 = 0, b = 0; i2 < bytes.length; i2++, b += 8)
11126
+ words[b >>> 5] |= bytes[i2] << 24 - b % 32;
11127
+ return words;
11128
+ },
11129
+ wordsToBytes: function(words) {
11130
+ for (var bytes = [], b = 0; b < words.length * 32; b += 8)
11131
+ bytes.push(words[b >>> 5] >>> 24 - b % 32 & 255);
11132
+ return bytes;
11133
+ },
11134
+ bytesToHex: function(bytes) {
11135
+ for (var hex = [], i2 = 0; i2 < bytes.length; i2++) {
11136
+ hex.push((bytes[i2] >>> 4).toString(16));
11137
+ hex.push((bytes[i2] & 15).toString(16));
11138
+ }
11139
+ return hex.join("");
11140
+ },
11141
+ hexToBytes: function(hex) {
11142
+ for (var bytes = [], c2 = 0; c2 < hex.length; c2 += 2)
11143
+ bytes.push(parseInt(hex.substr(c2, 2), 16));
11144
+ return bytes;
11145
+ },
11146
+ bytesToBase64: function(bytes) {
11147
+ for (var base64 = [], i2 = 0; i2 < bytes.length; i2 += 3) {
11148
+ var triplet = bytes[i2] << 16 | bytes[i2 + 1] << 8 | bytes[i2 + 2];
11149
+ for (var j = 0; j < 4; j++)
11150
+ if (i2 * 8 + j * 6 <= bytes.length * 8)
11151
+ base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 63));
11152
+ else
11153
+ base64.push("=");
11154
+ }
11155
+ return base64.join("");
11156
+ },
11157
+ base64ToBytes: function(base64) {
11158
+ base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");
11159
+ for (var bytes = [], i2 = 0, imod4 = 0; i2 < base64.length; imod4 = ++i2 % 4) {
11160
+ if (imod4 == 0)
11161
+ continue;
11162
+ bytes.push((base64map.indexOf(base64.charAt(i2 - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i2)) >>> 6 - imod4 * 2);
11163
+ }
11164
+ return bytes;
11165
+ }
11166
+ };
11167
+ module.exports = crypt;
11168
+ })();
11169
+ }
11170
+ });
11171
+
11172
+ // ../../node_modules/charenc/charenc.js
11173
+ var require_charenc = __commonJS({
11174
+ "../../node_modules/charenc/charenc.js"(exports, module) {
11175
+ var charenc = {
11176
+ utf8: {
11177
+ stringToBytes: function(str) {
11178
+ return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
11179
+ },
11180
+ bytesToString: function(bytes) {
11181
+ return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
11182
+ }
11183
+ },
11184
+ bin: {
11185
+ stringToBytes: function(str) {
11186
+ for (var bytes = [], i2 = 0; i2 < str.length; i2++)
11187
+ bytes.push(str.charCodeAt(i2) & 255);
11188
+ return bytes;
11189
+ },
11190
+ bytesToString: function(bytes) {
11191
+ for (var str = [], i2 = 0; i2 < bytes.length; i2++)
11192
+ str.push(String.fromCharCode(bytes[i2]));
11193
+ return str.join("");
11194
+ }
11195
+ }
11196
+ };
11197
+ module.exports = charenc;
11198
+ }
11199
+ });
11200
+
11201
+ // ../../node_modules/is-buffer/index.js
11202
+ var require_is_buffer = __commonJS({
11203
+ "../../node_modules/is-buffer/index.js"(exports, module) {
11204
+ module.exports = function(obj) {
11205
+ return obj != null && (isBuffer3(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
11206
+ };
11207
+ function isBuffer3(obj) {
11208
+ return !!obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
11209
+ }
11210
+ function isSlowBuffer(obj) {
11211
+ return typeof obj.readFloatLE === "function" && typeof obj.slice === "function" && isBuffer3(obj.slice(0, 0));
11212
+ }
11213
+ }
11214
+ });
11215
+
11216
+ // ../../node_modules/md5/md5.js
11217
+ var require_md5 = __commonJS({
11218
+ "../../node_modules/md5/md5.js"(exports, module) {
11219
+ (function() {
11220
+ var crypt = require_crypt(), utf8 = require_charenc().utf8, isBuffer3 = require_is_buffer(), bin = require_charenc().bin, md52 = function(message, options) {
11221
+ if (message.constructor == String)
11222
+ if (options && options.encoding === "binary")
11223
+ message = bin.stringToBytes(message);
11224
+ else
11225
+ message = utf8.stringToBytes(message);
11226
+ else if (isBuffer3(message))
11227
+ message = Array.prototype.slice.call(message, 0);
11228
+ else if (!Array.isArray(message) && message.constructor !== Uint8Array)
11229
+ message = message.toString();
11230
+ var m = crypt.bytesToWords(message), l2 = message.length * 8, a2 = 1732584193, b = -271733879, c2 = -1732584194, d = 271733878;
11231
+ for (var i2 = 0; i2 < m.length; i2++) {
11232
+ m[i2] = (m[i2] << 8 | m[i2] >>> 24) & 16711935 | (m[i2] << 24 | m[i2] >>> 8) & 4278255360;
11233
+ }
11234
+ m[l2 >>> 5] |= 128 << l2 % 32;
11235
+ m[(l2 + 64 >>> 9 << 4) + 14] = l2;
11236
+ var FF = md52._ff, GG = md52._gg, HH = md52._hh, II = md52._ii;
11237
+ for (var i2 = 0; i2 < m.length; i2 += 16) {
11238
+ var aa = a2, bb = b, cc = c2, dd = d;
11239
+ a2 = FF(a2, b, c2, d, m[i2 + 0], 7, -680876936);
11240
+ d = FF(d, a2, b, c2, m[i2 + 1], 12, -389564586);
11241
+ c2 = FF(c2, d, a2, b, m[i2 + 2], 17, 606105819);
11242
+ b = FF(b, c2, d, a2, m[i2 + 3], 22, -1044525330);
11243
+ a2 = FF(a2, b, c2, d, m[i2 + 4], 7, -176418897);
11244
+ d = FF(d, a2, b, c2, m[i2 + 5], 12, 1200080426);
11245
+ c2 = FF(c2, d, a2, b, m[i2 + 6], 17, -1473231341);
11246
+ b = FF(b, c2, d, a2, m[i2 + 7], 22, -45705983);
11247
+ a2 = FF(a2, b, c2, d, m[i2 + 8], 7, 1770035416);
11248
+ d = FF(d, a2, b, c2, m[i2 + 9], 12, -1958414417);
11249
+ c2 = FF(c2, d, a2, b, m[i2 + 10], 17, -42063);
11250
+ b = FF(b, c2, d, a2, m[i2 + 11], 22, -1990404162);
11251
+ a2 = FF(a2, b, c2, d, m[i2 + 12], 7, 1804603682);
11252
+ d = FF(d, a2, b, c2, m[i2 + 13], 12, -40341101);
11253
+ c2 = FF(c2, d, a2, b, m[i2 + 14], 17, -1502002290);
11254
+ b = FF(b, c2, d, a2, m[i2 + 15], 22, 1236535329);
11255
+ a2 = GG(a2, b, c2, d, m[i2 + 1], 5, -165796510);
11256
+ d = GG(d, a2, b, c2, m[i2 + 6], 9, -1069501632);
11257
+ c2 = GG(c2, d, a2, b, m[i2 + 11], 14, 643717713);
11258
+ b = GG(b, c2, d, a2, m[i2 + 0], 20, -373897302);
11259
+ a2 = GG(a2, b, c2, d, m[i2 + 5], 5, -701558691);
11260
+ d = GG(d, a2, b, c2, m[i2 + 10], 9, 38016083);
11261
+ c2 = GG(c2, d, a2, b, m[i2 + 15], 14, -660478335);
11262
+ b = GG(b, c2, d, a2, m[i2 + 4], 20, -405537848);
11263
+ a2 = GG(a2, b, c2, d, m[i2 + 9], 5, 568446438);
11264
+ d = GG(d, a2, b, c2, m[i2 + 14], 9, -1019803690);
11265
+ c2 = GG(c2, d, a2, b, m[i2 + 3], 14, -187363961);
11266
+ b = GG(b, c2, d, a2, m[i2 + 8], 20, 1163531501);
11267
+ a2 = GG(a2, b, c2, d, m[i2 + 13], 5, -1444681467);
11268
+ d = GG(d, a2, b, c2, m[i2 + 2], 9, -51403784);
11269
+ c2 = GG(c2, d, a2, b, m[i2 + 7], 14, 1735328473);
11270
+ b = GG(b, c2, d, a2, m[i2 + 12], 20, -1926607734);
11271
+ a2 = HH(a2, b, c2, d, m[i2 + 5], 4, -378558);
11272
+ d = HH(d, a2, b, c2, m[i2 + 8], 11, -2022574463);
11273
+ c2 = HH(c2, d, a2, b, m[i2 + 11], 16, 1839030562);
11274
+ b = HH(b, c2, d, a2, m[i2 + 14], 23, -35309556);
11275
+ a2 = HH(a2, b, c2, d, m[i2 + 1], 4, -1530992060);
11276
+ d = HH(d, a2, b, c2, m[i2 + 4], 11, 1272893353);
11277
+ c2 = HH(c2, d, a2, b, m[i2 + 7], 16, -155497632);
11278
+ b = HH(b, c2, d, a2, m[i2 + 10], 23, -1094730640);
11279
+ a2 = HH(a2, b, c2, d, m[i2 + 13], 4, 681279174);
11280
+ d = HH(d, a2, b, c2, m[i2 + 0], 11, -358537222);
11281
+ c2 = HH(c2, d, a2, b, m[i2 + 3], 16, -722521979);
11282
+ b = HH(b, c2, d, a2, m[i2 + 6], 23, 76029189);
11283
+ a2 = HH(a2, b, c2, d, m[i2 + 9], 4, -640364487);
11284
+ d = HH(d, a2, b, c2, m[i2 + 12], 11, -421815835);
11285
+ c2 = HH(c2, d, a2, b, m[i2 + 15], 16, 530742520);
11286
+ b = HH(b, c2, d, a2, m[i2 + 2], 23, -995338651);
11287
+ a2 = II(a2, b, c2, d, m[i2 + 0], 6, -198630844);
11288
+ d = II(d, a2, b, c2, m[i2 + 7], 10, 1126891415);
11289
+ c2 = II(c2, d, a2, b, m[i2 + 14], 15, -1416354905);
11290
+ b = II(b, c2, d, a2, m[i2 + 5], 21, -57434055);
11291
+ a2 = II(a2, b, c2, d, m[i2 + 12], 6, 1700485571);
11292
+ d = II(d, a2, b, c2, m[i2 + 3], 10, -1894986606);
11293
+ c2 = II(c2, d, a2, b, m[i2 + 10], 15, -1051523);
11294
+ b = II(b, c2, d, a2, m[i2 + 1], 21, -2054922799);
11295
+ a2 = II(a2, b, c2, d, m[i2 + 8], 6, 1873313359);
11296
+ d = II(d, a2, b, c2, m[i2 + 15], 10, -30611744);
11297
+ c2 = II(c2, d, a2, b, m[i2 + 6], 15, -1560198380);
11298
+ b = II(b, c2, d, a2, m[i2 + 13], 21, 1309151649);
11299
+ a2 = II(a2, b, c2, d, m[i2 + 4], 6, -145523070);
11300
+ d = II(d, a2, b, c2, m[i2 + 11], 10, -1120210379);
11301
+ c2 = II(c2, d, a2, b, m[i2 + 2], 15, 718787259);
11302
+ b = II(b, c2, d, a2, m[i2 + 9], 21, -343485551);
11303
+ a2 = a2 + aa >>> 0;
11304
+ b = b + bb >>> 0;
11305
+ c2 = c2 + cc >>> 0;
11306
+ d = d + dd >>> 0;
11307
+ }
11308
+ return crypt.endian([a2, b, c2, d]);
11309
+ };
11310
+ md52._ff = function(a2, b, c2, d, x, s2, t2) {
11311
+ var n2 = a2 + (b & c2 | ~b & d) + (x >>> 0) + t2;
11312
+ return (n2 << s2 | n2 >>> 32 - s2) + b;
11313
+ };
11314
+ md52._gg = function(a2, b, c2, d, x, s2, t2) {
11315
+ var n2 = a2 + (b & d | c2 & ~d) + (x >>> 0) + t2;
11316
+ return (n2 << s2 | n2 >>> 32 - s2) + b;
11317
+ };
11318
+ md52._hh = function(a2, b, c2, d, x, s2, t2) {
11319
+ var n2 = a2 + (b ^ c2 ^ d) + (x >>> 0) + t2;
11320
+ return (n2 << s2 | n2 >>> 32 - s2) + b;
11321
+ };
11322
+ md52._ii = function(a2, b, c2, d, x, s2, t2) {
11323
+ var n2 = a2 + (c2 ^ (b | ~d)) + (x >>> 0) + t2;
11324
+ return (n2 << s2 | n2 >>> 32 - s2) + b;
11325
+ };
11326
+ md52._blocksize = 16;
11327
+ md52._digestsize = 16;
11328
+ module.exports = function(message, options) {
11329
+ if (message === void 0 || message === null)
11330
+ throw new Error("Illegal argument " + message);
11331
+ var digestbytes = crypt.wordsToBytes(md52(message, options));
11332
+ return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);
11333
+ };
11334
+ })();
11335
+ }
11336
+ });
11337
+
11338
+ // ../compression/src/compression-worker.ts
11339
+ var VERSION14, CompressionWorker;
11340
+ var init_compression_worker = __esm({
11341
+ "../compression/src/compression-worker.ts"() {
11342
+ VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
11343
+ CompressionWorker = {
11344
+ id: "compression",
11345
+ name: "compression",
11346
+ module: "compression",
11347
+ version: VERSION14,
11348
+ options: {}
11349
+ };
11350
+ }
11351
+ });
11352
+
11353
+ // ../compression/src/index.ts
11354
+ var init_src9 = __esm({
11355
+ "../compression/src/index.ts"() {
11356
+ init_compression_worker();
11357
+ }
11358
+ });
11359
+
11360
+ // src/lib/parsers/parse-slpk/slpk-archieve.ts
11361
+ var import_md5, SLPKArchive;
11362
+ var init_slpk_archieve = __esm({
11363
+ "src/lib/parsers/parse-slpk/slpk-archieve.ts"() {
11364
+ init_src();
11365
+ import_md5 = __toModule(require_md5());
11366
+ init_src9();
11367
+ init_local_file_header();
11368
+ SLPKArchive = class {
11369
+ constructor(slpkArchiveBuffer, hashFile) {
11370
+ this.slpkArchive = new DataView(slpkArchiveBuffer);
11371
+ this.hashArray = this.parseHashFile(hashFile);
11372
+ }
11373
+ parseHashFile(hashFile) {
11374
+ const hashFileBuffer = Buffer.from(hashFile);
11375
+ const hashArray = [];
11376
+ for (let i2 = 0; i2 < hashFileBuffer.buffer.byteLength; i2 = i2 + 24) {
11377
+ const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i2 + 16, hashFileBuffer.byteOffset + i2 + 24));
11378
+ const offset = offsetBuffer.getUint32(offsetBuffer.byteOffset, true);
11379
+ hashArray.push({
11380
+ hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i2, hashFileBuffer.byteOffset + i2 + 16)),
11381
+ offset
11382
+ });
11383
+ }
11384
+ return hashArray;
11385
+ }
11386
+ async getFile(path, mode = "raw") {
11387
+ if (mode === "http") {
11388
+ throw new Error("http mode is not supported");
11389
+ }
11390
+ const fileToDecompress = this.getFileBytes(`${path}.gz`);
11391
+ if (fileToDecompress) {
11392
+ const decompressedData = await processOnWorker(CompressionWorker, fileToDecompress, {
11393
+ compression: "gzip",
11394
+ operation: "decompress",
11395
+ _workerType: "test",
11396
+ gzip: {}
11397
+ });
11398
+ return decompressedData;
11399
+ }
11400
+ const fileWithoutCompression = this.getFileBytes(path);
11401
+ if (fileWithoutCompression) {
11402
+ return Promise.resolve(Buffer.from(fileWithoutCompression));
11403
+ }
11404
+ throw new Error("No such file in the archieve");
11405
+ }
11406
+ getFileBytes(path) {
11407
+ const nameHash = Buffer.from((0, import_md5.default)(path), "hex");
11408
+ const fileInfo = this.hashArray.find((val) => Buffer.compare(val.hash, nameHash) === 0);
11409
+ if (!fileInfo) {
11410
+ return void 0;
11411
+ }
11412
+ const localFileHeader = parseZipLocalFileHeader(this.slpkArchive.byteOffset + fileInfo?.offset, this.slpkArchive);
11413
+ const compressedFile = this.slpkArchive.buffer.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
11414
+ return compressedFile;
11415
+ }
11416
+ };
11417
+ }
11418
+ });
11419
+
11420
+ // src/lib/parsers/parse-slpk/parse-slpk.ts
11421
+ async function parseSLPK(data, options = {}) {
11422
+ const archive = new DataView(data);
11423
+ const cdFileHeaderSignature = [80, 75, 1, 2];
11424
+ const searchWindow = [
11425
+ getByteAt(archive.byteLength - 1, archive),
11426
+ getByteAt(archive.byteLength - 2, archive),
11427
+ getByteAt(archive.byteLength - 3, archive),
11428
+ void 0
11429
+ ];
11430
+ let hashCDOffset = 0;
11431
+ for (let i2 = archive.byteLength - 4; i2 > -1; i2--) {
11432
+ searchWindow[3] = searchWindow[2];
11433
+ searchWindow[2] = searchWindow[1];
11434
+ searchWindow[1] = searchWindow[0];
11435
+ searchWindow[0] = getByteAt(i2, archive);
11436
+ if (searchWindow.every((val, index) => val === cdFileHeaderSignature[index])) {
11437
+ hashCDOffset = i2;
11438
+ break;
11439
+ }
11440
+ }
11441
+ const cdFileHeader = parseZipCDFileHeader(hashCDOffset, archive);
11442
+ const textDecoder = new TextDecoder();
11443
+ if (textDecoder.decode(cdFileHeader.fileName) !== "@specialIndexFileHASH128@") {
11444
+ throw new Error("No hash file in slpk");
11445
+ }
11446
+ const localFileHeader = parseZipLocalFileHeader(cdFileHeader.localHeaderOffset, archive);
11447
+ const fileDataOffset = localFileHeader.fileDataOffset;
11448
+ const hashFile = archive.buffer.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
11449
+ if (!hashFile) {
11450
+ throw new Error("No hash file in slpk");
11451
+ }
11452
+ return await new SLPKArchive(data, hashFile).getFile(options.path ?? "");
11453
+ }
11454
+ var getByteAt;
11455
+ var init_parse_slpk = __esm({
11456
+ "src/lib/parsers/parse-slpk/parse-slpk.ts"() {
11457
+ init_cd_file_header();
11458
+ init_local_file_header();
11459
+ init_slpk_archieve();
11460
+ getByteAt = (offset, buffer) => {
11461
+ return buffer.getUint8(buffer.byteOffset + offset);
11462
+ };
11463
+ }
11464
+ });
11465
+
11466
+ // src/i3s-slpk-loader.ts
11467
+ var VERSION15, SLPKLoader;
11468
+ var init_i3s_slpk_loader = __esm({
11469
+ "src/i3s-slpk-loader.ts"() {
11470
+ init_parse_slpk();
11471
+ VERSION15 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
11472
+ SLPKLoader = {
11473
+ name: "I3S SLPK (Scene Layer Package)",
11474
+ id: "slpk",
11475
+ module: "i3s",
11476
+ version: VERSION15,
11477
+ mimeTypes: ["application/octet-stream"],
11478
+ parse: parseSLPK,
11479
+ extensions: ["slpk"],
11480
+ options: {}
11481
+ };
11482
+ }
11483
+ });
11484
+
10928
11485
  // src/lib/parsers/parse-i3s-building-scene-layer.ts
10929
11486
  async function parseBuildingSceneLayer(data, url) {
10930
11487
  const layer0 = JSON.parse(new TextDecoder().decode(data));
@@ -10969,16 +11526,16 @@
10969
11526
  }
10970
11527
  return parseBuildingSceneLayer(data, context.url);
10971
11528
  }
10972
- var VERSION13, I3SBuildingSceneLayerLoader;
11529
+ var VERSION16, I3SBuildingSceneLayerLoader;
10973
11530
  var init_i3s_building_scene_layer_loader = __esm({
10974
11531
  "src/i3s-building-scene-layer-loader.ts"() {
10975
11532
  init_parse_i3s_building_scene_layer();
10976
- VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
11533
+ VERSION16 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
10977
11534
  I3SBuildingSceneLayerLoader = {
10978
11535
  name: "I3S Building Scene Layer",
10979
11536
  id: "i3s-building-scene-layer",
10980
11537
  module: "i3s",
10981
- version: VERSION13,
11538
+ version: VERSION16,
10982
11539
  mimeTypes: ["application/json"],
10983
11540
  parse: parse6,
10984
11541
  extensions: ["json"],
@@ -11059,16 +11616,16 @@
11059
11616
  async function parse7(data) {
11060
11617
  return parseWebscene(data);
11061
11618
  }
11062
- var VERSION14, ArcGisWebSceneLoader;
11619
+ var VERSION17, ArcGisWebSceneLoader;
11063
11620
  var init_arcgis_webscene_loader = __esm({
11064
11621
  "src/arcgis-webscene-loader.ts"() {
11065
11622
  init_parse_arcgis_webscene();
11066
- VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
11623
+ VERSION17 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
11067
11624
  ArcGisWebSceneLoader = {
11068
11625
  name: "ArcGIS Web Scene Loader",
11069
11626
  id: "arcgis-web-scene",
11070
11627
  module: "i3s",
11071
- version: VERSION14,
11628
+ version: VERSION17,
11072
11629
  mimeTypes: ["application/json"],
11073
11630
  parse: parse7,
11074
11631
  extensions: ["json"],
@@ -11086,11 +11643,13 @@
11086
11643
  I3SBuildingSceneLayerLoader: () => I3SBuildingSceneLayerLoader,
11087
11644
  I3SContentLoader: () => I3SContentLoader,
11088
11645
  I3SLoader: () => I3SLoader,
11646
+ SLPKLoader: () => SLPKLoader,
11089
11647
  loadFeatureAttributes: () => loadFeatureAttributes
11090
11648
  });
11091
- var init_src9 = __esm({
11649
+ var init_src10 = __esm({
11092
11650
  "src/index.ts"() {
11093
11651
  init_i3s_loader();
11652
+ init_i3s_slpk_loader();
11094
11653
  init_i3s_content_loader();
11095
11654
  init_i3s_attribute_loader();
11096
11655
  init_i3s_building_scene_layer_loader();
@@ -11102,10 +11661,16 @@
11102
11661
  // src/bundle.ts
11103
11662
  var require_bundle = __commonJS({
11104
11663
  "src/bundle.ts"(exports, module) {
11105
- var moduleExports = (init_src9(), src_exports);
11664
+ var moduleExports = (init_src10(), src_exports);
11106
11665
  globalThis.loaders = globalThis.loaders || {};
11107
11666
  module.exports = Object.assign(globalThis.loaders, moduleExports);
11108
11667
  }
11109
11668
  });
11110
11669
  require_bundle();
11111
11670
  })();
11671
+ /*!
11672
+ * Determine if an object is a Buffer
11673
+ *
11674
+ * @author Feross Aboukhadijeh <https://feross.org>
11675
+ * @license MIT
11676
+ */