@loaders.gl/textures 4.0.0-alpha.8 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/basis-worker-node.js +91 -79
  2. package/dist/basis-worker.js +66 -38
  3. package/dist/compressed-texture-loader.d.ts +2 -35
  4. package/dist/compressed-texture-loader.d.ts.map +1 -1
  5. package/dist/compressed-texture-worker.js +75 -47
  6. package/dist/crunch-loader.d.ts +9 -17
  7. package/dist/crunch-loader.d.ts.map +1 -1
  8. package/dist/crunch-worker.js +53 -25
  9. package/dist/dist.min.js +99 -55
  10. package/dist/es5/compressed-texture-loader.js +15 -17
  11. package/dist/es5/compressed-texture-loader.js.map +1 -1
  12. package/dist/es5/crunch-loader.js +1 -3
  13. package/dist/es5/crunch-loader.js.map +1 -1
  14. package/dist/es5/index.js +14 -0
  15. package/dist/es5/index.js.map +1 -1
  16. package/dist/es5/ktx2-basis-writer.js +5 -5
  17. package/dist/es5/ktx2-basis-writer.js.map +1 -1
  18. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +6 -5
  19. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  20. package/dist/es5/lib/parsers/basis-module-loader.js +26 -21
  21. package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
  22. package/dist/es5/lib/parsers/crunch-module-loader.js +6 -1
  23. package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
  24. package/dist/es5/lib/parsers/parse-basis.js +7 -7
  25. package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
  26. package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
  27. package/dist/es5/lib/utils/version.js +1 -1
  28. package/dist/es5/lib/utils/version.js.map +1 -1
  29. package/dist/es5/workers/compressed-texture-worker.js.map +1 -1
  30. package/dist/es5/workers/ktx2-basis-writer-worker-node.js.map +1 -1
  31. package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -1
  32. package/dist/esm/compressed-texture-loader.js +10 -11
  33. package/dist/esm/compressed-texture-loader.js.map +1 -1
  34. package/dist/esm/crunch-loader.js +0 -1
  35. package/dist/esm/crunch-loader.js.map +1 -1
  36. package/dist/esm/index.js +2 -0
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/ktx2-basis-writer.js +6 -5
  39. package/dist/esm/ktx2-basis-writer.js.map +1 -1
  40. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +1 -1
  41. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  42. package/dist/esm/lib/parsers/basis-module-loader.js +13 -10
  43. package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
  44. package/dist/esm/lib/parsers/crunch-module-loader.js +4 -1
  45. package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
  46. package/dist/esm/lib/parsers/parse-basis.js +3 -3
  47. package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
  48. package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
  49. package/dist/esm/lib/utils/version.js +1 -1
  50. package/dist/esm/lib/utils/version.js.map +1 -1
  51. package/dist/esm/workers/compressed-texture-worker.js.map +1 -1
  52. package/dist/esm/workers/ktx2-basis-writer-worker-node.js.map +1 -1
  53. package/dist/esm/workers/ktx2-basis-writer-worker.js.map +1 -1
  54. package/dist/index.d.ts +2 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/ktx2-basis-writer-worker-node.js +86 -72
  57. package/dist/ktx2-basis-writer-worker.js +61 -31
  58. package/dist/ktx2-basis-writer.d.ts +8 -7
  59. package/dist/ktx2-basis-writer.d.ts.map +1 -1
  60. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -1
  61. package/dist/lib/parsers/basis-module-loader.d.ts +11 -1
  62. package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -1
  63. package/dist/lib/parsers/crunch-module-loader.d.ts +4 -0
  64. package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -1
  65. package/dist/lib/texture-api/deep-load.d.ts.map +1 -1
  66. package/dist/npy-worker.js +9 -4
  67. package/dist/workers/crunch-worker.d.ts +13 -9
  68. package/dist/workers/crunch-worker.d.ts.map +1 -1
  69. package/package.json +7 -7
  70. package/src/compressed-texture-loader.ts +14 -17
  71. package/src/crunch-loader.ts +10 -7
  72. package/src/index.ts +4 -0
  73. package/src/ktx2-basis-writer.ts +14 -13
  74. package/src/lib/encoders/encode-ktx2-basis-texture.ts +6 -1
  75. package/src/lib/parsers/basis-module-loader.ts +19 -16
  76. package/src/lib/parsers/crunch-module-loader.ts +6 -1
  77. package/src/lib/parsers/parse-basis.ts +3 -3
  78. package/src/lib/texture-api/deep-load.ts +0 -1
  79. package/src/workers/compressed-texture-worker.ts +1 -0
  80. package/src/workers/ktx2-basis-writer-worker-node.ts +2 -2
  81. package/src/workers/ktx2-basis-writer-worker.ts +2 -2
  82. package/dist/basis-loader.js +0 -37
  83. package/dist/bundle.js +0 -5
  84. package/dist/compressed-texture-loader.js +0 -64
  85. package/dist/compressed-texture-writer.js +0 -34
  86. package/dist/crunch-loader.js +0 -25
  87. package/dist/index.js +0 -52
  88. package/dist/ktx2-basis-writer.js +0 -26
  89. package/dist/lib/encoders/encode-ktx.js +0 -10
  90. package/dist/lib/encoders/encode-ktx2-basis-texture.js +0 -41
  91. package/dist/lib/encoders/encode-texture.js +0 -27
  92. package/dist/lib/gl-extensions.js +0 -72
  93. package/dist/lib/parsers/basis-module-loader.js +0 -114
  94. package/dist/lib/parsers/crunch-module-loader.js +0 -35
  95. package/dist/lib/parsers/parse-basis.js +0 -245
  96. package/dist/lib/parsers/parse-compressed-texture.js +0 -26
  97. package/dist/lib/parsers/parse-crunch.js +0 -106
  98. package/dist/lib/parsers/parse-dds.js +0 -108
  99. package/dist/lib/parsers/parse-ktx.js +0 -46
  100. package/dist/lib/parsers/parse-npy.js +0 -81
  101. package/dist/lib/parsers/parse-pvr.js +0 -250
  102. package/dist/lib/texture-api/async-deep-map.js +0 -41
  103. package/dist/lib/texture-api/deep-load.js +0 -16
  104. package/dist/lib/texture-api/generate-url.js +0 -17
  105. package/dist/lib/texture-api/load-image-array.js +0 -21
  106. package/dist/lib/texture-api/load-image-cube.js +0 -47
  107. package/dist/lib/texture-api/load-image.js +0 -43
  108. package/dist/lib/texture-api/texture-api-types.js +0 -3
  109. package/dist/lib/utils/extract-mipmap-images.js +0 -50
  110. package/dist/lib/utils/ktx-format-helper.js +0 -125
  111. package/dist/lib/utils/texture-formats.js +0 -51
  112. package/dist/lib/utils/version.js +0 -8
  113. package/dist/npy-loader.js +0 -31
  114. package/dist/types.js +0 -1
  115. package/dist/workers/basis-worker-node.js +0 -7
  116. package/dist/workers/basis-worker.js +0 -5
  117. package/dist/workers/compressed-texture-worker.js +0 -5
  118. package/dist/workers/crunch-worker.js +0 -14
  119. package/dist/workers/ktx2-basis-writer-worker-node.js +0 -28
  120. package/dist/workers/ktx2-basis-writer-worker.js +0 -26
  121. package/dist/workers/npy-worker.js +0 -5
@@ -28,10 +28,19 @@
28
28
  });
29
29
 
30
30
  // ../worker-utils/src/lib/env-utils/version.ts
31
- var VERSION = true ? "4.0.0-alpha.8" : DEFAULT_VERSION;
32
- if (false) {
33
- console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
31
+ function getVersion() {
32
+ if (!globalThis._loadersgl_?.version) {
33
+ globalThis._loadersgl_ = globalThis._loadersgl_ || {};
34
+ if (false) {
35
+ console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
36
+ globalThis._loadersgl_.version = NPM_TAG;
37
+ } else {
38
+ globalThis._loadersgl_.version = "4.0.0-beta.1";
39
+ }
40
+ }
41
+ return globalThis._loadersgl_.version;
34
42
  }
43
+ var VERSION = getVersion();
35
44
 
36
45
  // ../worker-utils/src/lib/env-utils/assert.ts
37
46
  function assert(condition, message) {
@@ -168,40 +177,38 @@
168
177
 
169
178
  // ../worker-utils/src/lib/library-utils/library-utils.ts
170
179
  var node = __toModule(require_require_utils());
171
- var LATEST = "beta";
172
- var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
173
180
  var loadLibraryPromises = {};
174
- async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
181
+ async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
175
182
  if (moduleName) {
176
- libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
183
+ libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
177
184
  }
178
185
  loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
179
186
  return await loadLibraryPromises[libraryUrl];
180
187
  }
181
- function getLibraryUrl(library, moduleName, options) {
182
- if (library.startsWith("http")) {
188
+ function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
189
+ if (!options.useLocalLibraries && library.startsWith("http")) {
183
190
  return library;
184
191
  }
192
+ libraryName = libraryName || library;
185
193
  const modules = options.modules || {};
186
- if (modules[library]) {
187
- return modules[library];
194
+ if (modules[libraryName]) {
195
+ return modules[libraryName];
188
196
  }
189
197
  if (!isBrowser) {
190
- return `modules/${moduleName}/dist/libs/${library}`;
198
+ return `modules/${moduleName}/dist/libs/${libraryName}`;
191
199
  }
192
200
  if (options.CDN) {
193
201
  assert(options.CDN.startsWith("http"));
194
- return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
202
+ return `${options.CDN}/${moduleName}@${VERSION}/dist/libs/${libraryName}`;
195
203
  }
196
204
  if (isWorker) {
197
- return `../src/libs/${library}`;
205
+ return `../src/libs/${libraryName}`;
198
206
  }
199
- return `modules/${moduleName}/src/libs/${library}`;
207
+ return `modules/${moduleName}/src/libs/${libraryName}`;
200
208
  }
201
209
  async function loadLibraryFromFile(libraryUrl) {
202
210
  if (libraryUrl.endsWith("wasm")) {
203
- const response2 = await fetch(libraryUrl);
204
- return await response2.arrayBuffer();
211
+ return await loadAsArrayBuffer(libraryUrl);
205
212
  }
206
213
  if (!isBrowser) {
207
214
  try {
@@ -213,8 +220,7 @@
213
220
  if (isWorker) {
214
221
  return importScripts(libraryUrl);
215
222
  }
216
- const response = await fetch(libraryUrl);
217
- const scriptSource = await response.text();
223
+ const scriptSource = await loadAsText(libraryUrl);
218
224
  return loadLibraryFromString(scriptSource, libraryUrl);
219
225
  }
220
226
  function loadLibraryFromString(scriptSource, id) {
@@ -235,14 +241,31 @@
235
241
  document.body.appendChild(script);
236
242
  return null;
237
243
  }
244
+ async function loadAsArrayBuffer(url) {
245
+ if (!node.readFileAsArrayBuffer || url.startsWith("http")) {
246
+ const response = await fetch(url);
247
+ return await response.arrayBuffer();
248
+ }
249
+ return await node.readFileAsArrayBuffer(url);
250
+ }
251
+ async function loadAsText(url) {
252
+ if (!node.readFileAsText || url.startsWith("http")) {
253
+ const response = await fetch(url);
254
+ return await response.text();
255
+ }
256
+ return await node.readFileAsText(url);
257
+ }
238
258
 
239
259
  // src/lib/utils/version.ts
240
- var VERSION3 = true ? "4.0.0-alpha.8" : "beta";
260
+ var VERSION2 = true ? "4.0.0-beta.1" : "beta";
241
261
 
242
262
  // src/lib/parsers/basis-module-loader.ts
243
- var VERSION4 = true ? "4.0.0-alpha.8" : "beta";
244
- var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
245
- var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
263
+ var BASIS_EXTERNAL_LIBRARIES = {
264
+ TRANSCODER: "basis_transcoder.js",
265
+ TRANSCODER_WASM: "basis_transcoder.wasm",
266
+ ENCODER: "basis_encoder.js",
267
+ ENCODER_WASM: "basis_encoder.wasm"
268
+ };
246
269
  var loadBasisEncoderPromise;
247
270
  async function loadBasisEncoderModule(options) {
248
271
  const modules = options.modules || {};
@@ -256,8 +279,8 @@
256
279
  let BASIS_ENCODER = null;
257
280
  let wasmBinary = null;
258
281
  [BASIS_ENCODER, wasmBinary] = await Promise.all([
259
- await loadLibrary(BASIS_CDN_ENCODER_JS, "textures", options),
260
- await loadLibrary(BASIS_CDN_ENCODER_WASM, "textures", options)
282
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
283
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
261
284
  ]);
262
285
  BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
263
286
  return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
@@ -278,7 +301,12 @@
278
301
 
279
302
  // src/lib/encoders/encode-ktx2-basis-texture.ts
280
303
  async function encodeKTX2BasisTexture(image, options = {}) {
281
- const { useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false } = options;
304
+ const {
305
+ useSRGB = false,
306
+ qualityLevel = 10,
307
+ encodeUASTC = false,
308
+ mipmaps = false
309
+ } = options?.["ktx2-basis-writer"] || {};
282
310
  const { BasisEncoder } = await loadBasisEncoderModule(options);
283
311
  const basisEncoder = new BasisEncoder();
284
312
  try {
@@ -308,13 +336,15 @@
308
336
  name: "Basis Universal Supercompressed GPU Texture",
309
337
  id: "ktx2-basis-writer",
310
338
  module: "textures",
311
- version: VERSION3,
339
+ version: VERSION2,
312
340
  extensions: ["ktx2"],
313
341
  options: {
314
- useSRGB: false,
315
- qualityLevel: 10,
316
- encodeUASTC: false,
317
- mipmaps: false
342
+ ["ktx2-basis-writer"]: {
343
+ useSRGB: false,
344
+ qualityLevel: 10,
345
+ encodeUASTC: false,
346
+ mipmaps: false
347
+ }
318
348
  },
319
349
  encode: encodeKTX2BasisTexture
320
350
  };
@@ -1,16 +1,17 @@
1
- import type { Writer } from '@loaders.gl/loader-utils';
1
+ import type { Writer, WriterOptions } from '@loaders.gl/loader-utils';
2
2
  import type { ImageDataType } from '@loaders.gl/images';
3
3
  /** @todo should be in basis sub-object */
4
- export type KTX2BasisWriterOptions = {
5
- useSRGB?: boolean;
6
- qualityLevel?: number;
7
- encodeUASTC?: boolean;
8
- mipmaps?: boolean;
4
+ export type KTX2BasisWriterOptions = WriterOptions & {
5
+ ['ktx2-basis-writer']?: {
6
+ useSRGB?: boolean;
7
+ qualityLevel?: number;
8
+ encodeUASTC?: boolean;
9
+ mipmaps?: boolean;
10
+ };
9
11
  };
10
12
  /**
11
13
  * Basis Universal Supercompressed GPU Texture.
12
14
  * Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/textureSetDefinitionFormat.cmn.md
13
15
  */
14
16
  export declare const KTX2BasisWriter: Writer<ImageDataType, unknown, KTX2BasisWriterOptions>;
15
- export declare const _TypecheckKTX2TextureWriter: Writer;
16
17
  //# sourceMappingURL=ktx2-basis-writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ktx2-basis-writer.d.ts","sourceRoot":"","sources":["../src/ktx2-basis-writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGtD,0CAA0C;AAC1C,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,sBAAsB,CAelF,CAAC;AAGF,eAAO,MAAM,2BAA2B,EAAE,MAAwB,CAAC"}
1
+ {"version":3,"file":"ktx2-basis-writer.d.ts","sourceRoot":"","sources":["../src/ktx2-basis-writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGtD,0CAA0C;AAC1C,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,CAAC,mBAAmB,CAAC,CAAC,EAAE;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,sBAAsB,CAiBlF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"encode-ktx2-basis-texture.d.ts","sourceRoot":"","sources":["../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGtD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,EACpB,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC,WAAW,CAAC,CA8BtB"}
1
+ {"version":3,"file":"encode-ktx2-basis-texture.d.ts","sourceRoot":"","sources":["../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGtD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,EACpB,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC,WAAW,CAAC,CAmCtB"}
@@ -1,9 +1,19 @@
1
+ export declare const BASIS_EXTERNAL_LIBRARIES: {
2
+ /** Basis transcoder, javascript wrapper part */
3
+ TRANSCODER: string;
4
+ /** Basis transcoder, compiled web assembly part */
5
+ TRANSCODER_WASM: string;
6
+ /** Basis encoder, javascript wrapper part */
7
+ ENCODER: string;
8
+ /** Basis encoder, compiled web assembly part */
9
+ ENCODER_WASM: string;
10
+ };
1
11
  /**
2
12
  * Loads wasm transcoder module
3
13
  * @param options
4
14
  * @returns {BasisFile} promise
5
15
  */
6
- export declare function loadBasisTrascoderModule(options: any): Promise<any>;
16
+ export declare function loadBasisTranscoderModule(options: any): Promise<any>;
7
17
  /**
8
18
  * Loads wasm encoder module
9
19
  * @param options
@@ -1 +1 @@
1
- {"version":3,"file":"basis-module-loader.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/basis-module-loader.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,KAAA,gBAQrD;AA+CD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,KAAA,gBAQnD"}
1
+ {"version":3,"file":"basis-module-loader.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/basis-module-loader.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB;IACnC,gDAAgD;;IAEhD,mDAAmD;;IAEnD,6CAA6C;;IAE7C,gDAAgD;;CAEjD,CAAC;AAIF;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,KAAA,gBAQtD;AA+CD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,KAAA,gBAQnD"}
@@ -1,3 +1,7 @@
1
+ export declare const CRUNCH_EXTERNAL_LIBRARIES: {
2
+ /** Crunch decoder library. It is used as dynamically imported script */
3
+ DECODER: string;
4
+ };
1
5
  /**
2
6
  * Load crunch decoder module
3
7
  * @param options - loader options
@@ -1 +1 @@
1
- {"version":3,"file":"crunch-module-loader.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/crunch-module-loader.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC,CAO5D"}
1
+ {"version":3,"file":"crunch-module-loader.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/crunch-module-loader.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB;IACpC,wEAAwE;;CAEzE,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC,CAO5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"deep-load.d.ts","sourceRoot":"","sources":["../../../src/lib/texture-api/deep-load.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9C,MAAM,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAErF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,oBAEhF;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAK7F"}
1
+ {"version":3,"file":"deep-load.d.ts","sourceRoot":"","sources":["../../../src/lib/texture-api/deep-load.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9C,MAAM,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAErF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,oBAEhF;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAI7F"}
@@ -1,6 +1,6 @@
1
1
  (() => {
2
2
  // src/lib/utils/version.ts
3
- var VERSION = true ? "4.0.0-alpha.8" : "beta";
3
+ var VERSION = true ? "4.0.0-beta.1" : "beta";
4
4
 
5
5
  // src/lib/parsers/parse-npy.ts
6
6
  var a = new Uint32Array([305419896]);
@@ -206,7 +206,7 @@
206
206
  options,
207
207
  context: {
208
208
  ...context,
209
- parse: parseOnMainThread
209
+ _parse: parseOnMainThread
210
210
  }
211
211
  });
212
212
  WorkerBody.postMessage("done", { result });
@@ -219,7 +219,7 @@
219
219
  }
220
220
  };
221
221
  }
222
- function parseOnMainThread(arrayBuffer, options) {
222
+ function parseOnMainThread(arrayBuffer, loader, options, context) {
223
223
  return new Promise((resolve, reject) => {
224
224
  const id = requestId++;
225
225
  const onMessage = (type, payload2) => {
@@ -243,7 +243,12 @@
243
243
  WorkerBody.postMessage("process", payload);
244
244
  });
245
245
  }
246
- async function parseData({ loader, arrayBuffer, options, context }) {
246
+ async function parseData({
247
+ loader,
248
+ arrayBuffer,
249
+ options,
250
+ context
251
+ }) {
247
252
  let data;
248
253
  let parser;
249
254
  if (loader.parseSync || loader.parse) {
@@ -4,18 +4,22 @@ import { parseCrunch } from '../lib/parsers/parse-crunch';
4
4
  */
5
5
  export declare const CrunchLoaderWithParser: {
6
6
  parse: typeof parseCrunch;
7
- id: string;
7
+ dataType?: import("@loaders.gl/schema").TextureLevel[] | undefined;
8
+ batchType?: undefined;
9
+ options: import("../crunch-loader").CrunchLoaderOptions;
10
+ deprecatedOptions?: Record<string, string | Record<string, string>> | undefined;
8
11
  name: string;
12
+ id: string;
9
13
  module: string;
10
- version: any;
11
- worker: boolean;
14
+ version: string;
15
+ worker?: string | boolean | undefined;
16
+ category?: string | undefined;
12
17
  extensions: string[];
13
18
  mimeTypes: string[];
14
- binary: boolean;
15
- options: {
16
- crunch: {
17
- libraryPath: string;
18
- };
19
- };
19
+ binary?: boolean | undefined;
20
+ text?: boolean | undefined;
21
+ tests?: (string | ArrayBuffer | ((ArrayBuffer: ArrayBuffer) => boolean))[] | undefined;
22
+ supported?: boolean | undefined;
23
+ testText?: ((string: string) => boolean) | undefined;
20
24
  };
21
25
  //# sourceMappingURL=crunch-worker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crunch-worker.d.ts","sourceRoot":"","sources":["../../src/workers/crunch-worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;CAGlC,CAAC"}
1
+ {"version":3,"file":"crunch-worker.d.ts","sourceRoot":"","sources":["../../src/workers/crunch-worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;CAGlC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/textures",
3
- "version": "4.0.0-alpha.8",
3
+ "version": "4.0.0-beta.1",
4
4
  "description": "Framework-independent loaders for compressed and super compressed (basis) textures ",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -45,15 +45,15 @@
45
45
  "build-crunch-worker": "esbuild src/workers/crunch-worker.ts --outfile=dist/crunch-worker.js --target=esnext --bundle --define:__VERSION__=\\\"$npm_package_version\\\""
46
46
  },
47
47
  "dependencies": {
48
- "@loaders.gl/images": "4.0.0-alpha.8",
49
- "@loaders.gl/loader-utils": "4.0.0-alpha.8",
50
- "@loaders.gl/schema": "4.0.0-alpha.8",
51
- "@loaders.gl/worker-utils": "4.0.0-alpha.8",
48
+ "@loaders.gl/images": "4.0.0-beta.1",
49
+ "@loaders.gl/loader-utils": "4.0.0-beta.1",
50
+ "@loaders.gl/schema": "4.0.0-beta.1",
51
+ "@loaders.gl/worker-utils": "4.0.0-beta.1",
52
52
  "ktx-parse": "^0.0.4",
53
53
  "texture-compressor": "^1.0.2"
54
54
  },
55
55
  "devDependencies": {
56
- "@loaders.gl/polyfills": "4.0.0-alpha.8"
56
+ "@loaders.gl/polyfills": "4.0.0-beta.1"
57
57
  },
58
- "gitHead": "c35d6640c8d26deab99e277a8e698b5174233789"
58
+ "gitHead": "35c625e67132b0784e597d9ddabae8aefea29ff2"
59
59
  }
@@ -10,17 +10,10 @@ export type TextureLoaderOptions = {
10
10
  };
11
11
  };
12
12
 
13
- const DEFAULT_TEXTURE_LOADER_OPTIONS = {
14
- 'compressed-texture': {
15
- libraryPath: 'libs/',
16
- useBasis: false
17
- }
18
- };
19
-
20
13
  /**
21
14
  * Worker Loader for KTX, DDS, and PVR texture container formats
22
15
  */
23
- export const CompressedTextureWorkerLoader = {
16
+ export const CompressedTextureWorkerLoader: Loader<any, never, TextureLoaderOptions> = {
24
17
  name: 'Texture Containers',
25
18
  id: 'compressed-texture',
26
19
  module: 'textures',
@@ -40,31 +33,35 @@ export const CompressedTextureWorkerLoader = {
40
33
  'application/octet-stream'
41
34
  ],
42
35
  binary: true,
43
- options: DEFAULT_TEXTURE_LOADER_OPTIONS
36
+ options: {
37
+ 'compressed-texture': {
38
+ libraryPath: 'libs/',
39
+ useBasis: false
40
+ }
41
+ }
44
42
  };
45
43
 
46
44
  /**
47
45
  * Loader for KTX, DDS, and PVR texture container formats
48
46
  */
49
- export const CompressedTextureLoader = {
47
+ export const CompressedTextureLoader: LoaderWithParser<any, never, TextureLoaderOptions> = {
50
48
  ...CompressedTextureWorkerLoader,
51
- parse: async (arrayBuffer, options) => {
52
- if (options['compressed-texture'].useBasis) {
49
+ parse: async (arrayBuffer: ArrayBuffer, options?: TextureLoaderOptions) => {
50
+ if (options?.['compressed-texture']?.useBasis) {
51
+ // @ts-expect-error TODO not allowed to modify inputs
53
52
  options.basis = {
54
53
  format: {
55
54
  alpha: 'BC3',
56
55
  noAlpha: 'BC1'
57
56
  },
57
+ // @ts-expect-error TODO not allowed to modify inputs
58
58
  ...options.basis,
59
59
  containerFormat: 'ktx2',
60
60
  module: 'encoder'
61
61
  };
62
- return (await parseBasis(arrayBuffer, options))[0];
62
+ const result = await parseBasis(arrayBuffer, options);
63
+ return result[0];
63
64
  }
64
65
  return parseCompressedTexture(arrayBuffer);
65
66
  }
66
67
  };
67
-
68
- // TYPE TESTS - TODO find a better way than exporting junk
69
- export const _TypecheckCompressedTextureWorkerLoader: Loader = CompressedTextureWorkerLoader;
70
- export const _TypecheckCompressedTextureLoader: LoaderWithParser = CompressedTextureLoader;
@@ -1,10 +1,18 @@
1
- import type {Loader} from '@loaders.gl/loader-utils';
1
+ import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';
2
+ import type {TextureLevel} from '@loaders.gl/schema';
2
3
  import {VERSION} from './lib/utils/version';
3
4
 
5
+ export type CrunchLoaderOptions = LoaderOptions & {
6
+ crunch?: {
7
+ libraryPath?: string;
8
+ };
9
+ };
10
+
4
11
  /**
5
12
  * Worker loader for the Crunch compressed texture container format
13
+ * @note We avoid bundling crunch - it is a rare format and large lib, so we only offer worker loader
6
14
  */
7
- export const CrunchLoader = {
15
+ export const CrunchLoader: Loader<TextureLevel[], never, CrunchLoaderOptions> = {
8
16
  id: 'crunch',
9
17
  name: 'Crunch',
10
18
  module: 'textures',
@@ -19,8 +27,3 @@ export const CrunchLoader = {
19
27
  }
20
28
  }
21
29
  };
22
-
23
- // We avoid bundling crunch - rare format, only offer worker loader
24
-
25
- // TYPE TESTS - TODO find a better way than exporting junk
26
- export const _TypecheckCrunchLoader: Loader = CrunchLoader;
package/src/index.ts CHANGED
@@ -10,6 +10,10 @@ export {CompressedTextureLoader, CompressedTextureWorkerLoader} from './compress
10
10
  export {CrunchLoader} from './crunch-loader';
11
11
  export {NPYLoader, NPYWorkerLoader} from './npy-loader';
12
12
 
13
+ // Module constants
14
+ export {BASIS_EXTERNAL_LIBRARIES} from './lib/parsers/basis-module-loader';
15
+ export {CRUNCH_EXTERNAL_LIBRARIES} from './lib/parsers/crunch-module-loader';
16
+
13
17
  // Writers
14
18
  export {CompressedTextureWriter} from './compressed-texture-writer';
15
19
  export {KTX2BasisWriter} from './ktx2-basis-writer';
@@ -1,16 +1,18 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
- import type {Writer} from '@loaders.gl/loader-utils';
3
+ import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';
4
4
  import {VERSION} from './lib/utils/version';
5
5
  import type {ImageDataType} from '@loaders.gl/images';
6
6
  import {encodeKTX2BasisTexture} from './lib/encoders/encode-ktx2-basis-texture';
7
7
 
8
8
  /** @todo should be in basis sub-object */
9
- export type KTX2BasisWriterOptions = {
10
- useSRGB?: boolean;
11
- qualityLevel?: number;
12
- encodeUASTC?: boolean;
13
- mipmaps?: boolean;
9
+ export type KTX2BasisWriterOptions = WriterOptions & {
10
+ ['ktx2-basis-writer']?: {
11
+ useSRGB?: boolean;
12
+ qualityLevel?: number;
13
+ encodeUASTC?: boolean;
14
+ mipmaps?: boolean;
15
+ };
14
16
  };
15
17
 
16
18
  /**
@@ -25,14 +27,13 @@ export const KTX2BasisWriter: Writer<ImageDataType, unknown, KTX2BasisWriterOpti
25
27
 
26
28
  extensions: ['ktx2'],
27
29
  options: {
28
- useSRGB: false,
29
- qualityLevel: 10,
30
- encodeUASTC: false,
31
- mipmaps: false
30
+ ['ktx2-basis-writer']: {
31
+ useSRGB: false,
32
+ qualityLevel: 10,
33
+ encodeUASTC: false,
34
+ mipmaps: false
35
+ }
32
36
  },
33
37
 
34
38
  encode: encodeKTX2BasisTexture
35
39
  };
36
-
37
- // TYPE TESTS - TODO find a better way than exporting junk
38
- export const _TypecheckKTX2TextureWriter: Writer = KTX2BasisWriter;
@@ -13,7 +13,12 @@ export async function encodeKTX2BasisTexture(
13
13
  options: any = {}
14
14
  ): Promise<ArrayBuffer> {
15
15
  // TODO remove default values after writer options will be normalized like it done in load module.
16
- const {useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false} = options;
16
+ const {
17
+ useSRGB = false,
18
+ qualityLevel = 10,
19
+ encodeUASTC = false,
20
+ mipmaps = false
21
+ } = options?.['ktx2-basis-writer'] || {};
17
22
  const {BasisEncoder} = await loadBasisEncoderModule(options);
18
23
  const basisEncoder = new BasisEncoder();
19
24
 
@@ -1,12 +1,15 @@
1
- // __VERSION__ is injected by babel-plugin-version-inline
2
- // @ts-ignore TS2304: Cannot find name '__VERSION__'.
3
- const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';
4
-
5
- // @ts-nocheck
6
1
  import {loadLibrary} from '@loaders.gl/worker-utils';
7
2
 
8
- const BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION}/dist/libs/basis_encoder.wasm`;
9
- const BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION}/dist/libs/basis_encoder.js`;
3
+ export const BASIS_EXTERNAL_LIBRARIES = {
4
+ /** Basis transcoder, javascript wrapper part */
5
+ TRANSCODER: 'basis_transcoder.js',
6
+ /** Basis transcoder, compiled web assembly part */
7
+ TRANSCODER_WASM: 'basis_transcoder.wasm',
8
+ /** Basis encoder, javascript wrapper part */
9
+ ENCODER: 'basis_encoder.js',
10
+ /** Basis encoder, compiled web assembly part */
11
+ ENCODER_WASM: 'basis_encoder.wasm'
12
+ };
10
13
 
11
14
  let loadBasisTranscoderPromise;
12
15
 
@@ -15,13 +18,13 @@ let loadBasisTranscoderPromise;
15
18
  * @param options
16
19
  * @returns {BasisFile} promise
17
20
  */
18
- export async function loadBasisTrascoderModule(options) {
21
+ export async function loadBasisTranscoderModule(options) {
19
22
  const modules = options.modules || {};
20
23
  if (modules.basis) {
21
24
  return modules.basis;
22
25
  }
23
26
 
24
- loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);
27
+ loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTranscoder(options);
25
28
  return await loadBasisTranscoderPromise;
26
29
  }
27
30
 
@@ -30,19 +33,19 @@ export async function loadBasisTrascoderModule(options) {
30
33
  * @param options
31
34
  * @returns {BasisFile} promise
32
35
  */
33
- async function loadBasisTrascoder(options) {
36
+ async function loadBasisTranscoder(options) {
34
37
  let BASIS = null;
35
38
  let wasmBinary = null;
36
39
 
37
40
  [BASIS, wasmBinary] = await Promise.all([
38
- await loadLibrary('basis_transcoder.js', 'textures', options),
39
- await loadLibrary('basis_transcoder.wasm', 'textures', options)
41
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, 'textures', options),
42
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, 'textures', options)
40
43
  ]);
41
44
 
42
45
  // Depends on how import happened...
43
46
  // @ts-ignore TS2339: Property does not exist on type
44
47
  BASIS = BASIS || globalThis.BASIS;
45
- return await initializeBasisTrascoderModule(BASIS, wasmBinary);
48
+ return await initializeBasisTranscoderModule(BASIS, wasmBinary);
46
49
  }
47
50
 
48
51
  /**
@@ -51,7 +54,7 @@ async function loadBasisTrascoder(options) {
51
54
  * @param wasmBinary - wasm part of the module
52
55
  * @returns {BasisFile} promise
53
56
  */
54
- function initializeBasisTrascoderModule(BasisModule, wasmBinary) {
57
+ function initializeBasisTranscoderModule(BasisModule, wasmBinary) {
55
58
  const options: {wasmBinary?} = {};
56
59
 
57
60
  if (wasmBinary) {
@@ -95,8 +98,8 @@ async function loadBasisEncoder(options) {
95
98
  let wasmBinary = null;
96
99
 
97
100
  [BASIS_ENCODER, wasmBinary] = await Promise.all([
98
- await loadLibrary(BASIS_CDN_ENCODER_JS, 'textures', options),
99
- await loadLibrary(BASIS_CDN_ENCODER_WASM, 'textures', options)
101
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, 'textures', options),
102
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, 'textures', options)
100
103
  ]);
101
104
 
102
105
  // Depends on how import happened...
@@ -1,6 +1,11 @@
1
1
  // @ts-nocheck
2
2
  import {loadLibrary} from '@loaders.gl/worker-utils';
3
3
 
4
+ export const CRUNCH_EXTERNAL_LIBRARIES = {
5
+ /** Crunch decoder library. It is used as dynamically imported script */
6
+ DECODER: 'crunch.js'
7
+ };
8
+
4
9
  /**
5
10
  * Load crunch decoder module
6
11
  * @param options - loader options
@@ -27,7 +32,7 @@ async function loadCrunch(options) {
27
32
  return crunchModule;
28
33
  }
29
34
 
30
- let loadCrunchDecoder = await loadLibrary('crunch.js', 'textures', options);
35
+ let loadCrunchDecoder = await loadLibrary(CRUNCH_EXTERNAL_LIBRARIES.DECODER, 'textures', options);
31
36
 
32
37
  // Depends on how import happened...
33
38
  // @ts-ignore TS2339: Property does not exist on type
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable indent */
2
2
  import type {TextureLevel} from '@loaders.gl/schema';
3
- import {loadBasisEncoderModule, loadBasisTrascoderModule} from './basis-module-loader';
3
+ import {loadBasisEncoderModule, loadBasisTranscoderModule} from './basis-module-loader';
4
4
  import {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';
5
5
  import {getSupportedGPUTextureFormats} from '../utils/texture-formats';
6
6
  import {isKTX} from './parse-ktx';
@@ -86,7 +86,7 @@ export default async function parseBasis(data: ArrayBuffer, options): Promise<Te
86
86
  const fileConstructors = await loadBasisEncoderModule(options);
87
87
  return parseKTX2File(fileConstructors.KTX2File, data, options);
88
88
  }
89
- const {BasisFile} = await loadBasisTrascoderModule(options);
89
+ const {BasisFile} = await loadBasisTranscoderModule(options);
90
90
  return parseBasisFile(BasisFile, data, options);
91
91
  }
92
92
  switch (options.basis.module) {
@@ -101,7 +101,7 @@ export default async function parseBasis(data: ArrayBuffer, options): Promise<Te
101
101
  }
102
102
  case 'transcoder':
103
103
  default:
104
- const {BasisFile} = await loadBasisTrascoderModule(options);
104
+ const {BasisFile} = await loadBasisTranscoderModule(options);
105
105
  return parseBasisFile(BasisFile, data, options);
106
106
  }
107
107
  }