@loaders.gl/draco 4.0.0-alpha.5 → 4.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/dist.min.js +3 -3
  3. package/dist/dist.min.js.map +3 -3
  4. package/dist/draco-loader.d.ts +4 -14
  5. package/dist/draco-loader.d.ts.map +1 -1
  6. package/dist/draco-loader.js +26 -21
  7. package/dist/draco-worker-node.js +190 -0
  8. package/dist/draco-worker-node.js.map +7 -0
  9. package/dist/draco-worker.js +1 -1
  10. package/dist/draco-worker.js.map +3 -3
  11. package/dist/draco-writer-worker-node.js +192 -0
  12. package/dist/draco-writer-worker-node.js.map +7 -0
  13. package/dist/draco-writer-worker.js +4 -0
  14. package/dist/draco-writer-worker.js.map +7 -0
  15. package/dist/draco-writer.d.ts +12 -3
  16. package/dist/draco-writer.d.ts.map +1 -1
  17. package/dist/draco-writer.js +40 -28
  18. package/dist/draco3d/draco3d-types.d.ts +1 -1
  19. package/dist/draco3d/draco3d-types.d.ts.map +1 -1
  20. package/dist/draco3d/draco3d-types.js +47 -44
  21. package/dist/es5/bundle.js +6 -0
  22. package/dist/es5/bundle.js.map +1 -0
  23. package/dist/es5/draco-loader.js +33 -0
  24. package/dist/es5/draco-loader.js.map +1 -0
  25. package/dist/es5/draco-writer.js +63 -0
  26. package/dist/es5/draco-writer.js.map +1 -0
  27. package/dist/es5/draco3d/draco3d-types.js +51 -0
  28. package/dist/es5/draco3d/draco3d-types.js.map +1 -0
  29. package/dist/es5/index.js +78 -0
  30. package/dist/es5/index.js.map +1 -0
  31. package/dist/es5/lib/draco-builder.js +324 -0
  32. package/dist/es5/lib/draco-builder.js.map +1 -0
  33. package/dist/es5/lib/draco-module-loader.js +183 -0
  34. package/dist/es5/lib/draco-module-loader.js.map +1 -0
  35. package/dist/es5/lib/draco-parser.js +435 -0
  36. package/dist/es5/lib/draco-parser.js.map +1 -0
  37. package/dist/es5/lib/draco-types.js +2 -0
  38. package/dist/es5/lib/draco-types.js.map +1 -0
  39. package/dist/es5/lib/utils/get-draco-schema.js +47 -0
  40. package/dist/es5/lib/utils/get-draco-schema.js.map +1 -0
  41. package/dist/es5/lib/utils/version.js +9 -0
  42. package/dist/es5/lib/utils/version.js.map +1 -0
  43. package/dist/es5/workers/draco-worker-node.js +7 -0
  44. package/dist/es5/workers/draco-worker-node.js.map +1 -0
  45. package/dist/es5/workers/draco-worker.js +6 -0
  46. package/dist/es5/workers/draco-worker.js.map +1 -0
  47. package/dist/es5/workers/draco-writer-worker-node.js +54 -0
  48. package/dist/es5/workers/draco-writer-worker-node.js.map +1 -0
  49. package/dist/es5/workers/draco-writer-worker.js +53 -0
  50. package/dist/es5/workers/draco-writer-worker.js.map +1 -0
  51. package/dist/esm/bundle.js +4 -0
  52. package/dist/esm/bundle.js.map +1 -0
  53. package/dist/esm/draco-loader.js +23 -0
  54. package/dist/esm/draco-loader.js.map +1 -0
  55. package/dist/esm/draco-writer.js +31 -0
  56. package/dist/esm/draco-writer.js.map +1 -0
  57. package/dist/esm/draco3d/draco3d-types.js +41 -0
  58. package/dist/esm/draco3d/draco3d-types.js.map +1 -0
  59. package/dist/esm/index.js +34 -0
  60. package/dist/esm/index.js.map +1 -0
  61. package/dist/esm/lib/draco-builder.js +268 -0
  62. package/dist/esm/lib/draco-builder.js.map +1 -0
  63. package/dist/esm/lib/draco-module-loader.js +76 -0
  64. package/dist/esm/lib/draco-module-loader.js.map +1 -0
  65. package/dist/esm/lib/draco-parser.js +363 -0
  66. package/dist/esm/lib/draco-parser.js.map +1 -0
  67. package/dist/esm/lib/draco-types.js +2 -0
  68. package/dist/esm/lib/draco-types.js.map +1 -0
  69. package/dist/esm/lib/utils/get-draco-schema.js +41 -0
  70. package/dist/esm/lib/utils/get-draco-schema.js.map +1 -0
  71. package/dist/esm/lib/utils/version.js +2 -0
  72. package/dist/esm/lib/utils/version.js.map +1 -0
  73. package/dist/esm/workers/draco-worker-node.js +5 -0
  74. package/dist/esm/workers/draco-worker-node.js.map +1 -0
  75. package/dist/esm/workers/draco-worker.js +4 -0
  76. package/dist/esm/workers/draco-worker.js.map +1 -0
  77. package/dist/esm/workers/draco-writer-worker-node.js +31 -0
  78. package/dist/esm/workers/draco-writer-worker-node.js.map +1 -0
  79. package/dist/esm/workers/draco-writer-worker.js +30 -0
  80. package/dist/esm/workers/draco-writer-worker.js.map +1 -0
  81. package/dist/index.d.ts +14 -13
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +44 -21
  84. package/dist/lib/draco-builder.d.ts +1 -1
  85. package/dist/lib/draco-builder.d.ts.map +1 -1
  86. package/dist/lib/draco-builder.js +313 -329
  87. package/dist/lib/draco-module-loader.d.ts.map +1 -1
  88. package/dist/lib/draco-module-loader.js +81 -73
  89. package/dist/lib/draco-parser.d.ts +1 -1
  90. package/dist/lib/draco-parser.d.ts.map +1 -1
  91. package/dist/lib/draco-parser.js +440 -416
  92. package/dist/lib/draco-types.d.ts +6 -6
  93. package/dist/lib/draco-types.d.ts.map +1 -1
  94. package/dist/lib/draco-types.js +3 -2
  95. package/dist/lib/utils/get-draco-schema.js +35 -41
  96. package/dist/lib/utils/version.js +7 -2
  97. package/dist/workers/draco-worker-node.d.ts +2 -0
  98. package/dist/workers/draco-worker-node.d.ts.map +1 -0
  99. package/dist/workers/draco-worker-node.js +7 -0
  100. package/dist/workers/draco-worker.js +5 -4
  101. package/dist/workers/draco-writer-worker-node.d.ts +2 -0
  102. package/dist/workers/draco-writer-worker-node.d.ts.map +1 -0
  103. package/dist/workers/draco-writer-worker-node.js +28 -0
  104. package/dist/workers/draco-writer-worker.d.ts +2 -0
  105. package/dist/workers/draco-writer-worker.d.ts.map +1 -0
  106. package/dist/workers/draco-writer-worker.js +26 -0
  107. package/package.json +17 -10
  108. package/src/draco-loader.ts +5 -3
  109. package/src/draco-writer.ts +17 -12
  110. package/src/index.ts +19 -1
  111. package/src/lib/draco-module-loader.ts +9 -5
  112. package/src/lib/utils/get-draco-schema.ts +7 -6
  113. package/src/workers/draco-worker-node.ts +6 -0
  114. package/src/workers/draco-writer-worker-node.ts +27 -0
  115. package/src/workers/draco-writer-worker.ts +25 -0
  116. package/dist/bundle.js.map +0 -1
  117. package/dist/draco-loader.js.map +0 -1
  118. package/dist/draco-writer.js.map +0 -1
  119. package/dist/draco3d/draco3d-types.js.map +0 -1
  120. package/dist/index.js.map +0 -1
  121. package/dist/lib/draco-builder.js.map +0 -1
  122. package/dist/lib/draco-module-loader.js.map +0 -1
  123. package/dist/lib/draco-parser.js.map +0 -1
  124. package/dist/lib/draco-types.js.map +0 -1
  125. package/dist/lib/utils/get-draco-schema.js.map +0 -1
  126. package/dist/lib/utils/version.js.map +0 -1
  127. package/dist/workers/draco-worker.js.map +0 -1
@@ -1,22 +1,22 @@
1
1
  import { Mesh } from '@loaders.gl/schema';
2
- export declare type DracoMetadataEntry = {
2
+ export type DracoMetadataEntry = {
3
3
  int: number;
4
4
  string: string;
5
5
  double: number;
6
6
  intArray: Int32Array;
7
7
  };
8
8
  /** For attributes that have not been fully decompressed */
9
- export declare type DracoQuantizationTransform = {
9
+ export type DracoQuantizationTransform = {
10
10
  quantization_bits?: number;
11
11
  range?: number;
12
12
  min_values?: Float32Array;
13
13
  };
14
14
  /** For attributes that have not been fully decompressed */
15
- export declare type DracoOctahedronTransform = {
15
+ export type DracoOctahedronTransform = {
16
16
  quantization_bits?: number;
17
17
  };
18
18
  /** Draco attribute fields */
19
- export declare type DracoAttribute = {
19
+ export type DracoAttribute = {
20
20
  unique_id: number;
21
21
  num_components: number;
22
22
  attribute_type: number;
@@ -37,7 +37,7 @@ export declare type DracoAttribute = {
37
37
  * The `data.loaderData` field will have this layout when `data.loader === 'draco'`.
38
38
  * @todo Metadata should also be available in normalized form in a standard `Schema`.
39
39
  */
40
- export declare type DracoLoaderData = {
40
+ export type DracoLoaderData = {
41
41
  geometry_type: number;
42
42
  num_attributes: number;
43
43
  num_points: number;
@@ -52,7 +52,7 @@ export declare type DracoLoaderData = {
52
52
  /**
53
53
  * loaders.gl Mesh with Draco specific data
54
54
  */
55
- export declare type DracoMesh = Mesh & {
55
+ export type DracoMesh = Mesh & {
56
56
  loader: 'draco';
57
57
  loaderData: DracoLoaderData;
58
58
  };
@@ -1 +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,oBAAY,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,oBAAY,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,oBAAY,wBAAwB,GAAG;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,6BAA6B;AAC7B,oBAAY,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,oBAAY,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,oBAAY,SAAS,GAAG,IAAI,GAAG;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,eAAe,CAAC;CAC7B,CAAC"}
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 });
@@ -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
@@ -1,2 +1,7 @@
1
- export const VERSION = typeof "4.0.0-alpha.5" !== 'undefined' ? "4.0.0-alpha.5" : '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-worker-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-worker-node.d.ts","sourceRoot":"","sources":["../../src/workers/draco-worker-node.ts"],"names":[],"mappings":"AACA,OAAO,uBAAuB,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Polyfills increases the bundle size significantly. Use it for NodeJS worker only
4
+ require("@loaders.gl/polyfills");
5
+ const loader_utils_1 = require("@loaders.gl/loader-utils");
6
+ const index_1 = require("../index");
7
+ (0, loader_utils_1.createLoaderWorker)(index_1.DracoLoader);
@@ -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
+ import '@loaders.gl/polyfills';
2
+ //# sourceMappingURL=draco-writer-worker-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-writer-worker-node.d.ts","sourceRoot":"","sources":["../../src/workers/draco-writer-worker-node.ts"],"names":[],"mappings":"AACA,OAAO,uBAAuB,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Polyfills increases the bundle size significantly. Use it for NodeJS worker only
4
+ require("@loaders.gl/polyfills");
5
+ const worker_utils_1 = require("@loaders.gl/worker-utils");
6
+ const draco_writer_1 = require("../draco-writer");
7
+ (() => {
8
+ // Check that we are actually in a worker thread
9
+ if (!worker_utils_1.WorkerBody.inWorkerThread()) {
10
+ return;
11
+ }
12
+ worker_utils_1.WorkerBody.onmessage = async (type, payload) => {
13
+ switch (type) {
14
+ case 'process':
15
+ try {
16
+ const { input, options } = payload;
17
+ const result = await draco_writer_1.DracoWriter.encode(input, options);
18
+ worker_utils_1.WorkerBody.postMessage('done', { result });
19
+ }
20
+ catch (error) {
21
+ const message = error instanceof Error ? error.message : '';
22
+ worker_utils_1.WorkerBody.postMessage('error', { error: message });
23
+ }
24
+ break;
25
+ default:
26
+ }
27
+ };
28
+ })();
@@ -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.5",
3
+ "version": "4.0.0-alpha.7",
4
4
  "description": "Framework-independent loader and writer for Draco compressed meshes and point clouds",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -20,8 +20,8 @@
20
20
  "draco"
21
21
  ],
22
22
  "types": "dist/index.d.ts",
23
- "main": "dist/index.js",
24
- "module": "dist/index.js",
23
+ "main": "dist/es5/index.js",
24
+ "module": "dist/esm/index.js",
25
25
  "sideEffects": false,
26
26
  "browser": {
27
27
  "fs": false
@@ -32,16 +32,23 @@
32
32
  "README.md"
33
33
  ],
34
34
  "scripts": {
35
- "pre-build": "npm run build-bundle && npm run build-worker",
35
+ "pre-build": "npm run build-bundle && npm run build-workers",
36
36
  "build-bundle": "esbuild src/bundle.ts --outfile=dist/dist.min.js --bundle --minify --sourcemap",
37
- "build-worker": "esbuild src/workers/draco-worker.ts --outfile=dist/draco-worker.js --bundle --minify --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
37
+ "build-workers": "yarn build-loader-worker && yarn build-loader-worker-node && yarn build-writer-worker && yarn build-writer-worker-node",
38
+ "build-loader-worker": "esbuild src/workers/draco-worker.ts --outfile=dist/draco-worker.js --target=esnext --bundle --minify --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"",
39
+ "build-loader-worker-node": "esbuild src/workers/draco-worker-node.ts --outfile=dist/draco-worker-node.js --target=node16 --platform=node --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"",
40
+ "build-writer-worker": "esbuild src/workers/draco-writer-worker.ts --outfile=dist/draco-writer-worker.js --target=esnext --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"",
41
+ "build-writer-worker-node": "esbuild src/workers/draco-writer-worker-node.ts --outfile=dist/draco-writer-worker-node.js --target=node16 --platform=node --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
38
42
  },
39
43
  "dependencies": {
40
44
  "@babel/runtime": "^7.3.1",
41
- "@loaders.gl/loader-utils": "4.0.0-alpha.5",
42
- "@loaders.gl/schema": "4.0.0-alpha.5",
43
- "@loaders.gl/worker-utils": "4.0.0-alpha.5",
44
- "draco3d": "1.4.1"
45
+ "@loaders.gl/loader-utils": "4.0.0-alpha.7",
46
+ "@loaders.gl/schema": "4.0.0-alpha.7",
47
+ "@loaders.gl/worker-utils": "4.0.0-alpha.7",
48
+ "draco3d": "1.5.5"
45
49
  },
46
- "gitHead": "7a71a54bdf1ddf985cc3af3db90b82e7fa97d025"
50
+ "devDependencies": {
51
+ "@loaders.gl/polyfills": "4.0.0-alpha.7"
52
+ },
53
+ "gitHead": "afb59c4d8e5d8ebb9c28f111cb0c96c5527d0ffd"
47
54
  }
@@ -1,6 +1,7 @@
1
+ // loaders.gl, MIT license
1
2
  import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';
3
+ import type {DracoMesh} from './lib/draco-types';
2
4
  import type {DracoParseOptions} from './lib/draco-parser';
3
- // import type {DracoMeshData} from './types';
4
5
  import {VERSION} from './lib/utils/version';
5
6
 
6
7
  export type DracoLoaderOptions = LoaderOptions & {
@@ -9,6 +10,7 @@ export type DracoLoaderOptions = LoaderOptions & {
9
10
  libraryPath?: string;
10
11
  extraAttributes?;
11
12
  attributeNameEntry?: string;
13
+ workerUrl?: string;
12
14
  };
13
15
  };
14
16
 
@@ -24,11 +26,11 @@ const DEFAULT_DRACO_OPTIONS: DracoLoaderOptions = {
24
26
  /**
25
27
  * Worker loader for Draco3D compressed geometries
26
28
  */
27
- export const DracoLoader = {
29
+ export const DracoLoader: Loader<DracoMesh, never, DracoLoaderOptions> = {
28
30
  name: 'Draco',
29
31
  id: 'draco',
30
32
  module: 'draco',
31
- shapes: ['mesh'],
33
+ // shapes: ['mesh'],
32
34
  version: VERSION,
33
35
  worker: true,
34
36
  extensions: ['drc'],
@@ -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,11 @@
1
+ // loaders.gl, MIT license
1
2
  import type {LoaderWithParser} from '@loaders.gl/loader-utils';
2
3
  import type {DracoMesh, DracoLoaderData} from './lib/draco-types';
3
4
  import type {DracoLoaderOptions} from './draco-loader';
4
5
  import {DracoLoader as DracoWorkerLoader} from './draco-loader';
5
6
  import DracoParser from './lib/draco-parser';
6
7
  import {loadDracoDecoderModule} from './lib/draco-module-loader';
8
+ import {VERSION} from './lib/utils/version';
7
9
 
8
10
  // Draco data types
9
11
 
@@ -14,6 +16,22 @@ export type {DracoMesh, DracoLoaderData};
14
16
  export type {DracoWriterOptions} from './draco-writer';
15
17
  export {DracoWriter} from './draco-writer';
16
18
 
19
+ /**
20
+ * Browser worker doesn't work because of issue during "draco_encoder.js" loading.
21
+ * 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.
22
+ */
23
+ export const DracoWriterWorker = {
24
+ id: 'draco-writer',
25
+ name: 'Draco compressed geometry writer',
26
+ module: 'draco',
27
+ version: VERSION,
28
+ worker: true,
29
+ options: {
30
+ draco: {},
31
+ source: null
32
+ }
33
+ };
34
+
17
35
  // Draco Loader
18
36
 
19
37
  export type {DracoLoaderOptions};
@@ -22,7 +40,7 @@ export {DracoWorkerLoader};
22
40
  /**
23
41
  * Loader for Draco3D compressed geometries
24
42
  */
25
- export const DracoLoader = {
43
+ export const DracoLoader: LoaderWithParser<DracoMesh, never, DracoLoaderOptions> = {
26
44
  ...DracoWorkerLoader,
27
45
  parse
28
46
  };
@@ -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,6 @@
1
+ // Polyfills increases the bundle size significantly. Use it for NodeJS worker only
2
+ import '@loaders.gl/polyfills';
3
+ import {createLoaderWorker} from '@loaders.gl/loader-utils';
4
+ import {DracoLoader} from '../index';
5
+
6
+ createLoaderWorker(DracoLoader);
@@ -0,0 +1,27 @@
1
+ // Polyfills increases the bundle size significantly. Use it for NodeJS worker only
2
+ import '@loaders.gl/polyfills';
3
+ import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';
4
+ import {DracoWriter} from '../draco-writer';
5
+
6
+ (() => {
7
+ // Check that we are actually in a worker thread
8
+ if (!WorkerBody.inWorkerThread()) {
9
+ return;
10
+ }
11
+
12
+ WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {
13
+ switch (type) {
14
+ case 'process':
15
+ try {
16
+ const {input, options} = payload;
17
+ const result = await DracoWriter.encode!(input, options);
18
+ WorkerBody.postMessage('done', {result});
19
+ } catch (error) {
20
+ const message = error instanceof Error ? error.message : '';
21
+ WorkerBody.postMessage('error', {error: message});
22
+ }
23
+ break;
24
+ default:
25
+ }
26
+ };
27
+ })();
@@ -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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/draco3d/draco3d-types.ts"],"names":["draco_GeometryAttribute_Type","draco_EncodedGeometryType","draco_DataType","draco_StatusCode"],"mappings":"AAiBA,WAAYA,4BAAZ;;WAAYA,4B;AAAAA,EAAAA,4B,CAAAA,4B;AAAAA,EAAAA,4B,CAAAA,4B;AAAAA,EAAAA,4B,CAAAA,4B;AAAAA,EAAAA,4B,CAAAA,4B;AAAAA,EAAAA,4B,CAAAA,4B;AAAAA,EAAAA,4B,CAAAA,4B;GAAAA,4B,KAAAA,4B;;AAUZ,WAAYC,yBAAZ;;WAAYA,yB;AAAAA,EAAAA,yB,CAAAA,yB;AAAAA,EAAAA,yB,CAAAA,yB;AAAAA,EAAAA,yB,CAAAA,yB;GAAAA,yB,KAAAA,yB;;AAOZ,WAAYC,cAAZ;;WAAYA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;GAAAA,c,KAAAA,c;;AAiBZ,WAAYC,gBAAZ;;WAAYA,gB;AAAAA,EAAAA,gB,CAAAA,gB;AAAAA,EAAAA,gB,CAAAA,gB;AAAAA,EAAAA,gB,CAAAA,gB;AAAAA,EAAAA,gB,CAAAA,gB;AAAAA,EAAAA,gB,CAAAA,gB;AAAAA,EAAAA,gB,CAAAA,gB;GAAAA,gB,KAAAA,gB","sourcesContent":["// A set of typescript types manually adapted from the Draco web IDL\n// Draco JS is a bit tricky to work with due to the C++ emscripten code base\n// sparse documentation, so these types provide an extra safety net.\n\n// Typescript defs adapted from draco3d emscripten IDL\n// https://raw.githubusercontent.com/google/draco/master/src/draco/javascript/emscripten/draco_web_decoder.idl\n// Interface exposed to emscripten's WebIDL Binder.\n// http://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/WebIDL-Binder.html\n\n/* eslint-disable camelcase */\n\n/** Draco3D untyped memory pointer */\ntype VoidPtr = any;\n\n// DRACO WEB DECODER IDL\n\n/** Draco3D geometry attribute type */\nexport enum draco_GeometryAttribute_Type {\n 'draco_GeometryAttribute::INVALID',\n 'draco_GeometryAttribute::POSITION',\n 'draco_GeometryAttribute::NORMAL',\n 'draco_GeometryAttribute::COLOR',\n 'draco_GeometryAttribute::TEX_COORD',\n 'draco_GeometryAttribute::GENERIC'\n}\n\n/** Draco3D encoded geometry type */\nexport enum draco_EncodedGeometryType {\n 'draco::INVALID_GEOMETRY_TYPE',\n 'draco::POINT_CLOUD',\n 'draco::TRIANGULAR_MESH'\n}\n\n/** Draco3D data type */\nexport enum draco_DataType {\n 'draco::DT_INVALID',\n 'draco::DT_INT8',\n 'draco::DT_UINT8',\n 'draco::DT_INT16',\n 'draco::DT_UINT16',\n 'draco::DT_INT32',\n 'draco::DT_UINT32',\n 'draco::DT_INT64',\n 'draco::DT_UINT64',\n 'draco::DT_FLOAT32',\n 'draco::DT_FLOAT64',\n 'draco::DT_BOOL',\n 'draco::DT_TYPES_COUNT'\n}\n\n/** Draco3D status code */\nexport enum draco_StatusCode {\n 'draco_Status::OK',\n 'draco_Status::DRACO_ERROR',\n 'draco_Status::IO_ERROR',\n 'draco_Status::INVALID_PARAMETER',\n 'draco_Status::UNSUPPORTED_VERSION',\n 'draco_Status::UNKNOWN_VERSION'\n}\n\n/** Draco3D decoder buffer allocated on emscripten heap */\nexport declare class DecoderBuffer {\n constructor();\n Init(data: Int8Array, data_size: number): void;\n}\n\n/** Draco3D attribute transform data */\nexport declare class AttributeTransformData {\n constructor();\n transform_type(): number;\n}\n\n/** Draco3D geometry attribute */\nexport declare class GeometryAttribute {\n constructor();\n}\n\n/** Draco3D point attribute */\nexport declare class PointAttribute {\n ptr: VoidPtr;\n\n constructor();\n size(): number;\n GetAttributeTransformData(): AttributeTransformData;\n\n // From GeometryAttribute\n attribute_type(): number;\n data_type(): number;\n num_components(): number;\n normalized(): boolean;\n byte_stride(): number;\n byte_offset(): number;\n unique_id(): number;\n}\n\n/** Draco3D attribute transform */\nexport declare class AttributeQuantizationTransform {\n constructor();\n InitFromAttribute(att: PointAttribute): boolean;\n quantization_bits(): number;\n min_value(axis: number): number;\n range(): number;\n}\n\n/** Draco3D attribute transform */\nexport declare class AttributeOctahedronTransform {\n constructor();\n InitFromAttribute(att: PointAttribute): boolean;\n quantization_bits(): number;\n}\n\n/** Draco3D point cloud */\nexport declare class PointCloud {\n ptr: VoidPtr;\n\n constructor();\n num_attributes(): number;\n num_points(): number;\n}\n\n/** Draco3D mesh */\nexport declare class Mesh extends PointCloud {\n constructor();\n num_faces(): number;\n}\n\n/** Draco3D metadata */\nexport declare class Metadata {\n ptr: VoidPtr;\n\n constructor();\n}\n\n/** Draco3D status */\nexport declare class Status {\n constructor();\n code(): draco_StatusCode;\n ok(): boolean;\n error_msg(): string;\n}\n\n/** Draco3D Float32Array allocated on the emscripten heap */\nexport declare class DracoFloat32Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Int8Array allocated on the emscripten heap */\nexport declare class DracoInt8Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Uint8Array allocated on the emscripten heap */\nexport declare class DracoUInt8Array {\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Int16Array allocated on the emscripten heap */\nexport declare class DracoInt16Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Uint16Array allocated on the emscripten heap */\nexport declare class DracoUInt16Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Int32Array allocated on the emscripten heap */\nexport declare class DracoInt32Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Uint32Array allocated on the emscripten heap */\nexport declare class DracoUInt32Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D metadata querier */\nexport declare class MetadataQuerier {\n constructor();\n\n HasEntry(metadata: Metadata, entry_name: string): string;\n GetIntEntry(metadata: Metadata, entry_name: string);\n GetIntEntryArray(metadata: Metadata, entry_name: string, out_values: DracoInt32Array);\n GetDoubleEntry(metadata: Metadata, entry_name: string): number;\n GetStringEntry(metadata: Metadata, entry_name: string): string;\n\n NumEntries(metadata: Metadata): number;\n GetEntryName(metadata: Metadata, entry_id: number): string;\n}\n\n/**\n * Draco3D Decoder class\n */\nexport declare class Decoder {\n constructor();\n\n GetEncodedGeometryType(in_buffer: DecoderBuffer): draco_EncodedGeometryType;\n\n DecodeBufferToPointCloud(in_buffer: DecoderBuffer, out_point_cloud: PointCloud): Status;\n DecodeBufferToMesh(in_buffer: DecoderBuffer, out_mesh: Mesh): Status;\n\n GetAttributeId(pc: PointCloud, type: draco_GeometryAttribute_Type): number;\n GetAttributeIdByName(pc: PointCloud, name: string): number;\n GetAttributeIdByMetadataEntry(pc: PointCloud, name: string, value: string): number;\n\n GetAttribute(pc: PointCloud, att_id: number): PointAttribute;\n GetAttributeByUniqueId(pc: PointCloud, unique_id: number): PointAttribute;\n\n GetMetadata(pc: PointCloud): Metadata;\n GetAttributeMetadata(pc: PointCloud, att_id: number): Metadata;\n\n GetFaceFromMesh(m: Mesh, face_id: number, out_values: DracoInt32Array): boolean;\n GetTriangleStripsFromMesh(m: Mesh, strip_values: DracoInt32Array);\n\n GetTrianglesUInt16Array(m: Mesh, out_size: number, out_values: VoidPtr): boolean;\n GetTrianglesUInt32Array(m: Mesh, out_size: number, out_values: VoidPtr): boolean;\n\n GetAttributeFloat(pa: PointAttribute, att_index: number, out_values: DracoFloat32Array): boolean;\n\n GetAttributeFloatForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoFloat32Array\n ): boolean;\n\n // Deprecated, use GetAttributeInt32ForAllPoints instead.\n GetAttributeIntForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoInt32Array\n ): boolean;\n\n GetAttributeInt8ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoInt8Array\n ): boolean;\n GetAttributeUInt8ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoUInt8Array\n ): boolean;\n GetAttributeInt16ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoInt16Array\n ): boolean;\n GetAttributeUInt16ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoUInt16Array\n ): boolean;\n GetAttributeInt32ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoInt32Array\n ): boolean;\n GetAttributeUInt32ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoUInt32Array\n ): boolean;\n\n GetAttributeDataArrayForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n data_type: draco_DataType,\n out_size: number,\n out_values: VoidPtr\n ): boolean;\n\n SkipAttributeTransform(att_type: draco_GeometryAttribute_Type): void;\n}\n\n// DRACO WEB ENCODER IDL\n\n/** Draco3D metadata builder */\nexport declare class MetadataBuilder {\n constructor();\n AddStringEntry(metadata: Metadata, entry_name: string, entry_value: string);\n AddIntEntry(metadata: Metadata, entry_name: string, entry_value: number);\n AddDoubleEntry(metadata: Metadata, entry_name: string, entry_value: number);\n AddIntEntryArray(\n metadata: Metadata,\n entry_name: string,\n entry_value: Int32Array,\n num_values: number\n );\n}\n\n/** Draco3D point cloud builder */\n\nexport declare class PointCloudBuilder {\n constructor();\n PointCloudBuilder(): void;\n AddFloatAttribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Float32Array\n );\n AddInt8Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Int8Array\n );\n AddUInt8Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Uint8Array\n );\n AddInt16Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Int16Array\n );\n AddUInt16Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Uint16Array\n );\n AddInt32Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Int32Array\n );\n AddUInt32Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Uint32Array\n );\n\n AddMetadata(pc: PointCloud, metadata: Metadata): boolean;\n SetMetadataForAttribute(pc: PointCloud, attribute_id: number, metadata: Metadata);\n}\n\n/** Draco3D mesh builder */\nexport declare class MeshBuilder extends PointCloudBuilder {\n constructor();\n AddFacesToMesh(mesh: Mesh, num_faces: number, faces: number[]): boolean;\n}\n\n/** Draco3D encoder */\nexport declare class Encoder {\n constructor();\n Encoder(): void;\n SetEncodingMethod(method: number): void;\n SetAttributeQuantization(type: draco_GeometryAttribute_Type, quantization_bits: number);\n SetAttributeExplicitQuantization(\n type: draco_GeometryAttribute_Type,\n quantization_bits: number,\n num_components: number,\n origin: number[],\n range: number\n );\n SetSpeedOptions(encoding_speed: number, decoding_speed: number): void;\n SetTrackEncodedProperties(flag: boolean): void;\n\n EncodeMeshToDracoBuffer(mesh: Mesh, encoded_data: DracoInt8Array);\n EncodePointCloudToDracoBuffer(\n pc: PointCloud,\n deduplicate_values: boolean,\n encoded_data: DracoInt8Array\n );\n\n // Returns the number of encoded points or faces from the last Encode\n // operation. Returns 0 if SetTrackEncodedProperties was not set to true.\n GetNumberOfEncodedPoints(): number;\n GetNumberOfEncodedFaces(): number;\n}\n\n/** Draco3D expert encoder */\nexport declare class ExpertEncoder {\n constructor();\n ExpertEncoder(pc: PointCloud): void;\n SetEncodingMethod(method: number): void;\n SetAttributeQuantization(att_id: number, quantization_bits: number);\n SetAttributeExplicitQuantization(\n att_id: number,\n quantization_bits: number,\n num_components: number,\n origin: number[],\n range: number\n );\n SetSpeedOptions(encoding_speed: number, decoding_speed: number): void;\n SetTrackEncodedProperties(flag: boolean): void;\n\n EncodeToDracoBuffer(deduplicate_values: boolean, encoded_data: DracoInt8Array);\n\n // Returns the number of encoded points or faces from the last Encode\n // operation. Returns 0 if SetTrackEncodedProperties was not set to true.\n GetNumberOfEncodedPoints(): number;\n GetNumberOfEncodedFaces(): number;\n}\n\n/** Draco3D module interface */\nexport interface Draco3D {\n // ENUMS\n\n // draco_EncodedGeometryType\n readonly INVALID_GEOMETRY_TYPE: draco_EncodedGeometryType;\n readonly POINT_CLOUD: draco_EncodedGeometryType;\n readonly TRIANGULAR_MESH: draco_EncodedGeometryType;\n\n // enum draco_GeometryAttribute_Type\n readonly INVALID: draco_GeometryAttribute_Type;\n readonly POSITION: draco_GeometryAttribute_Type;\n readonly NORMAL: draco_GeometryAttribute_Type;\n readonly COLOR: draco_GeometryAttribute_Type;\n readonly TEX_COORD: draco_GeometryAttribute_Type;\n readonly GENERIC: draco_GeometryAttribute_Type;\n\n // enum draco_DataType\n readonly DT_INVALID: draco_DataType;\n readonly DT_INT8: draco_DataType;\n readonly DT_UINT8: draco_DataType;\n readonly DT_INT16: draco_DataType;\n readonly DT_UINT16: draco_DataType;\n readonly DT_INT32: draco_DataType;\n readonly DT_UINT32: draco_DataType;\n readonly DT_INT64: draco_DataType;\n readonly DT_UINT64: draco_DataType;\n readonly DT_FLOAT32: draco_DataType;\n readonly DT_FLOAT64: draco_DataType;\n readonly DT_BOOL: draco_DataType;\n readonly DT_TYPES_COUNT: draco_DataType;\n\n readonly Mesh: typeof Mesh;\n readonly PointCloud: typeof PointCloud;\n readonly Metadata: typeof Metadata;\n\n readonly Encoder: typeof Encoder;\n readonly MeshBuilder: typeof MeshBuilder;\n readonly MetadataBuilder: typeof MetadataBuilder;\n\n readonly MetadataQuerier: typeof MetadataQuerier;\n readonly Decoder: typeof Decoder;\n readonly DecoderBuffer: typeof DecoderBuffer;\n\n readonly DracoFloat32Array: typeof DracoFloat32Array;\n readonly DracoInt8Array: typeof DracoInt8Array;\n readonly DracoUInt8Array: typeof DracoUInt8Array;\n readonly DracoInt16Array: typeof DracoInt16Array;\n readonly DracoUInt16Array: typeof DracoUInt16Array;\n readonly DracoInt32Array: typeof DracoInt32Array;\n readonly DracoUInt32Array: typeof DracoUInt32Array;\n\n readonly AttributeQuantizationTransform: typeof AttributeQuantizationTransform;\n\n // createEncoderModule(): Encoder;\n // createDecoderModule(): Decoder;\n destroy(resource: any): void;\n _malloc(byteLength: number): number;\n _free(ptr: number): void;\n\n HEAPF32: {\n buffer: ArrayBuffer;\n };\n}\n"],"file":"draco3d-types.js"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["DracoLoader","DracoWorkerLoader","DracoParser","loadDracoDecoderModule","DracoWriter","parse","arrayBuffer","options","draco","dracoParser","parseSync","destroy","_TypecheckDracoLoader"],"mappings":"AAGA,SAAQA,WAAW,IAAIC,iBAAvB,QAA+C,gBAA/C;AACA,OAAOC,WAAP,MAAwB,oBAAxB;AACA,SAAQC,sBAAR,QAAqC,2BAArC;AASA,SAAQC,WAAR,QAA0B,gBAA1B;AAKA,SAAQH,iBAAR;AAKA,OAAO,MAAMD,WAAW,GAAG,EACzB,GAAGC,iBADsB;AAEzBI,EAAAA;AAFyB,CAApB;;AAKP,eAAeA,KAAf,CAAqBC,WAArB,EAA+CC,OAA/C,EAAiG;AAC/F,QAAM;AAACC,IAAAA;AAAD,MAAU,MAAML,sBAAsB,CAACI,OAAD,CAA5C;AACA,QAAME,WAAW,GAAG,IAAIP,WAAJ,CAAgBM,KAAhB,CAApB;;AACA,MAAI;AACF,WAAOC,WAAW,CAACC,SAAZ,CAAsBJ,WAAtB,EAAmCC,OAAnC,aAAmCA,OAAnC,uBAAmCA,OAAO,CAAEC,KAA5C,CAAP;AACD,GAFD,SAEU;AACRC,IAAAA,WAAW,CAACE,OAAZ;AACD;AACF;;AAGD,OAAO,MAAMC,qBAAuC,GAAGZ,WAAhD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {DracoMesh, DracoLoaderData} from './lib/draco-types';\nimport type {DracoLoaderOptions} from './draco-loader';\nimport {DracoLoader as DracoWorkerLoader} from './draco-loader';\nimport DracoParser from './lib/draco-parser';\nimport {loadDracoDecoderModule} from './lib/draco-module-loader';\n\n// Draco data types\n\nexport type {DracoMesh, DracoLoaderData};\n\n// Draco Writer\n\nexport type {DracoWriterOptions} from './draco-writer';\nexport {DracoWriter} from './draco-writer';\n\n// Draco Loader\n\nexport type {DracoLoaderOptions};\nexport {DracoWorkerLoader};\n\n/**\n * Loader for Draco3D compressed geometries\n */\nexport const DracoLoader = {\n ...DracoWorkerLoader,\n parse\n};\n\nasync function parse(arrayBuffer: ArrayBuffer, options?: DracoLoaderOptions): Promise<DracoMesh> {\n const {draco} = await loadDracoDecoderModule(options);\n const dracoParser = new DracoParser(draco);\n try {\n return dracoParser.parseSync(arrayBuffer, options?.draco);\n } finally {\n dracoParser.destroy();\n }\n}\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckDracoLoader: LoaderWithParser = DracoLoader;\n"],"file":"index.js"}