@loaders.gl/draco 4.4.0-alpha.2 → 4.4.0-alpha.9

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 (61) hide show
  1. package/dist/dist.dev.js +110 -26
  2. package/dist/dist.min.js +6 -6
  3. package/dist/draco-arrow-loader.d.ts +1 -1
  4. package/dist/draco-arrow-loader.js +1 -0
  5. package/dist/draco-arrow-loader.js.map +1 -0
  6. package/dist/draco-format.js +1 -0
  7. package/dist/draco-format.js.map +1 -0
  8. package/dist/draco-loader.d.ts +4 -4
  9. package/dist/draco-loader.d.ts.map +1 -1
  10. package/dist/draco-loader.js +2 -1
  11. package/dist/draco-loader.js.map +1 -0
  12. package/dist/draco-worker-node.js +197 -91
  13. package/dist/draco-worker-node.js.map +4 -4
  14. package/dist/draco-worker.js +98 -26
  15. package/dist/draco-worker.js.map +2 -2
  16. package/dist/draco-writer-worker-node.js +158 -72
  17. package/dist/draco-writer-worker-node.js.map +4 -4
  18. package/dist/draco-writer-worker.js +60 -7
  19. package/dist/draco-writer-worker.js.map +2 -2
  20. package/dist/draco-writer.js +2 -1
  21. package/dist/draco-writer.js.map +1 -0
  22. package/dist/draco3d/draco3d-types.js +1 -0
  23. package/dist/draco3d/draco3d-types.js.map +1 -0
  24. package/dist/index.cjs +49 -11
  25. package/dist/index.cjs.map +3 -3
  26. package/dist/index.js +1 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/lib/draco-builder.js +1 -0
  29. package/dist/lib/draco-builder.js.map +1 -0
  30. package/dist/lib/draco-module-loader.d.ts +3 -2
  31. package/dist/lib/draco-module-loader.d.ts.map +1 -1
  32. package/dist/lib/draco-module-loader.js +53 -10
  33. package/dist/lib/draco-module-loader.js.map +1 -0
  34. package/dist/lib/draco-parser.js +1 -0
  35. package/dist/lib/draco-parser.js.map +1 -0
  36. package/dist/lib/draco-types.js +1 -0
  37. package/dist/lib/draco-types.js.map +1 -0
  38. package/dist/lib/utils/get-draco-schema.js +1 -0
  39. package/dist/lib/utils/get-draco-schema.js.map +1 -0
  40. package/dist/lib/utils/version.js +2 -1
  41. package/dist/lib/utils/version.js.map +1 -0
  42. package/dist/libs/libs/draco_decoder.wasm +0 -0
  43. package/dist/libs/libs/draco_encoder.js +52 -0
  44. package/dist/libs/libs/draco_wasm_wrapper.js +117 -0
  45. package/dist/workers/draco-worker-node.js +1 -0
  46. package/dist/workers/draco-worker-node.js.map +1 -0
  47. package/dist/workers/draco-worker.js +1 -0
  48. package/dist/workers/draco-worker.js.map +1 -0
  49. package/dist/workers/draco-writer-worker-node.cjs +18 -0
  50. package/dist/workers/draco-writer-worker-node.cjs.map +1 -0
  51. package/dist/workers/draco-writer-worker-node.d.cts +2 -0
  52. package/dist/workers/draco-writer-worker-node.d.cts.map +1 -0
  53. package/dist/workers/draco-writer-worker-node.js +1 -0
  54. package/dist/workers/draco-writer-worker-node.js.map +1 -0
  55. package/dist/workers/draco-writer-worker.js +1 -0
  56. package/dist/workers/draco-writer-worker.js.map +1 -0
  57. package/package.json +18 -6
  58. package/src/draco-loader.ts +6 -3
  59. package/src/draco-writer.ts +1 -1
  60. package/src/lib/draco-module-loader.ts +87 -23
  61. package/src/workers/draco-writer-worker-node.cjs +18 -0
package/dist/dist.dev.js CHANGED
@@ -62,14 +62,16 @@ var __exports__ = (() => {
62
62
  var NPM_TAG = "beta";
63
63
 
64
64
  // ../worker-utils/src/lib/env-utils/version.ts
65
+ var warningIssued = false;
65
66
  function getVersion() {
66
67
  if (!globalThis._loadersgl_?.version) {
67
68
  globalThis._loadersgl_ = globalThis._loadersgl_ || {};
68
- if (typeof __VERSION__ === "undefined") {
69
+ if (typeof __VERSION__ === "undefined" && !warningIssued) {
69
70
  console.warn(
70
71
  "loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN."
71
72
  );
72
73
  globalThis._loadersgl_.version = NPM_TAG;
74
+ warningIssued = true;
73
75
  } else {
74
76
  globalThis._loadersgl_.version = __VERSION__;
75
77
  }
@@ -116,6 +118,9 @@ var __exports__ = (() => {
116
118
  return await loadLibraryPromises[libraryUrl];
117
119
  }
118
120
  function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
121
+ if (options?.core) {
122
+ throw new Error("loadLibrary: options.core must be pre-normalized");
123
+ }
119
124
  if (!options.useLocalLibraries && library.startsWith("http")) {
120
125
  return library;
121
126
  }
@@ -141,10 +146,20 @@ var __exports__ = (() => {
141
146
  return await loadAsArrayBuffer(libraryUrl);
142
147
  }
143
148
  if (!isBrowser) {
149
+ const { requireFromFile } = globalThis.loaders || {};
144
150
  try {
145
- const { requireFromFile } = globalThis.loaders || {};
146
- return await requireFromFile?.(libraryUrl);
151
+ const result = await requireFromFile?.(libraryUrl);
152
+ if (result || !libraryUrl.includes("/dist/libs/")) {
153
+ return result;
154
+ }
155
+ return await requireFromFile?.(libraryUrl.replace("/dist/libs/", "/src/libs/"));
147
156
  } catch (error) {
157
+ if (libraryUrl.includes("/dist/libs/")) {
158
+ try {
159
+ return await requireFromFile?.(libraryUrl.replace("/dist/libs/", "/src/libs/"));
160
+ } catch {
161
+ }
162
+ }
148
163
  console.error(error);
149
164
  return null;
150
165
  }
@@ -180,7 +195,14 @@ var __exports__ = (() => {
180
195
  const response = await fetch(url);
181
196
  return await response.arrayBuffer();
182
197
  }
183
- return await readFileAsArrayBuffer(url);
198
+ try {
199
+ return await readFileAsArrayBuffer(url);
200
+ } catch {
201
+ if (url.includes("/dist/libs/")) {
202
+ return await readFileAsArrayBuffer(url.replace("/dist/libs/", "/src/libs/"));
203
+ }
204
+ throw new Error(`Failed to load ArrayBuffer from ${url}`);
205
+ }
184
206
  }
185
207
  async function loadAsText(url) {
186
208
  const { readFileAsText } = globalThis.loaders || {};
@@ -188,7 +210,14 @@ var __exports__ = (() => {
188
210
  const response = await fetch(url);
189
211
  return await response.text();
190
212
  }
191
- return await readFileAsText(url);
213
+ try {
214
+ return await readFileAsText(url);
215
+ } catch {
216
+ if (url.includes("/dist/libs/")) {
217
+ return await readFileAsText(url.replace("/dist/libs/", "/src/libs/"));
218
+ }
219
+ throw new Error(`Failed to load text from ${url}`);
220
+ }
192
221
  }
193
222
 
194
223
  // src/lib/draco-module-loader.ts
@@ -213,14 +242,14 @@ var __exports__ = (() => {
213
242
  };
214
243
  var loadDecoderPromise;
215
244
  var loadEncoderPromise;
216
- async function loadDracoDecoderModule(options) {
245
+ async function loadDracoDecoderModule(options = {}, type) {
217
246
  const modules = options.modules || {};
218
247
  if (modules.draco3d) {
219
248
  loadDecoderPromise ||= modules.draco3d.createDecoderModule({}).then((draco) => {
220
249
  return { draco };
221
250
  });
222
251
  } else {
223
- loadDecoderPromise ||= loadDracoDecoder(options);
252
+ loadDecoderPromise ||= loadDracoDecoder(options, type);
224
253
  }
225
254
  return await loadDecoderPromise;
226
255
  }
@@ -235,10 +264,21 @@ var __exports__ = (() => {
235
264
  }
236
265
  return await loadEncoderPromise;
237
266
  }
238
- async function loadDracoDecoder(options) {
267
+ function getLibraryExport(library, exportName) {
268
+ if (library && typeof library === "object") {
269
+ if (library.default) {
270
+ return library.default;
271
+ }
272
+ if (library[exportName]) {
273
+ return library[exportName];
274
+ }
275
+ }
276
+ return library;
277
+ }
278
+ async function loadDracoDecoder(options, type) {
239
279
  let DracoDecoderModule;
240
280
  let wasmBinary;
241
- switch (options.draco && options.draco.decoderType) {
281
+ switch (type) {
242
282
  case "js":
243
283
  DracoDecoderModule = await loadLibrary(
244
284
  DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],
@@ -249,25 +289,52 @@ var __exports__ = (() => {
249
289
  break;
250
290
  case "wasm":
251
291
  default:
252
- [DracoDecoderModule, wasmBinary] = await Promise.all([
253
- await loadLibrary(
254
- DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
255
- "draco",
256
- options,
257
- DRACO_EXTERNAL_LIBRARIES.DECODER
258
- ),
259
- await loadLibrary(
260
- DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
261
- "draco",
262
- options,
263
- DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
264
- )
265
- ]);
266
- }
292
+ try {
293
+ [DracoDecoderModule, wasmBinary] = await Promise.all([
294
+ await loadLibrary(
295
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
296
+ "draco",
297
+ options,
298
+ DRACO_EXTERNAL_LIBRARIES.DECODER
299
+ ),
300
+ await loadLibrary(
301
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
302
+ "draco",
303
+ options,
304
+ DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
305
+ )
306
+ ]);
307
+ } catch {
308
+ DracoDecoderModule = null;
309
+ wasmBinary = null;
310
+ }
311
+ }
312
+ DracoDecoderModule = getLibraryExport(DracoDecoderModule, "DracoDecoderModule");
267
313
  DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
314
+ if (!DracoDecoderModule && !isBrowser) {
315
+ [DracoDecoderModule, wasmBinary] = await Promise.all([
316
+ await loadLibrary(
317
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
318
+ "draco",
319
+ { ...options, useLocalLibraries: true },
320
+ DRACO_EXTERNAL_LIBRARIES.DECODER
321
+ ),
322
+ await loadLibrary(
323
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
324
+ "draco",
325
+ { ...options, useLocalLibraries: true },
326
+ DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
327
+ )
328
+ ]);
329
+ DracoDecoderModule = getLibraryExport(DracoDecoderModule, "DracoDecoderModule");
330
+ DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
331
+ }
268
332
  return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
269
333
  }
270
334
  function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
335
+ if (typeof DracoDecoderModule !== "function") {
336
+ throw new Error("DracoDecoderModule could not be loaded");
337
+ }
271
338
  const options = {};
272
339
  if (wasmBinary) {
273
340
  options.wasmBinary = wasmBinary;
@@ -287,7 +354,21 @@ var __exports__ = (() => {
287
354
  options,
288
355
  DRACO_EXTERNAL_LIBRARIES.ENCODER
289
356
  );
357
+ DracoEncoderModule = getLibraryExport(DracoEncoderModule, "DracoEncoderModule");
290
358
  DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
359
+ if (!DracoEncoderModule && !isBrowser) {
360
+ DracoEncoderModule = await loadLibrary(
361
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER],
362
+ "draco",
363
+ { ...options, useLocalLibraries: true },
364
+ DRACO_EXTERNAL_LIBRARIES.ENCODER
365
+ );
366
+ DracoEncoderModule = getLibraryExport(DracoEncoderModule, "DracoEncoderModule");
367
+ DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
368
+ }
369
+ if (typeof DracoEncoderModule !== "function") {
370
+ throw new Error("DracoEncoderModule could not be loaded");
371
+ }
291
372
  return new Promise((resolve) => {
292
373
  DracoEncoderModule({
293
374
  onModuleLoaded: (draco) => resolve({ draco })
@@ -663,7 +744,7 @@ var __exports__ = (() => {
663
744
  encode
664
745
  };
665
746
  async function encode(data, options = {}) {
666
- const { draco } = await loadDracoEncoderModule(options);
747
+ const { draco } = await loadDracoEncoderModule(options.core || {});
667
748
  const dracoBuilder = new DracoBuilder(draco);
668
749
  try {
669
750
  return dracoBuilder.encodeSync(data, options.draco);
@@ -13212,7 +13293,10 @@ return true;`);
13212
13293
  parse
13213
13294
  };
13214
13295
  async function parse(arrayBuffer, options) {
13215
- const { draco } = await loadDracoDecoderModule(options);
13296
+ const { draco } = await loadDracoDecoderModule(
13297
+ options?.core,
13298
+ options?.draco?.decoderType || "wasm"
13299
+ );
13216
13300
  const dracoParser = new DracoParser(draco);
13217
13301
  try {
13218
13302
  return dracoParser.parseSync(arrayBuffer, options?.draco);