@loaders.gl/draco 4.3.4 → 4.4.0-alpha.10

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 (76) hide show
  1. package/dist/dist.dev.js +13059 -1021
  2. package/dist/dist.min.js +12 -3
  3. package/dist/draco-arrow-loader.d.ts +30 -0
  4. package/dist/draco-arrow-loader.d.ts.map +1 -0
  5. package/dist/draco-arrow-loader.js +20 -0
  6. package/dist/draco-arrow-loader.js.map +1 -0
  7. package/dist/draco-format.d.ts +13 -0
  8. package/dist/draco-format.d.ts.map +1 -0
  9. package/dist/draco-format.js +16 -0
  10. package/dist/draco-format.js.map +1 -0
  11. package/dist/draco-loader.d.ts +29 -2
  12. package/dist/draco-loader.d.ts.map +1 -1
  13. package/dist/draco-loader.js +21 -1
  14. package/dist/draco-loader.js.map +1 -0
  15. package/dist/draco-worker-node.js +429 -185
  16. package/dist/draco-worker-node.js.map +4 -4
  17. package/dist/draco-worker.js +188 -116
  18. package/dist/draco-worker.js.map +4 -4
  19. package/dist/draco-writer-worker-node.js +301 -76
  20. package/dist/draco-writer-worker-node.js.map +4 -4
  21. package/dist/draco-writer-worker.js +61 -7
  22. package/dist/draco-writer-worker.js.map +2 -2
  23. package/dist/draco-writer.d.ts +16 -0
  24. package/dist/draco-writer.d.ts.map +1 -1
  25. package/dist/draco-writer.js +21 -1
  26. package/dist/draco-writer.js.map +1 -0
  27. package/dist/draco3d/draco3d-types.js +1 -0
  28. package/dist/draco3d/draco3d-types.js.map +1 -0
  29. package/dist/index.cjs +865 -811
  30. package/dist/index.cjs.map +4 -4
  31. package/dist/index.d.ts +5 -48
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +7 -38
  34. package/dist/index.js.map +1 -0
  35. package/dist/lib/draco-builder.d.ts.map +1 -1
  36. package/dist/lib/draco-builder.js +1 -0
  37. package/dist/lib/draco-builder.js.map +1 -0
  38. package/dist/lib/draco-module-loader.d.ts +3 -2
  39. package/dist/lib/draco-module-loader.d.ts.map +1 -1
  40. package/dist/lib/draco-module-loader.js +53 -10
  41. package/dist/lib/draco-module-loader.js.map +1 -0
  42. package/dist/lib/draco-parser.d.ts.map +1 -1
  43. package/dist/lib/draco-parser.js +4 -1
  44. package/dist/lib/draco-parser.js.map +1 -0
  45. package/dist/lib/draco-types.js +1 -0
  46. package/dist/lib/draco-types.js.map +1 -0
  47. package/dist/lib/utils/get-draco-schema.d.ts.map +1 -1
  48. package/dist/lib/utils/get-draco-schema.js +2 -1
  49. package/dist/lib/utils/get-draco-schema.js.map +1 -0
  50. package/dist/lib/utils/version.js +2 -1
  51. package/dist/lib/utils/version.js.map +1 -0
  52. package/dist/libs/libs/draco_decoder.wasm +0 -0
  53. package/dist/libs/libs/draco_encoder.js +52 -0
  54. package/dist/libs/libs/draco_wasm_wrapper.js +117 -0
  55. package/dist/workers/draco-worker-node.js +1 -0
  56. package/dist/workers/draco-worker-node.js.map +1 -0
  57. package/dist/workers/draco-worker.js +1 -0
  58. package/dist/workers/draco-worker.js.map +1 -0
  59. package/dist/workers/draco-writer-worker-node.cjs +18 -0
  60. package/dist/workers/draco-writer-worker-node.cjs.map +1 -0
  61. package/dist/workers/draco-writer-worker-node.d.cts +2 -0
  62. package/dist/workers/draco-writer-worker-node.d.cts.map +1 -0
  63. package/dist/workers/draco-writer-worker-node.js +1 -0
  64. package/dist/workers/draco-writer-worker-node.js.map +1 -0
  65. package/dist/workers/draco-writer-worker.js +1 -0
  66. package/dist/workers/draco-writer-worker.js.map +1 -0
  67. package/package.json +19 -6
  68. package/src/draco-arrow-loader.ts +25 -0
  69. package/src/draco-format.ts +18 -0
  70. package/src/draco-loader.ts +26 -3
  71. package/src/draco-writer.ts +22 -1
  72. package/src/index.ts +5 -45
  73. package/src/lib/draco-module-loader.ts +87 -23
  74. package/src/lib/draco-parser.ts +3 -1
  75. package/src/lib/utils/get-draco-schema.ts +2 -1
  76. package/src/workers/draco-writer-worker-node.cjs +18 -0
@@ -156,9 +156,9 @@ var require_inherits = __commonJS({
156
156
  }
157
157
  });
158
158
 
159
- // ../../node_modules/string_decoder/index.js
159
+ // ../../node_modules/contentstream/node_modules/string_decoder/index.js
160
160
  var require_string_decoder = __commonJS({
161
- "../../node_modules/string_decoder/index.js"(exports) {
161
+ "../../node_modules/contentstream/node_modules/string_decoder/index.js"(exports) {
162
162
  var Buffer2 = require("buffer").Buffer;
163
163
  var isBufferEncoding = Buffer2.isEncoding || function(encoding) {
164
164
  switch (encoding && encoding.toLowerCase()) {
@@ -1685,6 +1685,144 @@ var require_stream_duplex2 = __commonJS({
1685
1685
  }
1686
1686
  });
1687
1687
 
1688
+ // ../../node_modules/gif-encoder/node_modules/string_decoder/index.js
1689
+ var require_string_decoder2 = __commonJS({
1690
+ "../../node_modules/gif-encoder/node_modules/string_decoder/index.js"(exports) {
1691
+ var Buffer2 = require("buffer").Buffer;
1692
+ var isBufferEncoding = Buffer2.isEncoding || function(encoding) {
1693
+ switch (encoding && encoding.toLowerCase()) {
1694
+ case "hex":
1695
+ case "utf8":
1696
+ case "utf-8":
1697
+ case "ascii":
1698
+ case "binary":
1699
+ case "base64":
1700
+ case "ucs2":
1701
+ case "ucs-2":
1702
+ case "utf16le":
1703
+ case "utf-16le":
1704
+ case "raw":
1705
+ return true;
1706
+ default:
1707
+ return false;
1708
+ }
1709
+ };
1710
+ function assertEncoding(encoding) {
1711
+ if (encoding && !isBufferEncoding(encoding)) {
1712
+ throw new Error("Unknown encoding: " + encoding);
1713
+ }
1714
+ }
1715
+ var StringDecoder = exports.StringDecoder = function(encoding) {
1716
+ this.encoding = (encoding || "utf8").toLowerCase().replace(/[-_]/, "");
1717
+ assertEncoding(encoding);
1718
+ switch (this.encoding) {
1719
+ case "utf8":
1720
+ this.surrogateSize = 3;
1721
+ break;
1722
+ case "ucs2":
1723
+ case "utf16le":
1724
+ this.surrogateSize = 2;
1725
+ this.detectIncompleteChar = utf16DetectIncompleteChar;
1726
+ break;
1727
+ case "base64":
1728
+ this.surrogateSize = 3;
1729
+ this.detectIncompleteChar = base64DetectIncompleteChar;
1730
+ break;
1731
+ default:
1732
+ this.write = passThroughWrite;
1733
+ return;
1734
+ }
1735
+ this.charBuffer = new Buffer2(6);
1736
+ this.charReceived = 0;
1737
+ this.charLength = 0;
1738
+ };
1739
+ StringDecoder.prototype.write = function(buffer) {
1740
+ var charStr = "";
1741
+ while (this.charLength) {
1742
+ var available = buffer.length >= this.charLength - this.charReceived ? this.charLength - this.charReceived : buffer.length;
1743
+ buffer.copy(this.charBuffer, this.charReceived, 0, available);
1744
+ this.charReceived += available;
1745
+ if (this.charReceived < this.charLength) {
1746
+ return "";
1747
+ }
1748
+ buffer = buffer.slice(available, buffer.length);
1749
+ charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
1750
+ var charCode = charStr.charCodeAt(charStr.length - 1);
1751
+ if (charCode >= 55296 && charCode <= 56319) {
1752
+ this.charLength += this.surrogateSize;
1753
+ charStr = "";
1754
+ continue;
1755
+ }
1756
+ this.charReceived = this.charLength = 0;
1757
+ if (buffer.length === 0) {
1758
+ return charStr;
1759
+ }
1760
+ break;
1761
+ }
1762
+ this.detectIncompleteChar(buffer);
1763
+ var end = buffer.length;
1764
+ if (this.charLength) {
1765
+ buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
1766
+ end -= this.charReceived;
1767
+ }
1768
+ charStr += buffer.toString(this.encoding, 0, end);
1769
+ var end = charStr.length - 1;
1770
+ var charCode = charStr.charCodeAt(end);
1771
+ if (charCode >= 55296 && charCode <= 56319) {
1772
+ var size = this.surrogateSize;
1773
+ this.charLength += size;
1774
+ this.charReceived += size;
1775
+ this.charBuffer.copy(this.charBuffer, size, 0, size);
1776
+ buffer.copy(this.charBuffer, 0, 0, size);
1777
+ return charStr.substring(0, end);
1778
+ }
1779
+ return charStr;
1780
+ };
1781
+ StringDecoder.prototype.detectIncompleteChar = function(buffer) {
1782
+ var i2 = buffer.length >= 3 ? 3 : buffer.length;
1783
+ for (; i2 > 0; i2--) {
1784
+ var c2 = buffer[buffer.length - i2];
1785
+ if (i2 == 1 && c2 >> 5 == 6) {
1786
+ this.charLength = 2;
1787
+ break;
1788
+ }
1789
+ if (i2 <= 2 && c2 >> 4 == 14) {
1790
+ this.charLength = 3;
1791
+ break;
1792
+ }
1793
+ if (i2 <= 3 && c2 >> 3 == 30) {
1794
+ this.charLength = 4;
1795
+ break;
1796
+ }
1797
+ }
1798
+ this.charReceived = i2;
1799
+ };
1800
+ StringDecoder.prototype.end = function(buffer) {
1801
+ var res = "";
1802
+ if (buffer && buffer.length)
1803
+ res = this.write(buffer);
1804
+ if (this.charReceived) {
1805
+ var cr2 = this.charReceived;
1806
+ var buf = this.charBuffer;
1807
+ var enc = this.encoding;
1808
+ res += buf.slice(0, cr2).toString(enc);
1809
+ }
1810
+ return res;
1811
+ };
1812
+ function passThroughWrite(buffer) {
1813
+ return buffer.toString(this.encoding);
1814
+ }
1815
+ function utf16DetectIncompleteChar(buffer) {
1816
+ this.charReceived = buffer.length % 2;
1817
+ this.charLength = this.charReceived ? 2 : 0;
1818
+ }
1819
+ function base64DetectIncompleteChar(buffer) {
1820
+ this.charReceived = buffer.length % 3;
1821
+ this.charLength = this.charReceived ? 3 : 0;
1822
+ }
1823
+ }
1824
+ });
1825
+
1688
1826
  // ../../node_modules/gif-encoder/node_modules/readable-stream/lib/_stream_readable.js
1689
1827
  var require_stream_readable2 = __commonJS({
1690
1828
  "../../node_modules/gif-encoder/node_modules/readable-stream/lib/_stream_readable.js"(exports, module2) {
@@ -1739,7 +1877,7 @@ var require_stream_readable2 = __commonJS({
1739
1877
  this.encoding = null;
1740
1878
  if (options.encoding) {
1741
1879
  if (!StringDecoder)
1742
- StringDecoder = require_string_decoder().StringDecoder;
1880
+ StringDecoder = require_string_decoder2().StringDecoder;
1743
1881
  this.decoder = new StringDecoder(options.encoding);
1744
1882
  this.encoding = options.encoding;
1745
1883
  }
@@ -1811,7 +1949,7 @@ var require_stream_readable2 = __commonJS({
1811
1949
  }
1812
1950
  Readable5.prototype.setEncoding = function(enc) {
1813
1951
  if (!StringDecoder)
1814
- StringDecoder = require_string_decoder().StringDecoder;
1952
+ StringDecoder = require_string_decoder2().StringDecoder;
1815
1953
  this._readableState.decoder = new StringDecoder(enc);
1816
1954
  this._readableState.encoding = enc;
1817
1955
  return this;
@@ -7024,13 +7162,13 @@ var require_iota = __commonJS({
7024
7162
  var require_is_buffer = __commonJS({
7025
7163
  "../../node_modules/is-buffer/index.js"(exports, module2) {
7026
7164
  module2.exports = function(obj) {
7027
- return obj != null && (isBuffer3(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
7165
+ return obj != null && (isBuffer2(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
7028
7166
  };
7029
- function isBuffer3(obj) {
7167
+ function isBuffer2(obj) {
7030
7168
  return !!obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
7031
7169
  }
7032
7170
  function isSlowBuffer(obj) {
7033
- return typeof obj.readFloatLE === "function" && typeof obj.slice === "function" && isBuffer3(obj.slice(0, 0));
7171
+ return typeof obj.readFloatLE === "function" && typeof obj.slice === "function" && isBuffer2(obj.slice(0, 0));
7034
7172
  }
7035
7173
  }
7036
7174
  });
@@ -7039,7 +7177,7 @@ var require_is_buffer = __commonJS({
7039
7177
  var require_ndarray = __commonJS({
7040
7178
  "../../node_modules/ndarray/ndarray.js"(exports, module2) {
7041
7179
  var iota = require_iota();
7042
- var isBuffer3 = require_is_buffer();
7180
+ var isBuffer2 = require_is_buffer();
7043
7181
  var hasTypedArrays = typeof Float64Array !== "undefined";
7044
7182
  function compare1st(a2, b2) {
7045
7183
  return a2[0] - b2[0];
@@ -7201,7 +7339,7 @@ var require_ndarray = __commonJS({
7201
7339
  return procedure(CACHED_CONSTRUCTORS[dtype], order);
7202
7340
  }
7203
7341
  function arrayDType(data) {
7204
- if (isBuffer3(data)) {
7342
+ if (isBuffer2(data)) {
7205
7343
  return "buffer";
7206
7344
  }
7207
7345
  if (hasTypedArrays) {
@@ -33594,7 +33732,7 @@ var require_openssh_cert = __commonJS({
33594
33732
  write,
33595
33733
  /* Internal private API */
33596
33734
  fromBuffer,
33597
- toBuffer
33735
+ toBuffer: toBuffer3
33598
33736
  };
33599
33737
  var assert3 = require_assert();
33600
33738
  var SSHBuffer = require_ssh_buffer();
@@ -33734,7 +33872,7 @@ var require_openssh_cert = __commonJS({
33734
33872
  if (cert.signatures.openssh === void 0)
33735
33873
  cert.signatures.openssh = {};
33736
33874
  try {
33737
- var blob = toBuffer(cert, true);
33875
+ var blob = toBuffer3(cert, true);
33738
33876
  } catch (e2) {
33739
33877
  delete cert.signatures.openssh;
33740
33878
  return false;
@@ -33752,7 +33890,7 @@ var require_openssh_cert = __commonJS({
33752
33890
  if (cert.signatures.openssh === void 0)
33753
33891
  cert.signatures.openssh = {};
33754
33892
  try {
33755
- var blob = toBuffer(cert, true);
33893
+ var blob = toBuffer3(cert, true);
33756
33894
  } catch (e2) {
33757
33895
  delete cert.signatures.openssh;
33758
33896
  done(e2);
@@ -33777,13 +33915,13 @@ var require_openssh_cert = __commonJS({
33777
33915
  function write(cert, options) {
33778
33916
  if (options === void 0)
33779
33917
  options = {};
33780
- var blob = toBuffer(cert);
33918
+ var blob = toBuffer3(cert);
33781
33919
  var out = getCertType(cert.subjectKey) + " " + blob.toString("base64");
33782
33920
  if (options.comment)
33783
33921
  out = out + " " + options.comment;
33784
33922
  return out;
33785
33923
  }
33786
- function toBuffer(cert, noSig) {
33924
+ function toBuffer3(cert, noSig) {
33787
33925
  assert3.object(cert.signatures.openssh, "signature for openssh format");
33788
33926
  var sig = cert.signatures.openssh;
33789
33927
  if (sig.nonce === void 0)
@@ -47316,7 +47454,7 @@ var require_utils3 = __commonJS({
47316
47454
  var isRegExp = function isRegExp2(obj) {
47317
47455
  return Object.prototype.toString.call(obj) === "[object RegExp]";
47318
47456
  };
47319
- var isBuffer3 = function isBuffer4(obj) {
47457
+ var isBuffer2 = function isBuffer3(obj) {
47320
47458
  if (obj === null || typeof obj === "undefined") {
47321
47459
  return false;
47322
47460
  }
@@ -47328,7 +47466,7 @@ var require_utils3 = __commonJS({
47328
47466
  compact,
47329
47467
  decode: decode2,
47330
47468
  encode: encode2,
47331
- isBuffer: isBuffer3,
47469
+ isBuffer: isBuffer2,
47332
47470
  isRegExp,
47333
47471
  merge
47334
47472
  };
@@ -57750,11 +57888,11 @@ var require_data_uri_to_buffer = __commonJS({
57750
57888
  // ../../node_modules/parse-data-uri/index.js
57751
57889
  var require_parse_data_uri = __commonJS({
57752
57890
  "../../node_modules/parse-data-uri/index.js"(exports, module2) {
57753
- var toBuffer = require_data_uri_to_buffer();
57891
+ var toBuffer3 = require_data_uri_to_buffer();
57754
57892
  function parseDataUri(dataUri) {
57755
57893
  return {
57756
57894
  mimeType: normalizeMimeType(parseMimeType(dataUri)),
57757
- data: toBuffer(dataUri)
57895
+ data: toBuffer3(dataUri)
57758
57896
  };
57759
57897
  }
57760
57898
  function parseMimeType(uri) {
@@ -59668,6 +59806,9 @@ function getPixelsAsync(buffer, mimeType) {
59668
59806
  );
59669
59807
  }
59670
59808
 
59809
+ // ../loader-utils/src/lib/javascript-utils/is-type.ts
59810
+ var isSharedArrayBuffer = (value) => typeof SharedArrayBuffer !== "undefined" && value instanceof SharedArrayBuffer;
59811
+
59671
59812
  // ../worker-utils/src/lib/env-utils/version.ts
59672
59813
  function getVersion() {
59673
59814
  var _a;
@@ -59678,8 +59819,9 @@ function getVersion() {
59678
59819
  "loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN."
59679
59820
  );
59680
59821
  globalThis._loadersgl_.version = NPM_TAG;
59822
+ warningIssued = true;
59681
59823
  } else {
59682
- globalThis._loadersgl_.version = "4.3.3";
59824
+ globalThis._loadersgl_.version = "4.4.0-alpha.10";
59683
59825
  }
59684
59826
  }
59685
59827
  return globalThis._loadersgl_.version;
@@ -59850,6 +59992,9 @@ async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryN
59850
59992
  return await loadLibraryPromises[libraryUrl];
59851
59993
  }
59852
59994
  function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
59995
+ if (options == null ? void 0 : options.core) {
59996
+ throw new Error("loadLibrary: options.core must be pre-normalized");
59997
+ }
59853
59998
  if (!options.useLocalLibraries && library.startsWith("http")) {
59854
59999
  return library;
59855
60000
  }
@@ -59875,10 +60020,20 @@ async function loadLibraryFromFile(libraryUrl) {
59875
60020
  return await loadAsArrayBuffer(libraryUrl);
59876
60021
  }
59877
60022
  if (!isBrowser2) {
60023
+ const { requireFromFile: requireFromFile2 } = globalThis.loaders || {};
59878
60024
  try {
59879
- const { requireFromFile: requireFromFile2 } = globalThis.loaders || {};
59880
- return await (requireFromFile2 == null ? void 0 : requireFromFile2(libraryUrl));
60025
+ const result = await (requireFromFile2 == null ? void 0 : requireFromFile2(libraryUrl));
60026
+ if (result || !libraryUrl.includes("/dist/libs/")) {
60027
+ return result;
60028
+ }
60029
+ return await (requireFromFile2 == null ? void 0 : requireFromFile2(libraryUrl.replace("/dist/libs/", "/src/libs/")));
59881
60030
  } catch (error) {
60031
+ if (libraryUrl.includes("/dist/libs/")) {
60032
+ try {
60033
+ return await (requireFromFile2 == null ? void 0 : requireFromFile2(libraryUrl.replace("/dist/libs/", "/src/libs/")));
60034
+ } catch {
60035
+ }
60036
+ }
59882
60037
  console.error(error);
59883
60038
  return null;
59884
60039
  }
@@ -59914,7 +60069,14 @@ async function loadAsArrayBuffer(url) {
59914
60069
  const response = await fetch(url);
59915
60070
  return await response.arrayBuffer();
59916
60071
  }
59917
- return await readFileAsArrayBuffer2(url);
60072
+ try {
60073
+ return await readFileAsArrayBuffer2(url);
60074
+ } catch {
60075
+ if (url.includes("/dist/libs/")) {
60076
+ return await readFileAsArrayBuffer2(url.replace("/dist/libs/", "/src/libs/"));
60077
+ }
60078
+ throw new Error(`Failed to load ArrayBuffer from ${url}`);
60079
+ }
59918
60080
  }
59919
60081
  async function loadAsText(url) {
59920
60082
  const { readFileAsText: readFileAsText2 } = globalThis.loaders || {};
@@ -59922,7 +60084,14 @@ async function loadAsText(url) {
59922
60084
  const response = await fetch(url);
59923
60085
  return await response.text();
59924
60086
  }
59925
- return await readFileAsText2(url);
60087
+ try {
60088
+ return await readFileAsText2(url);
60089
+ } catch {
60090
+ if (url.includes("/dist/libs/")) {
60091
+ return await readFileAsText2(url.replace("/dist/libs/", "/src/libs/"));
60092
+ }
60093
+ throw new Error(`Failed to load text from ${url}`);
60094
+ }
59926
60095
  }
59927
60096
 
59928
60097
  // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
@@ -60001,7 +60170,10 @@ async function parseData({
60001
60170
  options = {
60002
60171
  ...options,
60003
60172
  modules: loader && loader.options && loader.options.modules || {},
60004
- worker: false
60173
+ core: {
60174
+ ...options.core,
60175
+ worker: false
60176
+ }
60005
60177
  };
60006
60178
  return await parser(data, { ...options }, context, loader);
60007
60179
  }
@@ -60028,10 +60200,26 @@ function concatenateArrayBuffersFromArray(sources) {
60028
60200
  async function concatenateArrayBuffersAsync(asyncIterator) {
60029
60201
  const arrayBuffers = [];
60030
60202
  for await (const chunk of asyncIterator) {
60031
- arrayBuffers.push(chunk);
60203
+ arrayBuffers.push(copyToArrayBuffer(chunk));
60032
60204
  }
60033
60205
  return concatenateArrayBuffers(...arrayBuffers);
60034
60206
  }
60207
+ function copyToArrayBuffer(chunk) {
60208
+ if (chunk instanceof ArrayBuffer) {
60209
+ return chunk;
60210
+ }
60211
+ if (ArrayBuffer.isView(chunk)) {
60212
+ const { buffer, byteOffset, byteLength } = chunk;
60213
+ return copyFromBuffer(buffer, byteOffset, byteLength);
60214
+ }
60215
+ return copyFromBuffer(chunk);
60216
+ }
60217
+ function copyFromBuffer(buffer, byteOffset = 0, byteLength = buffer.byteLength - byteOffset) {
60218
+ const view = new Uint8Array(buffer, byteOffset, byteLength);
60219
+ const copy = new Uint8Array(view.length);
60220
+ copy.set(view);
60221
+ return copy.buffer;
60222
+ }
60035
60223
 
60036
60224
  // ../loader-utils/src/lib/path-utils/file-aliases.ts
60037
60225
  var pathPrefix = "";
@@ -60049,6 +60237,66 @@ function resolvePath(filename) {
60049
60237
  return filename;
60050
60238
  }
60051
60239
 
60240
+ // ../loader-utils/src/lib/node/buffer.ts
60241
+ function toArrayBuffer(buffer) {
60242
+ if (Buffer.isBuffer(buffer)) {
60243
+ const typedArray = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);
60244
+ return typedArray.slice().buffer;
60245
+ }
60246
+ return buffer;
60247
+ }
60248
+
60249
+ // ../loader-utils/src/lib/binary-utils/memory-conversion-utils.ts
60250
+ function isBuffer(value) {
60251
+ return value && typeof value === "object" && value.isBuffer;
60252
+ }
60253
+ function toArrayBuffer2(data) {
60254
+ if (isBuffer(data)) {
60255
+ return toArrayBuffer(data);
60256
+ }
60257
+ if (data instanceof ArrayBuffer) {
60258
+ return data;
60259
+ }
60260
+ if (isSharedArrayBuffer(data)) {
60261
+ return copyToArrayBuffer2(data);
60262
+ }
60263
+ if (ArrayBuffer.isView(data)) {
60264
+ const buffer = data.buffer;
60265
+ if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {
60266
+ return buffer;
60267
+ }
60268
+ return buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
60269
+ }
60270
+ if (typeof data === "string") {
60271
+ const text = data;
60272
+ const uint8Array = new TextEncoder().encode(text);
60273
+ return uint8Array.buffer;
60274
+ }
60275
+ if (data && typeof data === "object" && data._toArrayBuffer) {
60276
+ return data._toArrayBuffer();
60277
+ }
60278
+ throw new Error("toArrayBuffer");
60279
+ }
60280
+ function ensureArrayBuffer(bufferSource) {
60281
+ if (bufferSource instanceof ArrayBuffer) {
60282
+ return bufferSource;
60283
+ }
60284
+ if (isSharedArrayBuffer(bufferSource)) {
60285
+ return copyToArrayBuffer2(bufferSource);
60286
+ }
60287
+ const { buffer, byteOffset, byteLength } = bufferSource;
60288
+ if (buffer instanceof ArrayBuffer && byteOffset === 0 && byteLength === buffer.byteLength) {
60289
+ return buffer;
60290
+ }
60291
+ return copyToArrayBuffer2(buffer, byteOffset, byteLength);
60292
+ }
60293
+ function copyToArrayBuffer2(buffer, byteOffset = 0, byteLength = buffer.byteLength - byteOffset) {
60294
+ const view = new Uint8Array(buffer, byteOffset, byteLength);
60295
+ const copy = new Uint8Array(view.length);
60296
+ copy.set(view);
60297
+ return copy.buffer;
60298
+ }
60299
+
60052
60300
  // ../polyfills/src/filesystems/node-file.ts
60053
60301
  var import_fs = __toESM(require("fs"), 1);
60054
60302
  var NodeFile = class {
@@ -60174,8 +60422,6 @@ var import_stream = require("stream");
60174
60422
 
60175
60423
  // ../polyfills/src/filesystems/stream-utils.node.ts
60176
60424
  var import_zlib = __toESM(require("zlib"), 1);
60177
- var isArrayBuffer = (x2) => x2 && x2 instanceof ArrayBuffer;
60178
- var isBuffer = (x2) => x2 && x2 instanceof Buffer;
60179
60425
  function decompressReadStream(readStream, headers) {
60180
60426
  switch (headers == null ? void 0 : headers.get("content-encoding")) {
60181
60427
  case "br":
@@ -60197,7 +60443,7 @@ async function concatenateReadStream(readStream) {
60197
60443
  if (typeof chunk === "string") {
60198
60444
  reject(new Error("Read stream not binary"));
60199
60445
  }
60200
- arrayBufferChunks.push(toArrayBuffer(chunk));
60446
+ arrayBufferChunks.push(toArrayBuffer2(chunk));
60201
60447
  });
60202
60448
  readStream.on("end", () => {
60203
60449
  const arrayBuffer = concatenateArrayBuffers2(arrayBufferChunks);
@@ -60218,27 +60464,6 @@ function concatenateArrayBuffers2(sources) {
60218
60464
  }
60219
60465
  return result.buffer;
60220
60466
  }
60221
- function toArrayBuffer(data) {
60222
- if (isArrayBuffer(data)) {
60223
- return data;
60224
- }
60225
- if (isBuffer(data)) {
60226
- const typedArray = new Uint8Array(data);
60227
- return typedArray.buffer;
60228
- }
60229
- if (ArrayBuffer.isView(data)) {
60230
- return data.buffer;
60231
- }
60232
- if (typeof data === "string") {
60233
- const text = data;
60234
- const uint8Array = new TextEncoder().encode(text);
60235
- return uint8Array.buffer;
60236
- }
60237
- if (data && typeof data === "object" && data._toArrayBuffer) {
60238
- return data._toArrayBuffer();
60239
- }
60240
- throw new Error(`toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);
60241
- }
60242
60467
 
60243
60468
  // ../polyfills/src/filesystems/fetch-node.ts
60244
60469
  var isBoolean = (x2) => typeof x2 === "boolean";
@@ -60252,10 +60477,10 @@ async function fetchNode(url, options) {
60252
60477
  noqueryUrl = resolvePath(noqueryUrl);
60253
60478
  const responseHeaders = new Headers();
60254
60479
  if (url.endsWith(".gz")) {
60255
- responseHeaders["content-encoding"] = "gzip";
60480
+ responseHeaders.set("content-encoding", "gzip");
60256
60481
  }
60257
60482
  if (url.endsWith(".br")) {
60258
- responseHeaders["content-encoding"] = "br";
60483
+ responseHeaders.set("content-encoding", "br");
60259
60484
  }
60260
60485
  try {
60261
60486
  const body = await new Promise((resolve, reject) => {
@@ -62936,7 +63161,7 @@ async function readFileAsArrayBuffer(filename) {
62936
63161
  return await response.arrayBuffer();
62937
63162
  }
62938
63163
  const buffer = import_fs3.default.readFileSync(filename);
62939
- return buffer.buffer;
63164
+ return ensureArrayBuffer(buffer.buffer);
62940
63165
  }
62941
63166
  async function readFileAsText(filename) {
62942
63167
  if (filename.startsWith("http")) {
@@ -63150,8 +63375,6 @@ var import_http = __toESM(require("http"), 1);
63150
63375
  var import_https = __toESM(require("https"), 1);
63151
63376
 
63152
63377
  // ../polyfills/src/fetch/decode-data-uri.ts
63153
- var isArrayBuffer2 = (x2) => x2 && x2 instanceof ArrayBuffer;
63154
- var isBuffer2 = (x2) => x2 && x2 instanceof Buffer;
63155
63378
  function decodeDataUri(uri) {
63156
63379
  const dataIndex = uri.indexOf(",");
63157
63380
  let buffer;
@@ -63170,27 +63393,6 @@ function decodeDataUri(uri) {
63170
63393
  }
63171
63394
  return { arrayBuffer: toArrayBuffer2(buffer), mimeType };
63172
63395
  }
63173
- function toArrayBuffer2(data) {
63174
- if (isArrayBuffer2(data)) {
63175
- return data;
63176
- }
63177
- if (isBuffer2(data)) {
63178
- const typedArray = new Uint8Array(data);
63179
- return typedArray.buffer;
63180
- }
63181
- if (ArrayBuffer.isView(data)) {
63182
- return data.buffer;
63183
- }
63184
- if (typeof data === "string") {
63185
- const text = data;
63186
- const uint8Array = new TextEncoder().encode(text);
63187
- return uint8Array.buffer;
63188
- }
63189
- if (data && typeof data === "object" && data._toArrayBuffer) {
63190
- return data._toArrayBuffer();
63191
- }
63192
- throw new Error(`toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);
63193
- }
63194
63396
 
63195
63397
  // ../polyfills/src/fetch/fetch-polyfill.ts
63196
63398
  var isDataURL = (url) => url.startsWith("data:");
@@ -63343,35 +63545,126 @@ if (nodeVersion2 < 18) {
63343
63545
  }
63344
63546
  }
63345
63547
 
63346
- // src/lib/utils/version.ts
63347
- var VERSION2 = true ? "4.3.3" : "latest";
63348
-
63349
- // src/draco-loader.ts
63350
- var DracoLoader = {
63351
- dataType: null,
63352
- batchType: null,
63353
- name: "Draco",
63354
- id: "draco",
63355
- module: "draco",
63356
- // shapes: ['mesh'],
63357
- version: VERSION2,
63358
- worker: true,
63359
- extensions: ["drc"],
63360
- mimeTypes: ["application/octet-stream"],
63361
- binary: true,
63362
- tests: ["DRACO"],
63363
- options: {
63364
- draco: {
63365
- decoderType: typeof WebAssembly === "object" ? "wasm" : "js",
63366
- // 'js' for IE11
63367
- libraryPath: "libs/",
63368
- extraAttributes: {},
63369
- attributeNameEntry: void 0
63548
+ // src/lib/draco-module-loader.ts
63549
+ var DRACO_DECODER_VERSION = "1.5.6";
63550
+ var DRACO_ENCODER_VERSION = "1.4.1";
63551
+ var STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
63552
+ var DRACO_EXTERNAL_LIBRARIES = {
63553
+ /** The primary Draco3D encoder, javascript wrapper part */
63554
+ DECODER: "draco_wasm_wrapper.js",
63555
+ /** The primary draco decoder, compiled web assembly part */
63556
+ DECODER_WASM: "draco_decoder.wasm",
63557
+ /** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */
63558
+ FALLBACK_DECODER: "draco_decoder.js",
63559
+ /** Draco encoder */
63560
+ ENCODER: "draco_encoder.js"
63561
+ };
63562
+ var DRACO_EXTERNAL_LIBRARY_URLS = {
63563
+ [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,
63564
+ [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,
63565
+ [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,
63566
+ [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`
63567
+ };
63568
+ var loadDecoderPromise;
63569
+ async function loadDracoDecoderModule(options = {}, type) {
63570
+ const modules = options.modules || {};
63571
+ if (modules.draco3d) {
63572
+ loadDecoderPromise ||= modules.draco3d.createDecoderModule({}).then((draco) => {
63573
+ return { draco };
63574
+ });
63575
+ } else {
63576
+ loadDecoderPromise ||= loadDracoDecoder(options, type);
63577
+ }
63578
+ return await loadDecoderPromise;
63579
+ }
63580
+ function getLibraryExport(library, exportName) {
63581
+ if (library && typeof library === "object") {
63582
+ if (library.default) {
63583
+ return library.default;
63584
+ }
63585
+ if (library[exportName]) {
63586
+ return library[exportName];
63370
63587
  }
63371
63588
  }
63372
- };
63589
+ return library;
63590
+ }
63591
+ async function loadDracoDecoder(options, type) {
63592
+ let DracoDecoderModule;
63593
+ let wasmBinary;
63594
+ switch (type) {
63595
+ case "js":
63596
+ DracoDecoderModule = await loadLibrary(
63597
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],
63598
+ "draco",
63599
+ options,
63600
+ DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER
63601
+ );
63602
+ break;
63603
+ case "wasm":
63604
+ default:
63605
+ try {
63606
+ [DracoDecoderModule, wasmBinary] = await Promise.all([
63607
+ await loadLibrary(
63608
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
63609
+ "draco",
63610
+ options,
63611
+ DRACO_EXTERNAL_LIBRARIES.DECODER
63612
+ ),
63613
+ await loadLibrary(
63614
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
63615
+ "draco",
63616
+ options,
63617
+ DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
63618
+ )
63619
+ ]);
63620
+ } catch {
63621
+ DracoDecoderModule = null;
63622
+ wasmBinary = null;
63623
+ }
63624
+ }
63625
+ DracoDecoderModule = getLibraryExport(DracoDecoderModule, "DracoDecoderModule");
63626
+ DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
63627
+ if (!DracoDecoderModule && !isBrowser2) {
63628
+ [DracoDecoderModule, wasmBinary] = await Promise.all([
63629
+ await loadLibrary(
63630
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
63631
+ "draco",
63632
+ { ...options, useLocalLibraries: true },
63633
+ DRACO_EXTERNAL_LIBRARIES.DECODER
63634
+ ),
63635
+ await loadLibrary(
63636
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
63637
+ "draco",
63638
+ { ...options, useLocalLibraries: true },
63639
+ DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
63640
+ )
63641
+ ]);
63642
+ DracoDecoderModule = getLibraryExport(DracoDecoderModule, "DracoDecoderModule");
63643
+ DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
63644
+ }
63645
+ return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
63646
+ }
63647
+ function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
63648
+ if (typeof DracoDecoderModule !== "function") {
63649
+ throw new Error("DracoDecoderModule could not be loaded");
63650
+ }
63651
+ const options = {};
63652
+ if (wasmBinary) {
63653
+ options.wasmBinary = wasmBinary;
63654
+ }
63655
+ return new Promise((resolve) => {
63656
+ DracoDecoderModule({
63657
+ ...options,
63658
+ onModuleLoaded: (draco) => resolve({ draco })
63659
+ // Module is Promise-like. Wrap in object to avoid loop.
63660
+ });
63661
+ });
63662
+ }
63663
+
63664
+ // src/lib/utils/version.ts
63665
+ var VERSION2 = true ? "4.4.0-alpha.10" : "latest";
63373
63666
 
63374
- // ../schema/src/lib/table/simple-table/data-type.ts
63667
+ // ../schema-utils/src/lib/schema/data-type.ts
63375
63668
  function getDataTypeFromTypedArray(array) {
63376
63669
  switch (array.constructor) {
63377
63670
  case Int8Array:
@@ -63396,7 +63689,7 @@ function getDataTypeFromTypedArray(array) {
63396
63689
  }
63397
63690
  }
63398
63691
 
63399
- // ../schema/src/lib/mesh/mesh-utils.ts
63692
+ // ../schema-utils/src/lib/mesh/mesh-utils.ts
63400
63693
  function getMeshBoundingBox(attributes) {
63401
63694
  let minX = Infinity;
63402
63695
  let minY = Infinity;
@@ -63423,7 +63716,7 @@ function getMeshBoundingBox(attributes) {
63423
63716
  ];
63424
63717
  }
63425
63718
 
63426
- // ../schema/src/lib/mesh/deduce-mesh-schema.ts
63719
+ // ../schema-utils/src/lib/mesh/deduce-mesh-schema.ts
63427
63720
  function deduceMeshField(name, attribute, optionalMetadata) {
63428
63721
  const type = getDataTypeFromTypedArray(attribute.value);
63429
63722
  const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);
@@ -63647,6 +63940,7 @@ var DracoParser = class {
63647
63940
  case "triangle-strip":
63648
63941
  return {
63649
63942
  topology: "triangle-strip",
63943
+ // TODO - mode is wrong?
63650
63944
  mode: 4,
63651
63945
  // GL.TRIANGLES
63652
63946
  attributes,
@@ -63659,6 +63953,7 @@ var DracoParser = class {
63659
63953
  default:
63660
63954
  return {
63661
63955
  topology: "triangle-list",
63956
+ // TODO - mode is wrong?
63662
63957
  mode: 5,
63663
63958
  // GL.TRIANGLE_STRIP
63664
63959
  attributes,
@@ -63943,91 +64238,40 @@ function getUint32Array(dracoArray) {
63943
64238
  return intArray;
63944
64239
  }
63945
64240
 
63946
- // src/lib/draco-module-loader.ts
63947
- var DRACO_DECODER_VERSION = "1.5.6";
63948
- var DRACO_ENCODER_VERSION = "1.4.1";
63949
- var STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
63950
- var DRACO_EXTERNAL_LIBRARIES = {
63951
- /** The primary Draco3D encoder, javascript wrapper part */
63952
- DECODER: "draco_wasm_wrapper.js",
63953
- /** The primary draco decoder, compiled web assembly part */
63954
- DECODER_WASM: "draco_decoder.wasm",
63955
- /** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */
63956
- FALLBACK_DECODER: "draco_decoder.js",
63957
- /** Draco encoder */
63958
- ENCODER: "draco_encoder.js"
63959
- };
63960
- var DRACO_EXTERNAL_LIBRARY_URLS = {
63961
- [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,
63962
- [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,
63963
- [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,
63964
- [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`
63965
- };
63966
- var loadDecoderPromise;
63967
- async function loadDracoDecoderModule(options) {
63968
- const modules = options.modules || {};
63969
- if (modules.draco3d) {
63970
- loadDecoderPromise ||= modules.draco3d.createDecoderModule({}).then((draco) => {
63971
- return { draco };
63972
- });
63973
- } else {
63974
- loadDecoderPromise ||= loadDracoDecoder(options);
63975
- }
63976
- return await loadDecoderPromise;
63977
- }
63978
- async function loadDracoDecoder(options) {
63979
- let DracoDecoderModule;
63980
- let wasmBinary;
63981
- switch (options.draco && options.draco.decoderType) {
63982
- case "js":
63983
- DracoDecoderModule = await loadLibrary(
63984
- DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],
63985
- "draco",
63986
- options,
63987
- DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER
63988
- );
63989
- break;
63990
- case "wasm":
63991
- default:
63992
- [DracoDecoderModule, wasmBinary] = await Promise.all([
63993
- await loadLibrary(
63994
- DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
63995
- "draco",
63996
- options,
63997
- DRACO_EXTERNAL_LIBRARIES.DECODER
63998
- ),
63999
- await loadLibrary(
64000
- DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
64001
- "draco",
64002
- options,
64003
- DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
64004
- )
64005
- ]);
64006
- }
64007
- DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
64008
- return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
64009
- }
64010
- function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
64011
- const options = {};
64012
- if (wasmBinary) {
64013
- options.wasmBinary = wasmBinary;
64241
+ // src/draco-loader.ts
64242
+ var DracoWorkerLoader = {
64243
+ dataType: null,
64244
+ batchType: null,
64245
+ name: "Draco",
64246
+ id: "draco",
64247
+ module: "draco",
64248
+ // shapes: ['mesh'],
64249
+ version: VERSION2,
64250
+ worker: true,
64251
+ extensions: ["drc"],
64252
+ mimeTypes: ["application/octet-stream"],
64253
+ binary: true,
64254
+ tests: ["DRACO"],
64255
+ options: {
64256
+ draco: {
64257
+ decoderType: typeof WebAssembly === "object" ? "wasm" : "js",
64258
+ // 'js' for IE11
64259
+ libraryPath: "libs/",
64260
+ extraAttributes: {},
64261
+ attributeNameEntry: void 0
64262
+ }
64014
64263
  }
64015
- return new Promise((resolve) => {
64016
- DracoDecoderModule({
64017
- ...options,
64018
- onModuleLoaded: (draco) => resolve({ draco })
64019
- // Module is Promise-like. Wrap in object to avoid loop.
64020
- });
64021
- });
64022
- }
64023
-
64024
- // src/index.ts
64025
- var DracoLoader2 = {
64026
- ...DracoLoader,
64264
+ };
64265
+ var DracoLoader = {
64266
+ ...DracoWorkerLoader,
64027
64267
  parse
64028
64268
  };
64029
64269
  async function parse(arrayBuffer, options) {
64030
- const { draco } = await loadDracoDecoderModule(options);
64270
+ var _a;
64271
+ const { draco } = await loadDracoDecoderModule(
64272
+ options == null ? void 0 : options.core,
64273
+ ((_a = options == null ? void 0 : options.draco) == null ? void 0 : _a.decoderType) || "wasm"
64274
+ );
64031
64275
  const dracoParser = new DracoParser(draco);
64032
64276
  try {
64033
64277
  return dracoParser.parseSync(arrayBuffer, options == null ? void 0 : options.draco);
@@ -64037,7 +64281,7 @@ async function parse(arrayBuffer, options) {
64037
64281
  }
64038
64282
 
64039
64283
  // src/workers/draco-worker-node.ts
64040
- createLoaderWorker(DracoLoader2);
64284
+ createLoaderWorker(DracoLoader);
64041
64285
  /*! Bundled license information:
64042
64286
 
64043
64287
  is-buffer/index.js: