@loaders.gl/textures 4.0.0-alpha.9 → 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
@@ -1 +1 @@
1
- {"version":3,"file":"encode-ktx2-basis-texture.js","names":["loadBasisEncoderModule","encodeKTX2BasisTexture","image","options","arguments","length","undefined","useSRGB","qualityLevel","encodeUASTC","mipmaps","BasisEncoder","basisEncoder","basisFileData","Uint8Array","width","height","setCreateKTX2File","setKTX2UASTCSupercompression","setKTX2SRGBTransferFunc","setSliceSourceImage","data","setPerceptual","setMipSRGB","setQualityLevel","setUASTC","setMipGen","numOutputBytes","encode","actualKTX2FileData","subarray","buffer","error","console","delete"],"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":"AACA,SAAQA,sBAAsB,QAAO,gCAAgC;AASrE,OAAO,eAAeC,sBAAsBA,CAC1CC,KAAoB,EAEE;EAAA,IADtBC,OAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAGjB,MAAM;IAACG,OAAO,GAAG,KAAK;IAAEC,YAAY,GAAG,EAAE;IAAEC,WAAW,GAAG,KAAK;IAAEC,OAAO,GAAG;EAAK,CAAC,GAAGP,OAAO;EAC1F,MAAM;IAACQ;EAAY,CAAC,GAAG,MAAMX,sBAAsB,CAACG,OAAO,CAAC;EAC5D,MAAMS,YAAY,GAAG,IAAID,YAAY,CAAC,CAAC;EAEvC,IAAI;IACF,MAAME,aAAa,GAAG,IAAIC,UAAU,CAACZ,KAAK,CAACa,KAAK,GAAGb,KAAK,CAACc,MAAM,GAAG,CAAC,CAAC;IACpEJ,YAAY,CAACK,iBAAiB,CAAC,IAAI,CAAC;IACpCL,YAAY,CAACM,4BAA4B,CAAC,IAAI,CAAC;IAC/CN,YAAY,CAACO,uBAAuB,CAAC,IAAI,CAAC;IAE1CP,YAAY,CAACQ,mBAAmB,CAAC,CAAC,EAAElB,KAAK,CAACmB,IAAI,EAAEnB,KAAK,CAACa,KAAK,EAAEb,KAAK,CAACc,MAAM,EAAE,KAAK,CAAC;IACjFJ,YAAY,CAACU,aAAa,CAACf,OAAO,CAAC;IACnCK,YAAY,CAACW,UAAU,CAAChB,OAAO,CAAC;IAChCK,YAAY,CAACY,eAAe,CAAChB,YAAY,CAAC;IAC1CI,YAAY,CAACa,QAAQ,CAAChB,WAAW,CAAC;IAClCG,YAAY,CAACc,SAAS,CAAChB,OAAO,CAAC;IAE/B,MAAMiB,cAAc,GAAGf,YAAY,CAACgB,MAAM,CAACf,aAAa,CAAC;IAEzD,MAAMgB,kBAAkB,GAAGhB,aAAa,CAACiB,QAAQ,CAAC,CAAC,EAAEH,cAAc,CAAC,CAACI,MAAM;IAC3E,OAAOF,kBAAkB;EAC3B,CAAC,CAAC,OAAOG,KAAK,EAAE;IAEdC,OAAO,CAACD,KAAK,CAAC,6DAA6D,EAAEA,KAAK,CAAC;IACnF,MAAMA,KAAK;EACb,CAAC,SAAS;IACRpB,YAAY,CAACsB,MAAM,CAAC,CAAC;EACvB;AACF"}
1
+ {"version":3,"file":"encode-ktx2-basis-texture.js","names":["loadBasisEncoderModule","encodeKTX2BasisTexture","image","options","arguments","length","undefined","useSRGB","qualityLevel","encodeUASTC","mipmaps","BasisEncoder","basisEncoder","basisFileData","Uint8Array","width","height","setCreateKTX2File","setKTX2UASTCSupercompression","setKTX2SRGBTransferFunc","setSliceSourceImage","data","setPerceptual","setMipSRGB","setQualityLevel","setUASTC","setMipGen","numOutputBytes","encode","actualKTX2FileData","subarray","buffer","error","console","delete"],"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":"AACA,SAAQA,sBAAsB,QAAO,gCAAgC;AASrE,OAAO,eAAeC,sBAAsBA,CAC1CC,KAAoB,EAEE;EAAA,IADtBC,OAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAGjB,MAAM;IACJG,OAAO,GAAG,KAAK;IACfC,YAAY,GAAG,EAAE;IACjBC,WAAW,GAAG,KAAK;IACnBC,OAAO,GAAG;EACZ,CAAC,GAAG,CAAAP,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAG,mBAAmB,CAAC,KAAI,CAAC,CAAC;EACxC,MAAM;IAACQ;EAAY,CAAC,GAAG,MAAMX,sBAAsB,CAACG,OAAO,CAAC;EAC5D,MAAMS,YAAY,GAAG,IAAID,YAAY,CAAC,CAAC;EAEvC,IAAI;IACF,MAAME,aAAa,GAAG,IAAIC,UAAU,CAACZ,KAAK,CAACa,KAAK,GAAGb,KAAK,CAACc,MAAM,GAAG,CAAC,CAAC;IACpEJ,YAAY,CAACK,iBAAiB,CAAC,IAAI,CAAC;IACpCL,YAAY,CAACM,4BAA4B,CAAC,IAAI,CAAC;IAC/CN,YAAY,CAACO,uBAAuB,CAAC,IAAI,CAAC;IAE1CP,YAAY,CAACQ,mBAAmB,CAAC,CAAC,EAAElB,KAAK,CAACmB,IAAI,EAAEnB,KAAK,CAACa,KAAK,EAAEb,KAAK,CAACc,MAAM,EAAE,KAAK,CAAC;IACjFJ,YAAY,CAACU,aAAa,CAACf,OAAO,CAAC;IACnCK,YAAY,CAACW,UAAU,CAAChB,OAAO,CAAC;IAChCK,YAAY,CAACY,eAAe,CAAChB,YAAY,CAAC;IAC1CI,YAAY,CAACa,QAAQ,CAAChB,WAAW,CAAC;IAClCG,YAAY,CAACc,SAAS,CAAChB,OAAO,CAAC;IAE/B,MAAMiB,cAAc,GAAGf,YAAY,CAACgB,MAAM,CAACf,aAAa,CAAC;IAEzD,MAAMgB,kBAAkB,GAAGhB,aAAa,CAACiB,QAAQ,CAAC,CAAC,EAAEH,cAAc,CAAC,CAACI,MAAM;IAC3E,OAAOF,kBAAkB;EAC3B,CAAC,CAAC,OAAOG,KAAK,EAAE;IAEdC,OAAO,CAACD,KAAK,CAAC,6DAA6D,EAAEA,KAAK,CAAC;IACnF,MAAMA,KAAK;EACb,CAAC,SAAS;IACRpB,YAAY,CAACsB,MAAM,CAAC,CAAC;EACvB;AACF"}
@@ -1,24 +1,27 @@
1
- const VERSION = typeof "4.0.0-alpha.9" !== 'undefined' ? "4.0.0-alpha.9" : 'beta';
2
1
  import { loadLibrary } from '@loaders.gl/worker-utils';
3
- const BASIS_CDN_ENCODER_WASM = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.wasm");
4
- const BASIS_CDN_ENCODER_JS = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.js");
2
+ export const BASIS_EXTERNAL_LIBRARIES = {
3
+ TRANSCODER: 'basis_transcoder.js',
4
+ TRANSCODER_WASM: 'basis_transcoder.wasm',
5
+ ENCODER: 'basis_encoder.js',
6
+ ENCODER_WASM: 'basis_encoder.wasm'
7
+ };
5
8
  let loadBasisTranscoderPromise;
6
- export async function loadBasisTrascoderModule(options) {
9
+ export async function loadBasisTranscoderModule(options) {
7
10
  const modules = options.modules || {};
8
11
  if (modules.basis) {
9
12
  return modules.basis;
10
13
  }
11
- loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);
14
+ loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTranscoder(options);
12
15
  return await loadBasisTranscoderPromise;
13
16
  }
14
- async function loadBasisTrascoder(options) {
17
+ async function loadBasisTranscoder(options) {
15
18
  let BASIS = null;
16
19
  let wasmBinary = null;
17
- [BASIS, wasmBinary] = await Promise.all([await loadLibrary('basis_transcoder.js', 'textures', options), await loadLibrary('basis_transcoder.wasm', 'textures', options)]);
20
+ [BASIS, wasmBinary] = await Promise.all([await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, 'textures', options), await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, 'textures', options)]);
18
21
  BASIS = BASIS || globalThis.BASIS;
19
- return await initializeBasisTrascoderModule(BASIS, wasmBinary);
22
+ return await initializeBasisTranscoderModule(BASIS, wasmBinary);
20
23
  }
21
- function initializeBasisTrascoderModule(BasisModule, wasmBinary) {
24
+ function initializeBasisTranscoderModule(BasisModule, wasmBinary) {
22
25
  const options = {};
23
26
  if (wasmBinary) {
24
27
  options.wasmBinary = wasmBinary;
@@ -48,7 +51,7 @@ export async function loadBasisEncoderModule(options) {
48
51
  async function loadBasisEncoder(options) {
49
52
  let BASIS_ENCODER = null;
50
53
  let wasmBinary = null;
51
- [BASIS_ENCODER, wasmBinary] = await Promise.all([await loadLibrary(BASIS_CDN_ENCODER_JS, 'textures', options), await loadLibrary(BASIS_CDN_ENCODER_WASM, 'textures', options)]);
54
+ [BASIS_ENCODER, wasmBinary] = await Promise.all([await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, 'textures', options), await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, 'textures', options)]);
52
55
  BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
53
56
  return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
54
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"basis-module-loader.js","names":["VERSION","loadLibrary","BASIS_CDN_ENCODER_WASM","concat","BASIS_CDN_ENCODER_JS","loadBasisTranscoderPromise","loadBasisTrascoderModule","options","modules","basis","loadBasisTrascoder","BASIS","wasmBinary","Promise","all","globalThis","initializeBasisTrascoderModule","BasisModule","resolve","then","module","BasisFile","initializeBasis","loadBasisEncoderPromise","loadBasisEncoderModule","basisEncoder","loadBasisEncoder","BASIS_ENCODER","initializeBasisEncoderModule","BasisEncoderModule","KTX2File","BasisEncoder"],"sources":["../../../../src/lib/parsers/basis-module-loader.ts"],"sourcesContent":["// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n\n// @ts-nocheck\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\nconst BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION}/dist/libs/basis_encoder.wasm`;\nconst BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION}/dist/libs/basis_encoder.js`;\n\nlet loadBasisTranscoderPromise;\n\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nexport async function loadBasisTrascoderModule(options) {\n const modules = options.modules || {};\n if (modules.basis) {\n return modules.basis;\n }\n\n loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);\n return await loadBasisTranscoderPromise;\n}\n\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nasync function loadBasisTrascoder(options) {\n let BASIS = null;\n let wasmBinary = null;\n\n [BASIS, wasmBinary] = await Promise.all([\n await loadLibrary('basis_transcoder.js', 'textures', options),\n await loadLibrary('basis_transcoder.wasm', 'textures', options)\n ]);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n BASIS = BASIS || globalThis.BASIS;\n return await initializeBasisTrascoderModule(BASIS, wasmBinary);\n}\n\n/**\n * Initialize wasm transcoder module\n * @param BasisModule - js part of the module\n * @param wasmBinary - wasm part of the module\n * @returns {BasisFile} promise\n */\nfunction initializeBasisTrascoderModule(BasisModule, wasmBinary) {\n const options: {wasmBinary?} = {};\n\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n // if you try to return BasisModule the browser crashes!\n BasisModule(options).then((module) => {\n const {BasisFile, initializeBasis} = module;\n initializeBasis();\n resolve({BasisFile});\n });\n });\n}\n\nlet loadBasisEncoderPromise;\n\n/**\n * Loads wasm encoder module\n * @param options\n * @returns {BasisFile, KTX2File} promise\n */\nexport async function loadBasisEncoderModule(options) {\n const modules = options.modules || {};\n if (modules.basisEncoder) {\n return modules.basisEncoder;\n }\n\n loadBasisEncoderPromise = loadBasisEncoderPromise || loadBasisEncoder(options);\n return await loadBasisEncoderPromise;\n}\n\n/**\n * Loads wasm encoder module\n * @param options\n * @returns {BasisFile, KTX2File} promise\n */\nasync function loadBasisEncoder(options) {\n let BASIS_ENCODER = null;\n let wasmBinary = null;\n\n [BASIS_ENCODER, wasmBinary] = await Promise.all([\n await loadLibrary(BASIS_CDN_ENCODER_JS, 'textures', options),\n await loadLibrary(BASIS_CDN_ENCODER_WASM, 'textures', options)\n ]);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;\n return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);\n}\n\n/**\n * Initialize wasm transcoder module\n * @param BasisEncoderModule - js part of the module\n * @param wasmBinary - wasm part of the module\n * @returns {BasisFile, KTX2File} promise\n */\nfunction initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {\n const options: {wasmBinary?} = {};\n\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n // if you try to return BasisModule the browser crashes!\n BasisEncoderModule(options).then((module) => {\n const {BasisFile, KTX2File, initializeBasis, BasisEncoder} = module;\n initializeBasis();\n resolve({BasisFile, KTX2File, BasisEncoder});\n });\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"basis-module-loader.js","names":["loadLibrary","BASIS_EXTERNAL_LIBRARIES","TRANSCODER","TRANSCODER_WASM","ENCODER","ENCODER_WASM","loadBasisTranscoderPromise","loadBasisTranscoderModule","options","modules","basis","loadBasisTranscoder","BASIS","wasmBinary","Promise","all","globalThis","initializeBasisTranscoderModule","BasisModule","resolve","then","module","BasisFile","initializeBasis","loadBasisEncoderPromise","loadBasisEncoderModule","basisEncoder","loadBasisEncoder","BASIS_ENCODER","initializeBasisEncoderModule","BasisEncoderModule","KTX2File","BasisEncoder"],"sources":["../../../../src/lib/parsers/basis-module-loader.ts"],"sourcesContent":["import {loadLibrary} from '@loaders.gl/worker-utils';\n\nexport const BASIS_EXTERNAL_LIBRARIES = {\n /** Basis transcoder, javascript wrapper part */\n TRANSCODER: 'basis_transcoder.js',\n /** Basis transcoder, compiled web assembly part */\n TRANSCODER_WASM: 'basis_transcoder.wasm',\n /** Basis encoder, javascript wrapper part */\n ENCODER: 'basis_encoder.js',\n /** Basis encoder, compiled web assembly part */\n ENCODER_WASM: 'basis_encoder.wasm'\n};\n\nlet loadBasisTranscoderPromise;\n\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nexport async function loadBasisTranscoderModule(options) {\n const modules = options.modules || {};\n if (modules.basis) {\n return modules.basis;\n }\n\n loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTranscoder(options);\n return await loadBasisTranscoderPromise;\n}\n\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nasync function loadBasisTranscoder(options) {\n let BASIS = null;\n let wasmBinary = null;\n\n [BASIS, wasmBinary] = await Promise.all([\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, 'textures', options),\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, 'textures', options)\n ]);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n BASIS = BASIS || globalThis.BASIS;\n return await initializeBasisTranscoderModule(BASIS, wasmBinary);\n}\n\n/**\n * Initialize wasm transcoder module\n * @param BasisModule - js part of the module\n * @param wasmBinary - wasm part of the module\n * @returns {BasisFile} promise\n */\nfunction initializeBasisTranscoderModule(BasisModule, wasmBinary) {\n const options: {wasmBinary?} = {};\n\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n // if you try to return BasisModule the browser crashes!\n BasisModule(options).then((module) => {\n const {BasisFile, initializeBasis} = module;\n initializeBasis();\n resolve({BasisFile});\n });\n });\n}\n\nlet loadBasisEncoderPromise;\n\n/**\n * Loads wasm encoder module\n * @param options\n * @returns {BasisFile, KTX2File} promise\n */\nexport async function loadBasisEncoderModule(options) {\n const modules = options.modules || {};\n if (modules.basisEncoder) {\n return modules.basisEncoder;\n }\n\n loadBasisEncoderPromise = loadBasisEncoderPromise || loadBasisEncoder(options);\n return await loadBasisEncoderPromise;\n}\n\n/**\n * Loads wasm encoder module\n * @param options\n * @returns {BasisFile, KTX2File} promise\n */\nasync function loadBasisEncoder(options) {\n let BASIS_ENCODER = null;\n let wasmBinary = null;\n\n [BASIS_ENCODER, wasmBinary] = await Promise.all([\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, 'textures', options),\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, 'textures', options)\n ]);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;\n return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);\n}\n\n/**\n * Initialize wasm transcoder module\n * @param BasisEncoderModule - js part of the module\n * @param wasmBinary - wasm part of the module\n * @returns {BasisFile, KTX2File} promise\n */\nfunction initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {\n const options: {wasmBinary?} = {};\n\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n // if you try to return BasisModule the browser crashes!\n BasisEncoderModule(options).then((module) => {\n const {BasisFile, KTX2File, initializeBasis, BasisEncoder} = module;\n initializeBasis();\n resolve({BasisFile, KTX2File, BasisEncoder});\n });\n });\n}\n"],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import { loadLibrary } from '@loaders.gl/worker-utils';
2
+ export const CRUNCH_EXTERNAL_LIBRARIES = {
3
+ DECODER: 'crunch.js'
4
+ };
2
5
  export async function loadCrunchModule(options) {
3
6
  const modules = options.modules || {};
4
7
  if (modules.crunch) {
@@ -11,7 +14,7 @@ async function loadCrunch(options) {
11
14
  if (crunchModule) {
12
15
  return crunchModule;
13
16
  }
14
- let loadCrunchDecoder = await loadLibrary('crunch.js', 'textures', options);
17
+ let loadCrunchDecoder = await loadLibrary(CRUNCH_EXTERNAL_LIBRARIES.DECODER, 'textures', options);
15
18
  loadCrunchDecoder = loadCrunchDecoder || globalThis.LoadCrunchDecoder;
16
19
  crunchModule = loadCrunchDecoder();
17
20
  return crunchModule;
@@ -1 +1 @@
1
- {"version":3,"file":"crunch-module-loader.js","names":["loadLibrary","loadCrunchModule","options","modules","crunch","loadCrunch","crunchModule","loadCrunchDecoder","globalThis","LoadCrunchDecoder"],"sources":["../../../../src/lib/parsers/crunch-module-loader.ts"],"sourcesContent":["// @ts-nocheck\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\n/**\n * Load crunch decoder module\n * @param options - loader options\n * @returns Promise of module object\n */\nexport async function loadCrunchModule(options): Promise<any> {\n const modules = options.modules || {};\n if (modules.crunch) {\n return modules.crunch;\n }\n\n return loadCrunch(options);\n}\n\nlet crunchModule;\n\n/**\n * Load crunch decoder module\n * @param {any} options - Loader options\n * @returns {Promise<any>} Promise of Module object\n */\nasync function loadCrunch(options) {\n if (crunchModule) {\n return crunchModule;\n }\n\n let loadCrunchDecoder = await loadLibrary('crunch.js', 'textures', options);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n loadCrunchDecoder = loadCrunchDecoder || globalThis.LoadCrunchDecoder;\n crunchModule = loadCrunchDecoder();\n return crunchModule;\n}\n"],"mappings":"AACA,SAAQA,WAAW,QAAO,0BAA0B;AAOpD,OAAO,eAAeC,gBAAgBA,CAACC,OAAO,EAAgB;EAC5D,MAAMC,OAAO,GAAGD,OAAO,CAACC,OAAO,IAAI,CAAC,CAAC;EACrC,IAAIA,OAAO,CAACC,MAAM,EAAE;IAClB,OAAOD,OAAO,CAACC,MAAM;EACvB;EAEA,OAAOC,UAAU,CAACH,OAAO,CAAC;AAC5B;AAEA,IAAII,YAAY;AAOhB,eAAeD,UAAUA,CAACH,OAAO,EAAE;EACjC,IAAII,YAAY,EAAE;IAChB,OAAOA,YAAY;EACrB;EAEA,IAAIC,iBAAiB,GAAG,MAAMP,WAAW,CAAC,WAAW,EAAE,UAAU,EAAEE,OAAO,CAAC;EAI3EK,iBAAiB,GAAGA,iBAAiB,IAAIC,UAAU,CAACC,iBAAiB;EACrEH,YAAY,GAAGC,iBAAiB,CAAC,CAAC;EAClC,OAAOD,YAAY;AACrB"}
1
+ {"version":3,"file":"crunch-module-loader.js","names":["loadLibrary","CRUNCH_EXTERNAL_LIBRARIES","DECODER","loadCrunchModule","options","modules","crunch","loadCrunch","crunchModule","loadCrunchDecoder","globalThis","LoadCrunchDecoder"],"sources":["../../../../src/lib/parsers/crunch-module-loader.ts"],"sourcesContent":["// @ts-nocheck\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\nexport const CRUNCH_EXTERNAL_LIBRARIES = {\n /** Crunch decoder library. It is used as dynamically imported script */\n DECODER: 'crunch.js'\n};\n\n/**\n * Load crunch decoder module\n * @param options - loader options\n * @returns Promise of module object\n */\nexport async function loadCrunchModule(options): Promise<any> {\n const modules = options.modules || {};\n if (modules.crunch) {\n return modules.crunch;\n }\n\n return loadCrunch(options);\n}\n\nlet crunchModule;\n\n/**\n * Load crunch decoder module\n * @param {any} options - Loader options\n * @returns {Promise<any>} Promise of Module object\n */\nasync function loadCrunch(options) {\n if (crunchModule) {\n return crunchModule;\n }\n\n let loadCrunchDecoder = await loadLibrary(CRUNCH_EXTERNAL_LIBRARIES.DECODER, 'textures', options);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n loadCrunchDecoder = loadCrunchDecoder || globalThis.LoadCrunchDecoder;\n crunchModule = loadCrunchDecoder();\n return crunchModule;\n}\n"],"mappings":"AACA,SAAQA,WAAW,QAAO,0BAA0B;AAEpD,OAAO,MAAMC,yBAAyB,GAAG;EAEvCC,OAAO,EAAE;AACX,CAAC;AAOD,OAAO,eAAeC,gBAAgBA,CAACC,OAAO,EAAgB;EAC5D,MAAMC,OAAO,GAAGD,OAAO,CAACC,OAAO,IAAI,CAAC,CAAC;EACrC,IAAIA,OAAO,CAACC,MAAM,EAAE;IAClB,OAAOD,OAAO,CAACC,MAAM;EACvB;EAEA,OAAOC,UAAU,CAACH,OAAO,CAAC;AAC5B;AAEA,IAAII,YAAY;AAOhB,eAAeD,UAAUA,CAACH,OAAO,EAAE;EACjC,IAAII,YAAY,EAAE;IAChB,OAAOA,YAAY;EACrB;EAEA,IAAIC,iBAAiB,GAAG,MAAMT,WAAW,CAACC,yBAAyB,CAACC,OAAO,EAAE,UAAU,EAAEE,OAAO,CAAC;EAIjGK,iBAAiB,GAAGA,iBAAiB,IAAIC,UAAU,CAACC,iBAAiB;EACrEH,YAAY,GAAGC,iBAAiB,CAAC,CAAC;EAClC,OAAOD,YAAY;AACrB"}
@@ -1,4 +1,4 @@
1
- import { loadBasisEncoderModule, loadBasisTrascoderModule } from './basis-module-loader';
1
+ import { loadBasisEncoderModule, loadBasisTranscoderModule } from './basis-module-loader';
2
2
  import { GL_EXTENSIONS_CONSTANTS } from '../gl-extensions';
3
3
  import { getSupportedGPUTextureFormats } from '../utils/texture-formats';
4
4
  import { isKTX } from './parse-ktx';
@@ -86,7 +86,7 @@ export default async function parseBasis(data, options) {
86
86
  }
87
87
  const {
88
88
  BasisFile
89
- } = await loadBasisTrascoderModule(options);
89
+ } = await loadBasisTranscoderModule(options);
90
90
  return parseBasisFile(BasisFile, data, options);
91
91
  }
92
92
  switch (options.basis.module) {
@@ -103,7 +103,7 @@ export default async function parseBasis(data, options) {
103
103
  default:
104
104
  const {
105
105
  BasisFile
106
- } = await loadBasisTrascoderModule(options);
106
+ } = await loadBasisTranscoderModule(options);
107
107
  return parseBasisFile(BasisFile, data, options);
108
108
  }
109
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-basis.js","names":["loadBasisEncoderModule","loadBasisTrascoderModule","GL_EXTENSIONS_CONSTANTS","getSupportedGPUTextureFormats","isKTX","OutputFormat","etc1","basisFormat","compressed","format","COMPRESSED_RGB_ETC1_WEBGL","etc2","bc1","COMPRESSED_RGB_S3TC_DXT1_EXT","bc3","COMPRESSED_RGBA_S3TC_DXT5_EXT","bc4","bc5","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_ASTC_4X4_KHR","rgba32","rgb565","bgr565","rgba4444","parseBasis","data","options","basis","containerFormat","fileConstructors","parseKTX2File","KTX2File","BasisFile","parseBasisFile","module","basisFile","Uint8Array","startTranscoding","Error","imageCount","getNumImages","images","imageIndex","levelsCount","getNumLevels","levels","levelIndex","push","transcodeImage","close","delete","width","getImageWidth","height","getImageHeight","hasAlpha","getHasAlpha","getBasisOptions","decodedSize","getImageTranscodedSizeInBytes","decodedData","ktx2File","getLevels","transcodeKTX2Image","alphaFlag","getImageLevelInfo","levelSize","selectSupportedBasisFormat","alpha","noAlpha","toLowerCase","supportedFormats","has"],"sources":["../../../../src/lib/parsers/parse-basis.ts"],"sourcesContent":["/* eslint-disable indent */\nimport type {TextureLevel} from '@loaders.gl/schema';\nimport {loadBasisEncoderModule, loadBasisTrascoderModule} from './basis-module-loader';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {getSupportedGPUTextureFormats} from '../utils/texture-formats';\nimport {isKTX} from './parse-ktx';\n\nexport type BasisFormat =\n | 'etc1'\n | 'etc2'\n | 'bc1'\n | 'bc3'\n | 'bc4'\n | 'bc5'\n | 'bc7-m6-opaque-only'\n | 'bc7-m5'\n | 'pvrtc1-4-rgb'\n | 'pvrtc1-4-rgba'\n | 'astc-4x4'\n | 'atc-rgb'\n | 'atc-rgba-interpolated-alpha'\n | 'rgba32'\n | 'rgb565'\n | 'bgr565'\n | 'rgba4444';\n\ntype BasisOutputOptions = {\n basisFormat: number;\n compressed: boolean;\n format?: number;\n};\n\nconst OutputFormat: Record<string, BasisOutputOptions> = {\n etc1: {\n basisFormat: 0,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL\n },\n etc2: {basisFormat: 1, compressed: true},\n bc1: {\n basisFormat: 2,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT\n },\n bc3: {\n basisFormat: 3,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n },\n bc4: {basisFormat: 4, compressed: true},\n bc5: {basisFormat: 5, compressed: true},\n 'bc7-m6-opaque-only': {basisFormat: 6, compressed: true},\n 'bc7-m5': {basisFormat: 7, compressed: true},\n 'pvrtc1-4-rgb': {\n basisFormat: 8,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG\n },\n 'pvrtc1-4-rgba': {\n basisFormat: 9,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\n },\n 'astc-4x4': {\n basisFormat: 10,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR\n },\n 'atc-rgb': {basisFormat: 11, compressed: true},\n 'atc-rgba-interpolated-alpha': {basisFormat: 12, compressed: true},\n rgba32: {basisFormat: 13, compressed: false},\n rgb565: {basisFormat: 14, compressed: false},\n bgr565: {basisFormat: 15, compressed: false},\n rgba4444: {basisFormat: 16, compressed: false}\n};\n\n/**\n * parse data with a Binomial Basis_Universal module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nexport default async function parseBasis(data: ArrayBuffer, options): Promise<TextureLevel[][]> {\n if (options.basis.containerFormat === 'auto') {\n if (isKTX(data)) {\n const fileConstructors = await loadBasisEncoderModule(options);\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n }\n const {BasisFile} = await loadBasisTrascoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n switch (options.basis.module) {\n case 'encoder':\n const fileConstructors = await loadBasisEncoderModule(options);\n switch (options.basis.containerFormat) {\n case 'ktx2':\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n case 'basis':\n default:\n return parseBasisFile(fileConstructors.BasisFile, data, options);\n }\n case 'transcoder':\n default:\n const {BasisFile} = await loadBasisTrascoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n}\n\n/**\n * Parse *.basis file data\n * @param BasisFile - initialized transcoder module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseBasisFile(BasisFile, data, options): TextureLevel[][] {\n const basisFile = new BasisFile(new Uint8Array(data));\n\n try {\n if (!basisFile.startTranscoding()) {\n throw new Error('Failed to start basis transcoding');\n }\n\n const imageCount = basisFile.getNumImages();\n const images: TextureLevel[][] = [];\n\n for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {\n const levelsCount = basisFile.getNumLevels(imageIndex);\n const levels: TextureLevel[] = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));\n }\n\n images.push(levels);\n }\n\n return images;\n } finally {\n basisFile.close();\n basisFile.delete();\n }\n}\n\n/**\n * Parse the particular level image of a basis file\n * @param basisFile\n * @param imageIndex\n * @param levelIndex\n * @param options\n * @returns compressed texture data\n */\nfunction transcodeImage(basisFile, imageIndex, levelIndex, options): TextureLevel {\n const width = basisFile.getImageWidth(imageIndex, levelIndex);\n const height = basisFile.getImageHeight(imageIndex, levelIndex);\n\n // See https://github.com/BinomialLLC/basis_universal/pull/83\n const hasAlpha = basisFile.getHasAlpha(/* imageIndex, levelIndex */);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, hasAlpha);\n\n const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);\n const decodedData = new Uint8Array(decodedSize);\n\n if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {\n throw new Error('failed to start Basis transcoding');\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n format,\n\n // Additional fields\n // Add levelSize field.\n hasAlpha\n };\n}\n\n/**\n * Parse *.ktx2 file data\n * @param KTX2File\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseKTX2File(KTX2File, data: ArrayBuffer, options): TextureLevel[][] {\n const ktx2File = new KTX2File(new Uint8Array(data));\n\n try {\n if (!ktx2File.startTranscoding()) {\n throw new Error('failed to start KTX2 transcoding');\n }\n const levelsCount = ktx2File.getLevels();\n const levels: TextureLevel[] = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));\n break; // texture app can only show one level for some reason\n }\n\n return [levels];\n } finally {\n ktx2File.close();\n ktx2File.delete();\n }\n}\n\n/**\n * Parse the particular level image of a ktx2 file\n * @param ktx2File\n * @param levelIndex\n * @param options\n * @returns\n */\nfunction transcodeKTX2Image(ktx2File, levelIndex: number, options): TextureLevel {\n const {alphaFlag, height, width} = ktx2File.getImageLevelInfo(levelIndex, 0, 0);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, alphaFlag);\n\n const decodedSize = ktx2File.getImageTranscodedSizeInBytes(\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat\n );\n const decodedData = new Uint8Array(decodedSize);\n\n if (\n !ktx2File.transcodeImage(\n decodedData,\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat,\n 0,\n -1 /* channel0 */,\n -1 /* channel1 */\n )\n ) {\n throw new Error('Failed to transcode KTX2 image');\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n\n // Additional fields\n levelSize: decodedSize,\n hasAlpha: alphaFlag,\n format\n };\n}\n\n/**\n * Get BasisFormat by loader format option\n * @param options\n * @param hasAlpha\n * @returns BasisFormat data\n */\nfunction getBasisOptions(options, hasAlpha: boolean): BasisOutputOptions {\n let format = options && options.basis && options.basis.format;\n if (format === 'auto') {\n format = selectSupportedBasisFormat();\n }\n if (typeof format === 'object') {\n format = hasAlpha ? format.alpha : format.noAlpha;\n }\n format = format.toLowerCase();\n return OutputFormat[format];\n}\n\n/**\n * Select transcode format from the list of supported formats\n * @returns key for OutputFormat map\n */\nexport function selectSupportedBasisFormat():\n | BasisFormat\n | {\n alpha: BasisFormat;\n noAlpha: BasisFormat;\n } {\n const supportedFormats = getSupportedGPUTextureFormats();\n if (supportedFormats.has('astc')) {\n return 'astc-4x4';\n } else if (supportedFormats.has('dxt')) {\n return {\n alpha: 'bc3',\n noAlpha: 'bc1'\n };\n } else if (supportedFormats.has('pvrtc')) {\n return {\n alpha: 'pvrtc1-4-rgba',\n noAlpha: 'pvrtc1-4-rgb'\n };\n } else if (supportedFormats.has('etc1')) {\n return 'etc1';\n } else if (supportedFormats.has('etc2')) {\n return 'etc2';\n }\n return 'rgb565';\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-basis.js","names":["loadBasisEncoderModule","loadBasisTranscoderModule","GL_EXTENSIONS_CONSTANTS","getSupportedGPUTextureFormats","isKTX","OutputFormat","etc1","basisFormat","compressed","format","COMPRESSED_RGB_ETC1_WEBGL","etc2","bc1","COMPRESSED_RGB_S3TC_DXT1_EXT","bc3","COMPRESSED_RGBA_S3TC_DXT5_EXT","bc4","bc5","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_ASTC_4X4_KHR","rgba32","rgb565","bgr565","rgba4444","parseBasis","data","options","basis","containerFormat","fileConstructors","parseKTX2File","KTX2File","BasisFile","parseBasisFile","module","basisFile","Uint8Array","startTranscoding","Error","imageCount","getNumImages","images","imageIndex","levelsCount","getNumLevels","levels","levelIndex","push","transcodeImage","close","delete","width","getImageWidth","height","getImageHeight","hasAlpha","getHasAlpha","getBasisOptions","decodedSize","getImageTranscodedSizeInBytes","decodedData","ktx2File","getLevels","transcodeKTX2Image","alphaFlag","getImageLevelInfo","levelSize","selectSupportedBasisFormat","alpha","noAlpha","toLowerCase","supportedFormats","has"],"sources":["../../../../src/lib/parsers/parse-basis.ts"],"sourcesContent":["/* eslint-disable indent */\nimport type {TextureLevel} from '@loaders.gl/schema';\nimport {loadBasisEncoderModule, loadBasisTranscoderModule} from './basis-module-loader';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {getSupportedGPUTextureFormats} from '../utils/texture-formats';\nimport {isKTX} from './parse-ktx';\n\nexport type BasisFormat =\n | 'etc1'\n | 'etc2'\n | 'bc1'\n | 'bc3'\n | 'bc4'\n | 'bc5'\n | 'bc7-m6-opaque-only'\n | 'bc7-m5'\n | 'pvrtc1-4-rgb'\n | 'pvrtc1-4-rgba'\n | 'astc-4x4'\n | 'atc-rgb'\n | 'atc-rgba-interpolated-alpha'\n | 'rgba32'\n | 'rgb565'\n | 'bgr565'\n | 'rgba4444';\n\ntype BasisOutputOptions = {\n basisFormat: number;\n compressed: boolean;\n format?: number;\n};\n\nconst OutputFormat: Record<string, BasisOutputOptions> = {\n etc1: {\n basisFormat: 0,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL\n },\n etc2: {basisFormat: 1, compressed: true},\n bc1: {\n basisFormat: 2,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT\n },\n bc3: {\n basisFormat: 3,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n },\n bc4: {basisFormat: 4, compressed: true},\n bc5: {basisFormat: 5, compressed: true},\n 'bc7-m6-opaque-only': {basisFormat: 6, compressed: true},\n 'bc7-m5': {basisFormat: 7, compressed: true},\n 'pvrtc1-4-rgb': {\n basisFormat: 8,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG\n },\n 'pvrtc1-4-rgba': {\n basisFormat: 9,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\n },\n 'astc-4x4': {\n basisFormat: 10,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR\n },\n 'atc-rgb': {basisFormat: 11, compressed: true},\n 'atc-rgba-interpolated-alpha': {basisFormat: 12, compressed: true},\n rgba32: {basisFormat: 13, compressed: false},\n rgb565: {basisFormat: 14, compressed: false},\n bgr565: {basisFormat: 15, compressed: false},\n rgba4444: {basisFormat: 16, compressed: false}\n};\n\n/**\n * parse data with a Binomial Basis_Universal module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nexport default async function parseBasis(data: ArrayBuffer, options): Promise<TextureLevel[][]> {\n if (options.basis.containerFormat === 'auto') {\n if (isKTX(data)) {\n const fileConstructors = await loadBasisEncoderModule(options);\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n }\n const {BasisFile} = await loadBasisTranscoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n switch (options.basis.module) {\n case 'encoder':\n const fileConstructors = await loadBasisEncoderModule(options);\n switch (options.basis.containerFormat) {\n case 'ktx2':\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n case 'basis':\n default:\n return parseBasisFile(fileConstructors.BasisFile, data, options);\n }\n case 'transcoder':\n default:\n const {BasisFile} = await loadBasisTranscoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n}\n\n/**\n * Parse *.basis file data\n * @param BasisFile - initialized transcoder module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseBasisFile(BasisFile, data, options): TextureLevel[][] {\n const basisFile = new BasisFile(new Uint8Array(data));\n\n try {\n if (!basisFile.startTranscoding()) {\n throw new Error('Failed to start basis transcoding');\n }\n\n const imageCount = basisFile.getNumImages();\n const images: TextureLevel[][] = [];\n\n for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {\n const levelsCount = basisFile.getNumLevels(imageIndex);\n const levels: TextureLevel[] = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));\n }\n\n images.push(levels);\n }\n\n return images;\n } finally {\n basisFile.close();\n basisFile.delete();\n }\n}\n\n/**\n * Parse the particular level image of a basis file\n * @param basisFile\n * @param imageIndex\n * @param levelIndex\n * @param options\n * @returns compressed texture data\n */\nfunction transcodeImage(basisFile, imageIndex, levelIndex, options): TextureLevel {\n const width = basisFile.getImageWidth(imageIndex, levelIndex);\n const height = basisFile.getImageHeight(imageIndex, levelIndex);\n\n // See https://github.com/BinomialLLC/basis_universal/pull/83\n const hasAlpha = basisFile.getHasAlpha(/* imageIndex, levelIndex */);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, hasAlpha);\n\n const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);\n const decodedData = new Uint8Array(decodedSize);\n\n if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {\n throw new Error('failed to start Basis transcoding');\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n format,\n\n // Additional fields\n // Add levelSize field.\n hasAlpha\n };\n}\n\n/**\n * Parse *.ktx2 file data\n * @param KTX2File\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseKTX2File(KTX2File, data: ArrayBuffer, options): TextureLevel[][] {\n const ktx2File = new KTX2File(new Uint8Array(data));\n\n try {\n if (!ktx2File.startTranscoding()) {\n throw new Error('failed to start KTX2 transcoding');\n }\n const levelsCount = ktx2File.getLevels();\n const levels: TextureLevel[] = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));\n break; // texture app can only show one level for some reason\n }\n\n return [levels];\n } finally {\n ktx2File.close();\n ktx2File.delete();\n }\n}\n\n/**\n * Parse the particular level image of a ktx2 file\n * @param ktx2File\n * @param levelIndex\n * @param options\n * @returns\n */\nfunction transcodeKTX2Image(ktx2File, levelIndex: number, options): TextureLevel {\n const {alphaFlag, height, width} = ktx2File.getImageLevelInfo(levelIndex, 0, 0);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, alphaFlag);\n\n const decodedSize = ktx2File.getImageTranscodedSizeInBytes(\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat\n );\n const decodedData = new Uint8Array(decodedSize);\n\n if (\n !ktx2File.transcodeImage(\n decodedData,\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat,\n 0,\n -1 /* channel0 */,\n -1 /* channel1 */\n )\n ) {\n throw new Error('Failed to transcode KTX2 image');\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n\n // Additional fields\n levelSize: decodedSize,\n hasAlpha: alphaFlag,\n format\n };\n}\n\n/**\n * Get BasisFormat by loader format option\n * @param options\n * @param hasAlpha\n * @returns BasisFormat data\n */\nfunction getBasisOptions(options, hasAlpha: boolean): BasisOutputOptions {\n let format = options && options.basis && options.basis.format;\n if (format === 'auto') {\n format = selectSupportedBasisFormat();\n }\n if (typeof format === 'object') {\n format = hasAlpha ? format.alpha : format.noAlpha;\n }\n format = format.toLowerCase();\n return OutputFormat[format];\n}\n\n/**\n * Select transcode format from the list of supported formats\n * @returns key for OutputFormat map\n */\nexport function selectSupportedBasisFormat():\n | BasisFormat\n | {\n alpha: BasisFormat;\n noAlpha: BasisFormat;\n } {\n const supportedFormats = getSupportedGPUTextureFormats();\n if (supportedFormats.has('astc')) {\n return 'astc-4x4';\n } else if (supportedFormats.has('dxt')) {\n return {\n alpha: 'bc3',\n noAlpha: 'bc1'\n };\n } else if (supportedFormats.has('pvrtc')) {\n return {\n alpha: 'pvrtc1-4-rgba',\n noAlpha: 'pvrtc1-4-rgb'\n };\n } else if (supportedFormats.has('etc1')) {\n return 'etc1';\n } else if (supportedFormats.has('etc2')) {\n return 'etc2';\n }\n return 'rgb565';\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deep-load.js","names":["asyncDeepMap","deepLoad","urlTree","load","options","url","shallowLoad","response","fetch","arrayBuffer"],"sources":["../../../../src/lib/texture-api/deep-load.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport {asyncDeepMap} from './async-deep-map';\n\nexport type LoadOptions = Record<string, any>;\nexport type Load = (data: ArrayBuffer, options: Record<string, any>) => Promise<any>;\n\nexport async function deepLoad(urlTree: unknown, load: Load, options: LoadOptions) {\n return await asyncDeepMap(urlTree, (url: string) => shallowLoad(url, load, options));\n}\n\nexport async function shallowLoad(url: string, load: Load, options: LoadOptions): Promise<any> {\n // console.error('loading', url);\n const response = await fetch(url, options.fetch);\n const arrayBuffer = await response.arrayBuffer();\n return await load(arrayBuffer, options);\n}\n"],"mappings":"AACA,SAAQA,YAAY,QAAO,kBAAkB;AAK7C,OAAO,eAAeC,QAAQA,CAACC,OAAgB,EAAEC,IAAU,EAAEC,OAAoB,EAAE;EACjF,OAAO,MAAMJ,YAAY,CAACE,OAAO,EAAGG,GAAW,IAAKC,WAAW,CAACD,GAAG,EAAEF,IAAI,EAAEC,OAAO,CAAC,CAAC;AACtF;AAEA,OAAO,eAAeE,WAAWA,CAACD,GAAW,EAAEF,IAAU,EAAEC,OAAoB,EAAgB;EAE7F,MAAMG,QAAQ,GAAG,MAAMC,KAAK,CAACH,GAAG,EAAED,OAAO,CAACI,KAAK,CAAC;EAChD,MAAMC,WAAW,GAAG,MAAMF,QAAQ,CAACE,WAAW,CAAC,CAAC;EAChD,OAAO,MAAMN,IAAI,CAACM,WAAW,EAAEL,OAAO,CAAC;AACzC"}
1
+ {"version":3,"file":"deep-load.js","names":["asyncDeepMap","deepLoad","urlTree","load","options","url","shallowLoad","response","fetch","arrayBuffer"],"sources":["../../../../src/lib/texture-api/deep-load.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport {asyncDeepMap} from './async-deep-map';\n\nexport type LoadOptions = Record<string, any>;\nexport type Load = (data: ArrayBuffer, options: Record<string, any>) => Promise<any>;\n\nexport async function deepLoad(urlTree: unknown, load: Load, options: LoadOptions) {\n return await asyncDeepMap(urlTree, (url: string) => shallowLoad(url, load, options));\n}\n\nexport async function shallowLoad(url: string, load: Load, options: LoadOptions): Promise<any> {\n const response = await fetch(url, options.fetch);\n const arrayBuffer = await response.arrayBuffer();\n return await load(arrayBuffer, options);\n}\n"],"mappings":"AACA,SAAQA,YAAY,QAAO,kBAAkB;AAK7C,OAAO,eAAeC,QAAQA,CAACC,OAAgB,EAAEC,IAAU,EAAEC,OAAoB,EAAE;EACjF,OAAO,MAAMJ,YAAY,CAACE,OAAO,EAAGG,GAAW,IAAKC,WAAW,CAACD,GAAG,EAAEF,IAAI,EAAEC,OAAO,CAAC,CAAC;AACtF;AAEA,OAAO,eAAeE,WAAWA,CAACD,GAAW,EAAEF,IAAU,EAAEC,OAAoB,EAAgB;EAC7F,MAAMG,QAAQ,GAAG,MAAMC,KAAK,CAACH,GAAG,EAAED,OAAO,CAACI,KAAK,CAAC;EAChD,MAAMC,WAAW,GAAG,MAAMF,QAAQ,CAACE,WAAW,CAAC,CAAC;EAChD,OAAO,MAAMN,IAAI,CAACM,WAAW,EAAEL,OAAO,CAAC;AACzC"}
@@ -1,2 +1,2 @@
1
- export const VERSION = typeof "4.0.0-alpha.9" !== 'undefined' ? "4.0.0-alpha.9" : 'beta';
1
+ export const VERSION = typeof "4.0.0-beta.1" !== 'undefined' ? "4.0.0-beta.1" : 'beta';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// TODO: use 'latest' instead of 'beta' when 3.0.0 version is released as 'latest'\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n"],"mappings":"AAIA,OAAO,MAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,MAAM"}
1
+ {"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// TODO: use 'latest' instead of 'beta' when 3.0.0 version is released as 'latest'\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n"],"mappings":"AAIA,OAAO,MAAMA,OAAO,GAAG,qBAAkB,KAAK,WAAW,oBAAiB,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"compressed-texture-worker.js","names":["createLoaderWorker","CompressedTextureLoader"],"sources":["../../../src/workers/compressed-texture-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {CompressedTextureLoader} from '../compressed-texture-loader';\n\ncreateLoaderWorker(CompressedTextureLoader);\n"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,0BAA0B;AAC3D,SAAQC,uBAAuB,QAAO,8BAA8B;AAEpED,kBAAkB,CAACC,uBAAuB,CAAC"}
1
+ {"version":3,"file":"compressed-texture-worker.js","names":["createLoaderWorker","CompressedTextureLoader"],"sources":["../../../src/workers/compressed-texture-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {CompressedTextureLoader} from '../compressed-texture-loader';\n\n// @ts-expect-error\ncreateLoaderWorker(CompressedTextureLoader);\n"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,0BAA0B;AAC3D,SAAQC,uBAAuB,QAAO,8BAA8B;AAGpED,kBAAkB,CAACC,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ktx2-basis-writer-worker-node.js","names":["WorkerBody","KTX2BasisWriter","inWorkerThread","onmessage","type","payload","_KTX2BasisWriter$enco","input","options","result","encode","call","postMessage","error","message","Error"],"sources":["../../../src/workers/ktx2-basis-writer-worker-node.ts"],"sourcesContent":["// Polyfills increases the bundle size significantly. Use it for NodeJS worker only\nimport '@loaders.gl/polyfills';\nimport {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {KTX2BasisWriter} from '../ktx2-basis-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await KTX2BasisWriter.encode?.(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AACA,OAAO,uBAAuB;AAC9B,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,eAAe,QAAO,sBAAsB;AAEpD,CAAC,MAAM;EAEL,IAAI,CAACD,UAAU,CAACE,cAAc,CAAC,CAAC,EAAE;IAChC;EACF;EAEAF,UAAU,CAACG,SAAS,GAAG,OAAOC,IAAI,EAAEC,OAA6B,KAAK;IACpE,QAAQD,IAAI;MACV,KAAK,SAAS;QACZ,IAAI;UAAA,IAAAE,qBAAA;UACF,MAAM;YAACC,KAAK;YAAEC;UAAO,CAAC,GAAGH,OAAO;UAChC,MAAMI,MAAM,GAAG,QAAAH,qBAAA,GAAML,eAAe,CAACS,MAAM,cAAAJ,qBAAA,uBAAtBA,qBAAA,CAAAK,IAAA,CAAAV,eAAe,EAAUM,KAAK,EAAEC,OAAO,CAAC;UAC7DR,UAAU,CAACY,WAAW,CAAC,MAAM,EAAE;YAACH;UAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAOI,KAAK,EAAE;UACd,MAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG,EAAE;UAC3Dd,UAAU,CAACY,WAAW,CAAC,OAAO,EAAE;YAACC,KAAK,EAAEC;UAAO,CAAC,CAAC;QACnD;QACA;MACF;IACF;EACF,CAAC;AACH,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"ktx2-basis-writer-worker-node.js","names":["WorkerBody","KTX2BasisWriter","inWorkerThread","onmessage","type","payload","_KTX2BasisWriter$enco","input","options","result","encode","call","postMessage","error","message","Error"],"sources":["../../../src/workers/ktx2-basis-writer-worker-node.ts"],"sourcesContent":["// Polyfills increases the bundle size significantly. Use it for NodeJS worker only\nimport '@loaders.gl/polyfills';\nimport {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {KTX2BasisWriter, KTX2BasisWriterOptions} from '../ktx2-basis-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await KTX2BasisWriter.encode?.(input, options as KTX2BasisWriterOptions);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AACA,OAAO,uBAAuB;AAC9B,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,eAAe,QAA+B,sBAAsB;AAE5E,CAAC,MAAM;EAEL,IAAI,CAACD,UAAU,CAACE,cAAc,CAAC,CAAC,EAAE;IAChC;EACF;EAEAF,UAAU,CAACG,SAAS,GAAG,OAAOC,IAAI,EAAEC,OAA6B,KAAK;IACpE,QAAQD,IAAI;MACV,KAAK,SAAS;QACZ,IAAI;UAAA,IAAAE,qBAAA;UACF,MAAM;YAACC,KAAK;YAAEC;UAAO,CAAC,GAAGH,OAAO;UAChC,MAAMI,MAAM,GAAG,QAAAH,qBAAA,GAAML,eAAe,CAACS,MAAM,cAAAJ,qBAAA,uBAAtBA,qBAAA,CAAAK,IAAA,CAAAV,eAAe,EAAUM,KAAK,EAAEC,OAAiC,CAAC;UACvFR,UAAU,CAACY,WAAW,CAAC,MAAM,EAAE;YAACH;UAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAOI,KAAK,EAAE;UACd,MAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG,EAAE;UAC3Dd,UAAU,CAACY,WAAW,CAAC,OAAO,EAAE;YAACC,KAAK,EAAEC;UAAO,CAAC,CAAC;QACnD;QACA;MACF;IACF;EACF,CAAC;AACH,CAAC,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ktx2-basis-writer-worker.js","names":["WorkerBody","KTX2BasisWriter","inWorkerThread","onmessage","type","payload","_KTX2BasisWriter$enco","input","options","result","encode","call","postMessage","error","message","Error"],"sources":["../../../src/workers/ktx2-basis-writer-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {KTX2BasisWriter} from '../ktx2-basis-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await KTX2BasisWriter.encode?.(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AAAA,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,eAAe,QAAO,sBAAsB;AAEpD,CAAC,MAAM;EAEL,IAAI,CAACD,UAAU,CAACE,cAAc,CAAC,CAAC,EAAE;IAChC;EACF;EAEAF,UAAU,CAACG,SAAS,GAAG,OAAOC,IAAI,EAAEC,OAA6B,KAAK;IACpE,QAAQD,IAAI;MACV,KAAK,SAAS;QACZ,IAAI;UAAA,IAAAE,qBAAA;UACF,MAAM;YAACC,KAAK;YAAEC;UAAO,CAAC,GAAGH,OAAO;UAChC,MAAMI,MAAM,GAAG,QAAAH,qBAAA,GAAML,eAAe,CAACS,MAAM,cAAAJ,qBAAA,uBAAtBA,qBAAA,CAAAK,IAAA,CAAAV,eAAe,EAAUM,KAAK,EAAEC,OAAO,CAAC;UAC7DR,UAAU,CAACY,WAAW,CAAC,MAAM,EAAE;YAACH;UAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAOI,KAAK,EAAE;UACd,MAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG,EAAE;UAC3Dd,UAAU,CAACY,WAAW,CAAC,OAAO,EAAE;YAACC,KAAK,EAAEC;UAAO,CAAC,CAAC;QACnD;QACA;MACF;IACF;EACF,CAAC;AACH,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"ktx2-basis-writer-worker.js","names":["WorkerBody","KTX2BasisWriter","inWorkerThread","onmessage","type","payload","_KTX2BasisWriter$enco","input","options","result","encode","call","postMessage","error","message","Error"],"sources":["../../../src/workers/ktx2-basis-writer-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {KTX2BasisWriter, KTX2BasisWriterOptions} from '../ktx2-basis-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await KTX2BasisWriter.encode?.(input, options as KTX2BasisWriterOptions);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AAAA,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,eAAe,QAA+B,sBAAsB;AAE5E,CAAC,MAAM;EAEL,IAAI,CAACD,UAAU,CAACE,cAAc,CAAC,CAAC,EAAE;IAChC;EACF;EAEAF,UAAU,CAACG,SAAS,GAAG,OAAOC,IAAI,EAAEC,OAA6B,KAAK;IACpE,QAAQD,IAAI;MACV,KAAK,SAAS;QACZ,IAAI;UAAA,IAAAE,qBAAA;UACF,MAAM;YAACC,KAAK;YAAEC;UAAO,CAAC,GAAGH,OAAO;UAChC,MAAMI,MAAM,GAAG,QAAAH,qBAAA,GAAML,eAAe,CAACS,MAAM,cAAAJ,qBAAA,uBAAtBA,qBAAA,CAAAK,IAAA,CAAAV,eAAe,EAAUM,KAAK,EAAEC,OAAiC,CAAC;UACvFR,UAAU,CAACY,WAAW,CAAC,MAAM,EAAE;YAACH;UAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAOI,KAAK,EAAE;UACd,MAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG,EAAE;UAC3Dd,UAAU,CAACY,WAAW,CAAC,OAAO,EAAE;YAACC,KAAK,EAAEC;UAAO,CAAC,CAAC;QACnD;QACA;MACF;IACF;EACF,CAAC;AACH,CAAC,EAAE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,8 @@ export { BasisLoader, BasisWorkerLoader } from './basis-loader';
4
4
  export { CompressedTextureLoader, CompressedTextureWorkerLoader } from './compressed-texture-loader';
5
5
  export { CrunchLoader } from './crunch-loader';
6
6
  export { NPYLoader, NPYWorkerLoader } from './npy-loader';
7
+ export { BASIS_EXTERNAL_LIBRARIES } from './lib/parsers/basis-module-loader';
8
+ export { CRUNCH_EXTERNAL_LIBRARIES } from './lib/parsers/crunch-module-loader';
7
9
  export { CompressedTextureWriter } from './compressed-texture-writer';
8
10
  export { KTX2BasisWriter } from './ktx2-basis-writer';
9
11
  export declare const KTX2BasisWriterWorker: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAE,6BAA6B,EAAC,MAAM,6BAA6B,CAAC;AACnG,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;CAajC,CAAC;AAGF,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AAGvE,OAAO,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAC,6BAA6B,EAAC,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EAAC,YAAY,IAAI,kBAAkB,EAAC,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAE,6BAA6B,EAAC,MAAM,6BAA6B,CAAC;AACnG,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAC,wBAAwB,EAAC,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAC,yBAAyB,EAAC,MAAM,oCAAoC,CAAC;AAG7E,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;CAajC,CAAC;AAGF,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AAGvE,OAAO,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAC,6BAA6B,EAAC,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EAAC,YAAY,IAAI,kBAAkB,EAAC,MAAM,iBAAiB,CAAC"}
@@ -21408,7 +21408,7 @@ var require_cookie = __commonJS({
21408
21408
  var Store = require_store().Store;
21409
21409
  var MemoryCookieStore = require_memstore().MemoryCookieStore;
21410
21410
  var pathMatch = require_pathMatch().pathMatch;
21411
- var VERSION5 = require_version();
21411
+ var VERSION3 = require_version();
21412
21412
  var punycode;
21413
21413
  try {
21414
21414
  punycode = require("punycode");
@@ -22225,7 +22225,7 @@ var require_cookie = __commonJS({
22225
22225
  type = null;
22226
22226
  }
22227
22227
  var serialized = {
22228
- version: "tough-cookie@" + VERSION5,
22228
+ version: "tough-cookie@" + VERSION3,
22229
22229
  storeType: type,
22230
22230
  rejectPublicSuffixes: !!this.rejectPublicSuffixes,
22231
22231
  cookies: []
@@ -22377,7 +22377,7 @@ var require_cookie = __commonJS({
22377
22377
  CAN_BE_SYNC.forEach(function(method) {
22378
22378
  CookieJar.prototype[method + "Sync"] = syncWrap(method);
22379
22379
  });
22380
- exports2.version = VERSION5;
22380
+ exports2.version = VERSION3;
22381
22381
  exports2.CookieJar = CookieJar;
22382
22382
  exports2.Cookie = Cookie;
22383
22383
  exports2.Store = Store;
@@ -62764,48 +62764,12 @@ var Response = class {
62764
62764
  // ../polyfills/src/node/fetch/fetch.node.ts
62765
62765
  var import_http = __toModule(require("http"));
62766
62766
  var import_https = __toModule(require("https"));
62767
-
62768
- // ../polyfills/src/node/fetch/fetch-file.node.ts
62769
- var import_fs = __toModule(require("fs"));
62770
- async function fetchFileNode(url, options) {
62771
- const noqueryUrl = url.split("?")[0];
62772
- try {
62773
- const body = await new Promise((resolve, reject) => {
62774
- const stream = import_fs.default.createReadStream(noqueryUrl, { encoding: null });
62775
- stream.once("readable", () => resolve(stream));
62776
- stream.on("error", (error) => reject(error));
62777
- });
62778
- const status = 200;
62779
- const statusText = "OK";
62780
- const headers = getHeadersForFile(noqueryUrl);
62781
- return new Response(body, { headers, status, statusText, url });
62782
- } catch (error) {
62783
- const status = 400;
62784
- const statusText = error.message;
62785
- const headers = {};
62786
- return new Response(error.message, { headers, status, statusText, url });
62787
- }
62788
- }
62789
- function getHeadersForFile(noqueryUrl) {
62790
- const headers = {};
62791
- if (!headers["content-length"]) {
62792
- const stats = import_fs.default.statSync(noqueryUrl);
62793
- headers["content-length"] = stats.size;
62794
- }
62795
- if (noqueryUrl.endsWith(".gz")) {
62796
- noqueryUrl = noqueryUrl.slice(0, -3);
62797
- headers["content-encoding"] = "gzip";
62798
- }
62799
- return new Headers(headers);
62800
- }
62801
-
62802
- // ../polyfills/src/node/fetch/fetch.node.ts
62803
62767
  var isDataURL = (url) => url.startsWith("data:");
62804
62768
  var isRequestURL = (url) => url.startsWith("http:") || url.startsWith("https:");
62805
62769
  async function fetchNode(url, options) {
62806
62770
  try {
62807
- if (!isRequestURL(url) && !isDataURL(url)) {
62808
- return await fetchFileNode(url, options);
62771
+ if (globalThis.fetch !== fetchNode && (isRequestURL(url) || isDataURL(url))) {
62772
+ return await fetch(url, options);
62809
62773
  }
62810
62774
  if (isDataURL(url)) {
62811
62775
  const { arrayBuffer, mimeType } = decodeDataUri(url);
@@ -63163,10 +63127,20 @@ if (!("allSettled" in Promise)) {
63163
63127
  }
63164
63128
 
63165
63129
  // ../worker-utils/src/lib/env-utils/version.ts
63166
- var VERSION = true ? "4.0.0-alpha.9" : DEFAULT_VERSION;
63167
- if (false) {
63168
- console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
63130
+ function getVersion() {
63131
+ var _a;
63132
+ if (!((_a = globalThis._loadersgl_) == null ? void 0 : _a.version)) {
63133
+ globalThis._loadersgl_ = globalThis._loadersgl_ || {};
63134
+ if (false) {
63135
+ console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
63136
+ globalThis._loadersgl_.version = NPM_TAG;
63137
+ } else {
63138
+ globalThis._loadersgl_.version = "4.0.0-beta.1";
63139
+ }
63140
+ }
63141
+ return globalThis._loadersgl_.version;
63169
63142
  }
63143
+ var VERSION = getVersion();
63170
63144
 
63171
63145
  // ../worker-utils/src/lib/env-utils/assert.ts
63172
63146
  function assert2(condition, message) {
@@ -63304,11 +63278,30 @@ function isKnownMessage(message) {
63304
63278
  // ../worker-utils/src/lib/node/require-utils.node.ts
63305
63279
  var require_utils_node_exports = {};
63306
63280
  __export(require_utils_node_exports, {
63281
+ readFileAsArrayBuffer: () => readFileAsArrayBuffer,
63282
+ readFileAsText: () => readFileAsText,
63307
63283
  requireFromFile: () => requireFromFile,
63308
63284
  requireFromString: () => requireFromString
63309
63285
  });
63310
63286
  var import_module = __toModule(require("module"));
63311
63287
  var import_path = __toModule(require("path"));
63288
+ var import_fs = __toModule(require("fs"));
63289
+ async function readFileAsArrayBuffer(filename) {
63290
+ if (filename.startsWith("http")) {
63291
+ const response = await fetch(filename);
63292
+ return await response.arrayBuffer();
63293
+ }
63294
+ const buffer = import_fs.default.readFileSync(filename);
63295
+ return buffer.buffer;
63296
+ }
63297
+ async function readFileAsText(filename) {
63298
+ if (filename.startsWith("http")) {
63299
+ const response = await fetch(filename);
63300
+ return await response.text();
63301
+ }
63302
+ const text = import_fs.default.readFileSync(filename, "utf8");
63303
+ return text;
63304
+ }
63312
63305
  async function requireFromFile(filename) {
63313
63306
  if (filename.startsWith("http")) {
63314
63307
  const response = await fetch(filename);
@@ -63341,40 +63334,38 @@ function requireFromString(code, filename = "", options) {
63341
63334
  }
63342
63335
 
63343
63336
  // ../worker-utils/src/lib/library-utils/library-utils.ts
63344
- var LATEST = "beta";
63345
- var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
63346
63337
  var loadLibraryPromises = {};
63347
- async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
63338
+ async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
63348
63339
  if (moduleName) {
63349
- libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
63340
+ libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
63350
63341
  }
63351
63342
  loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
63352
63343
  return await loadLibraryPromises[libraryUrl];
63353
63344
  }
63354
- function getLibraryUrl(library, moduleName, options) {
63355
- if (library.startsWith("http")) {
63345
+ function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
63346
+ if (!options.useLocalLibraries && library.startsWith("http")) {
63356
63347
  return library;
63357
63348
  }
63349
+ libraryName = libraryName || library;
63358
63350
  const modules = options.modules || {};
63359
- if (modules[library]) {
63360
- return modules[library];
63351
+ if (modules[libraryName]) {
63352
+ return modules[libraryName];
63361
63353
  }
63362
63354
  if (!isBrowser2) {
63363
- return `modules/${moduleName}/dist/libs/${library}`;
63355
+ return `modules/${moduleName}/dist/libs/${libraryName}`;
63364
63356
  }
63365
63357
  if (options.CDN) {
63366
63358
  assert2(options.CDN.startsWith("http"));
63367
- return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
63359
+ return `${options.CDN}/${moduleName}@${VERSION}/dist/libs/${libraryName}`;
63368
63360
  }
63369
63361
  if (isWorker) {
63370
- return `../src/libs/${library}`;
63362
+ return `../src/libs/${libraryName}`;
63371
63363
  }
63372
- return `modules/${moduleName}/src/libs/${library}`;
63364
+ return `modules/${moduleName}/src/libs/${libraryName}`;
63373
63365
  }
63374
63366
  async function loadLibraryFromFile(libraryUrl) {
63375
63367
  if (libraryUrl.endsWith("wasm")) {
63376
- const response2 = await fetch(libraryUrl);
63377
- return await response2.arrayBuffer();
63368
+ return await loadAsArrayBuffer(libraryUrl);
63378
63369
  }
63379
63370
  if (!isBrowser2) {
63380
63371
  try {
@@ -63386,8 +63377,7 @@ async function loadLibraryFromFile(libraryUrl) {
63386
63377
  if (isWorker) {
63387
63378
  return importScripts(libraryUrl);
63388
63379
  }
63389
- const response = await fetch(libraryUrl);
63390
- const scriptSource = await response.text();
63380
+ const scriptSource = await loadAsText(libraryUrl);
63391
63381
  return loadLibraryFromString(scriptSource, libraryUrl);
63392
63382
  }
63393
63383
  function loadLibraryFromString(scriptSource, id) {
@@ -63408,14 +63398,31 @@ function loadLibraryFromString(scriptSource, id) {
63408
63398
  document.body.appendChild(script);
63409
63399
  return null;
63410
63400
  }
63401
+ async function loadAsArrayBuffer(url) {
63402
+ if (!readFileAsArrayBuffer || url.startsWith("http")) {
63403
+ const response = await fetch(url);
63404
+ return await response.arrayBuffer();
63405
+ }
63406
+ return await readFileAsArrayBuffer(url);
63407
+ }
63408
+ async function loadAsText(url) {
63409
+ if (!readFileAsText || url.startsWith("http")) {
63410
+ const response = await fetch(url);
63411
+ return await response.text();
63412
+ }
63413
+ return await readFileAsText(url);
63414
+ }
63411
63415
 
63412
63416
  // src/lib/utils/version.ts
63413
- var VERSION3 = true ? "4.0.0-alpha.9" : "beta";
63417
+ var VERSION2 = true ? "4.0.0-beta.1" : "beta";
63414
63418
 
63415
63419
  // src/lib/parsers/basis-module-loader.ts
63416
- var VERSION4 = true ? "4.0.0-alpha.9" : "beta";
63417
- var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
63418
- var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
63420
+ var BASIS_EXTERNAL_LIBRARIES = {
63421
+ TRANSCODER: "basis_transcoder.js",
63422
+ TRANSCODER_WASM: "basis_transcoder.wasm",
63423
+ ENCODER: "basis_encoder.js",
63424
+ ENCODER_WASM: "basis_encoder.wasm"
63425
+ };
63419
63426
  var loadBasisEncoderPromise;
63420
63427
  async function loadBasisEncoderModule(options) {
63421
63428
  const modules = options.modules || {};
@@ -63429,8 +63436,8 @@ async function loadBasisEncoder(options) {
63429
63436
  let BASIS_ENCODER = null;
63430
63437
  let wasmBinary = null;
63431
63438
  [BASIS_ENCODER, wasmBinary] = await Promise.all([
63432
- await loadLibrary(BASIS_CDN_ENCODER_JS, "textures", options),
63433
- await loadLibrary(BASIS_CDN_ENCODER_WASM, "textures", options)
63439
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
63440
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
63434
63441
  ]);
63435
63442
  BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
63436
63443
  return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
@@ -63451,7 +63458,12 @@ function initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {
63451
63458
 
63452
63459
  // src/lib/encoders/encode-ktx2-basis-texture.ts
63453
63460
  async function encodeKTX2BasisTexture(image, options = {}) {
63454
- const { useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false } = options;
63461
+ const {
63462
+ useSRGB = false,
63463
+ qualityLevel = 10,
63464
+ encodeUASTC = false,
63465
+ mipmaps = false
63466
+ } = (options == null ? void 0 : options["ktx2-basis-writer"]) || {};
63455
63467
  const { BasisEncoder } = await loadBasisEncoderModule(options);
63456
63468
  const basisEncoder = new BasisEncoder();
63457
63469
  try {
@@ -63481,13 +63493,15 @@ var KTX2BasisWriter = {
63481
63493
  name: "Basis Universal Supercompressed GPU Texture",
63482
63494
  id: "ktx2-basis-writer",
63483
63495
  module: "textures",
63484
- version: VERSION3,
63496
+ version: VERSION2,
63485
63497
  extensions: ["ktx2"],
63486
63498
  options: {
63487
- useSRGB: false,
63488
- qualityLevel: 10,
63489
- encodeUASTC: false,
63490
- mipmaps: false
63499
+ ["ktx2-basis-writer"]: {
63500
+ useSRGB: false,
63501
+ qualityLevel: 10,
63502
+ encodeUASTC: false,
63503
+ mipmaps: false
63504
+ }
63491
63505
  },
63492
63506
  encode: encodeKTX2BasisTexture
63493
63507
  };