@loaders.gl/draco 4.2.0-alpha.4 → 4.2.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 (56) hide show
  1. package/dist/dist.dev.js +268 -79
  2. package/dist/dist.min.js +11 -0
  3. package/dist/draco-loader.d.ts +2 -2
  4. package/dist/draco-loader.d.ts.map +1 -1
  5. package/dist/draco-loader.js +23 -17
  6. package/dist/draco-worker-node.js +186 -127
  7. package/dist/draco-worker-node.js.map +3 -3
  8. package/dist/draco-worker.js +5 -3
  9. package/dist/draco-worker.js.map +2 -2
  10. package/dist/draco-writer-worker-node.js +188 -127
  11. package/dist/draco-writer-worker-node.js.map +3 -3
  12. package/dist/draco-writer-worker.js +5 -3
  13. package/dist/draco-writer-worker.js.map +2 -2
  14. package/dist/draco-writer.d.ts +2 -2
  15. package/dist/draco-writer.d.ts.map +1 -1
  16. package/dist/draco-writer.js +30 -23
  17. package/dist/draco3d/draco3d-types.js +48 -41
  18. package/dist/index.cjs +34 -71
  19. package/dist/index.cjs.map +7 -0
  20. package/dist/index.d.ts +6 -6
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +27 -21
  23. package/dist/lib/draco-builder.d.ts +2 -2
  24. package/dist/lib/draco-builder.d.ts.map +1 -1
  25. package/dist/lib/draco-builder.js +314 -243
  26. package/dist/lib/draco-module-loader.js +78 -62
  27. package/dist/lib/draco-parser.d.ts +2 -2
  28. package/dist/lib/draco-parser.d.ts.map +1 -1
  29. package/dist/lib/draco-parser.js +437 -323
  30. package/dist/lib/draco-types.js +1 -1
  31. package/dist/lib/utils/get-draco-schema.d.ts +1 -1
  32. package/dist/lib/utils/get-draco-schema.d.ts.map +1 -1
  33. package/dist/lib/utils/get-draco-schema.js +29 -32
  34. package/dist/lib/utils/version.js +4 -2
  35. package/dist/workers/draco-worker-node.js +1 -1
  36. package/dist/workers/draco-worker.js +0 -1
  37. package/dist/workers/draco-writer-worker-node.js +20 -25
  38. package/dist/workers/draco-writer-worker.js +19 -25
  39. package/package.json +10 -10
  40. package/dist/draco-loader.js.map +0 -1
  41. package/dist/draco-writer.js.map +0 -1
  42. package/dist/draco3d/draco3d-types.js.map +0 -1
  43. package/dist/index.js.map +0 -1
  44. package/dist/lib/draco-builder.js.map +0 -1
  45. package/dist/lib/draco-module-loader.js.map +0 -1
  46. package/dist/lib/draco-parser.js.map +0 -1
  47. package/dist/lib/draco-types.js.map +0 -1
  48. package/dist/lib/utils/get-draco-schema.js.map +0 -1
  49. package/dist/lib/utils/version.js.map +0 -1
  50. package/dist/libs/libs/draco_decoder.wasm +0 -0
  51. package/dist/libs/libs/draco_encoder.js +0 -52
  52. package/dist/libs/libs/draco_wasm_wrapper.js +0 -117
  53. package/dist/workers/draco-worker-node.js.map +0 -1
  54. package/dist/workers/draco-worker.js.map +0 -1
  55. package/dist/workers/draco-writer-worker-node.js.map +0 -1
  56. package/dist/workers/draco-writer-worker.js.map +0 -1
@@ -1,84 +1,100 @@
1
+ // Dynamic DRACO module loading inspired by THREE.DRACOLoader
2
+ // https://github.com/mrdoob/three.js/blob/398c4f39ebdb8b23eefd4a7a5ec49ec0c96c7462/examples/jsm/loaders/DRACOLoader.js
3
+ // by Don McCurdy / https://www.donmccurdy.com / MIT license
1
4
  import { loadLibrary } from '@loaders.gl/worker-utils';
2
5
  const DRACO_DECODER_VERSION = '1.5.6';
3
6
  const DRACO_ENCODER_VERSION = '1.4.1';
4
7
  const STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
5
8
  export const DRACO_EXTERNAL_LIBRARIES = {
6
- DECODER: 'draco_wasm_wrapper.js',
7
- DECODER_WASM: 'draco_decoder.wasm',
8
- FALLBACK_DECODER: 'draco_decoder.js',
9
- ENCODER: 'draco_encoder.js'
9
+ /** The primary Draco3D encoder, javascript wrapper part */
10
+ DECODER: 'draco_wasm_wrapper.js',
11
+ /** The primary draco decoder, compiled web assembly part */
12
+ DECODER_WASM: 'draco_decoder.wasm',
13
+ /** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */
14
+ FALLBACK_DECODER: 'draco_decoder.js',
15
+ /** Draco encoder */
16
+ ENCODER: 'draco_encoder.js'
10
17
  };
11
18
  export const DRACO_EXTERNAL_LIBRARY_URLS = {
12
- [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,
13
- [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,
14
- [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,
15
- [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`
19
+ [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,
20
+ [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,
21
+ [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,
22
+ [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`
16
23
  };
17
24
  let loadDecoderPromise;
18
25
  let loadEncoderPromise;
19
26
  export async function loadDracoDecoderModule(options) {
20
- const modules = options.modules || {};
21
- if (modules.draco3d) {
22
- loadDecoderPromise = loadDecoderPromise || modules.draco3d.createDecoderModule({}).then(draco => {
23
- return {
24
- draco
25
- };
26
- });
27
- } else {
28
- loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
29
- }
30
- return await loadDecoderPromise;
27
+ const modules = options.modules || {};
28
+ // Check if a bundled draco3d library has been supplied by application
29
+ if (modules.draco3d) {
30
+ loadDecoderPromise =
31
+ loadDecoderPromise ||
32
+ modules.draco3d.createDecoderModule({}).then((draco) => {
33
+ return { draco };
34
+ });
35
+ }
36
+ else {
37
+ // If not, dynamically load the WASM script from our CDN
38
+ loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
39
+ }
40
+ return await loadDecoderPromise;
31
41
  }
32
42
  export async function loadDracoEncoderModule(options) {
33
- const modules = options.modules || {};
34
- if (modules.draco3d) {
35
- loadEncoderPromise = loadEncoderPromise || modules.draco3d.createEncoderModule({}).then(draco => {
36
- return {
37
- draco
38
- };
39
- });
40
- } else {
41
- loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);
42
- }
43
- return await loadEncoderPromise;
43
+ const modules = options.modules || {};
44
+ // Check if a bundled draco3d library has been supplied by application
45
+ if (modules.draco3d) {
46
+ loadEncoderPromise =
47
+ loadEncoderPromise ||
48
+ modules.draco3d.createEncoderModule({}).then((draco) => {
49
+ return { draco };
50
+ });
51
+ }
52
+ else {
53
+ // If not, dynamically load the WASM script from our CDN
54
+ loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);
55
+ }
56
+ return await loadEncoderPromise;
44
57
  }
58
+ // DRACO DECODER LOADING
45
59
  async function loadDracoDecoder(options) {
46
- let DracoDecoderModule;
47
- let wasmBinary;
48
- switch (options.draco && options.draco.decoderType) {
49
- case 'js':
50
- DracoDecoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER);
51
- break;
52
- case 'wasm':
53
- default:
54
- [DracoDecoderModule, wasmBinary] = await Promise.all([await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.DECODER), await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM], 'draco', options, DRACO_EXTERNAL_LIBRARIES.DECODER_WASM)]);
55
- }
56
- DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
57
- return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
60
+ let DracoDecoderModule;
61
+ let wasmBinary;
62
+ switch (options.draco && options.draco.decoderType) {
63
+ case 'js':
64
+ DracoDecoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER);
65
+ break;
66
+ case 'wasm':
67
+ default:
68
+ [DracoDecoderModule, wasmBinary] = await Promise.all([
69
+ await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.DECODER),
70
+ await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM], 'draco', options, DRACO_EXTERNAL_LIBRARIES.DECODER_WASM)
71
+ ]);
72
+ }
73
+ // Depends on how import happened...
74
+ // @ts-ignore
75
+ DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
76
+ return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
58
77
  }
59
78
  function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
60
- const options = {};
61
- if (wasmBinary) {
62
- options.wasmBinary = wasmBinary;
63
- }
64
- return new Promise(resolve => {
65
- DracoDecoderModule({
66
- ...options,
67
- onModuleLoaded: draco => resolve({
68
- draco
69
- })
79
+ const options = {};
80
+ if (wasmBinary) {
81
+ options.wasmBinary = wasmBinary;
82
+ }
83
+ return new Promise((resolve) => {
84
+ DracoDecoderModule({
85
+ ...options,
86
+ onModuleLoaded: (draco) => resolve({ draco }) // Module is Promise-like. Wrap in object to avoid loop.
87
+ });
70
88
  });
71
- });
72
89
  }
90
+ // ENCODER
73
91
  async function loadDracoEncoder(options) {
74
- let DracoEncoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.ENCODER);
75
- DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
76
- return new Promise(resolve => {
77
- DracoEncoderModule({
78
- onModuleLoaded: draco => resolve({
79
- draco
80
- })
92
+ let DracoEncoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.ENCODER);
93
+ // @ts-ignore
94
+ DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
95
+ return new Promise((resolve) => {
96
+ DracoEncoderModule({
97
+ onModuleLoaded: (draco) => resolve({ draco }) // Module is Promise-like. Wrap in object to avoid loop.
98
+ });
81
99
  });
82
- });
83
100
  }
84
- //# sourceMappingURL=draco-module-loader.js.map
@@ -1,6 +1,6 @@
1
1
  import type { TypedArray, MeshAttribute, MeshGeometry } from '@loaders.gl/schema';
2
- import type { Draco3D, Decoder, Mesh, PointCloud, PointAttribute, Metadata, MetadataQuerier } from '../draco3d/draco3d-types';
3
- import type { DracoMesh, DracoLoaderData, DracoAttribute, DracoMetadataEntry, DracoQuantizationTransform, DracoOctahedronTransform } from './draco-types';
2
+ import type { Draco3D, Decoder, Mesh, PointCloud, PointAttribute, Metadata, MetadataQuerier } from "../draco3d/draco3d-types.js";
3
+ import type { DracoMesh, DracoLoaderData, DracoAttribute, DracoMetadataEntry, DracoQuantizationTransform, DracoOctahedronTransform } from "./draco-types.js";
4
4
  /**
5
5
  * @param topology - How triangle indices should be generated (mesh only)
6
6
  * @param attributeNameEntry
@@ -1 +1 @@
1
- {"version":3,"file":"draco-parser.d.ts","sourceRoot":"","sources":["../../src/lib/draco-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draco-parser.d.ts","sourceRoot":"","sources":["../../src/lib/draco-parser.ts"],"names":[],"mappings":"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"}