@loaders.gl/draco 4.3.2 → 4.4.0-alpha.1

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 (41) hide show
  1. package/dist/dist.dev.js +12966 -1012
  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 +19 -0
  6. package/dist/draco-format.d.ts +13 -0
  7. package/dist/draco-format.d.ts.map +1 -0
  8. package/dist/draco-format.js +15 -0
  9. package/dist/draco-loader.d.ts +28 -1
  10. package/dist/draco-loader.d.ts.map +1 -1
  11. package/dist/draco-loader.js +20 -1
  12. package/dist/draco-worker-node.js +253 -115
  13. package/dist/draco-worker-node.js.map +4 -4
  14. package/dist/draco-worker.js +111 -111
  15. package/dist/draco-worker.js.map +4 -4
  16. package/dist/draco-writer-worker-node.js +145 -6
  17. package/dist/draco-writer-worker-node.js.map +4 -4
  18. package/dist/draco-writer-worker.js +3 -2
  19. package/dist/draco-writer-worker.js.map +2 -2
  20. package/dist/draco-writer.d.ts +16 -0
  21. package/dist/draco-writer.d.ts.map +1 -1
  22. package/dist/draco-writer.js +19 -0
  23. package/dist/index.cjs +818 -802
  24. package/dist/index.cjs.map +4 -4
  25. package/dist/index.d.ts +5 -48
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +6 -38
  28. package/dist/lib/draco-builder.d.ts.map +1 -1
  29. package/dist/lib/draco-parser.d.ts.map +1 -1
  30. package/dist/lib/draco-parser.js +3 -1
  31. package/dist/lib/utils/get-draco-schema.d.ts.map +1 -1
  32. package/dist/lib/utils/get-draco-schema.js +1 -1
  33. package/dist/lib/utils/version.js +1 -1
  34. package/package.json +7 -6
  35. package/src/draco-arrow-loader.ts +25 -0
  36. package/src/draco-format.ts +18 -0
  37. package/src/draco-loader.ts +22 -2
  38. package/src/draco-writer.ts +21 -0
  39. package/src/index.ts +5 -45
  40. package/src/lib/draco-parser.ts +3 -1
  41. package/src/lib/utils/get-draco-schema.ts +2 -1
@@ -0,0 +1,30 @@
1
+ import type { ArrowTable } from '@loaders.gl/schema';
2
+ import type { DracoLoaderOptions } from "./draco-loader.js";
3
+ /**
4
+ * Loader for Draco3D compressed geometries
5
+ */
6
+ export declare const DracoArrowLoader: {
7
+ readonly dataType: ArrowTable;
8
+ readonly worker: false;
9
+ readonly parse: typeof parse;
10
+ readonly batchType: never;
11
+ readonly name: "Draco";
12
+ readonly id: "draco";
13
+ readonly module: "draco";
14
+ readonly version: any;
15
+ readonly extensions: ["drc"];
16
+ readonly mimeTypes: ["application/octet-stream"];
17
+ readonly binary: true;
18
+ readonly tests: ["DRACO"];
19
+ readonly options: {
20
+ readonly draco: {
21
+ readonly decoderType: "js" | "wasm";
22
+ readonly libraryPath: "libs/";
23
+ readonly extraAttributes: {};
24
+ readonly attributeNameEntry: undefined;
25
+ };
26
+ };
27
+ };
28
+ declare function parse(arrayBuffer: ArrayBuffer, options?: DracoLoaderOptions): Promise<ArrowTable>;
29
+ export {};
30
+ //# sourceMappingURL=draco-arrow-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-arrow-loader.d.ts","sourceRoot":"","sources":["../src/draco-arrow-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAC,kBAAkB,EAAC,0BAAuB;AAIvD;;GAEG;AACH,eAAO,MAAM,gBAAgB;uBAEE,UAAU;;;;;;;;;;;;;;;;;;;;CAGmC,CAAC;AAE7E,iBAAe,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAIhG"}
@@ -0,0 +1,19 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { DracoLoader } from "./draco-loader.js";
5
+ import { convertMeshToTable } from '@loaders.gl/schema-utils';
6
+ /**
7
+ * Loader for Draco3D compressed geometries
8
+ */
9
+ export const DracoArrowLoader = {
10
+ ...DracoLoader,
11
+ dataType: null,
12
+ worker: false,
13
+ parse
14
+ };
15
+ async function parse(arrayBuffer, options) {
16
+ const mesh = await DracoLoader.parse(arrayBuffer, options);
17
+ const arrowTable = convertMeshToTable(mesh, 'arrow-table');
18
+ return arrowTable;
19
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Draco3D compressed geometries
3
+ */
4
+ export declare const DracoFormat: {
5
+ readonly name: "Draco";
6
+ readonly id: "draco";
7
+ readonly module: "draco";
8
+ readonly extensions: ["drc"];
9
+ readonly mimeTypes: ["application/octet-stream"];
10
+ readonly binary: true;
11
+ readonly tests: ["DRACO"];
12
+ };
13
+ //# sourceMappingURL=draco-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-format.d.ts","sourceRoot":"","sources":["../src/draco-format.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;CAQG,CAAC"}
@@ -0,0 +1,15 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /**
5
+ * Draco3D compressed geometries
6
+ */
7
+ export const DracoFormat = {
8
+ name: 'Draco',
9
+ id: 'draco',
10
+ module: 'draco',
11
+ extensions: ['drc'],
12
+ mimeTypes: ['application/octet-stream'],
13
+ binary: true,
14
+ tests: ['DRACO']
15
+ };
@@ -14,7 +14,32 @@ export type DracoLoaderOptions = LoaderOptions & {
14
14
  /**
15
15
  * Worker loader for Draco3D compressed geometries
16
16
  */
17
+ export declare const DracoWorkerLoader: {
18
+ readonly dataType: DracoMesh;
19
+ readonly batchType: never;
20
+ readonly name: "Draco";
21
+ readonly id: "draco";
22
+ readonly module: "draco";
23
+ readonly version: any;
24
+ readonly worker: true;
25
+ readonly extensions: ["drc"];
26
+ readonly mimeTypes: ["application/octet-stream"];
27
+ readonly binary: true;
28
+ readonly tests: ["DRACO"];
29
+ readonly options: {
30
+ readonly draco: {
31
+ readonly decoderType: "js" | "wasm";
32
+ readonly libraryPath: "libs/";
33
+ readonly extraAttributes: {};
34
+ readonly attributeNameEntry: undefined;
35
+ };
36
+ };
37
+ };
38
+ /**
39
+ * Loader for Draco3D compressed geometries
40
+ */
17
41
  export declare const DracoLoader: {
42
+ readonly parse: typeof parse;
18
43
  readonly dataType: DracoMesh;
19
44
  readonly batchType: never;
20
45
  readonly name: "Draco";
@@ -28,11 +53,13 @@ export declare const DracoLoader: {
28
53
  readonly tests: ["DRACO"];
29
54
  readonly options: {
30
55
  readonly draco: {
31
- readonly decoderType: "wasm" | "js";
56
+ readonly decoderType: "js" | "wasm";
32
57
  readonly libraryPath: "libs/";
33
58
  readonly extraAttributes: {};
34
59
  readonly attributeNameEntry: undefined;
35
60
  };
36
61
  };
37
62
  };
63
+ declare function parse(arrayBuffer: ArrayBuffer, options?: DracoLoaderOptions): Promise<DracoMesh>;
64
+ export {};
38
65
  //# sourceMappingURL=draco-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"draco-loader.d.ts","sourceRoot":"","sources":["../src/draco-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAC,SAAS,EAAC,6BAA0B;AACjD,OAAO,KAAK,EAAC,iBAAiB,EAAC,8BAA2B;AAG1D,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE,iBAAiB,GAAG;QAC1B,8EAA8E;QAC9E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,kEAAkE;QAClE,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW;uBACO,SAAS;wBACnB,KAAK;;;;;;;;;;;;;;;;;;CAmBuC,CAAC"}
1
+ {"version":3,"file":"draco-loader.d.ts","sourceRoot":"","sources":["../src/draco-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA2B,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAC,SAAS,EAAC,6BAA0B;AACjD,OAAO,KAAK,EAAC,iBAAiB,EAAC,8BAA2B;AAK1D,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,CAAC,EAAE,iBAAiB,GAAG;QAC1B,8EAA8E;QAC9E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,kEAAkE;QAClE,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;uBACC,SAAS;wBACnB,KAAK;;;;;;;;;;;;;;;;;;CAmBuC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,WAAW;;uBAzBO,SAAS;wBACnB,KAAK;;;;;;;;;;;;;;;;;;CA2BiD,CAAC;AAE5E,iBAAe,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,CAQ/F"}
@@ -2,10 +2,12 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { VERSION } from "./lib/utils/version.js";
5
+ import DracoParser from "./lib/draco-parser.js";
6
+ import { loadDracoDecoderModule } from "./lib/draco-module-loader.js";
5
7
  /**
6
8
  * Worker loader for Draco3D compressed geometries
7
9
  */
8
- export const DracoLoader = {
10
+ export const DracoWorkerLoader = {
9
11
  dataType: null,
10
12
  batchType: null,
11
13
  name: 'Draco',
@@ -27,3 +29,20 @@ export const DracoLoader = {
27
29
  }
28
30
  }
29
31
  };
32
+ /**
33
+ * Loader for Draco3D compressed geometries
34
+ */
35
+ export const DracoLoader = {
36
+ ...DracoWorkerLoader,
37
+ parse
38
+ };
39
+ async function parse(arrayBuffer, options) {
40
+ const { draco } = await loadDracoDecoderModule(options);
41
+ const dracoParser = new DracoParser(draco);
42
+ try {
43
+ return dracoParser.parseSync(arrayBuffer, options?.draco);
44
+ }
45
+ finally {
46
+ dracoParser.destroy();
47
+ }
48
+ }
@@ -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;
@@ -59679,7 +59817,7 @@ function getVersion() {
59679
59817
  );
59680
59818
  globalThis._loadersgl_.version = NPM_TAG;
59681
59819
  } else {
59682
- globalThis._loadersgl_.version = "4.3.1";
59820
+ globalThis._loadersgl_.version = "4.4.0-alpha.0";
59683
59821
  }
59684
59822
  }
59685
59823
  return globalThis._loadersgl_.version;
@@ -63343,35 +63481,88 @@ if (nodeVersion2 < 18) {
63343
63481
  }
63344
63482
  }
63345
63483
 
63346
- // src/lib/utils/version.ts
63347
- var VERSION2 = true ? "4.3.1" : "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
63370
- }
63371
- }
63484
+ // src/lib/draco-module-loader.ts
63485
+ var DRACO_DECODER_VERSION = "1.5.6";
63486
+ var DRACO_ENCODER_VERSION = "1.4.1";
63487
+ var STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
63488
+ var DRACO_EXTERNAL_LIBRARIES = {
63489
+ /** The primary Draco3D encoder, javascript wrapper part */
63490
+ DECODER: "draco_wasm_wrapper.js",
63491
+ /** The primary draco decoder, compiled web assembly part */
63492
+ DECODER_WASM: "draco_decoder.wasm",
63493
+ /** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */
63494
+ FALLBACK_DECODER: "draco_decoder.js",
63495
+ /** Draco encoder */
63496
+ ENCODER: "draco_encoder.js"
63497
+ };
63498
+ var DRACO_EXTERNAL_LIBRARY_URLS = {
63499
+ [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,
63500
+ [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,
63501
+ [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,
63502
+ [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`
63372
63503
  };
63504
+ var loadDecoderPromise;
63505
+ async function loadDracoDecoderModule(options) {
63506
+ const modules = options.modules || {};
63507
+ if (modules.draco3d) {
63508
+ loadDecoderPromise ||= modules.draco3d.createDecoderModule({}).then((draco) => {
63509
+ return { draco };
63510
+ });
63511
+ } else {
63512
+ loadDecoderPromise ||= loadDracoDecoder(options);
63513
+ }
63514
+ return await loadDecoderPromise;
63515
+ }
63516
+ async function loadDracoDecoder(options) {
63517
+ let DracoDecoderModule;
63518
+ let wasmBinary;
63519
+ switch (options.draco && options.draco.decoderType) {
63520
+ case "js":
63521
+ DracoDecoderModule = await loadLibrary(
63522
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],
63523
+ "draco",
63524
+ options,
63525
+ DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER
63526
+ );
63527
+ break;
63528
+ case "wasm":
63529
+ default:
63530
+ [DracoDecoderModule, wasmBinary] = await Promise.all([
63531
+ await loadLibrary(
63532
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
63533
+ "draco",
63534
+ options,
63535
+ DRACO_EXTERNAL_LIBRARIES.DECODER
63536
+ ),
63537
+ await loadLibrary(
63538
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
63539
+ "draco",
63540
+ options,
63541
+ DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
63542
+ )
63543
+ ]);
63544
+ }
63545
+ DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
63546
+ return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
63547
+ }
63548
+ function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
63549
+ const options = {};
63550
+ if (wasmBinary) {
63551
+ options.wasmBinary = wasmBinary;
63552
+ }
63553
+ return new Promise((resolve) => {
63554
+ DracoDecoderModule({
63555
+ ...options,
63556
+ onModuleLoaded: (draco) => resolve({ draco })
63557
+ // Module is Promise-like. Wrap in object to avoid loop.
63558
+ });
63559
+ });
63560
+ }
63561
+
63562
+ // src/lib/utils/version.ts
63563
+ var VERSION2 = true ? "4.4.0-alpha.0" : "latest";
63373
63564
 
63374
- // ../schema/src/lib/table/simple-table/data-type.ts
63565
+ // ../schema-utils/src/lib/schema/data-type.ts
63375
63566
  function getDataTypeFromTypedArray(array) {
63376
63567
  switch (array.constructor) {
63377
63568
  case Int8Array:
@@ -63396,7 +63587,7 @@ function getDataTypeFromTypedArray(array) {
63396
63587
  }
63397
63588
  }
63398
63589
 
63399
- // ../schema/src/lib/mesh/mesh-utils.ts
63590
+ // ../schema-utils/src/lib/mesh/mesh-utils.ts
63400
63591
  function getMeshBoundingBox(attributes) {
63401
63592
  let minX = Infinity;
63402
63593
  let minY = Infinity;
@@ -63423,7 +63614,7 @@ function getMeshBoundingBox(attributes) {
63423
63614
  ];
63424
63615
  }
63425
63616
 
63426
- // ../schema/src/lib/mesh/deduce-mesh-schema.ts
63617
+ // ../schema-utils/src/lib/mesh/deduce-mesh-schema.ts
63427
63618
  function deduceMeshField(name, attribute, optionalMetadata) {
63428
63619
  const type = getDataTypeFromTypedArray(attribute.value);
63429
63620
  const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);
@@ -63647,6 +63838,7 @@ var DracoParser = class {
63647
63838
  case "triangle-strip":
63648
63839
  return {
63649
63840
  topology: "triangle-strip",
63841
+ // TODO - mode is wrong?
63650
63842
  mode: 4,
63651
63843
  // GL.TRIANGLES
63652
63844
  attributes,
@@ -63659,6 +63851,7 @@ var DracoParser = class {
63659
63851
  default:
63660
63852
  return {
63661
63853
  topology: "triangle-list",
63854
+ // TODO - mode is wrong?
63662
63855
  mode: 5,
63663
63856
  // GL.TRIANGLE_STRIP
63664
63857
  attributes,
@@ -63943,87 +64136,32 @@ function getUint32Array(dracoArray) {
63943
64136
  return intArray;
63944
64137
  }
63945
64138
 
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;
64139
+ // src/draco-loader.ts
64140
+ var DracoWorkerLoader = {
64141
+ dataType: null,
64142
+ batchType: null,
64143
+ name: "Draco",
64144
+ id: "draco",
64145
+ module: "draco",
64146
+ // shapes: ['mesh'],
64147
+ version: VERSION2,
64148
+ worker: true,
64149
+ extensions: ["drc"],
64150
+ mimeTypes: ["application/octet-stream"],
64151
+ binary: true,
64152
+ tests: ["DRACO"],
64153
+ options: {
64154
+ draco: {
64155
+ decoderType: typeof WebAssembly === "object" ? "wasm" : "js",
64156
+ // 'js' for IE11
64157
+ libraryPath: "libs/",
64158
+ extraAttributes: {},
64159
+ attributeNameEntry: void 0
64160
+ }
64014
64161
  }
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,
64162
+ };
64163
+ var DracoLoader = {
64164
+ ...DracoWorkerLoader,
64027
64165
  parse
64028
64166
  };
64029
64167
  async function parse(arrayBuffer, options) {
@@ -64037,7 +64175,7 @@ async function parse(arrayBuffer, options) {
64037
64175
  }
64038
64176
 
64039
64177
  // src/workers/draco-worker-node.ts
64040
- createLoaderWorker(DracoLoader2);
64178
+ createLoaderWorker(DracoLoader);
64041
64179
  /*! Bundled license information:
64042
64180
 
64043
64181
  is-buffer/index.js: