@loaders.gl/textures 4.0.0-alpha.17 → 4.0.0-alpha.19

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 (67) hide show
  1. package/dist/basis-worker-node.js +70 -71
  2. package/dist/basis-worker.js +46 -30
  3. package/dist/compressed-texture-worker.js +46 -30
  4. package/dist/crunch-worker.js +33 -17
  5. package/dist/dist.min.js +74 -37
  6. package/dist/es5/index.js +14 -0
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/ktx2-basis-writer.js +4 -2
  9. package/dist/es5/ktx2-basis-writer.js.map +1 -1
  10. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +6 -5
  11. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  12. package/dist/es5/lib/parsers/basis-module-loader.js +26 -21
  13. package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
  14. package/dist/es5/lib/parsers/crunch-module-loader.js +6 -1
  15. package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
  16. package/dist/es5/lib/parsers/parse-basis.js +7 -7
  17. package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
  18. package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
  19. package/dist/es5/lib/utils/version.js +1 -1
  20. package/dist/es5/workers/ktx2-basis-writer-worker-node.js.map +1 -1
  21. package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -1
  22. package/dist/esm/index.js +2 -0
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/ktx2-basis-writer.js +6 -4
  25. package/dist/esm/ktx2-basis-writer.js.map +1 -1
  26. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +1 -1
  27. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  28. package/dist/esm/lib/parsers/basis-module-loader.js +13 -10
  29. package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
  30. package/dist/esm/lib/parsers/crunch-module-loader.js +4 -1
  31. package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
  32. package/dist/esm/lib/parsers/parse-basis.js +3 -3
  33. package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
  34. package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
  35. package/dist/esm/lib/utils/version.js +1 -1
  36. package/dist/esm/workers/ktx2-basis-writer-worker-node.js.map +1 -1
  37. package/dist/esm/workers/ktx2-basis-writer-worker.js.map +1 -1
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +6 -1
  41. package/dist/ktx2-basis-writer-worker-node.js +73 -67
  42. package/dist/ktx2-basis-writer-worker.js +49 -26
  43. package/dist/ktx2-basis-writer.d.ts +8 -6
  44. package/dist/ktx2-basis-writer.d.ts.map +1 -1
  45. package/dist/ktx2-basis-writer.js +6 -4
  46. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -1
  47. package/dist/lib/encoders/encode-ktx2-basis-texture.js +1 -1
  48. package/dist/lib/parsers/basis-module-loader.d.ts +11 -1
  49. package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -1
  50. package/dist/lib/parsers/basis-module-loader.js +21 -17
  51. package/dist/lib/parsers/crunch-module-loader.d.ts +4 -0
  52. package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -1
  53. package/dist/lib/parsers/crunch-module-loader.js +6 -2
  54. package/dist/lib/parsers/parse-basis.js +2 -2
  55. package/dist/lib/texture-api/deep-load.d.ts.map +1 -1
  56. package/dist/lib/texture-api/deep-load.js +0 -1
  57. package/dist/npy-worker.js +1 -1
  58. package/package.json +7 -7
  59. package/src/index.ts +4 -0
  60. package/src/ktx2-basis-writer.ts +14 -10
  61. package/src/lib/encoders/encode-ktx2-basis-texture.ts +6 -1
  62. package/src/lib/parsers/basis-module-loader.ts +19 -16
  63. package/src/lib/parsers/crunch-module-loader.ts +6 -1
  64. package/src/lib/parsers/parse-basis.ts +3 -3
  65. package/src/lib/texture-api/deep-load.ts +0 -1
  66. package/src/workers/ktx2-basis-writer-worker-node.ts +2 -2
  67. package/src/workers/ktx2-basis-writer-worker.ts +2 -2
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  // ../worker-utils/src/lib/env-utils/version.ts
38
- var VERSION = true ? "4.0.0-alpha.17" : DEFAULT_VERSION;
38
+ var VERSION = true ? "4.0.0-alpha.19" : DEFAULT_VERSION;
39
39
  if (false) {
40
40
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
41
41
  }
@@ -178,37 +178,37 @@
178
178
  var LATEST = "beta";
179
179
  var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
180
180
  var loadLibraryPromises = {};
181
- async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
181
+ async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
182
182
  if (moduleName) {
183
- libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
183
+ libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
184
184
  }
185
185
  loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
186
186
  return await loadLibraryPromises[libraryUrl];
187
187
  }
188
- function getLibraryUrl(library, moduleName, options) {
189
- if (library.startsWith("http")) {
188
+ function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
189
+ if (!options.useLocalLibraries && library.startsWith("http")) {
190
190
  return library;
191
191
  }
192
+ libraryName = libraryName || library;
192
193
  const modules = options.modules || {};
193
- if (modules[library]) {
194
- return modules[library];
194
+ if (modules[libraryName]) {
195
+ return modules[libraryName];
195
196
  }
196
197
  if (!isBrowser) {
197
- return `modules/${moduleName}/dist/libs/${library}`;
198
+ return `modules/${moduleName}/dist/libs/${libraryName}`;
198
199
  }
199
200
  if (options.CDN) {
200
201
  assert2(options.CDN.startsWith("http"));
201
- return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
202
+ return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${libraryName}`;
202
203
  }
203
204
  if (isWorker) {
204
- return `../src/libs/${library}`;
205
+ return `../src/libs/${libraryName}`;
205
206
  }
206
- return `modules/${moduleName}/src/libs/${library}`;
207
+ return `modules/${moduleName}/src/libs/${libraryName}`;
207
208
  }
208
209
  async function loadLibraryFromFile(libraryUrl) {
209
210
  if (libraryUrl.endsWith("wasm")) {
210
- const response2 = await fetch(libraryUrl);
211
- return await response2.arrayBuffer();
211
+ return await loadAsArrayBuffer(libraryUrl);
212
212
  }
213
213
  if (!isBrowser) {
214
214
  try {
@@ -220,8 +220,7 @@
220
220
  if (isWorker) {
221
221
  return importScripts(libraryUrl);
222
222
  }
223
- const response = await fetch(libraryUrl);
224
- const scriptSource = await response.text();
223
+ const scriptSource = await loadAsText(libraryUrl);
225
224
  return loadLibraryFromString(scriptSource, libraryUrl);
226
225
  }
227
226
  function loadLibraryFromString(scriptSource, id) {
@@ -242,6 +241,20 @@
242
241
  document.body.appendChild(script);
243
242
  return null;
244
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
+ }
245
258
 
246
259
  // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
247
260
  var requestId = 0;
@@ -319,7 +332,7 @@
319
332
  }
320
333
 
321
334
  // src/lib/utils/version.ts
322
- var VERSION3 = true ? "4.0.0-alpha.17" : "beta";
335
+ var VERSION3 = true ? "4.0.0-alpha.19" : "beta";
323
336
 
324
337
  // src/crunch-loader.ts
325
338
  var CrunchLoader = {
@@ -339,6 +352,9 @@
339
352
  };
340
353
 
341
354
  // src/lib/parsers/crunch-module-loader.ts
355
+ var CRUNCH_EXTERNAL_LIBRARIES = {
356
+ DECODER: "crunch.js"
357
+ };
342
358
  async function loadCrunchModule(options) {
343
359
  const modules = options.modules || {};
344
360
  if (modules.crunch) {
@@ -351,7 +367,7 @@
351
367
  if (crunchModule) {
352
368
  return crunchModule;
353
369
  }
354
- let loadCrunchDecoder = await loadLibrary("crunch.js", "textures", options);
370
+ let loadCrunchDecoder = await loadLibrary(CRUNCH_EXTERNAL_LIBRARIES.DECODER, "textures", options);
355
371
  loadCrunchDecoder = loadCrunchDecoder || globalThis.LoadCrunchDecoder;
356
372
  crunchModule = loadCrunchDecoder();
357
373
  return crunchModule;
package/dist/dist.min.js CHANGED
@@ -89,37 +89,37 @@
89
89
  });
90
90
 
91
91
  // ../worker-utils/src/lib/library-utils/library-utils.ts
92
- async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
92
+ async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
93
93
  if (moduleName) {
94
- libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
94
+ libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
95
95
  }
96
96
  loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
97
97
  return await loadLibraryPromises[libraryUrl];
98
98
  }
99
- function getLibraryUrl(library, moduleName, options) {
100
- if (library.startsWith("http")) {
99
+ function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
100
+ if (!options.useLocalLibraries && library.startsWith("http")) {
101
101
  return library;
102
102
  }
103
+ libraryName = libraryName || library;
103
104
  const modules = options.modules || {};
104
- if (modules[library]) {
105
- return modules[library];
105
+ if (modules[libraryName]) {
106
+ return modules[libraryName];
106
107
  }
107
108
  if (!isBrowser) {
108
- return `modules/${moduleName}/dist/libs/${library}`;
109
+ return `modules/${moduleName}/dist/libs/${libraryName}`;
109
110
  }
110
111
  if (options.CDN) {
111
112
  assert(options.CDN.startsWith("http"));
112
- return `${options.CDN}/${moduleName}@${VERSION3}/dist/libs/${library}`;
113
+ return `${options.CDN}/${moduleName}@${VERSION3}/dist/libs/${libraryName}`;
113
114
  }
114
115
  if (isWorker) {
115
- return `../src/libs/${library}`;
116
+ return `../src/libs/${libraryName}`;
116
117
  }
117
- return `modules/${moduleName}/src/libs/${library}`;
118
+ return `modules/${moduleName}/src/libs/${libraryName}`;
118
119
  }
119
120
  async function loadLibraryFromFile(libraryUrl) {
120
121
  if (libraryUrl.endsWith("wasm")) {
121
- const response2 = await fetch(libraryUrl);
122
- return await response2.arrayBuffer();
122
+ return await loadAsArrayBuffer(libraryUrl);
123
123
  }
124
124
  if (!isBrowser) {
125
125
  try {
@@ -131,8 +131,7 @@
131
131
  if (isWorker) {
132
132
  return importScripts(libraryUrl);
133
133
  }
134
- const response = await fetch(libraryUrl);
135
- const scriptSource = await response.text();
134
+ const scriptSource = await loadAsText(libraryUrl);
136
135
  return loadLibraryFromString(scriptSource, libraryUrl);
137
136
  }
138
137
  function loadLibraryFromString(scriptSource, id) {
@@ -153,6 +152,20 @@
153
152
  document.body.appendChild(script);
154
153
  return null;
155
154
  }
155
+ async function loadAsArrayBuffer(url) {
156
+ if (!node.readFileAsArrayBuffer || url.startsWith("http")) {
157
+ const response = await fetch(url);
158
+ return await response.arrayBuffer();
159
+ }
160
+ return await node.readFileAsArrayBuffer(url);
161
+ }
162
+ async function loadAsText(url) {
163
+ if (!node.readFileAsText || url.startsWith("http")) {
164
+ const response = await fetch(url);
165
+ return await response.text();
166
+ }
167
+ return await node.readFileAsText(url);
168
+ }
156
169
  var node, LATEST, VERSION3, loadLibraryPromises;
157
170
  var init_library_utils = __esm({
158
171
  "../worker-utils/src/lib/library-utils/library-utils.ts"() {
@@ -181,25 +194,25 @@
181
194
  });
182
195
 
183
196
  // src/lib/parsers/basis-module-loader.ts
184
- async function loadBasisTrascoderModule(options) {
197
+ async function loadBasisTranscoderModule(options) {
185
198
  const modules = options.modules || {};
186
199
  if (modules.basis) {
187
200
  return modules.basis;
188
201
  }
189
- loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);
202
+ loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTranscoder(options);
190
203
  return await loadBasisTranscoderPromise;
191
204
  }
192
- async function loadBasisTrascoder(options) {
205
+ async function loadBasisTranscoder(options) {
193
206
  let BASIS = null;
194
207
  let wasmBinary = null;
195
208
  [BASIS, wasmBinary] = await Promise.all([
196
- await loadLibrary("basis_transcoder.js", "textures", options),
197
- await loadLibrary("basis_transcoder.wasm", "textures", options)
209
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, "textures", options),
210
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, "textures", options)
198
211
  ]);
199
212
  BASIS = BASIS || globalThis.BASIS;
200
- return await initializeBasisTrascoderModule(BASIS, wasmBinary);
213
+ return await initializeBasisTranscoderModule(BASIS, wasmBinary);
201
214
  }
202
- function initializeBasisTrascoderModule(BasisModule, wasmBinary) {
215
+ function initializeBasisTranscoderModule(BasisModule, wasmBinary) {
203
216
  const options = {};
204
217
  if (wasmBinary) {
205
218
  options.wasmBinary = wasmBinary;
@@ -224,8 +237,8 @@
224
237
  let BASIS_ENCODER = null;
225
238
  let wasmBinary = null;
226
239
  [BASIS_ENCODER, wasmBinary] = await Promise.all([
227
- await loadLibrary(BASIS_CDN_ENCODER_JS, "textures", options),
228
- await loadLibrary(BASIS_CDN_ENCODER_WASM, "textures", options)
240
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
241
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
229
242
  ]);
230
243
  BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
231
244
  return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
@@ -243,13 +256,16 @@
243
256
  });
244
257
  });
245
258
  }
246
- var VERSION4, BASIS_CDN_ENCODER_WASM, BASIS_CDN_ENCODER_JS, loadBasisTranscoderPromise, loadBasisEncoderPromise;
259
+ var BASIS_EXTERNAL_LIBRARIES, loadBasisTranscoderPromise, loadBasisEncoderPromise;
247
260
  var init_basis_module_loader = __esm({
248
261
  "src/lib/parsers/basis-module-loader.ts"() {
249
262
  init_src();
250
- VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
251
- BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
252
- BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
263
+ 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
+ };
253
269
  }
254
270
  });
255
271
 
@@ -625,7 +641,7 @@
625
641
  const fileConstructors = await loadBasisEncoderModule(options);
626
642
  return parseKTX2File(fileConstructors.KTX2File, data, options);
627
643
  }
628
- const { BasisFile } = await loadBasisTrascoderModule(options);
644
+ const { BasisFile } = await loadBasisTranscoderModule(options);
629
645
  return parseBasisFile(BasisFile, data, options);
630
646
  }
631
647
  switch (options.basis.module) {
@@ -640,7 +656,7 @@
640
656
  }
641
657
  case "transcoder":
642
658
  default:
643
- const { BasisFile } = await loadBasisTrascoderModule(options);
659
+ const { BasisFile } = await loadBasisTranscoderModule(options);
644
660
  return parseBasisFile(BasisFile, data, options);
645
661
  }
646
662
  }
@@ -1372,6 +1388,16 @@
1372
1388
  }
1373
1389
  });
1374
1390
 
1391
+ // src/lib/parsers/crunch-module-loader.ts
1392
+ var CRUNCH_EXTERNAL_LIBRARIES;
1393
+ var init_crunch_module_loader = __esm({
1394
+ "src/lib/parsers/crunch-module-loader.ts"() {
1395
+ CRUNCH_EXTERNAL_LIBRARIES = {
1396
+ DECODER: "crunch.js"
1397
+ };
1398
+ }
1399
+ });
1400
+
1375
1401
  // src/lib/encoders/encode-texture.ts
1376
1402
  async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl, options) {
1377
1403
  const args = [
@@ -1430,7 +1456,12 @@
1430
1456
 
1431
1457
  // src/lib/encoders/encode-ktx2-basis-texture.ts
1432
1458
  async function encodeKTX2BasisTexture(image, options = {}) {
1433
- const { useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false } = options;
1459
+ const {
1460
+ useSRGB = false,
1461
+ qualityLevel = 10,
1462
+ encodeUASTC = false,
1463
+ mipmaps = false
1464
+ } = options?.["ktx2-basis-writer"] || {};
1434
1465
  const { BasisEncoder } = await loadBasisEncoderModule(options);
1435
1466
  const basisEncoder = new BasisEncoder();
1436
1467
  try {
@@ -1473,10 +1504,12 @@
1473
1504
  version: VERSION,
1474
1505
  extensions: ["ktx2"],
1475
1506
  options: {
1476
- useSRGB: false,
1477
- qualityLevel: 10,
1478
- encodeUASTC: false,
1479
- mipmaps: false
1507
+ ["ktx2-basis-writer"]: {
1508
+ useSRGB: false,
1509
+ qualityLevel: 10,
1510
+ encodeUASTC: false,
1511
+ mipmaps: false
1512
+ }
1480
1513
  },
1481
1514
  encode: encodeKTX2BasisTexture
1482
1515
  };
@@ -1484,10 +1517,10 @@
1484
1517
  });
1485
1518
 
1486
1519
  // ../images/src/lib/utils/version.ts
1487
- var VERSION5;
1520
+ var VERSION4;
1488
1521
  var init_version3 = __esm({
1489
1522
  "../images/src/lib/utils/version.ts"() {
1490
- VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
1523
+ VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
1491
1524
  }
1492
1525
  });
1493
1526
 
@@ -1939,7 +1972,7 @@
1939
1972
  id: "image",
1940
1973
  module: "images",
1941
1974
  name: "Images",
1942
- version: VERSION5,
1975
+ version: VERSION4,
1943
1976
  mimeTypes: MIME_TYPES,
1944
1977
  extensions: EXTENSIONS,
1945
1978
  parse: parseImage,
@@ -2128,8 +2161,10 @@
2128
2161
  // src/index.ts
2129
2162
  var src_exports = {};
2130
2163
  __export(src_exports, {
2164
+ BASIS_EXTERNAL_LIBRARIES: () => BASIS_EXTERNAL_LIBRARIES,
2131
2165
  BasisLoader: () => BasisLoader,
2132
2166
  BasisWorkerLoader: () => BasisWorkerLoader,
2167
+ CRUNCH_EXTERNAL_LIBRARIES: () => CRUNCH_EXTERNAL_LIBRARIES,
2133
2168
  CompressedTextureLoader: () => CompressedTextureLoader,
2134
2169
  CompressedTextureWorkerLoader: () => CompressedTextureWorkerLoader,
2135
2170
  CompressedTextureWriter: () => CompressedTextureWriter,
@@ -2154,6 +2189,8 @@
2154
2189
  init_compressed_texture_loader();
2155
2190
  init_crunch_loader();
2156
2191
  init_npy_loader();
2192
+ init_basis_module_loader();
2193
+ init_crunch_module_loader();
2157
2194
  init_compressed_texture_writer();
2158
2195
  init_ktx2_basis_writer();
2159
2196
  init_load_image();
package/dist/es5/index.js CHANGED
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "BASIS_EXTERNAL_LIBRARIES", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _basisModuleLoader.BASIS_EXTERNAL_LIBRARIES;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "BasisLoader", {
7
13
  enumerable: true,
8
14
  get: function get() {
@@ -15,6 +21,12 @@ Object.defineProperty(exports, "BasisWorkerLoader", {
15
21
  return _basisLoader.BasisWorkerLoader;
16
22
  }
17
23
  });
24
+ Object.defineProperty(exports, "CRUNCH_EXTERNAL_LIBRARIES", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _crunchModuleLoader.CRUNCH_EXTERNAL_LIBRARIES;
28
+ }
29
+ });
18
30
  Object.defineProperty(exports, "CompressedTextureLoader", {
19
31
  enumerable: true,
20
32
  get: function get() {
@@ -105,6 +117,8 @@ var _basisLoader = require("./basis-loader");
105
117
  var _compressedTextureLoader = require("./compressed-texture-loader");
106
118
  var _crunchLoader = require("./crunch-loader");
107
119
  var _npyLoader = require("./npy-loader");
120
+ var _basisModuleLoader = require("./lib/parsers/basis-module-loader");
121
+ var _crunchModuleLoader = require("./lib/parsers/crunch-module-loader");
108
122
  var _compressedTextureWriter = require("./compressed-texture-writer");
109
123
  var _ktx2BasisWriter = require("./ktx2-basis-writer");
110
124
  var _loadImage = require("./lib/texture-api/load-image");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_version","require","_basisLoader","_compressedTextureLoader","_crunchLoader","_npyLoader","_compressedTextureWriter","_ktx2BasisWriter","_loadImage","_loadImageArray","_loadImageCube","_glExtensions","_parseBasis","_textureFormats","KTX2BasisWriterWorker","name","id","module","version","VERSION","extensions","worker","options","useSRGB","qualityLevel","encodeUASTC","mipmaps","exports"],"sources":["../../src/index.ts"],"sourcesContent":["import {VERSION} from './lib/utils/version';\n\n// Types\nexport type {GPUTextureFormat} from '@loaders.gl/schema';\nexport type {TextureLoaderOptions} from './compressed-texture-loader';\n\n// Loaders\nexport {BasisLoader, BasisWorkerLoader} from './basis-loader';\nexport {CompressedTextureLoader, CompressedTextureWorkerLoader} from './compressed-texture-loader';\nexport {CrunchLoader} from './crunch-loader';\nexport {NPYLoader, NPYWorkerLoader} from './npy-loader';\n\n// Writers\nexport {CompressedTextureWriter} from './compressed-texture-writer';\nexport {KTX2BasisWriter} from './ktx2-basis-writer';\n\nexport const KTX2BasisWriterWorker = {\n name: 'Basis Universal Supercompressed GPU Texture',\n id: 'ktx2-basis-writer',\n module: 'textures',\n version: VERSION,\n extensions: ['ktx2'],\n worker: true,\n options: {\n useSRGB: false,\n qualityLevel: 10,\n encodeUASTC: false,\n mipmaps: false\n }\n};\n\n// Texture Loading API\nexport {loadImageTexture} from './lib/texture-api/load-image';\nexport {loadImageTextureArray} from './lib/texture-api/load-image-array';\nexport {loadImageTextureCube} from './lib/texture-api/load-image-cube';\n\n// Utilities\nexport {GL_EXTENSIONS_CONSTANTS} from './lib/gl-extensions';\nexport {selectSupportedBasisFormat} from './lib/parsers/parse-basis';\nexport {getSupportedGPUTextureFormats} from './lib/utils/texture-formats';\n\n// DEPRECATED\nexport {CrunchLoader as CrunchWorkerLoader} from './crunch-loader';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAOA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,wBAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAGA,IAAAK,wBAAA,GAAAL,OAAA;AACA,IAAAM,gBAAA,GAAAN,OAAA;AAkBA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,eAAA,GAAAR,OAAA;AACA,IAAAS,cAAA,GAAAT,OAAA;AAGA,IAAAU,aAAA,GAAAV,OAAA;AACA,IAAAW,WAAA,GAAAX,OAAA;AACA,IAAAY,eAAA,GAAAZ,OAAA;AAvBO,IAAMa,qBAAqB,GAAG;EACnCC,IAAI,EAAE,6CAA6C;EACnDC,EAAE,EAAE,mBAAmB;EACvBC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEC,gBAAO;EAChBC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE;IACPC,OAAO,EAAE,KAAK;IACdC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,KAAK;IAClBC,OAAO,EAAE;EACX;AACF,CAAC;AAACC,OAAA,CAAAb,qBAAA,GAAAA,qBAAA"}
1
+ {"version":3,"file":"index.js","names":["_version","require","_basisLoader","_compressedTextureLoader","_crunchLoader","_npyLoader","_basisModuleLoader","_crunchModuleLoader","_compressedTextureWriter","_ktx2BasisWriter","_loadImage","_loadImageArray","_loadImageCube","_glExtensions","_parseBasis","_textureFormats","KTX2BasisWriterWorker","name","id","module","version","VERSION","extensions","worker","options","useSRGB","qualityLevel","encodeUASTC","mipmaps","exports"],"sources":["../../src/index.ts"],"sourcesContent":["import {VERSION} from './lib/utils/version';\n\n// Types\nexport type {GPUTextureFormat} from '@loaders.gl/schema';\nexport type {TextureLoaderOptions} from './compressed-texture-loader';\n\n// Loaders\nexport {BasisLoader, BasisWorkerLoader} from './basis-loader';\nexport {CompressedTextureLoader, CompressedTextureWorkerLoader} from './compressed-texture-loader';\nexport {CrunchLoader} from './crunch-loader';\nexport {NPYLoader, NPYWorkerLoader} from './npy-loader';\n\n// Module constants\nexport {BASIS_EXTERNAL_LIBRARIES} from './lib/parsers/basis-module-loader';\nexport {CRUNCH_EXTERNAL_LIBRARIES} from './lib/parsers/crunch-module-loader';\n\n// Writers\nexport {CompressedTextureWriter} from './compressed-texture-writer';\nexport {KTX2BasisWriter} from './ktx2-basis-writer';\n\nexport const KTX2BasisWriterWorker = {\n name: 'Basis Universal Supercompressed GPU Texture',\n id: 'ktx2-basis-writer',\n module: 'textures',\n version: VERSION,\n extensions: ['ktx2'],\n worker: true,\n options: {\n useSRGB: false,\n qualityLevel: 10,\n encodeUASTC: false,\n mipmaps: false\n }\n};\n\n// Texture Loading API\nexport {loadImageTexture} from './lib/texture-api/load-image';\nexport {loadImageTextureArray} from './lib/texture-api/load-image-array';\nexport {loadImageTextureCube} from './lib/texture-api/load-image-cube';\n\n// Utilities\nexport {GL_EXTENSIONS_CONSTANTS} from './lib/gl-extensions';\nexport {selectSupportedBasisFormat} from './lib/parsers/parse-basis';\nexport {getSupportedGPUTextureFormats} from './lib/utils/texture-formats';\n\n// DEPRECATED\nexport {CrunchLoader as CrunchWorkerLoader} from './crunch-loader';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAOA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,wBAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAGA,IAAAK,kBAAA,GAAAL,OAAA;AACA,IAAAM,mBAAA,GAAAN,OAAA;AAGA,IAAAO,wBAAA,GAAAP,OAAA;AACA,IAAAQ,gBAAA,GAAAR,OAAA;AAkBA,IAAAS,UAAA,GAAAT,OAAA;AACA,IAAAU,eAAA,GAAAV,OAAA;AACA,IAAAW,cAAA,GAAAX,OAAA;AAGA,IAAAY,aAAA,GAAAZ,OAAA;AACA,IAAAa,WAAA,GAAAb,OAAA;AACA,IAAAc,eAAA,GAAAd,OAAA;AAvBO,IAAMe,qBAAqB,GAAG;EACnCC,IAAI,EAAE,6CAA6C;EACnDC,EAAE,EAAE,mBAAmB;EACvBC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEC,gBAAO;EAChBC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE;IACPC,OAAO,EAAE,KAAK;IACdC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,KAAK;IAClBC,OAAO,EAAE;EACX;AACF,CAAC;AAACC,OAAA,CAAAb,qBAAA,GAAAA,qBAAA"}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports._TypecheckKTX2TextureWriter = exports.KTX2BasisWriter = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
9
  var _version = require("./lib/utils/version");
8
10
  var _encodeKtx2BasisTexture = require("./lib/encoders/encode-ktx2-basis-texture");
9
11
  var KTX2BasisWriter = {
@@ -12,12 +14,12 @@ var KTX2BasisWriter = {
12
14
  module: 'textures',
13
15
  version: _version.VERSION,
14
16
  extensions: ['ktx2'],
15
- options: {
17
+ options: (0, _defineProperty2.default)({}, 'ktx2-basis-writer', {
16
18
  useSRGB: false,
17
19
  qualityLevel: 10,
18
20
  encodeUASTC: false,
19
21
  mipmaps: false
20
- },
22
+ }),
21
23
  encode: _encodeKtx2BasisTexture.encodeKTX2BasisTexture
22
24
  };
23
25
  exports.KTX2BasisWriter = KTX2BasisWriter;
@@ -1 +1 @@
1
- {"version":3,"file":"ktx2-basis-writer.js","names":["_version","require","_encodeKtx2BasisTexture","KTX2BasisWriter","name","id","module","version","VERSION","extensions","options","useSRGB","qualityLevel","encodeUASTC","mipmaps","encode","encodeKTX2BasisTexture","exports","_TypecheckKTX2TextureWriter"],"sources":["../../src/ktx2-basis-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Writer} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport type {ImageDataType} from '@loaders.gl/images';\nimport {encodeKTX2BasisTexture} from './lib/encoders/encode-ktx2-basis-texture';\n\n/** @todo should be in basis sub-object */\nexport type KTX2BasisWriterOptions = {\n useSRGB?: boolean;\n qualityLevel?: number;\n encodeUASTC?: boolean;\n mipmaps?: boolean;\n};\n\n/**\n * Basis Universal Supercompressed GPU Texture.\n * Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/textureSetDefinitionFormat.cmn.md\n */\nexport const KTX2BasisWriter: Writer<ImageDataType, unknown, KTX2BasisWriterOptions> = {\n name: 'Basis Universal Supercompressed GPU Texture',\n id: 'ktx2-basis-writer',\n module: 'textures',\n version: VERSION,\n\n extensions: ['ktx2'],\n options: {\n useSRGB: false,\n qualityLevel: 10,\n encodeUASTC: false,\n mipmaps: false\n },\n\n encode: encodeKTX2BasisTexture\n};\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckKTX2TextureWriter: Writer = KTX2BasisWriter;\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,uBAAA,GAAAD,OAAA;AAcO,IAAME,eAAuE,GAAG;EACrFC,IAAI,EAAE,6CAA6C;EACnDC,EAAE,EAAE,mBAAmB;EACvBC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEC,gBAAO;EAEhBC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE;IACPC,OAAO,EAAE,KAAK;IACdC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,KAAK;IAClBC,OAAO,EAAE;EACX,CAAC;EAEDC,MAAM,EAAEC;AACV,CAAC;AAACC,OAAA,CAAAd,eAAA,GAAAA,eAAA;AAGK,IAAMe,2BAAmC,GAAGf,eAAe;AAACc,OAAA,CAAAC,2BAAA,GAAAA,2BAAA"}
1
+ {"version":3,"file":"ktx2-basis-writer.js","names":["_version","require","_encodeKtx2BasisTexture","KTX2BasisWriter","name","id","module","version","VERSION","extensions","options","_defineProperty2","default","useSRGB","qualityLevel","encodeUASTC","mipmaps","encode","encodeKTX2BasisTexture","exports","_TypecheckKTX2TextureWriter"],"sources":["../../src/ktx2-basis-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Writer, WriterOptions} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport type {ImageDataType} from '@loaders.gl/images';\nimport {encodeKTX2BasisTexture} from './lib/encoders/encode-ktx2-basis-texture';\n\n/** @todo should be in basis sub-object */\nexport type KTX2BasisWriterOptions = WriterOptions & {\n ['ktx2-basis-writer']: {\n useSRGB?: boolean;\n qualityLevel?: number;\n encodeUASTC?: boolean;\n mipmaps?: boolean;\n };\n};\n\n/**\n * Basis Universal Supercompressed GPU Texture.\n * Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/textureSetDefinitionFormat.cmn.md\n */\nexport const KTX2BasisWriter: Writer<ImageDataType, unknown, KTX2BasisWriterOptions> = {\n name: 'Basis Universal Supercompressed GPU Texture',\n id: 'ktx2-basis-writer',\n module: 'textures',\n version: VERSION,\n\n extensions: ['ktx2'],\n options: {\n ['ktx2-basis-writer']: {\n useSRGB: false,\n qualityLevel: 10,\n encodeUASTC: false,\n mipmaps: false\n }\n },\n\n encode: encodeKTX2BasisTexture\n};\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckKTX2TextureWriter: Writer = KTX2BasisWriter;\n"],"mappings":";;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,uBAAA,GAAAD,OAAA;AAgBO,IAAME,eAAuE,GAAG;EACrFC,IAAI,EAAE,6CAA6C;EACnDC,EAAE,EAAE,mBAAmB;EACvBC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEC,gBAAO;EAEhBC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,MAAAC,gBAAA,CAAAC,OAAA,MACJ,mBAAmB,EAAG;IACrBC,OAAO,EAAE,KAAK;IACdC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,KAAK;IAClBC,OAAO,EAAE;EACX,CAAC,CACF;EAEDC,MAAM,EAAEC;AACV,CAAC;AAACC,OAAA,CAAAhB,eAAA,GAAAA,eAAA;AAGK,IAAMiB,2BAAmC,GAAGjB,eAAe;AAACgB,OAAA,CAAAC,2BAAA,GAAAA,2BAAA"}
@@ -14,13 +14,14 @@ function encodeKTX2BasisTexture(_x) {
14
14
  function _encodeKTX2BasisTexture() {
15
15
  _encodeKTX2BasisTexture = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(image) {
16
16
  var options,
17
- _options$useSRGB,
17
+ _ref,
18
+ _ref$useSRGB,
18
19
  useSRGB,
19
- _options$qualityLevel,
20
+ _ref$qualityLevel,
20
21
  qualityLevel,
21
- _options$encodeUASTC,
22
+ _ref$encodeUASTC,
22
23
  encodeUASTC,
23
- _options$mipmaps,
24
+ _ref$mipmaps,
24
25
  mipmaps,
25
26
  _yield$loadBasisEncod,
26
27
  BasisEncoder,
@@ -33,7 +34,7 @@ function _encodeKTX2BasisTexture() {
33
34
  while (1) switch (_context.prev = _context.next) {
34
35
  case 0:
35
36
  options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
36
- _options$useSRGB = options.useSRGB, useSRGB = _options$useSRGB === void 0 ? false : _options$useSRGB, _options$qualityLevel = options.qualityLevel, qualityLevel = _options$qualityLevel === void 0 ? 10 : _options$qualityLevel, _options$encodeUASTC = options.encodeUASTC, encodeUASTC = _options$encodeUASTC === void 0 ? false : _options$encodeUASTC, _options$mipmaps = options.mipmaps, mipmaps = _options$mipmaps === void 0 ? false : _options$mipmaps;
37
+ _ref = (options === null || options === void 0 ? void 0 : options['ktx2-basis-writer']) || {}, _ref$useSRGB = _ref.useSRGB, useSRGB = _ref$useSRGB === void 0 ? false : _ref$useSRGB, _ref$qualityLevel = _ref.qualityLevel, qualityLevel = _ref$qualityLevel === void 0 ? 10 : _ref$qualityLevel, _ref$encodeUASTC = _ref.encodeUASTC, encodeUASTC = _ref$encodeUASTC === void 0 ? false : _ref$encodeUASTC, _ref$mipmaps = _ref.mipmaps, mipmaps = _ref$mipmaps === void 0 ? false : _ref$mipmaps;
37
38
  _context.next = 4;
38
39
  return (0, _basisModuleLoader.loadBasisEncoderModule)(options);
39
40
  case 4:
@@ -1 +1 @@
1
- {"version":3,"file":"encode-ktx2-basis-texture.js","names":["_basisModuleLoader","require","encodeKTX2BasisTexture","_x","_encodeKTX2BasisTexture","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","image","options","_options$useSRGB","useSRGB","_options$qualityLevel","qualityLevel","_options$encodeUASTC","encodeUASTC","_options$mipmaps","mipmaps","_yield$loadBasisEncod","BasisEncoder","basisEncoder","basisFileData","numOutputBytes","actualKTX2FileData","_args","wrap","_callee$","_context","prev","next","length","undefined","loadBasisEncoderModule","sent","Uint8Array","width","height","setCreateKTX2File","setKTX2UASTCSupercompression","setKTX2SRGBTransferFunc","setSliceSourceImage","data","setPerceptual","setMipSRGB","setQualityLevel","setUASTC","setMipGen","encode","subarray","buffer","abrupt","t0","console","error","delete","finish","stop"],"sources":["../../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"sourcesContent":["import type {ImageDataType} from '@loaders.gl/images';\nimport {loadBasisEncoderModule} from '../parsers/basis-module-loader';\n\n/**\n * Encodes image to Basis Universal Supercompressed GPU Texture.\n * Code example is taken from here - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/ktx2_encode_test/index.html#L279\n * BasisEncoder API - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/basis_wrappers.cpp#L1712\n * @param image\n * @param options\n */\nexport async function encodeKTX2BasisTexture(\n image: ImageDataType,\n options: any = {}\n): Promise<ArrayBuffer> {\n // TODO remove default values after writer options will be normalized like it done in load module.\n const {useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false} = options;\n const {BasisEncoder} = await loadBasisEncoderModule(options);\n const basisEncoder = new BasisEncoder();\n\n try {\n const basisFileData = new Uint8Array(image.width * image.height * 4);\n basisEncoder.setCreateKTX2File(true);\n basisEncoder.setKTX2UASTCSupercompression(true);\n basisEncoder.setKTX2SRGBTransferFunc(true);\n\n basisEncoder.setSliceSourceImage(0, image.data, image.width, image.height, false);\n basisEncoder.setPerceptual(useSRGB);\n basisEncoder.setMipSRGB(useSRGB);\n basisEncoder.setQualityLevel(qualityLevel);\n basisEncoder.setUASTC(encodeUASTC);\n basisEncoder.setMipGen(mipmaps);\n\n const numOutputBytes = basisEncoder.encode(basisFileData);\n\n const actualKTX2FileData = basisFileData.subarray(0, numOutputBytes).buffer;\n return actualKTX2FileData;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Basis Universal Supercompressed GPU Texture encoder Error: ', error);\n throw error;\n } finally {\n basisEncoder.delete();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"encode-ktx2-basis-texture.js","names":["_basisModuleLoader","require","encodeKTX2BasisTexture","_x","_encodeKTX2BasisTexture","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","image","options","_ref","_ref$useSRGB","useSRGB","_ref$qualityLevel","qualityLevel","_ref$encodeUASTC","encodeUASTC","_ref$mipmaps","mipmaps","_yield$loadBasisEncod","BasisEncoder","basisEncoder","basisFileData","numOutputBytes","actualKTX2FileData","_args","wrap","_callee$","_context","prev","next","length","undefined","loadBasisEncoderModule","sent","Uint8Array","width","height","setCreateKTX2File","setKTX2UASTCSupercompression","setKTX2SRGBTransferFunc","setSliceSourceImage","data","setPerceptual","setMipSRGB","setQualityLevel","setUASTC","setMipGen","encode","subarray","buffer","abrupt","t0","console","error","delete","finish","stop"],"sources":["../../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"sourcesContent":["import type {ImageDataType} from '@loaders.gl/images';\nimport {loadBasisEncoderModule} from '../parsers/basis-module-loader';\n\n/**\n * Encodes image to Basis Universal Supercompressed GPU Texture.\n * Code example is taken from here - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/ktx2_encode_test/index.html#L279\n * BasisEncoder API - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/basis_wrappers.cpp#L1712\n * @param image\n * @param options\n */\nexport async function encodeKTX2BasisTexture(\n image: ImageDataType,\n options: any = {}\n): Promise<ArrayBuffer> {\n // TODO remove default values after writer options will be normalized like it done in load module.\n const {\n useSRGB = false,\n qualityLevel = 10,\n encodeUASTC = false,\n mipmaps = false\n } = options?.['ktx2-basis-writer'] || {};\n const {BasisEncoder} = await loadBasisEncoderModule(options);\n const basisEncoder = new BasisEncoder();\n\n try {\n const basisFileData = new Uint8Array(image.width * image.height * 4);\n basisEncoder.setCreateKTX2File(true);\n basisEncoder.setKTX2UASTCSupercompression(true);\n basisEncoder.setKTX2SRGBTransferFunc(true);\n\n basisEncoder.setSliceSourceImage(0, image.data, image.width, image.height, false);\n basisEncoder.setPerceptual(useSRGB);\n basisEncoder.setMipSRGB(useSRGB);\n basisEncoder.setQualityLevel(qualityLevel);\n basisEncoder.setUASTC(encodeUASTC);\n basisEncoder.setMipGen(mipmaps);\n\n const numOutputBytes = basisEncoder.encode(basisFileData);\n\n const actualKTX2FileData = basisFileData.subarray(0, numOutputBytes).buffer;\n return actualKTX2FileData;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Basis Universal Supercompressed GPU Texture encoder Error: ', error);\n throw error;\n } finally {\n basisEncoder.delete();\n }\n}\n"],"mappings":"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"}
@@ -4,21 +4,26 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ exports.BASIS_EXTERNAL_LIBRARIES = void 0;
7
8
  exports.loadBasisEncoderModule = loadBasisEncoderModule;
8
- exports.loadBasisTrascoderModule = loadBasisTrascoderModule;
9
+ exports.loadBasisTranscoderModule = loadBasisTranscoderModule;
9
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
13
  var _workerUtils = require("@loaders.gl/worker-utils");
13
- var VERSION = typeof "4.0.0-alpha.17" !== 'undefined' ? "4.0.0-alpha.17" : 'beta';
14
- var BASIS_CDN_ENCODER_WASM = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.wasm");
15
- var BASIS_CDN_ENCODER_JS = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.js");
14
+ var BASIS_EXTERNAL_LIBRARIES = {
15
+ TRANSCODER: 'basis_transcoder.js',
16
+ TRANSCODER_WASM: 'basis_transcoder.wasm',
17
+ ENCODER: 'basis_encoder.js',
18
+ ENCODER_WASM: 'basis_encoder.wasm'
19
+ };
20
+ exports.BASIS_EXTERNAL_LIBRARIES = BASIS_EXTERNAL_LIBRARIES;
16
21
  var loadBasisTranscoderPromise;
17
- function loadBasisTrascoderModule(_x) {
18
- return _loadBasisTrascoderModule.apply(this, arguments);
22
+ function loadBasisTranscoderModule(_x) {
23
+ return _loadBasisTranscoderModule.apply(this, arguments);
19
24
  }
20
- function _loadBasisTrascoderModule() {
21
- _loadBasisTrascoderModule = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
25
+ function _loadBasisTranscoderModule() {
26
+ _loadBasisTranscoderModule = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
22
27
  var modules;
23
28
  return _regenerator.default.wrap(function _callee$(_context) {
24
29
  while (1) switch (_context.prev = _context.next) {
@@ -30,7 +35,7 @@ function _loadBasisTrascoderModule() {
30
35
  }
31
36
  return _context.abrupt("return", modules.basis);
32
37
  case 3:
33
- loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);
38
+ loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTranscoder(options);
34
39
  _context.next = 6;
35
40
  return loadBasisTranscoderPromise;
36
41
  case 6:
@@ -41,13 +46,13 @@ function _loadBasisTrascoderModule() {
41
46
  }
42
47
  }, _callee);
43
48
  }));
44
- return _loadBasisTrascoderModule.apply(this, arguments);
49
+ return _loadBasisTranscoderModule.apply(this, arguments);
45
50
  }
46
- function loadBasisTrascoder(_x2) {
47
- return _loadBasisTrascoder.apply(this, arguments);
51
+ function loadBasisTranscoder(_x2) {
52
+ return _loadBasisTranscoder.apply(this, arguments);
48
53
  }
49
- function _loadBasisTrascoder() {
50
- _loadBasisTrascoder = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(options) {
54
+ function _loadBasisTranscoder() {
55
+ _loadBasisTranscoder = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(options) {
51
56
  var BASIS, wasmBinary, _yield$Promise$all, _yield$Promise$all2;
52
57
  return _regenerator.default.wrap(function _callee2$(_context2) {
53
58
  while (1) switch (_context2.prev = _context2.next) {
@@ -56,11 +61,11 @@ function _loadBasisTrascoder() {
56
61
  wasmBinary = null;
57
62
  _context2.t0 = Promise;
58
63
  _context2.next = 5;
59
- return (0, _workerUtils.loadLibrary)('basis_transcoder.js', 'textures', options);
64
+ return (0, _workerUtils.loadLibrary)(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, 'textures', options);
60
65
  case 5:
61
66
  _context2.t1 = _context2.sent;
62
67
  _context2.next = 8;
63
- return (0, _workerUtils.loadLibrary)('basis_transcoder.wasm', 'textures', options);
68
+ return (0, _workerUtils.loadLibrary)(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, 'textures', options);
64
69
  case 8:
65
70
  _context2.t2 = _context2.sent;
66
71
  _context2.t3 = [_context2.t1, _context2.t2];
@@ -73,7 +78,7 @@ function _loadBasisTrascoder() {
73
78
  wasmBinary = _yield$Promise$all2[1];
74
79
  BASIS = BASIS || globalThis.BASIS;
75
80
  _context2.next = 19;
76
- return initializeBasisTrascoderModule(BASIS, wasmBinary);
81
+ return initializeBasisTranscoderModule(BASIS, wasmBinary);
77
82
  case 19:
78
83
  return _context2.abrupt("return", _context2.sent);
79
84
  case 20:
@@ -82,9 +87,9 @@ function _loadBasisTrascoder() {
82
87
  }
83
88
  }, _callee2);
84
89
  }));
85
- return _loadBasisTrascoder.apply(this, arguments);
90
+ return _loadBasisTranscoder.apply(this, arguments);
86
91
  }
87
- function initializeBasisTrascoderModule(BasisModule, wasmBinary) {
92
+ function initializeBasisTranscoderModule(BasisModule, wasmBinary) {
88
93
  var options = {};
89
94
  if (wasmBinary) {
90
95
  options.wasmBinary = wasmBinary;
@@ -143,11 +148,11 @@ function _loadBasisEncoder() {
143
148
  wasmBinary = null;
144
149
  _context4.t0 = Promise;
145
150
  _context4.next = 5;
146
- return (0, _workerUtils.loadLibrary)(BASIS_CDN_ENCODER_JS, 'textures', options);
151
+ return (0, _workerUtils.loadLibrary)(BASIS_EXTERNAL_LIBRARIES.ENCODER, 'textures', options);
147
152
  case 5:
148
153
  _context4.t1 = _context4.sent;
149
154
  _context4.next = 8;
150
- return (0, _workerUtils.loadLibrary)(BASIS_CDN_ENCODER_WASM, 'textures', options);
155
+ return (0, _workerUtils.loadLibrary)(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, 'textures', options);
151
156
  case 8:
152
157
  _context4.t2 = _context4.sent;
153
158
  _context4.t3 = [_context4.t1, _context4.t2];