@loaders.gl/i3s 4.0.0-alpha.6 → 4.0.0-alpha.7

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 (83) hide show
  1. package/dist/dist.min.js +676 -113
  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 +2 -3
  6. package/dist/es5/i3s-content-loader.js.map +1 -1
  7. package/dist/es5/i3s-loader.js +1 -1
  8. package/dist/es5/i3s-node-page-loader.js +1 -1
  9. package/dist/es5/i3s-slpk-loader.js +20 -0
  10. package/dist/es5/i3s-slpk-loader.js.map +1 -0
  11. package/dist/es5/index.js +8 -1
  12. package/dist/es5/index.js.map +1 -1
  13. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +94 -0
  14. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
  15. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +112 -0
  16. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
  17. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +44 -0
  18. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +1 -0
  19. package/dist/es5/lib/parsers/parse-zip/local-file-header.js +26 -0
  20. package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +1 -0
  21. package/dist/es5/workers/{i3s-content-nodejs-worker.js → i3s-content-worker-node.js} +2 -2
  22. package/dist/es5/workers/i3s-content-worker-node.js.map +1 -0
  23. package/dist/esm/arcgis-webscene-loader.js +1 -1
  24. package/dist/esm/i3s-attribute-loader.js +1 -1
  25. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  26. package/dist/esm/i3s-content-loader.js +2 -3
  27. package/dist/esm/i3s-content-loader.js.map +1 -1
  28. package/dist/esm/i3s-loader.js +1 -1
  29. package/dist/esm/i3s-node-page-loader.js +1 -1
  30. package/dist/esm/i3s-slpk-loader.js +13 -0
  31. package/dist/esm/i3s-slpk-loader.js.map +1 -0
  32. package/dist/esm/index.js +2 -1
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +37 -0
  35. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
  36. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +58 -0
  37. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
  38. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +37 -0
  39. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +1 -0
  40. package/dist/esm/lib/parsers/parse-zip/local-file-header.js +19 -0
  41. package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +1 -0
  42. package/dist/esm/workers/{i3s-content-nodejs-worker.js → i3s-content-worker-node.js} +2 -2
  43. package/dist/esm/workers/i3s-content-worker-node.js.map +1 -0
  44. package/dist/i3s-content-loader.d.ts.map +1 -1
  45. package/dist/i3s-content-loader.js +1 -2
  46. package/dist/i3s-content-worker-node.js +197 -0
  47. package/dist/{i3s-content-nodejs-worker.js.map → i3s-content-worker-node.js.map} +3 -3
  48. package/dist/i3s-content-worker.js +77 -55
  49. package/dist/i3s-slpk-loader.d.ts +10 -0
  50. package/dist/i3s-slpk-loader.d.ts.map +1 -0
  51. package/dist/i3s-slpk-loader.js +20 -0
  52. package/dist/index.d.ts +2 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +5 -3
  55. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +4 -0
  56. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -0
  57. package/dist/lib/parsers/parse-slpk/parse-slpk.js +50 -0
  58. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +32 -0
  59. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -0
  60. package/dist/lib/parsers/parse-slpk/slpk-archieve.js +79 -0
  61. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +38 -0
  62. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +1 -0
  63. package/dist/lib/parsers/parse-zip/cd-file-header.js +48 -0
  64. package/dist/lib/parsers/parse-zip/local-file-header.d.ts +30 -0
  65. package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +1 -0
  66. package/dist/lib/parsers/parse-zip/local-file-header.js +28 -0
  67. package/dist/workers/i3s-content-worker-node.d.ts +2 -0
  68. package/dist/workers/i3s-content-worker-node.d.ts.map +1 -0
  69. package/dist/workers/{i3s-content-nodejs-worker.js → i3s-content-worker-node.js} +2 -1
  70. package/package.json +15 -13
  71. package/src/i3s-content-loader.ts +1 -2
  72. package/src/i3s-slpk-loader.ts +25 -0
  73. package/src/index.ts +2 -2
  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
  78. package/src/workers/{i3s-content-nodejs-worker.ts → i3s-content-worker-node.ts} +2 -1
  79. package/dist/es5/workers/i3s-content-nodejs-worker.js.map +0 -1
  80. package/dist/esm/workers/i3s-content-nodejs-worker.js.map +0 -1
  81. package/dist/i3s-content-nodejs-worker.js +0 -198
  82. package/dist/workers/i3s-content-nodejs-worker.d.ts +0 -2
  83. package/dist/workers/i3s-content-nodejs-worker.d.ts.map +0 -1
package/dist/dist.min.js CHANGED
@@ -941,6 +941,22 @@
941
941
  }
942
942
  return false;
943
943
  }
944
+ function getTransferListForWriter(object) {
945
+ if (object === null) {
946
+ return {};
947
+ }
948
+ const clone3 = Object.assign({}, object);
949
+ Object.keys(clone3).forEach((key) => {
950
+ if (typeof object[key] === "object" && !ArrayBuffer.isView(object[key]) && !(object[key] instanceof Array)) {
951
+ clone3[key] = getTransferListForWriter(object[key]);
952
+ } else if (typeof clone3[key] === "function" || clone3[key] instanceof RegExp) {
953
+ clone3[key] = {};
954
+ } else {
955
+ clone3[key] = object[key];
956
+ }
957
+ });
958
+ return clone3;
959
+ }
944
960
  var init_get_transfer_list = __esm({
945
961
  "../worker-utils/src/lib/worker-utils/get-transfer-list.ts"() {
946
962
  }
@@ -1088,9 +1104,9 @@
1088
1104
  this.onDebug = props.onDebug;
1089
1105
  }
1090
1106
  }
1091
- async startJob(name, onMessage2 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
1107
+ async startJob(name, onMessage3 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
1092
1108
  const startPromise = new Promise((onStart) => {
1093
- this.jobQueue.push({ name, onMessage: onMessage2, onError, onStart });
1109
+ this.jobQueue.push({ name, onMessage: onMessage3, onError, onStart });
1094
1110
  return this;
1095
1111
  });
1096
1112
  this._startQueuedJob();
@@ -1124,7 +1140,7 @@
1124
1140
  }
1125
1141
  }
1126
1142
  returnWorkerToQueue(worker) {
1127
- const shouldDestroyWorker = this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();
1143
+ const shouldDestroyWorker = !isBrowser2 || this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();
1128
1144
  if (shouldDestroyWorker) {
1129
1145
  worker.destroy();
1130
1146
  this.count--;
@@ -1220,9 +1236,13 @@
1220
1236
  });
1221
1237
 
1222
1238
  // ../worker-utils/src/lib/worker-api/get-worker-url.ts
1239
+ function getWorkerName(worker) {
1240
+ const warning = worker.version !== VERSION2 ? ` (worker-utils@${VERSION2})` : "";
1241
+ return `${worker.name}@${worker.version}${warning}`;
1242
+ }
1223
1243
  function getWorkerURL(worker, options = {}) {
1224
1244
  const workerOptions = options[worker.id] || {};
1225
- const workerFile = `${worker.id}-worker.js`;
1245
+ const workerFile = isBrowser2 ? `${worker.id}-worker.js` : `${worker.id}-worker-node.js`;
1226
1246
  let url = workerOptions.workerUrl;
1227
1247
  if (!url && worker.id === "compression") {
1228
1248
  url = options.workerUrl;
@@ -1241,11 +1261,65 @@
1241
1261
  assert2(url);
1242
1262
  return url;
1243
1263
  }
1244
- var NPM_TAG;
1264
+ var NPM_TAG, VERSION2;
1245
1265
  var init_get_worker_url = __esm({
1246
1266
  "../worker-utils/src/lib/worker-api/get-worker-url.ts"() {
1247
1267
  init_assert2();
1268
+ init_globals2();
1269
+ init_version();
1248
1270
  NPM_TAG = "beta";
1271
+ VERSION2 = typeof VERSION !== "undefined" ? VERSION : NPM_TAG;
1272
+ }
1273
+ });
1274
+
1275
+ // ../worker-utils/src/lib/worker-api/process-on-worker.ts
1276
+ async function processOnWorker(worker, data, options = {}, context = {}) {
1277
+ const name = getWorkerName(worker);
1278
+ const workerFarm = WorkerFarm.getWorkerFarm(options);
1279
+ const { source } = options;
1280
+ const workerPoolProps = { name, source };
1281
+ if (!source) {
1282
+ workerPoolProps.url = getWorkerURL(worker, options);
1283
+ }
1284
+ const workerPool = workerFarm.getWorkerPool(workerPoolProps);
1285
+ const jobName = options.jobName || worker.name;
1286
+ const job = await workerPool.startJob(jobName, onMessage.bind(null, context));
1287
+ const transferableOptions = getTransferListForWriter(options);
1288
+ job.postMessage("process", { input: data, options: transferableOptions });
1289
+ const result = await job.result;
1290
+ return result.result;
1291
+ }
1292
+ async function onMessage(context, job, type, payload) {
1293
+ switch (type) {
1294
+ case "done":
1295
+ job.done(payload);
1296
+ break;
1297
+ case "error":
1298
+ job.error(new Error(payload.error));
1299
+ break;
1300
+ case "process":
1301
+ const { id, input, options } = payload;
1302
+ try {
1303
+ if (!context.process) {
1304
+ job.postMessage("error", { id, error: "Worker not set up to process on main thread" });
1305
+ return;
1306
+ }
1307
+ const result = await context.process(input, options);
1308
+ job.postMessage("done", { id, result });
1309
+ } catch (error) {
1310
+ const message = error instanceof Error ? error.message : "unknown error";
1311
+ job.postMessage("error", { id, error: message });
1312
+ }
1313
+ break;
1314
+ default:
1315
+ console.warn(`process-on-worker: unknown message ${type}`);
1316
+ }
1317
+ }
1318
+ var init_process_on_worker = __esm({
1319
+ "../worker-utils/src/lib/worker-api/process-on-worker.ts"() {
1320
+ init_worker_farm();
1321
+ init_get_worker_url();
1322
+ init_get_transfer_list();
1249
1323
  }
1250
1324
  });
1251
1325
 
@@ -1292,7 +1366,7 @@
1292
1366
  }
1293
1367
  if (options.CDN) {
1294
1368
  assert2(options.CDN.startsWith("http"));
1295
- return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
1369
+ return `${options.CDN}/${moduleName}@${VERSION3}/dist/libs/${library}`;
1296
1370
  }
1297
1371
  if (isWorker) {
1298
1372
  return `../src/libs/${library}`;
@@ -1336,7 +1410,7 @@
1336
1410
  document.body.appendChild(script);
1337
1411
  return null;
1338
1412
  }
1339
- var node, LATEST, VERSION2, loadLibraryPromises;
1413
+ var node, LATEST, VERSION3, loadLibraryPromises;
1340
1414
  var init_library_utils = __esm({
1341
1415
  "../worker-utils/src/lib/library-utils/library-utils.ts"() {
1342
1416
  init_globals2();
@@ -1344,7 +1418,7 @@
1344
1418
  init_assert2();
1345
1419
  init_version();
1346
1420
  LATEST = "beta";
1347
- VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
1421
+ VERSION3 = typeof VERSION !== "undefined" ? VERSION : LATEST;
1348
1422
  loadLibraryPromises = {};
1349
1423
  }
1350
1424
  });
@@ -1355,6 +1429,7 @@
1355
1429
  init_assert2();
1356
1430
  init_globals2();
1357
1431
  init_worker_farm();
1432
+ init_process_on_worker();
1358
1433
  init_get_worker_url();
1359
1434
  init_validate_worker_version();
1360
1435
  init_library_utils();
@@ -1378,7 +1453,7 @@
1378
1453
  const workerPool = workerFarm.getWorkerPool({ name, url });
1379
1454
  options = JSON.parse(JSON.stringify(options));
1380
1455
  context = JSON.parse(JSON.stringify(context || {}));
1381
- const job = await workerPool.startJob("process-on-worker", onMessage.bind(null, parseOnMainThread));
1456
+ const job = await workerPool.startJob("process-on-worker", onMessage2.bind(null, parseOnMainThread));
1382
1457
  job.postMessage("process", {
1383
1458
  input: data,
1384
1459
  options,
@@ -1387,7 +1462,7 @@
1387
1462
  const result = await job.result;
1388
1463
  return await result.result;
1389
1464
  }
1390
- async function onMessage(parseOnMainThread, job, type, payload) {
1465
+ async function onMessage2(parseOnMainThread, job, type, payload) {
1391
1466
  switch (type) {
1392
1467
  case "done":
1393
1468
  job.done(payload);
@@ -1552,15 +1627,15 @@
1552
1627
  function parseTextSync(text) {
1553
1628
  return JSON.parse(text);
1554
1629
  }
1555
- var VERSION3, JSONLoader;
1630
+ var VERSION4, JSONLoader;
1556
1631
  var init_json_loader = __esm({
1557
1632
  "../loader-utils/src/json-loader.ts"() {
1558
- VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
1633
+ VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
1559
1634
  JSONLoader = {
1560
1635
  name: "JSON",
1561
1636
  id: "json",
1562
1637
  module: "json",
1563
- version: VERSION3,
1638
+ version: VERSION4,
1564
1639
  extensions: ["json", "geojson"],
1565
1640
  mimeTypes: ["application/json"],
1566
1641
  category: "json",
@@ -1822,39 +1897,60 @@
1822
1897
  }
1823
1898
  });
1824
1899
 
1900
+ // ../core/src/lib/utils/url-utils.ts
1901
+ function extractQueryString(url) {
1902
+ const matches3 = url.match(QUERY_STRING_PATTERN);
1903
+ return matches3 && matches3[0];
1904
+ }
1905
+ function stripQueryString(url) {
1906
+ return url.replace(QUERY_STRING_PATTERN, "");
1907
+ }
1908
+ var QUERY_STRING_PATTERN;
1909
+ var init_url_utils = __esm({
1910
+ "../core/src/lib/utils/url-utils.ts"() {
1911
+ QUERY_STRING_PATTERN = /\?.*/;
1912
+ }
1913
+ });
1914
+
1825
1915
  // ../core/src/lib/utils/resource-utils.ts
1826
- function getResourceUrlAndType(resource) {
1916
+ function getResourceUrl(resource) {
1827
1917
  if (isResponse(resource)) {
1828
- const url = stripQueryString(resource.url || "");
1829
- const contentTypeHeader = resource.headers.get("content-type") || "";
1830
- return {
1831
- url,
1832
- type: parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(url)
1833
- };
1918
+ const response = resource;
1919
+ return response.url;
1834
1920
  }
1835
1921
  if (isBlob(resource)) {
1836
- return {
1837
- url: stripQueryString(resource.name || ""),
1838
- type: resource.type || ""
1839
- };
1922
+ const blob = resource;
1923
+ return blob.name || "";
1840
1924
  }
1841
1925
  if (typeof resource === "string") {
1842
- return {
1843
- url: stripQueryString(resource),
1844
- type: parseMIMETypeFromURL(resource)
1845
- };
1926
+ return resource;
1846
1927
  }
1847
- return {
1848
- url: "",
1849
- type: ""
1850
- };
1928
+ return "";
1929
+ }
1930
+ function getResourceMIMEType(resource) {
1931
+ if (isResponse(resource)) {
1932
+ const response = resource;
1933
+ const contentTypeHeader = response.headers.get("content-type") || "";
1934
+ const noQueryUrl = stripQueryString(response.url);
1935
+ return parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(noQueryUrl);
1936
+ }
1937
+ if (isBlob(resource)) {
1938
+ const blob = resource;
1939
+ return blob.type || "";
1940
+ }
1941
+ if (typeof resource === "string") {
1942
+ return parseMIMETypeFromURL(resource);
1943
+ }
1944
+ return "";
1851
1945
  }
1852
1946
  function getResourceContentLength(resource) {
1853
1947
  if (isResponse(resource)) {
1854
- return resource.headers["content-length"] || -1;
1948
+ const response = resource;
1949
+ return response.headers["content-length"] || -1;
1855
1950
  }
1856
1951
  if (isBlob(resource)) {
1857
- return resource.size;
1952
+ const blob = resource;
1953
+ return blob.size;
1858
1954
  }
1859
1955
  if (typeof resource === "string") {
1860
1956
  return resource.length;
@@ -1867,15 +1963,11 @@
1867
1963
  }
1868
1964
  return -1;
1869
1965
  }
1870
- function stripQueryString(url) {
1871
- return url.replace(QUERY_STRING_PATTERN, "");
1872
- }
1873
- var QUERY_STRING_PATTERN;
1874
1966
  var init_resource_utils = __esm({
1875
1967
  "../core/src/lib/utils/resource-utils.ts"() {
1876
1968
  init_is_type();
1877
1969
  init_mime_type_utils();
1878
- QUERY_STRING_PATTERN = /\?.*/;
1970
+ init_url_utils();
1879
1971
  }
1880
1972
  });
1881
1973
 
@@ -1889,7 +1981,8 @@
1889
1981
  if (contentLength >= 0) {
1890
1982
  headers["content-length"] = String(contentLength);
1891
1983
  }
1892
- const { url, type } = getResourceUrlAndType(resource);
1984
+ const url = getResourceUrl(resource);
1985
+ const type = getResourceMIMEType(resource);
1893
1986
  if (type) {
1894
1987
  headers["content-type"] = type;
1895
1988
  }
@@ -1978,7 +2071,7 @@
1978
2071
  }
1979
2072
  });
1980
2073
 
1981
- // ../../node_modules/@probe.gl/env/dist/lib/is-electron.js
2074
+ // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/is-electron.js
1982
2075
  function isElectron(mockUserAgent) {
1983
2076
  if (typeof window !== "undefined" && typeof window.process === "object" && window.process.type === "renderer") {
1984
2077
  return true;
@@ -1994,25 +2087,25 @@
1994
2087
  return false;
1995
2088
  }
1996
2089
  var init_is_electron = __esm({
1997
- "../../node_modules/@probe.gl/env/dist/lib/is-electron.js"() {
2090
+ "../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/is-electron.js"() {
1998
2091
  }
1999
2092
  });
2000
2093
 
2001
- // ../../node_modules/@probe.gl/env/dist/lib/is-browser.js
2094
+ // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/is-browser.js
2002
2095
  function isBrowser3() {
2003
2096
  const isNode = typeof process === "object" && String(process) === "[object process]" && !process.browser;
2004
2097
  return !isNode || isElectron();
2005
2098
  }
2006
2099
  var init_is_browser = __esm({
2007
- "../../node_modules/@probe.gl/env/dist/lib/is-browser.js"() {
2100
+ "../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/is-browser.js"() {
2008
2101
  init_is_electron();
2009
2102
  }
2010
2103
  });
2011
2104
 
2012
- // ../../node_modules/@probe.gl/env/dist/lib/globals.js
2105
+ // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/globals.js
2013
2106
  var self_3, window_3, document_3, process_, console_, navigator_;
2014
2107
  var init_globals3 = __esm({
2015
- "../../node_modules/@probe.gl/env/dist/lib/globals.js"() {
2108
+ "../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/globals.js"() {
2016
2109
  self_3 = globalThis.self || globalThis.window || globalThis.global;
2017
2110
  window_3 = globalThis.window || globalThis.self || globalThis.global;
2018
2111
  document_3 = globalThis.document || {};
@@ -2022,19 +2115,19 @@
2022
2115
  }
2023
2116
  });
2024
2117
 
2025
- // ../../node_modules/@probe.gl/env/dist/utils/globals.js
2026
- var VERSION4, isBrowser4;
2118
+ // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/utils/globals.js
2119
+ var VERSION5, isBrowser4;
2027
2120
  var init_globals4 = __esm({
2028
- "../../node_modules/@probe.gl/env/dist/utils/globals.js"() {
2121
+ "../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/utils/globals.js"() {
2029
2122
  init_is_browser();
2030
- VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
2123
+ VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
2031
2124
  isBrowser4 = isBrowser3();
2032
2125
  }
2033
2126
  });
2034
2127
 
2035
- // ../../node_modules/@probe.gl/env/dist/index.js
2128
+ // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/index.js
2036
2129
  var init_dist = __esm({
2037
- "../../node_modules/@probe.gl/env/dist/index.js"() {
2130
+ "../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/index.js"() {
2038
2131
  init_globals4();
2039
2132
  init_globals3();
2040
2133
  init_is_browser();
@@ -2364,7 +2457,7 @@
2364
2457
  id: ""
2365
2458
  };
2366
2459
  _defineProperty(this, "id", void 0);
2367
- _defineProperty(this, "VERSION", VERSION4);
2460
+ _defineProperty(this, "VERSION", VERSION5);
2368
2461
  _defineProperty(this, "_startTs", getHiResTimestamp());
2369
2462
  _defineProperty(this, "_deltaTs", getHiResTimestamp());
2370
2463
  _defineProperty(this, "_storage", void 0);
@@ -2567,7 +2660,7 @@
2567
2660
  return noop;
2568
2661
  }
2569
2662
  };
2570
- _defineProperty(Log, "VERSION", VERSION4);
2663
+ _defineProperty(Log, "VERSION", VERSION5);
2571
2664
  }
2572
2665
  });
2573
2666
 
@@ -2875,8 +2968,9 @@
2875
2968
  return loader;
2876
2969
  }
2877
2970
  function selectLoaderInternal(data, loaders, options, context) {
2878
- const { url, type } = getResourceUrlAndType(data);
2879
- const testUrl = url || context?.url;
2971
+ const url = getResourceUrl(data);
2972
+ const type = getResourceMIMEType(data);
2973
+ const testUrl = stripQueryString(url) || context?.url;
2880
2974
  let loader = null;
2881
2975
  let reason = "";
2882
2976
  if (options?.mimeType) {
@@ -2905,7 +2999,8 @@
2905
2999
  return true;
2906
3000
  }
2907
3001
  function getNoValidLoaderMessage(data) {
2908
- const { url, type } = getResourceUrlAndType(data);
3002
+ const url = getResourceUrl(data);
3003
+ const type = getResourceMIMEType(data);
2909
3004
  let message = "No valid loader found (";
2910
3005
  message += url ? `${path_exports.filename(url)}, ` : "no url provided, ";
2911
3006
  message += `MIME type: ${type ? `"${type}"` : "not provided"}, `;
@@ -3024,6 +3119,7 @@
3024
3119
  init_resource_utils();
3025
3120
  init_register_loaders();
3026
3121
  init_is_type();
3122
+ init_url_utils();
3027
3123
  EXT_PATTERN = /\.([^.]+)$/;
3028
3124
  }
3029
3125
  });
@@ -3236,18 +3332,25 @@
3236
3332
  });
3237
3333
 
3238
3334
  // ../core/src/lib/loader-utils/loader-context.ts
3239
- function getLoaderContext(context, options, previousContext = null) {
3240
- if (previousContext) {
3241
- return previousContext;
3335
+ function getLoaderContext(context, options, parentContext) {
3336
+ if (parentContext) {
3337
+ return parentContext;
3242
3338
  }
3243
- const resolvedContext = {
3339
+ const newContext = {
3244
3340
  fetch: getFetchFunction(options, context),
3245
3341
  ...context
3246
3342
  };
3247
- if (!Array.isArray(resolvedContext.loaders)) {
3248
- resolvedContext.loaders = null;
3343
+ if (newContext.url) {
3344
+ const baseUrl = stripQueryString(newContext.url);
3345
+ newContext.baseUrl = baseUrl;
3346
+ newContext.queryString = extractQueryString(newContext.url);
3347
+ newContext.filename = path_exports.filename(baseUrl);
3348
+ newContext.baseUrl = path_exports.dirname(baseUrl);
3349
+ }
3350
+ if (!Array.isArray(newContext.loaders)) {
3351
+ newContext.loaders = null;
3249
3352
  }
3250
- return resolvedContext;
3353
+ return newContext;
3251
3354
  }
3252
3355
  function getLoadersFromContext(loaders, context) {
3253
3356
  if (!context && loaders && !Array.isArray(loaders)) {
@@ -3266,6 +3369,8 @@
3266
3369
  var init_loader_context = __esm({
3267
3370
  "../core/src/lib/loader-utils/loader-context.ts"() {
3268
3371
  init_get_fetch_function();
3372
+ init_url_utils();
3373
+ init_src2();
3269
3374
  }
3270
3375
  });
3271
3376
 
@@ -3279,7 +3384,7 @@
3279
3384
  }
3280
3385
  data = await data;
3281
3386
  options = options || {};
3282
- const { url } = getResourceUrlAndType(data);
3387
+ const url = getResourceUrl(data);
3283
3388
  const typedLoaders = loaders;
3284
3389
  const candidateLoaders = getLoadersFromContext(typedLoaders, context);
3285
3390
  const loader = await selectLoader(data, candidateLoaders, options);
@@ -3287,7 +3392,7 @@
3287
3392
  return null;
3288
3393
  }
3289
3394
  options = normalizeOptions(options, loader, candidateLoaders, url);
3290
- context = getLoaderContext({ url, parse, loaders: candidateLoaders }, options, context);
3395
+ context = getLoaderContext({ url, parse, loaders: candidateLoaders }, options, context || null);
3291
3396
  return await parseWithLoader(loader, data, options, context);
3292
3397
  }
3293
3398
  async function parseWithLoader(loader, data, options, context) {
@@ -6685,10 +6790,10 @@
6685
6790
  });
6686
6791
 
6687
6792
  // ../images/src/lib/utils/version.ts
6688
- var VERSION5;
6793
+ var VERSION6;
6689
6794
  var init_version2 = __esm({
6690
6795
  "../images/src/lib/utils/version.ts"() {
6691
- VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
6796
+ VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
6692
6797
  }
6693
6798
  });
6694
6799
 
@@ -7137,7 +7242,7 @@
7137
7242
  id: "image",
7138
7243
  module: "images",
7139
7244
  name: "Images",
7140
- version: VERSION5,
7245
+ version: VERSION6,
7141
7246
  mimeTypes: MIME_TYPES,
7142
7247
  extensions: EXTENSIONS,
7143
7248
  parse: parseImage,
@@ -7155,10 +7260,10 @@
7155
7260
  });
7156
7261
 
7157
7262
  // ../draco/src/lib/utils/version.ts
7158
- var VERSION6;
7263
+ var VERSION7;
7159
7264
  var init_version3 = __esm({
7160
7265
  "../draco/src/lib/utils/version.ts"() {
7161
- VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
7266
+ VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
7162
7267
  }
7163
7268
  });
7164
7269
 
@@ -7166,7 +7271,6 @@
7166
7271
  var DEFAULT_DRACO_OPTIONS, DracoLoader;
7167
7272
  var init_draco_loader = __esm({
7168
7273
  "../draco/src/draco-loader.ts"() {
7169
- init_src();
7170
7274
  init_version3();
7171
7275
  DEFAULT_DRACO_OPTIONS = {
7172
7276
  draco: {
@@ -7178,9 +7282,9 @@
7178
7282
  };
7179
7283
  DracoLoader = {
7180
7284
  name: "Draco",
7181
- id: isBrowser2 ? "draco" : "draco-nodejs",
7285
+ id: "draco",
7182
7286
  module: "draco",
7183
- version: VERSION6,
7287
+ version: VERSION7,
7184
7288
  worker: true,
7185
7289
  extensions: ["drc"],
7186
7290
  mimeTypes: ["application/octet-stream"],
@@ -7758,10 +7862,10 @@
7758
7862
  });
7759
7863
 
7760
7864
  // ../textures/src/lib/utils/version.ts
7761
- var VERSION7;
7865
+ var VERSION8;
7762
7866
  var init_version4 = __esm({
7763
7867
  "../textures/src/lib/utils/version.ts"() {
7764
- VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
7868
+ VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
7765
7869
  }
7766
7870
  });
7767
7871
 
@@ -7828,13 +7932,13 @@
7828
7932
  });
7829
7933
  });
7830
7934
  }
7831
- var VERSION8, BASIS_CDN_ENCODER_WASM, BASIS_CDN_ENCODER_JS, loadBasisTranscoderPromise, loadBasisEncoderPromise;
7935
+ var VERSION9, BASIS_CDN_ENCODER_WASM, BASIS_CDN_ENCODER_JS, loadBasisTranscoderPromise, loadBasisEncoderPromise;
7832
7936
  var init_basis_module_loader = __esm({
7833
7937
  "../textures/src/lib/parsers/basis-module-loader.ts"() {
7834
7938
  init_src();
7835
- VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
7836
- BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.wasm`;
7837
- BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.js`;
7939
+ VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
7940
+ BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION9}/dist/libs/basis_encoder.wasm`;
7941
+ BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION9}/dist/libs/basis_encoder.js`;
7838
7942
  }
7839
7943
  });
7840
7944
 
@@ -8395,14 +8499,13 @@
8395
8499
  var BasisWorkerLoader, BasisLoader;
8396
8500
  var init_basis_loader = __esm({
8397
8501
  "../textures/src/basis-loader.ts"() {
8398
- init_src();
8399
8502
  init_version4();
8400
8503
  init_parse_basis();
8401
8504
  BasisWorkerLoader = {
8402
8505
  name: "Basis",
8403
- id: isBrowser2 ? "basis" : "basis-nodejs",
8506
+ id: "basis",
8404
8507
  module: "textures",
8405
- version: VERSION7,
8508
+ version: VERSION8,
8406
8509
  worker: true,
8407
8510
  extensions: ["basis", "ktx2"],
8408
8511
  mimeTypes: ["application/octet-stream", "image/ktx2"],
@@ -8745,7 +8848,7 @@
8745
8848
  name: "Texture Containers",
8746
8849
  id: "compressed-texture",
8747
8850
  module: "textures",
8748
- version: VERSION7,
8851
+ version: VERSION8,
8749
8852
  worker: true,
8750
8853
  extensions: [
8751
8854
  "ktx",
@@ -8816,7 +8919,7 @@
8816
8919
  }
8817
8920
  return attributeUrls;
8818
8921
  }
8819
- var init_url_utils = __esm({
8922
+ var init_url_utils2 = __esm({
8820
8923
  "src/lib/utils/url-utils.ts"() {
8821
8924
  }
8822
8925
  });
@@ -8970,20 +9073,20 @@
8970
9073
  }
8971
9074
  return value;
8972
9075
  }
8973
- var VERSION9, EMPTY_VALUE, REJECTED_STATUS, I3SAttributeLoader;
9076
+ var VERSION10, EMPTY_VALUE, REJECTED_STATUS, I3SAttributeLoader;
8974
9077
  var init_i3s_attribute_loader = __esm({
8975
9078
  "src/i3s-attribute-loader.ts"() {
8976
9079
  init_src3();
8977
9080
  init_parse_i3s_attribute();
8978
- init_url_utils();
8979
- VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
9081
+ init_url_utils2();
9082
+ VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
8980
9083
  EMPTY_VALUE = "";
8981
9084
  REJECTED_STATUS = "rejected";
8982
9085
  I3SAttributeLoader = {
8983
9086
  name: "I3S Attribute",
8984
9087
  id: "i3s-attribute",
8985
9088
  module: "i3s",
8986
- version: VERSION9,
9089
+ version: VERSION10,
8987
9090
  mimeTypes: ["application/binary"],
8988
9091
  parse: async (arrayBuffer, options) => parseI3STileAttribute(arrayBuffer, options),
8989
9092
  extensions: ["bin"],
@@ -9056,7 +9159,7 @@
9056
9159
  "src/lib/utils/customizeColors.ts"() {
9057
9160
  init_src3();
9058
9161
  init_i3s_attribute_loader();
9059
- init_url_utils();
9162
+ init_url_utils2();
9060
9163
  }
9061
9164
  });
9062
9165
 
@@ -9442,7 +9545,7 @@
9442
9545
  init_src6();
9443
9546
  init_src7();
9444
9547
  init_types();
9445
- init_url_utils();
9548
+ init_url_utils2();
9446
9549
  init_constants();
9447
9550
  init_customizeColors();
9448
9551
  scratchVector5 = new Vector3([0, 0, 0]);
@@ -9460,18 +9563,17 @@
9460
9563
  }
9461
9564
  return await parseI3STileContent(data, tileOptions, tilesetOptions, options, context);
9462
9565
  }
9463
- var VERSION10, I3SContentLoader;
9566
+ var VERSION11, I3SContentLoader;
9464
9567
  var init_i3s_content_loader = __esm({
9465
9568
  "src/i3s-content-loader.ts"() {
9466
- init_src();
9467
9569
  init_parse_i3s_tile_content();
9468
- VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
9570
+ VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
9469
9571
  I3SContentLoader = {
9470
9572
  name: "I3S Content (Indexed Scene Layers)",
9471
- id: isBrowser2 ? "i3s-content" : "i3s-content-nodejs",
9573
+ id: "i3s-content",
9472
9574
  module: "i3s",
9473
9575
  worker: true,
9474
- version: VERSION10,
9576
+ version: VERSION11,
9475
9577
  mimeTypes: ["application/octet-stream"],
9476
9578
  parse: parse3,
9477
9579
  extensions: ["bin"],
@@ -10071,15 +10173,15 @@
10071
10173
  async function parseNodePage(data, options) {
10072
10174
  return JSON.parse(new TextDecoder().decode(data));
10073
10175
  }
10074
- var VERSION11, I3SNodePageLoader;
10176
+ var VERSION12, I3SNodePageLoader;
10075
10177
  var init_i3s_node_page_loader = __esm({
10076
10178
  "src/i3s-node-page-loader.ts"() {
10077
- VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10179
+ VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10078
10180
  I3SNodePageLoader = {
10079
10181
  name: "I3S Node Page",
10080
10182
  id: "i3s-node-page",
10081
10183
  module: "i3s",
10082
- version: VERSION11,
10184
+ version: VERSION12,
10083
10185
  mimeTypes: ["application/json"],
10084
10186
  parse: parseNodePage,
10085
10187
  extensions: ["json"],
@@ -10096,7 +10198,7 @@
10096
10198
  init_src7();
10097
10199
  init_i3s_node_page_loader();
10098
10200
  init_parse_i3s();
10099
- init_url_utils();
10201
+ init_url_utils2();
10100
10202
  I3SNodePagesTiles = class {
10101
10203
  constructor(tileset, options) {
10102
10204
  this.nodePages = [];
@@ -10348,7 +10450,7 @@
10348
10450
  init_src3();
10349
10451
  init_src8();
10350
10452
  init_i3s_nodepages_tiles();
10351
- init_url_utils();
10453
+ init_url_utils2();
10352
10454
  }
10353
10455
  });
10354
10456
 
@@ -10403,14 +10505,14 @@
10403
10505
  }
10404
10506
  return null;
10405
10507
  }
10406
- var VERSION12, TILESET_REGEX, TILE_HEADER_REGEX, SLPK_HEX, POINT_CLOUD, I3SLoader;
10508
+ var VERSION13, TILESET_REGEX, TILE_HEADER_REGEX, SLPK_HEX, POINT_CLOUD, I3SLoader;
10407
10509
  var init_i3s_loader = __esm({
10408
10510
  "src/i3s-loader.ts"() {
10409
10511
  init_src3();
10410
10512
  init_i3s_content_loader();
10411
10513
  init_parse_i3s();
10412
10514
  init_constants();
10413
- VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10515
+ VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10414
10516
  TILESET_REGEX = /layers\/[0-9]+$/;
10415
10517
  TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
10416
10518
  SLPK_HEX = "504b0304";
@@ -10419,7 +10521,7 @@
10419
10521
  name: "I3S (Indexed Scene Layers)",
10420
10522
  id: "i3s",
10421
10523
  module: "i3s",
10422
- version: VERSION12,
10524
+ version: VERSION13,
10423
10525
  mimeTypes: ["application/octet-stream"],
10424
10526
  parse: parseI3S,
10425
10527
  extensions: ["bin"],
@@ -10443,6 +10545,459 @@
10443
10545
  }
10444
10546
  });
10445
10547
 
10548
+ // src/lib/parsers/parse-zip/cd-file-header.ts
10549
+ var parseZipCDFileHeader;
10550
+ var init_cd_file_header = __esm({
10551
+ "src/lib/parsers/parse-zip/cd-file-header.ts"() {
10552
+ parseZipCDFileHeader = (headerOffset, buffer) => {
10553
+ const offsets = {
10554
+ CD_COMPRESSED_SIZE_OFFSET: 20,
10555
+ CD_UNCOMPRESSED_SIZE_OFFSET: 24,
10556
+ CD_FILE_NAME_LENGTH_OFFSET: 28,
10557
+ CD_EXTRA_FIELD_LENGTH_OFFSET: 30,
10558
+ CD_LOCAL_HEADER_OFFSET_OFFSET: 42,
10559
+ CD_FILE_NAME_OFFSET: 46
10560
+ };
10561
+ const compressedSize = buffer.getUint32(headerOffset + offsets.CD_COMPRESSED_SIZE_OFFSET, true);
10562
+ const uncompressedSize = buffer.getUint32(headerOffset + offsets.CD_UNCOMPRESSED_SIZE_OFFSET, true);
10563
+ const fileNameLength = buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET, true);
10564
+ const fileName = buffer.buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + fileNameLength);
10565
+ const extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + fileNameLength;
10566
+ const oldFormatOffset = buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET, true);
10567
+ let fileDataOffset = oldFormatOffset;
10568
+ if (fileDataOffset === 4294967295) {
10569
+ let offsetInZip64Data = 4;
10570
+ if (compressedSize === 4294967295) {
10571
+ offsetInZip64Data += 8;
10572
+ }
10573
+ if (uncompressedSize === 4294967295) {
10574
+ offsetInZip64Data += 8;
10575
+ }
10576
+ fileDataOffset = buffer.getUint32(extraOffset + offsetInZip64Data, true);
10577
+ }
10578
+ const localHeaderOffset = fileDataOffset;
10579
+ return {
10580
+ compressedSize,
10581
+ uncompressedSize,
10582
+ fileNameLength,
10583
+ fileName,
10584
+ extraOffset,
10585
+ localHeaderOffset
10586
+ };
10587
+ };
10588
+ }
10589
+ });
10590
+
10591
+ // src/lib/parsers/parse-zip/local-file-header.ts
10592
+ var parseZipLocalFileHeader;
10593
+ var init_local_file_header = __esm({
10594
+ "src/lib/parsers/parse-zip/local-file-header.ts"() {
10595
+ parseZipLocalFileHeader = (headerOffset, buffer) => {
10596
+ const offsets = {
10597
+ COMPRESSED_SIZE_OFFSET: 18,
10598
+ FILE_NAME_LENGTH_OFFSET: 26,
10599
+ EXTRA_FIELD_LENGTH_OFFSET: 28,
10600
+ FILE_NAME_OFFSET: 30
10601
+ };
10602
+ const fileNameLength = buffer.getUint16(headerOffset + offsets.FILE_NAME_LENGTH_OFFSET, true);
10603
+ const extraFieldLength = buffer.getUint16(headerOffset + offsets.EXTRA_FIELD_LENGTH_OFFSET, true);
10604
+ const fileDataOffset = headerOffset + offsets.FILE_NAME_OFFSET + fileNameLength + extraFieldLength;
10605
+ const compressedSize = buffer.getUint32(headerOffset + offsets.COMPRESSED_SIZE_OFFSET, true);
10606
+ return {
10607
+ fileNameLength,
10608
+ extraFieldLength,
10609
+ fileDataOffset,
10610
+ compressedSize
10611
+ };
10612
+ };
10613
+ }
10614
+ });
10615
+
10616
+ // ../../node_modules/crypt/crypt.js
10617
+ var require_crypt = __commonJS({
10618
+ "../../node_modules/crypt/crypt.js"(exports, module) {
10619
+ (function() {
10620
+ var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", crypt = {
10621
+ rotl: function(n2, b) {
10622
+ return n2 << b | n2 >>> 32 - b;
10623
+ },
10624
+ rotr: function(n2, b) {
10625
+ return n2 << 32 - b | n2 >>> b;
10626
+ },
10627
+ endian: function(n2) {
10628
+ if (n2.constructor == Number) {
10629
+ return crypt.rotl(n2, 8) & 16711935 | crypt.rotl(n2, 24) & 4278255360;
10630
+ }
10631
+ for (var i2 = 0; i2 < n2.length; i2++)
10632
+ n2[i2] = crypt.endian(n2[i2]);
10633
+ return n2;
10634
+ },
10635
+ randomBytes: function(n2) {
10636
+ for (var bytes = []; n2 > 0; n2--)
10637
+ bytes.push(Math.floor(Math.random() * 256));
10638
+ return bytes;
10639
+ },
10640
+ bytesToWords: function(bytes) {
10641
+ for (var words = [], i2 = 0, b = 0; i2 < bytes.length; i2++, b += 8)
10642
+ words[b >>> 5] |= bytes[i2] << 24 - b % 32;
10643
+ return words;
10644
+ },
10645
+ wordsToBytes: function(words) {
10646
+ for (var bytes = [], b = 0; b < words.length * 32; b += 8)
10647
+ bytes.push(words[b >>> 5] >>> 24 - b % 32 & 255);
10648
+ return bytes;
10649
+ },
10650
+ bytesToHex: function(bytes) {
10651
+ for (var hex = [], i2 = 0; i2 < bytes.length; i2++) {
10652
+ hex.push((bytes[i2] >>> 4).toString(16));
10653
+ hex.push((bytes[i2] & 15).toString(16));
10654
+ }
10655
+ return hex.join("");
10656
+ },
10657
+ hexToBytes: function(hex) {
10658
+ for (var bytes = [], c2 = 0; c2 < hex.length; c2 += 2)
10659
+ bytes.push(parseInt(hex.substr(c2, 2), 16));
10660
+ return bytes;
10661
+ },
10662
+ bytesToBase64: function(bytes) {
10663
+ for (var base64 = [], i2 = 0; i2 < bytes.length; i2 += 3) {
10664
+ var triplet = bytes[i2] << 16 | bytes[i2 + 1] << 8 | bytes[i2 + 2];
10665
+ for (var j = 0; j < 4; j++)
10666
+ if (i2 * 8 + j * 6 <= bytes.length * 8)
10667
+ base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 63));
10668
+ else
10669
+ base64.push("=");
10670
+ }
10671
+ return base64.join("");
10672
+ },
10673
+ base64ToBytes: function(base64) {
10674
+ base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");
10675
+ for (var bytes = [], i2 = 0, imod4 = 0; i2 < base64.length; imod4 = ++i2 % 4) {
10676
+ if (imod4 == 0)
10677
+ continue;
10678
+ 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);
10679
+ }
10680
+ return bytes;
10681
+ }
10682
+ };
10683
+ module.exports = crypt;
10684
+ })();
10685
+ }
10686
+ });
10687
+
10688
+ // ../../node_modules/charenc/charenc.js
10689
+ var require_charenc = __commonJS({
10690
+ "../../node_modules/charenc/charenc.js"(exports, module) {
10691
+ var charenc = {
10692
+ utf8: {
10693
+ stringToBytes: function(str) {
10694
+ return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
10695
+ },
10696
+ bytesToString: function(bytes) {
10697
+ return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
10698
+ }
10699
+ },
10700
+ bin: {
10701
+ stringToBytes: function(str) {
10702
+ for (var bytes = [], i2 = 0; i2 < str.length; i2++)
10703
+ bytes.push(str.charCodeAt(i2) & 255);
10704
+ return bytes;
10705
+ },
10706
+ bytesToString: function(bytes) {
10707
+ for (var str = [], i2 = 0; i2 < bytes.length; i2++)
10708
+ str.push(String.fromCharCode(bytes[i2]));
10709
+ return str.join("");
10710
+ }
10711
+ }
10712
+ };
10713
+ module.exports = charenc;
10714
+ }
10715
+ });
10716
+
10717
+ // ../../node_modules/is-buffer/index.js
10718
+ var require_is_buffer = __commonJS({
10719
+ "../../node_modules/is-buffer/index.js"(exports, module) {
10720
+ module.exports = function(obj) {
10721
+ return obj != null && (isBuffer3(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
10722
+ };
10723
+ function isBuffer3(obj) {
10724
+ return !!obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
10725
+ }
10726
+ function isSlowBuffer(obj) {
10727
+ return typeof obj.readFloatLE === "function" && typeof obj.slice === "function" && isBuffer3(obj.slice(0, 0));
10728
+ }
10729
+ }
10730
+ });
10731
+
10732
+ // ../../node_modules/md5/md5.js
10733
+ var require_md5 = __commonJS({
10734
+ "../../node_modules/md5/md5.js"(exports, module) {
10735
+ (function() {
10736
+ var crypt = require_crypt(), utf8 = require_charenc().utf8, isBuffer3 = require_is_buffer(), bin = require_charenc().bin, md52 = function(message, options) {
10737
+ if (message.constructor == String)
10738
+ if (options && options.encoding === "binary")
10739
+ message = bin.stringToBytes(message);
10740
+ else
10741
+ message = utf8.stringToBytes(message);
10742
+ else if (isBuffer3(message))
10743
+ message = Array.prototype.slice.call(message, 0);
10744
+ else if (!Array.isArray(message) && message.constructor !== Uint8Array)
10745
+ message = message.toString();
10746
+ var m = crypt.bytesToWords(message), l2 = message.length * 8, a2 = 1732584193, b = -271733879, c2 = -1732584194, d = 271733878;
10747
+ for (var i2 = 0; i2 < m.length; i2++) {
10748
+ m[i2] = (m[i2] << 8 | m[i2] >>> 24) & 16711935 | (m[i2] << 24 | m[i2] >>> 8) & 4278255360;
10749
+ }
10750
+ m[l2 >>> 5] |= 128 << l2 % 32;
10751
+ m[(l2 + 64 >>> 9 << 4) + 14] = l2;
10752
+ var FF = md52._ff, GG = md52._gg, HH = md52._hh, II = md52._ii;
10753
+ for (var i2 = 0; i2 < m.length; i2 += 16) {
10754
+ var aa = a2, bb = b, cc = c2, dd = d;
10755
+ a2 = FF(a2, b, c2, d, m[i2 + 0], 7, -680876936);
10756
+ d = FF(d, a2, b, c2, m[i2 + 1], 12, -389564586);
10757
+ c2 = FF(c2, d, a2, b, m[i2 + 2], 17, 606105819);
10758
+ b = FF(b, c2, d, a2, m[i2 + 3], 22, -1044525330);
10759
+ a2 = FF(a2, b, c2, d, m[i2 + 4], 7, -176418897);
10760
+ d = FF(d, a2, b, c2, m[i2 + 5], 12, 1200080426);
10761
+ c2 = FF(c2, d, a2, b, m[i2 + 6], 17, -1473231341);
10762
+ b = FF(b, c2, d, a2, m[i2 + 7], 22, -45705983);
10763
+ a2 = FF(a2, b, c2, d, m[i2 + 8], 7, 1770035416);
10764
+ d = FF(d, a2, b, c2, m[i2 + 9], 12, -1958414417);
10765
+ c2 = FF(c2, d, a2, b, m[i2 + 10], 17, -42063);
10766
+ b = FF(b, c2, d, a2, m[i2 + 11], 22, -1990404162);
10767
+ a2 = FF(a2, b, c2, d, m[i2 + 12], 7, 1804603682);
10768
+ d = FF(d, a2, b, c2, m[i2 + 13], 12, -40341101);
10769
+ c2 = FF(c2, d, a2, b, m[i2 + 14], 17, -1502002290);
10770
+ b = FF(b, c2, d, a2, m[i2 + 15], 22, 1236535329);
10771
+ a2 = GG(a2, b, c2, d, m[i2 + 1], 5, -165796510);
10772
+ d = GG(d, a2, b, c2, m[i2 + 6], 9, -1069501632);
10773
+ c2 = GG(c2, d, a2, b, m[i2 + 11], 14, 643717713);
10774
+ b = GG(b, c2, d, a2, m[i2 + 0], 20, -373897302);
10775
+ a2 = GG(a2, b, c2, d, m[i2 + 5], 5, -701558691);
10776
+ d = GG(d, a2, b, c2, m[i2 + 10], 9, 38016083);
10777
+ c2 = GG(c2, d, a2, b, m[i2 + 15], 14, -660478335);
10778
+ b = GG(b, c2, d, a2, m[i2 + 4], 20, -405537848);
10779
+ a2 = GG(a2, b, c2, d, m[i2 + 9], 5, 568446438);
10780
+ d = GG(d, a2, b, c2, m[i2 + 14], 9, -1019803690);
10781
+ c2 = GG(c2, d, a2, b, m[i2 + 3], 14, -187363961);
10782
+ b = GG(b, c2, d, a2, m[i2 + 8], 20, 1163531501);
10783
+ a2 = GG(a2, b, c2, d, m[i2 + 13], 5, -1444681467);
10784
+ d = GG(d, a2, b, c2, m[i2 + 2], 9, -51403784);
10785
+ c2 = GG(c2, d, a2, b, m[i2 + 7], 14, 1735328473);
10786
+ b = GG(b, c2, d, a2, m[i2 + 12], 20, -1926607734);
10787
+ a2 = HH(a2, b, c2, d, m[i2 + 5], 4, -378558);
10788
+ d = HH(d, a2, b, c2, m[i2 + 8], 11, -2022574463);
10789
+ c2 = HH(c2, d, a2, b, m[i2 + 11], 16, 1839030562);
10790
+ b = HH(b, c2, d, a2, m[i2 + 14], 23, -35309556);
10791
+ a2 = HH(a2, b, c2, d, m[i2 + 1], 4, -1530992060);
10792
+ d = HH(d, a2, b, c2, m[i2 + 4], 11, 1272893353);
10793
+ c2 = HH(c2, d, a2, b, m[i2 + 7], 16, -155497632);
10794
+ b = HH(b, c2, d, a2, m[i2 + 10], 23, -1094730640);
10795
+ a2 = HH(a2, b, c2, d, m[i2 + 13], 4, 681279174);
10796
+ d = HH(d, a2, b, c2, m[i2 + 0], 11, -358537222);
10797
+ c2 = HH(c2, d, a2, b, m[i2 + 3], 16, -722521979);
10798
+ b = HH(b, c2, d, a2, m[i2 + 6], 23, 76029189);
10799
+ a2 = HH(a2, b, c2, d, m[i2 + 9], 4, -640364487);
10800
+ d = HH(d, a2, b, c2, m[i2 + 12], 11, -421815835);
10801
+ c2 = HH(c2, d, a2, b, m[i2 + 15], 16, 530742520);
10802
+ b = HH(b, c2, d, a2, m[i2 + 2], 23, -995338651);
10803
+ a2 = II(a2, b, c2, d, m[i2 + 0], 6, -198630844);
10804
+ d = II(d, a2, b, c2, m[i2 + 7], 10, 1126891415);
10805
+ c2 = II(c2, d, a2, b, m[i2 + 14], 15, -1416354905);
10806
+ b = II(b, c2, d, a2, m[i2 + 5], 21, -57434055);
10807
+ a2 = II(a2, b, c2, d, m[i2 + 12], 6, 1700485571);
10808
+ d = II(d, a2, b, c2, m[i2 + 3], 10, -1894986606);
10809
+ c2 = II(c2, d, a2, b, m[i2 + 10], 15, -1051523);
10810
+ b = II(b, c2, d, a2, m[i2 + 1], 21, -2054922799);
10811
+ a2 = II(a2, b, c2, d, m[i2 + 8], 6, 1873313359);
10812
+ d = II(d, a2, b, c2, m[i2 + 15], 10, -30611744);
10813
+ c2 = II(c2, d, a2, b, m[i2 + 6], 15, -1560198380);
10814
+ b = II(b, c2, d, a2, m[i2 + 13], 21, 1309151649);
10815
+ a2 = II(a2, b, c2, d, m[i2 + 4], 6, -145523070);
10816
+ d = II(d, a2, b, c2, m[i2 + 11], 10, -1120210379);
10817
+ c2 = II(c2, d, a2, b, m[i2 + 2], 15, 718787259);
10818
+ b = II(b, c2, d, a2, m[i2 + 9], 21, -343485551);
10819
+ a2 = a2 + aa >>> 0;
10820
+ b = b + bb >>> 0;
10821
+ c2 = c2 + cc >>> 0;
10822
+ d = d + dd >>> 0;
10823
+ }
10824
+ return crypt.endian([a2, b, c2, d]);
10825
+ };
10826
+ md52._ff = function(a2, b, c2, d, x, s2, t2) {
10827
+ var n2 = a2 + (b & c2 | ~b & d) + (x >>> 0) + t2;
10828
+ return (n2 << s2 | n2 >>> 32 - s2) + b;
10829
+ };
10830
+ md52._gg = function(a2, b, c2, d, x, s2, t2) {
10831
+ var n2 = a2 + (b & d | c2 & ~d) + (x >>> 0) + t2;
10832
+ return (n2 << s2 | n2 >>> 32 - s2) + b;
10833
+ };
10834
+ md52._hh = function(a2, b, c2, d, x, s2, t2) {
10835
+ var n2 = a2 + (b ^ c2 ^ d) + (x >>> 0) + t2;
10836
+ return (n2 << s2 | n2 >>> 32 - s2) + b;
10837
+ };
10838
+ md52._ii = function(a2, b, c2, d, x, s2, t2) {
10839
+ var n2 = a2 + (c2 ^ (b | ~d)) + (x >>> 0) + t2;
10840
+ return (n2 << s2 | n2 >>> 32 - s2) + b;
10841
+ };
10842
+ md52._blocksize = 16;
10843
+ md52._digestsize = 16;
10844
+ module.exports = function(message, options) {
10845
+ if (message === void 0 || message === null)
10846
+ throw new Error("Illegal argument " + message);
10847
+ var digestbytes = crypt.wordsToBytes(md52(message, options));
10848
+ return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);
10849
+ };
10850
+ })();
10851
+ }
10852
+ });
10853
+
10854
+ // ../compression/src/compression-worker.ts
10855
+ var VERSION14, CompressionWorker;
10856
+ var init_compression_worker = __esm({
10857
+ "../compression/src/compression-worker.ts"() {
10858
+ VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10859
+ CompressionWorker = {
10860
+ id: "compression",
10861
+ name: "compression",
10862
+ module: "compression",
10863
+ version: VERSION14,
10864
+ options: {}
10865
+ };
10866
+ }
10867
+ });
10868
+
10869
+ // ../compression/src/index.ts
10870
+ var init_src9 = __esm({
10871
+ "../compression/src/index.ts"() {
10872
+ init_compression_worker();
10873
+ }
10874
+ });
10875
+
10876
+ // src/lib/parsers/parse-slpk/slpk-archieve.ts
10877
+ var import_md5, SLPKArchive;
10878
+ var init_slpk_archieve = __esm({
10879
+ "src/lib/parsers/parse-slpk/slpk-archieve.ts"() {
10880
+ init_src();
10881
+ import_md5 = __toModule(require_md5());
10882
+ init_src9();
10883
+ init_local_file_header();
10884
+ SLPKArchive = class {
10885
+ constructor(slpkArchiveBuffer, hashFile) {
10886
+ this.slpkArchive = new DataView(slpkArchiveBuffer);
10887
+ this.hashArray = this.parseHashFile(hashFile);
10888
+ }
10889
+ parseHashFile(hashFile) {
10890
+ const hashFileBuffer = Buffer.from(hashFile);
10891
+ const hashArray = [];
10892
+ for (let i2 = 0; i2 < hashFileBuffer.buffer.byteLength; i2 = i2 + 24) {
10893
+ const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i2 + 16, hashFileBuffer.byteOffset + i2 + 24));
10894
+ const offset = offsetBuffer.getUint32(offsetBuffer.byteOffset, true);
10895
+ hashArray.push({
10896
+ hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i2, hashFileBuffer.byteOffset + i2 + 16)),
10897
+ offset
10898
+ });
10899
+ }
10900
+ return hashArray;
10901
+ }
10902
+ async getFile(path, mode = "raw") {
10903
+ if (mode === "http") {
10904
+ throw new Error("http mode is not supported");
10905
+ }
10906
+ const fileToDecompress = this.getFileBytes(`${path}.gz`);
10907
+ if (fileToDecompress) {
10908
+ const decompressedData = await processOnWorker(CompressionWorker, fileToDecompress, {
10909
+ compression: "gzip",
10910
+ operation: "decompress",
10911
+ _workerType: "test",
10912
+ gzip: {}
10913
+ });
10914
+ return decompressedData;
10915
+ }
10916
+ const fileWithoutCompression = this.getFileBytes(path);
10917
+ if (fileWithoutCompression) {
10918
+ return Promise.resolve(Buffer.from(fileWithoutCompression));
10919
+ }
10920
+ throw new Error("No such file in the archieve");
10921
+ }
10922
+ getFileBytes(path) {
10923
+ const nameHash = Buffer.from((0, import_md5.default)(path), "hex");
10924
+ const fileInfo = this.hashArray.find((val) => Buffer.compare(val.hash, nameHash) === 0);
10925
+ if (!fileInfo) {
10926
+ return void 0;
10927
+ }
10928
+ const localFileHeader = parseZipLocalFileHeader(this.slpkArchive.byteOffset + fileInfo?.offset, this.slpkArchive);
10929
+ const compressedFile = this.slpkArchive.buffer.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
10930
+ return compressedFile;
10931
+ }
10932
+ };
10933
+ }
10934
+ });
10935
+
10936
+ // src/lib/parsers/parse-slpk/parse-slpk.ts
10937
+ async function parseSLPK(data, options = {}) {
10938
+ const archive = new DataView(data);
10939
+ const cdFileHeaderSignature = [80, 75, 1, 2];
10940
+ const searchWindow = [
10941
+ getByteAt(archive.byteLength - 1, archive),
10942
+ getByteAt(archive.byteLength - 2, archive),
10943
+ getByteAt(archive.byteLength - 3, archive),
10944
+ void 0
10945
+ ];
10946
+ let hashCDOffset = 0;
10947
+ for (let i2 = archive.byteLength - 4; i2 > -1; i2--) {
10948
+ searchWindow[3] = searchWindow[2];
10949
+ searchWindow[2] = searchWindow[1];
10950
+ searchWindow[1] = searchWindow[0];
10951
+ searchWindow[0] = getByteAt(i2, archive);
10952
+ if (searchWindow.every((val, index) => val === cdFileHeaderSignature[index])) {
10953
+ hashCDOffset = i2;
10954
+ break;
10955
+ }
10956
+ }
10957
+ const cdFileHeader = parseZipCDFileHeader(hashCDOffset, archive);
10958
+ const textDecoder = new TextDecoder();
10959
+ if (textDecoder.decode(cdFileHeader.fileName) !== "@specialIndexFileHASH128@") {
10960
+ throw new Error("No hash file in slpk");
10961
+ }
10962
+ const localFileHeader = parseZipLocalFileHeader(cdFileHeader.localHeaderOffset, archive);
10963
+ const fileDataOffset = localFileHeader.fileDataOffset;
10964
+ const hashFile = archive.buffer.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
10965
+ if (!hashFile) {
10966
+ throw new Error("No hash file in slpk");
10967
+ }
10968
+ return await new SLPKArchive(data, hashFile).getFile(options.path ?? "");
10969
+ }
10970
+ var getByteAt;
10971
+ var init_parse_slpk = __esm({
10972
+ "src/lib/parsers/parse-slpk/parse-slpk.ts"() {
10973
+ init_cd_file_header();
10974
+ init_local_file_header();
10975
+ init_slpk_archieve();
10976
+ getByteAt = (offset, buffer) => {
10977
+ return buffer.getUint8(buffer.byteOffset + offset);
10978
+ };
10979
+ }
10980
+ });
10981
+
10982
+ // src/i3s-slpk-loader.ts
10983
+ var VERSION15, SLPKLoader;
10984
+ var init_i3s_slpk_loader = __esm({
10985
+ "src/i3s-slpk-loader.ts"() {
10986
+ init_parse_slpk();
10987
+ VERSION15 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10988
+ SLPKLoader = {
10989
+ name: "I3S SLPK (Scene Layer Package)",
10990
+ id: "slpk",
10991
+ module: "i3s",
10992
+ version: VERSION15,
10993
+ mimeTypes: ["application/octet-stream"],
10994
+ parse: parseSLPK,
10995
+ extensions: ["slpk"],
10996
+ options: {}
10997
+ };
10998
+ }
10999
+ });
11000
+
10446
11001
  // src/lib/parsers/parse-i3s-building-scene-layer.ts
10447
11002
  async function parseBuildingSceneLayer(data, url) {
10448
11003
  const layer0 = JSON.parse(new TextDecoder().decode(data));
@@ -10487,16 +11042,16 @@
10487
11042
  }
10488
11043
  return parseBuildingSceneLayer(data, context.url);
10489
11044
  }
10490
- var VERSION13, I3SBuildingSceneLayerLoader;
11045
+ var VERSION16, I3SBuildingSceneLayerLoader;
10491
11046
  var init_i3s_building_scene_layer_loader = __esm({
10492
11047
  "src/i3s-building-scene-layer-loader.ts"() {
10493
11048
  init_parse_i3s_building_scene_layer();
10494
- VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
11049
+ VERSION16 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
10495
11050
  I3SBuildingSceneLayerLoader = {
10496
11051
  name: "I3S Building Scene Layer",
10497
11052
  id: "i3s-building-scene-layer",
10498
11053
  module: "i3s",
10499
- version: VERSION13,
11054
+ version: VERSION16,
10500
11055
  mimeTypes: ["application/json"],
10501
11056
  parse: parse4,
10502
11057
  extensions: ["json"],
@@ -10577,16 +11132,16 @@
10577
11132
  async function parse5(data) {
10578
11133
  return parseWebscene(data);
10579
11134
  }
10580
- var VERSION14, ArcGisWebSceneLoader;
11135
+ var VERSION17, ArcGisWebSceneLoader;
10581
11136
  var init_arcgis_webscene_loader = __esm({
10582
11137
  "src/arcgis-webscene-loader.ts"() {
10583
11138
  init_parse_arcgis_webscene();
10584
- VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
11139
+ VERSION17 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
10585
11140
  ArcGisWebSceneLoader = {
10586
11141
  name: "ArcGIS Web Scene Loader",
10587
11142
  id: "arcgis-web-scene",
10588
11143
  module: "i3s",
10589
- version: VERSION14,
11144
+ version: VERSION17,
10590
11145
  mimeTypes: ["application/json"],
10591
11146
  parse: parse5,
10592
11147
  extensions: ["json"],
@@ -10605,16 +11160,18 @@
10605
11160
  I3SContentLoader: () => I3SContentLoader,
10606
11161
  I3SLoader: () => I3SLoader,
10607
11162
  I3SNodePageLoader: () => I3SNodePageLoader,
11163
+ SLPKLoader: () => SLPKLoader,
10608
11164
  loadFeatureAttributes: () => loadFeatureAttributes
10609
11165
  });
10610
- var init_src9 = __esm({
11166
+ var init_src10 = __esm({
10611
11167
  "src/index.ts"() {
10612
11168
  init_constants();
10613
11169
  init_i3s_loader();
11170
+ init_i3s_slpk_loader();
10614
11171
  init_i3s_content_loader();
10615
11172
  init_i3s_attribute_loader();
10616
- init_i3s_node_page_loader();
10617
11173
  init_i3s_building_scene_layer_loader();
11174
+ init_i3s_node_page_loader();
10618
11175
  init_arcgis_webscene_loader();
10619
11176
  }
10620
11177
  });
@@ -10622,10 +11179,16 @@
10622
11179
  // src/bundle.ts
10623
11180
  var require_bundle = __commonJS({
10624
11181
  "src/bundle.ts"(exports, module) {
10625
- var moduleExports = (init_src9(), src_exports);
11182
+ var moduleExports = (init_src10(), src_exports);
10626
11183
  globalThis.loaders = globalThis.loaders || {};
10627
11184
  module.exports = Object.assign(globalThis.loaders, moduleExports);
10628
11185
  }
10629
11186
  });
10630
11187
  require_bundle();
10631
11188
  })();
11189
+ /*!
11190
+ * Determine if an object is a Buffer
11191
+ *
11192
+ * @author Feross Aboukhadijeh <https://feross.org>
11193
+ * @license MIT
11194
+ */