@loaders.gl/draco 4.0.0-alpha.4 → 4.0.0-alpha.6

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 (144) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2 -2
  4. package/dist/dist.min.js +4 -0
  5. package/dist/dist.min.js.map +7 -0
  6. package/dist/draco-loader.d.ts +18 -0
  7. package/dist/draco-loader.d.ts.map +1 -0
  8. package/dist/draco-loader.js +28 -21
  9. package/dist/draco-nodejs-worker.js +191 -0
  10. package/dist/draco-nodejs-worker.js.map +7 -0
  11. package/dist/draco-worker.js +2 -1236
  12. package/dist/draco-worker.js.map +7 -0
  13. package/dist/draco-writer-nodejs-worker.js +193 -0
  14. package/dist/draco-writer-nodejs-worker.js.map +7 -0
  15. package/dist/draco-writer-nodejs.d.ts +3 -0
  16. package/dist/draco-writer-nodejs.d.ts.map +1 -0
  17. package/dist/draco-writer-nodejs.js +7 -0
  18. package/dist/draco-writer-worker.js +4 -0
  19. package/dist/draco-writer-worker.js.map +7 -0
  20. package/dist/draco-writer.d.ts +17 -0
  21. package/dist/draco-writer.d.ts.map +1 -0
  22. package/dist/draco-writer.js +40 -28
  23. package/dist/draco3d/draco3d-types.d.ts +295 -0
  24. package/dist/draco3d/draco3d-types.d.ts.map +1 -0
  25. package/dist/draco3d/draco3d-types.js +47 -44
  26. package/dist/es5/bundle.js +6 -0
  27. package/dist/es5/bundle.js.map +1 -0
  28. package/dist/es5/draco-loader.js +34 -0
  29. package/dist/es5/draco-loader.js.map +1 -0
  30. package/dist/es5/draco-writer-nodejs.js +14 -0
  31. package/dist/es5/draco-writer-nodejs.js.map +1 -0
  32. package/dist/es5/draco-writer.js +63 -0
  33. package/dist/es5/draco-writer.js.map +1 -0
  34. package/dist/es5/draco3d/draco3d-types.js +51 -0
  35. package/dist/es5/draco3d/draco3d-types.js.map +1 -0
  36. package/dist/es5/index.js +79 -0
  37. package/dist/es5/index.js.map +1 -0
  38. package/dist/es5/lib/draco-builder.js +324 -0
  39. package/dist/es5/lib/draco-builder.js.map +1 -0
  40. package/dist/es5/lib/draco-module-loader.js +183 -0
  41. package/dist/es5/lib/draco-module-loader.js.map +1 -0
  42. package/dist/es5/lib/draco-parser.js +435 -0
  43. package/dist/es5/lib/draco-parser.js.map +1 -0
  44. package/dist/es5/lib/draco-types.js +2 -0
  45. package/dist/es5/lib/draco-types.js.map +1 -0
  46. package/dist/es5/lib/utils/get-draco-schema.js +47 -0
  47. package/dist/es5/lib/utils/get-draco-schema.js.map +1 -0
  48. package/dist/es5/lib/utils/version.js +9 -0
  49. package/dist/es5/lib/utils/version.js.map +1 -0
  50. package/dist/es5/workers/draco-nodejs-worker.js +7 -0
  51. package/dist/es5/workers/draco-nodejs-worker.js.map +1 -0
  52. package/dist/es5/workers/draco-worker.js +6 -0
  53. package/dist/es5/workers/draco-worker.js.map +1 -0
  54. package/dist/es5/workers/draco-writer-nodejs-worker.js +53 -0
  55. package/dist/es5/workers/draco-writer-nodejs-worker.js.map +1 -0
  56. package/dist/es5/workers/draco-writer-worker.js +53 -0
  57. package/dist/es5/workers/draco-writer-worker.js.map +1 -0
  58. package/dist/esm/bundle.js +4 -0
  59. package/dist/esm/bundle.js.map +1 -0
  60. package/dist/esm/draco-loader.js +24 -0
  61. package/dist/esm/draco-loader.js.map +1 -0
  62. package/dist/esm/draco-writer-nodejs.js +3 -0
  63. package/dist/esm/draco-writer-nodejs.js.map +1 -0
  64. package/dist/esm/draco-writer.js +31 -0
  65. package/dist/esm/draco-writer.js.map +1 -0
  66. package/dist/esm/draco3d/draco3d-types.js +41 -0
  67. package/dist/esm/draco3d/draco3d-types.js.map +1 -0
  68. package/dist/esm/index.js +35 -0
  69. package/dist/esm/index.js.map +1 -0
  70. package/dist/esm/lib/draco-builder.js +268 -0
  71. package/dist/esm/lib/draco-builder.js.map +1 -0
  72. package/dist/esm/lib/draco-module-loader.js +76 -0
  73. package/dist/esm/lib/draco-module-loader.js.map +1 -0
  74. package/dist/esm/lib/draco-parser.js +363 -0
  75. package/dist/esm/lib/draco-parser.js.map +1 -0
  76. package/dist/esm/lib/draco-types.js +2 -0
  77. package/dist/esm/lib/draco-types.js.map +1 -0
  78. package/dist/esm/lib/utils/get-draco-schema.js +41 -0
  79. package/dist/esm/lib/utils/get-draco-schema.js.map +1 -0
  80. package/dist/esm/lib/utils/version.js +2 -0
  81. package/dist/esm/lib/utils/version.js.map +1 -0
  82. package/dist/esm/workers/draco-nodejs-worker.js +5 -0
  83. package/dist/esm/workers/draco-nodejs-worker.js.map +1 -0
  84. package/dist/esm/workers/draco-worker.js +4 -0
  85. package/dist/esm/workers/draco-worker.js.map +1 -0
  86. package/dist/esm/workers/draco-writer-nodejs-worker.js +30 -0
  87. package/dist/esm/workers/draco-writer-nodejs-worker.js.map +1 -0
  88. package/dist/esm/workers/draco-writer-worker.js +30 -0
  89. package/dist/esm/workers/draco-writer-worker.js.map +1 -0
  90. package/dist/index.d.ts +30 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +46 -21
  93. package/dist/lib/draco-builder.d.ts +107 -0
  94. package/dist/lib/draco-builder.d.ts.map +1 -0
  95. package/dist/lib/draco-builder.js +313 -329
  96. package/dist/lib/draco-module-loader.d.ts +3 -0
  97. package/dist/lib/draco-module-loader.d.ts.map +1 -0
  98. package/dist/lib/draco-module-loader.js +81 -73
  99. package/dist/lib/draco-parser.d.ts +137 -0
  100. package/dist/lib/draco-parser.d.ts.map +1 -0
  101. package/dist/lib/draco-parser.js +440 -416
  102. package/dist/lib/draco-types.d.ts +59 -0
  103. package/dist/lib/draco-types.d.ts.map +1 -0
  104. package/dist/lib/draco-types.js +3 -2
  105. package/dist/lib/utils/get-draco-schema.d.ts +8 -0
  106. package/dist/lib/utils/get-draco-schema.d.ts.map +1 -0
  107. package/dist/lib/utils/get-draco-schema.js +35 -41
  108. package/dist/lib/utils/version.d.ts +2 -0
  109. package/dist/lib/utils/version.d.ts.map +1 -0
  110. package/dist/lib/utils/version.js +7 -2
  111. package/dist/workers/draco-nodejs-worker.d.ts +2 -0
  112. package/dist/workers/draco-nodejs-worker.d.ts.map +1 -0
  113. package/dist/workers/draco-nodejs-worker.js +6 -0
  114. package/dist/workers/draco-worker.d.ts +2 -0
  115. package/dist/workers/draco-worker.d.ts.map +1 -0
  116. package/dist/workers/draco-worker.js +5 -4
  117. package/dist/workers/draco-writer-nodejs-worker.d.ts +2 -0
  118. package/dist/workers/draco-writer-nodejs-worker.d.ts.map +1 -0
  119. package/dist/workers/draco-writer-nodejs-worker.js +26 -0
  120. package/dist/workers/draco-writer-worker.d.ts +2 -0
  121. package/dist/workers/draco-writer-worker.d.ts.map +1 -0
  122. package/dist/workers/draco-writer-worker.js +26 -0
  123. package/package.json +18 -11
  124. package/src/draco-loader.ts +8 -4
  125. package/src/draco-writer-nodejs.ts +4 -0
  126. package/src/draco-writer.ts +17 -12
  127. package/src/index.ts +21 -1
  128. package/src/lib/draco-module-loader.ts +9 -5
  129. package/src/lib/utils/get-draco-schema.ts +7 -6
  130. package/src/workers/draco-nodejs-worker.ts +5 -0
  131. package/src/workers/draco-writer-nodejs-worker.ts +25 -0
  132. package/src/workers/draco-writer-worker.ts +25 -0
  133. package/dist/bundle.js.map +0 -1
  134. package/dist/draco-loader.js.map +0 -1
  135. package/dist/draco-writer.js.map +0 -1
  136. package/dist/draco3d/draco3d-types.js.map +0 -1
  137. package/dist/index.js.map +0 -1
  138. package/dist/lib/draco-builder.js.map +0 -1
  139. package/dist/lib/draco-module-loader.js.map +0 -1
  140. package/dist/lib/draco-parser.js.map +0 -1
  141. package/dist/lib/draco-types.js.map +0 -1
  142. package/dist/lib/utils/get-draco-schema.js.map +0 -1
  143. package/dist/lib/utils/version.js.map +0 -1
  144. package/dist/workers/draco-worker.js.map +0 -1
@@ -0,0 +1,59 @@
1
+ import { Mesh } from '@loaders.gl/schema';
2
+ export type DracoMetadataEntry = {
3
+ int: number;
4
+ string: string;
5
+ double: number;
6
+ intArray: Int32Array;
7
+ };
8
+ /** For attributes that have not been fully decompressed */
9
+ export type DracoQuantizationTransform = {
10
+ quantization_bits?: number;
11
+ range?: number;
12
+ min_values?: Float32Array;
13
+ };
14
+ /** For attributes that have not been fully decompressed */
15
+ export type DracoOctahedronTransform = {
16
+ quantization_bits?: number;
17
+ };
18
+ /** Draco attribute fields */
19
+ export type DracoAttribute = {
20
+ unique_id: number;
21
+ num_components: number;
22
+ attribute_type: number;
23
+ data_type: number;
24
+ byte_offset: number;
25
+ byte_stride: number;
26
+ normalized: boolean;
27
+ name?: string;
28
+ quantization_transform?: DracoQuantizationTransform;
29
+ octahedron_transform?: DracoOctahedronTransform;
30
+ metadata: {
31
+ [key: string]: DracoMetadataEntry;
32
+ };
33
+ attribute_index: number;
34
+ };
35
+ /**
36
+ * Draco format specific data
37
+ * The `data.loaderData` field will have this layout when `data.loader === 'draco'`.
38
+ * @todo Metadata should also be available in normalized form in a standard `Schema`.
39
+ */
40
+ export type DracoLoaderData = {
41
+ geometry_type: number;
42
+ num_attributes: number;
43
+ num_points: number;
44
+ num_faces: number;
45
+ metadata: {
46
+ [entry: string]: DracoMetadataEntry;
47
+ };
48
+ attributes: {
49
+ [unique_id: number]: DracoAttribute;
50
+ };
51
+ };
52
+ /**
53
+ * loaders.gl Mesh with Draco specific data
54
+ */
55
+ export type DracoMesh = Mesh & {
56
+ loader: 'draco';
57
+ loaderData: DracoLoaderData;
58
+ };
59
+ //# sourceMappingURL=draco-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-types.d.ts","sourceRoot":"","sources":["../../src/lib/draco-types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAC;AAIxC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,MAAM,0BAA0B,GAAG;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B,CAAC;AAEF,2DAA2D;AAC3D,MAAM,MAAM,wBAAwB,GAAG;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,6BAA6B;AAC7B,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAElB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,sBAAsB,CAAC,EAAE,0BAA0B,CAAC;IACpD,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;IAEhD,QAAQ,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAC,CAAC;IAC9C,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAC,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAC,CAAC;IAChD,UAAU,EAAE;QAAC,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAA;KAAC,CAAC;CAGnD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,eAAe,CAAC;CAC7B,CAAC"}
@@ -1,2 +1,3 @@
1
- export {};
2
- //# sourceMappingURL=draco-types.js.map
1
+ "use strict";
2
+ /* eslint-disable camelcase */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { MeshAttribute } from '@loaders.gl/schema';
2
+ import { Schema } from '@loaders.gl/schema';
3
+ import type { DracoLoaderData } from '../draco-types';
4
+ /** Extract an arrow-like schema from a Draco mesh */
5
+ export declare function getDracoSchema(attributes: {
6
+ [attributeName: string]: MeshAttribute;
7
+ }, loaderData: DracoLoaderData, indices?: MeshAttribute): Schema;
8
+ //# sourceMappingURL=get-draco-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-draco-schema.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/get-draco-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAC,MAAM,EAAQ,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAiB,eAAe,EAAqB,MAAM,gBAAgB,CAAC;AAExF,qDAAqD;AACrD,wBAAgB,cAAc,CAC5B,UAAU,EAAE;IAAC,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,CAAA;CAAC,EACpD,UAAU,EAAE,eAAe,EAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAkBR"}
@@ -1,48 +1,42 @@
1
- import { deduceMeshField } from '@loaders.gl/schema';
2
- import { Schema } from '@loaders.gl/schema';
3
- export function getDracoSchema(attributes, loaderData, indices) {
4
- const metadataMap = makeMetadata(loaderData.metadata);
5
- const fields = [];
6
- const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);
7
-
8
- for (const attributeName in attributes) {
9
- const attribute = attributes[attributeName];
10
- const field = getArrowFieldFromAttribute(attributeName, attribute, namedLoaderDataAttributes[attributeName]);
11
- fields.push(field);
12
- }
13
-
14
- if (indices) {
15
- const indicesField = getArrowFieldFromAttribute('indices', indices);
16
- fields.push(indicesField);
17
- }
18
-
19
- return new Schema(fields, metadataMap);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDracoSchema = void 0;
4
+ const schema_1 = require("@loaders.gl/schema");
5
+ /** Extract an arrow-like schema from a Draco mesh */
6
+ function getDracoSchema(attributes, loaderData, indices) {
7
+ const metadata = makeMetadata(loaderData.metadata);
8
+ const fields = [];
9
+ const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);
10
+ for (const attributeName in attributes) {
11
+ const attribute = attributes[attributeName];
12
+ const field = getArrowFieldFromAttribute(attributeName, attribute, namedLoaderDataAttributes[attributeName]);
13
+ fields.push(field);
14
+ }
15
+ if (indices) {
16
+ const indicesField = getArrowFieldFromAttribute('indices', indices);
17
+ fields.push(indicesField);
18
+ }
19
+ return { fields, metadata };
20
20
  }
21
-
21
+ exports.getDracoSchema = getDracoSchema;
22
22
  function transformAttributesLoaderData(loaderData) {
23
- const result = {};
24
-
25
- for (const key in loaderData) {
26
- const dracoAttribute = loaderData[key];
27
- result[dracoAttribute.name || 'undefined'] = dracoAttribute;
28
- }
29
-
30
- return result;
23
+ const result = {};
24
+ for (const key in loaderData) {
25
+ const dracoAttribute = loaderData[key];
26
+ result[dracoAttribute.name || 'undefined'] = dracoAttribute;
27
+ }
28
+ return result;
31
29
  }
32
-
33
30
  function getArrowFieldFromAttribute(attributeName, attribute, loaderData) {
34
- const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;
35
- const field = deduceMeshField(attributeName, attribute, metadataMap);
36
- return field;
31
+ const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;
32
+ const field = (0, schema_1.deduceMeshField)(attributeName, attribute, metadataMap);
33
+ return field;
37
34
  }
38
-
39
35
  function makeMetadata(metadata) {
40
- const metadataMap = new Map();
41
-
42
- for (const key in metadata) {
43
- metadataMap.set("".concat(key, ".string"), JSON.stringify(metadata[key]));
44
- }
45
-
46
- return metadataMap;
36
+ Object.entries(metadata);
37
+ const serializedMetadata = {};
38
+ for (const key in metadata) {
39
+ serializedMetadata[`${key}.string`] = JSON.stringify(metadata[key]);
40
+ }
41
+ return serializedMetadata;
47
42
  }
48
- //# sourceMappingURL=get-draco-schema.js.map
@@ -0,0 +1,2 @@
1
+ export declare const VERSION: any;
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/version.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,KAA8D,CAAC"}
@@ -1,2 +1,7 @@
1
- export const VERSION = typeof "4.0.0-alpha.4" !== 'undefined' ? "4.0.0-alpha.4" : 'latest';
2
- //# sourceMappingURL=version.js.map
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERSION = void 0;
4
+ // Version constant cannot be imported, it needs to correspond to the build version of **this** module.
5
+ // __VERSION__ is injected by babel-plugin-version-inline
6
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
+ exports.VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
@@ -0,0 +1,2 @@
1
+ import '@loaders.gl/polyfills';
2
+ //# sourceMappingURL=draco-nodejs-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-nodejs-worker.d.ts","sourceRoot":"","sources":["../../src/workers/draco-nodejs-worker.ts"],"names":[],"mappings":"AACA,OAAO,uBAAuB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const loader_utils_1 = require("@loaders.gl/loader-utils");
4
+ require("@loaders.gl/polyfills");
5
+ const index_1 = require("../index");
6
+ (0, loader_utils_1.createLoaderWorker)(index_1.DracoLoader);
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=draco-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-worker.d.ts","sourceRoot":"","sources":["../../src/workers/draco-worker.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
- import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
- import { DracoLoader } from '../index';
3
- createLoaderWorker(DracoLoader);
4
- //# sourceMappingURL=draco-worker.js.map
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const loader_utils_1 = require("@loaders.gl/loader-utils");
4
+ const index_1 = require("../index");
5
+ (0, loader_utils_1.createLoaderWorker)(index_1.DracoLoader);
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=draco-writer-nodejs-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-writer-nodejs-worker.d.ts","sourceRoot":"","sources":["../../src/workers/draco-writer-nodejs-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const worker_utils_1 = require("@loaders.gl/worker-utils");
4
+ const draco_writer_nodejs_1 = require("../draco-writer-nodejs");
5
+ (() => {
6
+ // Check that we are actually in a worker thread
7
+ if (!worker_utils_1.WorkerBody.inWorkerThread()) {
8
+ return;
9
+ }
10
+ worker_utils_1.WorkerBody.onmessage = async (type, payload) => {
11
+ switch (type) {
12
+ case 'process':
13
+ try {
14
+ const { input, options } = payload;
15
+ const result = await draco_writer_nodejs_1.DracoWriterNodeJS.encode(input, options);
16
+ worker_utils_1.WorkerBody.postMessage('done', { result });
17
+ }
18
+ catch (error) {
19
+ const message = error instanceof Error ? error.message : '';
20
+ worker_utils_1.WorkerBody.postMessage('error', { error: message });
21
+ }
22
+ break;
23
+ default:
24
+ }
25
+ };
26
+ })();
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=draco-writer-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-writer-worker.d.ts","sourceRoot":"","sources":["../../src/workers/draco-writer-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const worker_utils_1 = require("@loaders.gl/worker-utils");
4
+ const draco_writer_1 = require("../draco-writer");
5
+ (() => {
6
+ // Check that we are actually in a worker thread
7
+ if (!worker_utils_1.WorkerBody.inWorkerThread()) {
8
+ return;
9
+ }
10
+ worker_utils_1.WorkerBody.onmessage = async (type, payload) => {
11
+ switch (type) {
12
+ case 'process':
13
+ try {
14
+ const { input, options } = payload;
15
+ const result = await draco_writer_1.DracoWriter.encode(input, options);
16
+ worker_utils_1.WorkerBody.postMessage('done', { result });
17
+ }
18
+ catch (error) {
19
+ const message = error instanceof Error ? error.message : '';
20
+ worker_utils_1.WorkerBody.postMessage('error', { error: message });
21
+ }
22
+ break;
23
+ default:
24
+ }
25
+ };
26
+ })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/draco",
3
- "version": "4.0.0-alpha.4",
3
+ "version": "4.0.0-alpha.6",
4
4
  "description": "Framework-independent loader and writer for Draco compressed meshes and point clouds",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -19,9 +19,9 @@
19
19
  "draco3d",
20
20
  "draco"
21
21
  ],
22
- "types": "src/index.ts",
23
- "main": "dist/index.js",
24
- "module": "dist/index.js",
22
+ "types": "dist/index.d.ts",
23
+ "main": "dist/es5/index.js",
24
+ "module": "dist/esm/index.js",
25
25
  "sideEffects": false,
26
26
  "browser": {
27
27
  "fs": false
@@ -33,15 +33,22 @@
33
33
  ],
34
34
  "scripts": {
35
35
  "pre-build": "npm run build-bundle && npm run build-worker",
36
- "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/bundle.js",
37
- "build-worker": "esbuild src/workers/draco-worker.ts --bundle --outfile=dist/draco-worker.js"
36
+ "build-bundle": "esbuild src/bundle.ts --outfile=dist/dist.min.js --bundle --minify --sourcemap",
37
+ "build-loader-worker": "esbuild src/workers/draco-worker.ts --outfile=dist/draco-worker.js --bundle --minify --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"",
38
+ "build-loader-worker-nodejs": "esbuild src/workers/draco-nodejs-worker.ts --outfile=dist/draco-nodejs-worker.js --platform=node --target=esnext,node12 --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"",
39
+ "build-writer-worker": "esbuild src/workers/draco-writer-worker.ts --outfile=dist/draco-writer-worker.js --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"",
40
+ "build-writer-worker-nodejs": "esbuild src/workers/draco-writer-nodejs-worker.ts --outfile=dist/draco-writer-nodejs-worker.js --platform=node --target=esnext,node12 --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"",
41
+ "build-worker": "yarn build-loader-worker && yarn build-loader-worker-nodejs && yarn build-writer-worker && yarn build-writer-worker-nodejs"
38
42
  },
39
43
  "dependencies": {
40
44
  "@babel/runtime": "^7.3.1",
41
- "@loaders.gl/loader-utils": "4.0.0-alpha.4",
42
- "@loaders.gl/schema": "4.0.0-alpha.4",
43
- "@loaders.gl/worker-utils": "4.0.0-alpha.4",
44
- "draco3d": "1.4.1"
45
+ "@loaders.gl/loader-utils": "4.0.0-alpha.6",
46
+ "@loaders.gl/schema": "4.0.0-alpha.6",
47
+ "@loaders.gl/worker-utils": "4.0.0-alpha.6",
48
+ "draco3d": "1.5.5"
45
49
  },
46
- "gitHead": "53026061b3c8871f7e96d3a5826125cc6613bddc"
50
+ "devDependencies": {
51
+ "@loaders.gl/polyfills": "4.0.0-alpha.6"
52
+ },
53
+ "gitHead": "acc1985050dfaa0f1f0c066f8da5bce7454a046c"
47
54
  }
@@ -1,6 +1,9 @@
1
+ //
2
+
3
+ import {isBrowser} from '@loaders.gl/worker-utils';
1
4
  import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';
5
+ import type {DracoMesh} from './lib/draco-types';
2
6
  import type {DracoParseOptions} from './lib/draco-parser';
3
- // import type {DracoMeshData} from './types';
4
7
  import {VERSION} from './lib/utils/version';
5
8
 
6
9
  export type DracoLoaderOptions = LoaderOptions & {
@@ -9,6 +12,7 @@ export type DracoLoaderOptions = LoaderOptions & {
9
12
  libraryPath?: string;
10
13
  extraAttributes?;
11
14
  attributeNameEntry?: string;
15
+ workerUrl?: string;
12
16
  };
13
17
  };
14
18
 
@@ -24,11 +28,11 @@ const DEFAULT_DRACO_OPTIONS: DracoLoaderOptions = {
24
28
  /**
25
29
  * Worker loader for Draco3D compressed geometries
26
30
  */
27
- export const DracoLoader = {
31
+ export const DracoLoader: Loader<DracoMesh, never, DracoLoaderOptions> = {
28
32
  name: 'Draco',
29
- id: 'draco',
33
+ id: isBrowser ? 'draco' : 'draco-nodejs',
30
34
  module: 'draco',
31
- shapes: ['mesh'],
35
+ // shapes: ['mesh'],
32
36
  version: VERSION,
33
37
  worker: true,
34
38
  extensions: ['drc'],
@@ -0,0 +1,4 @@
1
+ // Polyfills increases the bundle size significantly. Use it for NodeJS worker only
2
+ import '@loaders.gl/polyfills';
3
+
4
+ export {DracoWriter as DracoWriterNodeJS} from './draco-writer';
@@ -1,19 +1,27 @@
1
- import type {Writer} from '@loaders.gl/loader-utils';
1
+ import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';
2
2
  import type {DracoMesh} from './lib/draco-types';
3
3
  import type {DracoBuildOptions} from './lib/draco-builder';
4
4
  import DRACOBuilder from './lib/draco-builder';
5
5
  import {loadDracoEncoderModule} from './lib/draco-module-loader';
6
6
  import {VERSION} from './lib/utils/version';
7
7
 
8
- export type DracoWriterOptions = DracoBuildOptions & {};
8
+ /** Writer Options for draco */
9
+ export type DracoWriterOptions = WriterOptions & {
10
+ draco?: DracoBuildOptions & {
11
+ method?: 'MESH_EDGEBREAKER_ENCODING' | 'MESH_SEQUENTIAL_ENCODING';
12
+ speed?: [number, number];
13
+ quantization?: Record<string, number>;
14
+ attributeNameEntry?: string;
15
+ };
16
+ };
9
17
 
10
- const DEFAULT_DRACO_OPTIONS = {
18
+ const DEFAULT_DRACO_WRITER_OPTIONS = {
11
19
  pointcloud: false, // Set to true if pointcloud (mode: 0, no indices)
12
20
  attributeNameEntry: 'name'
13
21
  // Draco Compression Parameters
14
- // method: 'MESH_EDGEBREAKER_ENCODING',
15
- // speed: [5, 5],
16
- // quantization: {
22
+ // method: 'MESH_EDGEBREAKER_ENCODING', // Use draco defaults
23
+ // speed: [5, 5], // Use draco defaults
24
+ // quantization: { // Use draco defaults
17
25
  // POSITION: 10
18
26
  // }
19
27
  };
@@ -21,7 +29,7 @@ const DEFAULT_DRACO_OPTIONS = {
21
29
  /**
22
30
  * Exporter for Draco3D compressed geometries
23
31
  */
24
- export const DracoWriter: Writer = {
32
+ export const DracoWriter: Writer<DracoMesh, unknown, DracoWriterOptions> = {
25
33
  name: 'DRACO',
26
34
  id: 'draco',
27
35
  module: 'draco',
@@ -29,14 +37,11 @@ export const DracoWriter: Writer = {
29
37
  extensions: ['drc'],
30
38
  encode,
31
39
  options: {
32
- draco: DEFAULT_DRACO_OPTIONS
40
+ draco: DEFAULT_DRACO_WRITER_OPTIONS
33
41
  }
34
42
  };
35
43
 
36
- async function encode(
37
- data: DracoMesh,
38
- options: {draco?: DracoWriterOptions} = {}
39
- ): Promise<ArrayBuffer> {
44
+ async function encode(data: DracoMesh, options: DracoWriterOptions = {}): Promise<ArrayBuffer> {
40
45
  // Dynamically load draco
41
46
  const {draco} = await loadDracoEncoderModule(options);
42
47
  const dracoBuilder = new DRACOBuilder(draco);
package/src/index.ts CHANGED
@@ -1,9 +1,13 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import {isBrowser} from '@loaders.gl/worker-utils';
1
4
  import type {LoaderWithParser} from '@loaders.gl/loader-utils';
2
5
  import type {DracoMesh, DracoLoaderData} from './lib/draco-types';
3
6
  import type {DracoLoaderOptions} from './draco-loader';
4
7
  import {DracoLoader as DracoWorkerLoader} from './draco-loader';
5
8
  import DracoParser from './lib/draco-parser';
6
9
  import {loadDracoDecoderModule} from './lib/draco-module-loader';
10
+ import {VERSION} from './lib/utils/version';
7
11
 
8
12
  // Draco data types
9
13
 
@@ -14,6 +18,22 @@ export type {DracoMesh, DracoLoaderData};
14
18
  export type {DracoWriterOptions} from './draco-writer';
15
19
  export {DracoWriter} from './draco-writer';
16
20
 
21
+ /**
22
+ * Browser worker doesn't work because of issue during "draco_encoder.js" loading.
23
+ * Refused to execute script from 'https://raw.githubusercontent.com/google/draco/1.4.1/javascript/draco_encoder.js' because its MIME type ('') is not executable.
24
+ */
25
+ export const DracoWriterWorker = {
26
+ id: isBrowser ? 'draco-writer' : 'draco-writer-nodejs',
27
+ name: 'Draco compressed geometry writer',
28
+ module: 'draco',
29
+ version: VERSION,
30
+ worker: true,
31
+ options: {
32
+ draco: {},
33
+ source: null
34
+ }
35
+ };
36
+
17
37
  // Draco Loader
18
38
 
19
39
  export type {DracoLoaderOptions};
@@ -22,7 +42,7 @@ export {DracoWorkerLoader};
22
42
  /**
23
43
  * Loader for Draco3D compressed geometries
24
44
  */
25
- export const DracoLoader = {
45
+ export const DracoLoader: LoaderWithParser<DracoMesh, never, DracoLoaderOptions> = {
26
46
  ...DracoWorkerLoader,
27
47
  parse
28
48
  };
@@ -4,12 +4,16 @@
4
4
 
5
5
  import {loadLibrary} from '@loaders.gl/worker-utils';
6
6
 
7
- const DRACO_VERSION = '1.4.1';
8
- const DRACO_JS_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.js`;
9
- const DRACO_WASM_WRAPPER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_wasm_wrapper.js`;
10
- const DRACO_WASM_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.wasm`;
7
+ const DRACO_DECODER_VERSION = '1.5.5';
8
+ const DRACO_ENCODER_VERSION = '1.4.1';
11
9
 
12
- const DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_VERSION}/javascript/draco_encoder.js`;
10
+ const STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
11
+
12
+ const DRACO_JS_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.js`;
13
+ const DRACO_WASM_WRAPPER_URL = `${STATIC_DECODER_URL}/draco_wasm_wrapper.js`;
14
+ const DRACO_WASM_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.wasm`;
15
+
16
+ const DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/draco_encoder.js`;
13
17
 
14
18
  let loadDecoderPromise;
15
19
  let loadEncoderPromise;
@@ -8,7 +8,7 @@ export function getDracoSchema(
8
8
  loaderData: DracoLoaderData,
9
9
  indices?: MeshAttribute
10
10
  ): Schema {
11
- const metadataMap = makeMetadata(loaderData.metadata);
11
+ const metadata = makeMetadata(loaderData.metadata);
12
12
  const fields: Field[] = [];
13
13
  const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);
14
14
  for (const attributeName in attributes) {
@@ -24,7 +24,7 @@ export function getDracoSchema(
24
24
  const indicesField = getArrowFieldFromAttribute('indices', indices);
25
25
  fields.push(indicesField);
26
26
  }
27
- return new Schema(fields, metadataMap);
27
+ return {fields, metadata};
28
28
  }
29
29
 
30
30
  function transformAttributesLoaderData(loaderData: {[key: number]: DracoAttribute}): {
@@ -48,10 +48,11 @@ function getArrowFieldFromAttribute(
48
48
  return field;
49
49
  }
50
50
 
51
- function makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Map<string, string> {
52
- const metadataMap = new Map();
51
+ function makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Record<string, string> {
52
+ Object.entries(metadata);
53
+ const serializedMetadata: Record<string, string> = {};
53
54
  for (const key in metadata) {
54
- metadataMap.set(`${key}.string`, JSON.stringify(metadata[key]));
55
+ serializedMetadata[`${key}.string`] = JSON.stringify(metadata[key]);
55
56
  }
56
- return metadataMap;
57
+ return serializedMetadata;
57
58
  }
@@ -0,0 +1,5 @@
1
+ import {createLoaderWorker} from '@loaders.gl/loader-utils';
2
+ import '@loaders.gl/polyfills';
3
+ import {DracoLoader} from '../index';
4
+
5
+ createLoaderWorker(DracoLoader);
@@ -0,0 +1,25 @@
1
+ import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';
2
+ import {DracoWriterNodeJS} from '../draco-writer-nodejs';
3
+
4
+ (() => {
5
+ // Check that we are actually in a worker thread
6
+ if (!WorkerBody.inWorkerThread()) {
7
+ return;
8
+ }
9
+
10
+ WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {
11
+ switch (type) {
12
+ case 'process':
13
+ try {
14
+ const {input, options} = payload;
15
+ const result = await DracoWriterNodeJS.encode!(input, options);
16
+ WorkerBody.postMessage('done', {result});
17
+ } catch (error) {
18
+ const message = error instanceof Error ? error.message : '';
19
+ WorkerBody.postMessage('error', {error: message});
20
+ }
21
+ break;
22
+ default:
23
+ }
24
+ };
25
+ })();
@@ -0,0 +1,25 @@
1
+ import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';
2
+ import {DracoWriter} from '../draco-writer';
3
+
4
+ (() => {
5
+ // Check that we are actually in a worker thread
6
+ if (!WorkerBody.inWorkerThread()) {
7
+ return;
8
+ }
9
+
10
+ WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {
11
+ switch (type) {
12
+ case 'process':
13
+ try {
14
+ const {input, options} = payload;
15
+ const result = await DracoWriter.encode!(input, options);
16
+ WorkerBody.postMessage('done', {result});
17
+ } catch (error) {
18
+ const message = error instanceof Error ? error.message : '';
19
+ WorkerBody.postMessage('error', {error: message});
20
+ }
21
+ break;
22
+ default:
23
+ }
24
+ };
25
+ })();
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/draco-loader.ts"],"names":["VERSION","DEFAULT_DRACO_OPTIONS","draco","decoderType","WebAssembly","libraryPath","extraAttributes","attributeNameEntry","undefined","DracoLoader","name","id","module","shapes","version","worker","extensions","mimeTypes","binary","tests","options","_TypecheckDracoLoader"],"mappings":"AAGA,SAAQA,OAAR,QAAsB,qBAAtB;AAWA,MAAMC,qBAAyC,GAAG;AAChDC,EAAAA,KAAK,EAAE;AACLC,IAAAA,WAAW,EAAE,OAAOC,WAAP,KAAuB,QAAvB,GAAkC,MAAlC,GAA2C,IADnD;AAELC,IAAAA,WAAW,EAAE,OAFR;AAGLC,IAAAA,eAAe,EAAE,EAHZ;AAILC,IAAAA,kBAAkB,EAAEC;AAJf;AADyC,CAAlD;AAYA,OAAO,MAAMC,WAAW,GAAG;AACzBC,EAAAA,IAAI,EAAE,OADmB;AAEzBC,EAAAA,EAAE,EAAE,OAFqB;AAGzBC,EAAAA,MAAM,EAAE,OAHiB;AAIzBC,EAAAA,MAAM,EAAE,CAAC,MAAD,CAJiB;AAKzBC,EAAAA,OAAO,EAAEd,OALgB;AAMzBe,EAAAA,MAAM,EAAE,IANiB;AAOzBC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAPa;AAQzBC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CARc;AASzBC,EAAAA,MAAM,EAAE,IATiB;AAUzBC,EAAAA,KAAK,EAAE,CAAC,OAAD,CAVkB;AAWzBC,EAAAA,OAAO,EAAEnB;AAXgB,CAApB;AAcP,OAAO,MAAMoB,qBAA6B,GAAGZ,WAAtC","sourcesContent":["import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {DracoParseOptions} from './lib/draco-parser';\n// import type {DracoMeshData} from './types';\nimport {VERSION} from './lib/utils/version';\n\nexport type DracoLoaderOptions = LoaderOptions & {\n draco?: DracoParseOptions & {\n decoderType?: 'wasm' | 'js';\n libraryPath?: string;\n extraAttributes?;\n attributeNameEntry?: string;\n };\n};\n\nconst DEFAULT_DRACO_OPTIONS: DracoLoaderOptions = {\n draco: {\n decoderType: typeof WebAssembly === 'object' ? 'wasm' : 'js', // 'js' for IE11\n libraryPath: 'libs/',\n extraAttributes: {},\n attributeNameEntry: undefined\n }\n};\n\n/**\n * Worker loader for Draco3D compressed geometries\n */\nexport const DracoLoader = {\n name: 'Draco',\n id: 'draco',\n module: 'draco',\n shapes: ['mesh'],\n version: VERSION,\n worker: true,\n extensions: ['drc'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['DRACO'],\n options: DEFAULT_DRACO_OPTIONS\n};\n\nexport const _TypecheckDracoLoader: Loader = DracoLoader;\n"],"file":"draco-loader.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/draco-writer.ts"],"names":["DRACOBuilder","loadDracoEncoderModule","VERSION","DEFAULT_DRACO_OPTIONS","pointcloud","attributeNameEntry","DracoWriter","name","id","module","version","extensions","encode","options","draco","data","dracoBuilder","encodeSync","destroy"],"mappings":"AAGA,OAAOA,YAAP,MAAyB,qBAAzB;AACA,SAAQC,sBAAR,QAAqC,2BAArC;AACA,SAAQC,OAAR,QAAsB,qBAAtB;AAIA,MAAMC,qBAAqB,GAAG;AAC5BC,EAAAA,UAAU,EAAE,KADgB;AAE5BC,EAAAA,kBAAkB,EAAE;AAFQ,CAA9B;AAcA,OAAO,MAAMC,WAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,OAD2B;AAEjCC,EAAAA,EAAE,EAAE,OAF6B;AAGjCC,EAAAA,MAAM,EAAE,OAHyB;AAIjCC,EAAAA,OAAO,EAAER,OAJwB;AAKjCS,EAAAA,UAAU,EAAE,CAAC,KAAD,CALqB;AAMjCC,EAAAA,MANiC;AAOjCC,EAAAA,OAAO,EAAE;AACPC,IAAAA,KAAK,EAAEX;AADA;AAPwB,CAA5B;;AAYP,eAAeS,MAAf,CACEG,IADF,EAEEF,OAAqC,GAAG,EAF1C,EAGwB;AAEtB,QAAM;AAACC,IAAAA;AAAD,MAAU,MAAMb,sBAAsB,CAACY,OAAD,CAA5C;AACA,QAAMG,YAAY,GAAG,IAAIhB,YAAJ,CAAiBc,KAAjB,CAArB;;AAEA,MAAI;AACF,WAAOE,YAAY,CAACC,UAAb,CAAwBF,IAAxB,EAA8BF,OAAO,CAACC,KAAtC,CAAP;AACD,GAFD,SAEU;AACRE,IAAAA,YAAY,CAACE,OAAb;AACD;AACF","sourcesContent":["import type {Writer} from '@loaders.gl/loader-utils';\nimport type {DracoMesh} from './lib/draco-types';\nimport type {DracoBuildOptions} from './lib/draco-builder';\nimport DRACOBuilder from './lib/draco-builder';\nimport {loadDracoEncoderModule} from './lib/draco-module-loader';\nimport {VERSION} from './lib/utils/version';\n\nexport type DracoWriterOptions = DracoBuildOptions & {};\n\nconst DEFAULT_DRACO_OPTIONS = {\n pointcloud: false, // Set to true if pointcloud (mode: 0, no indices)\n attributeNameEntry: 'name'\n // Draco Compression Parameters\n // method: 'MESH_EDGEBREAKER_ENCODING',\n // speed: [5, 5],\n // quantization: {\n // POSITION: 10\n // }\n};\n\n/**\n * Exporter for Draco3D compressed geometries\n */\nexport const DracoWriter: Writer = {\n name: 'DRACO',\n id: 'draco',\n module: 'draco',\n version: VERSION,\n extensions: ['drc'],\n encode,\n options: {\n draco: DEFAULT_DRACO_OPTIONS\n }\n};\n\nasync function encode(\n data: DracoMesh,\n options: {draco?: DracoWriterOptions} = {}\n): Promise<ArrayBuffer> {\n // Dynamically load draco\n const {draco} = await loadDracoEncoderModule(options);\n const dracoBuilder = new DRACOBuilder(draco);\n\n try {\n return dracoBuilder.encodeSync(data, options.draco);\n } finally {\n dracoBuilder.destroy();\n }\n}\n"],"file":"draco-writer.js"}