@loaders.gl/textures 3.1.8 → 3.2.0-alpha.3

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 (152) hide show
  1. package/dist/basis-worker.js +59 -27
  2. package/dist/compressed-texture-loader.d.ts +1 -1
  3. package/dist/compressed-texture-loader.js +1 -1
  4. package/dist/compressed-texture-worker.js +60 -28
  5. package/dist/compressed-texture-writer.d.ts +15 -2
  6. package/dist/compressed-texture-writer.d.ts.map +1 -1
  7. package/dist/crunch-worker.js +63 -30
  8. package/dist/dist.min.js +148 -130
  9. package/dist/es5/compressed-texture-loader.js +1 -1
  10. package/dist/es5/compressed-texture-loader.js.map +1 -1
  11. package/dist/es5/compressed-texture-writer.js.map +1 -1
  12. package/dist/es5/index.js +24 -3
  13. package/dist/es5/index.js.map +1 -1
  14. package/dist/es5/ktx2-basis-writer-nodejs.js +16 -0
  15. package/dist/es5/ktx2-basis-writer-nodejs.js.map +1 -0
  16. package/dist/es5/{ktx2-basis-universal-texture-writer.js → ktx2-basis-writer.js} +6 -6
  17. package/dist/es5/ktx2-basis-writer.js.map +1 -0
  18. package/dist/es5/lib/encoders/encode-texture.js.map +1 -1
  19. package/dist/es5/lib/parsers/basis-module-loader.js +1 -1
  20. package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
  21. package/dist/es5/lib/parsers/parse-basis.js +8 -8
  22. package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
  23. package/dist/es5/lib/parsers/parse-compressed-texture.js.map +1 -1
  24. package/dist/es5/lib/parsers/parse-crunch.js +8 -7
  25. package/dist/es5/lib/parsers/parse-crunch.js.map +1 -1
  26. package/dist/es5/lib/parsers/parse-dds.js.map +1 -1
  27. package/dist/es5/lib/parsers/parse-ktx.js.map +1 -1
  28. package/dist/es5/lib/parsers/parse-npy.js.map +1 -1
  29. package/dist/es5/lib/parsers/parse-pvr.js.map +1 -1
  30. package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -1
  31. package/dist/es5/lib/utils/texture-formats.js.map +1 -1
  32. package/dist/es5/lib/utils/version.js +1 -1
  33. package/dist/es5/lib/utils/version.js.map +1 -1
  34. package/dist/es5/libs/basis_encoder.js +20 -21
  35. package/dist/es5/libs/basis_encoder.wasm +0 -0
  36. package/dist/es5/libs/basis_transcoder.js +14 -13
  37. package/dist/es5/libs/basis_transcoder.wasm +0 -0
  38. package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js +70 -0
  39. package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -0
  40. package/dist/es5/workers/ktx2-basis-writer-worker.js +70 -0
  41. package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -0
  42. package/dist/esm/compressed-texture-loader.js +1 -1
  43. package/dist/esm/compressed-texture-loader.js.map +1 -1
  44. package/dist/esm/compressed-texture-writer.js.map +1 -1
  45. package/dist/esm/index.js +17 -1
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/ktx2-basis-writer-nodejs.js +3 -0
  48. package/dist/esm/ktx2-basis-writer-nodejs.js.map +1 -0
  49. package/dist/esm/{ktx2-basis-universal-texture-writer.js → ktx2-basis-writer.js} +4 -4
  50. package/dist/esm/ktx2-basis-writer.js.map +1 -0
  51. package/dist/esm/lib/encoders/encode-texture.js.map +1 -1
  52. package/dist/esm/lib/parsers/basis-module-loader.js +1 -1
  53. package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
  54. package/dist/esm/lib/parsers/parse-basis.js +8 -8
  55. package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
  56. package/dist/esm/lib/parsers/parse-compressed-texture.js.map +1 -1
  57. package/dist/esm/lib/parsers/parse-crunch.js +13 -12
  58. package/dist/esm/lib/parsers/parse-crunch.js.map +1 -1
  59. package/dist/esm/lib/parsers/parse-dds.js.map +1 -1
  60. package/dist/esm/lib/parsers/parse-ktx.js.map +1 -1
  61. package/dist/esm/lib/parsers/parse-npy.js.map +1 -1
  62. package/dist/esm/lib/parsers/parse-pvr.js.map +1 -1
  63. package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -1
  64. package/dist/esm/lib/utils/texture-formats.js.map +1 -1
  65. package/dist/esm/lib/utils/version.js +1 -1
  66. package/dist/esm/lib/utils/version.js.map +1 -1
  67. package/dist/esm/libs/basis_encoder.js +20 -21
  68. package/dist/esm/libs/basis_encoder.wasm +0 -0
  69. package/dist/esm/libs/basis_transcoder.js +14 -13
  70. package/dist/esm/libs/basis_transcoder.wasm +0 -0
  71. package/dist/esm/types.js +1 -1
  72. package/dist/esm/workers/ktx2-basis-writer-nodejs-worker.js +34 -0
  73. package/dist/esm/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -0
  74. package/dist/esm/workers/ktx2-basis-writer-worker.js +34 -0
  75. package/dist/esm/workers/ktx2-basis-writer-worker.js.map +1 -0
  76. package/dist/index.d.ts +16 -2
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +19 -3
  79. package/dist/ktx2-basis-writer-nodejs-worker.js +66438 -0
  80. package/dist/ktx2-basis-writer-nodejs.d.ts +3 -0
  81. package/dist/ktx2-basis-writer-nodejs.d.ts.map +1 -0
  82. package/dist/ktx2-basis-writer-nodejs.js +7 -0
  83. package/dist/ktx2-basis-writer-worker.js +343 -0
  84. package/dist/{ktx2-basis-universal-texture-writer.d.ts → ktx2-basis-writer.d.ts} +2 -2
  85. package/dist/ktx2-basis-writer.d.ts.map +1 -0
  86. package/dist/{ktx2-basis-universal-texture-writer.js → ktx2-basis-writer.js} +4 -4
  87. package/dist/lib/encoders/encode-texture.d.ts +2 -3
  88. package/dist/lib/encoders/encode-texture.d.ts.map +1 -1
  89. package/dist/lib/parsers/basis-module-loader.js +1 -1
  90. package/dist/lib/parsers/parse-basis.d.ts +8 -6
  91. package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
  92. package/dist/lib/parsers/parse-basis.js +25 -25
  93. package/dist/lib/parsers/parse-compressed-texture.d.ts +1 -1
  94. package/dist/lib/parsers/parse-compressed-texture.d.ts.map +1 -1
  95. package/dist/lib/parsers/parse-crunch.d.ts +1 -1
  96. package/dist/lib/parsers/parse-crunch.d.ts.map +1 -1
  97. package/dist/lib/parsers/parse-crunch.js +14 -13
  98. package/dist/lib/parsers/parse-dds.d.ts +1 -1
  99. package/dist/lib/parsers/parse-dds.d.ts.map +1 -1
  100. package/dist/lib/parsers/parse-ktx.d.ts +2 -1
  101. package/dist/lib/parsers/parse-ktx.d.ts.map +1 -1
  102. package/dist/lib/parsers/parse-npy.d.ts.map +1 -1
  103. package/dist/lib/parsers/parse-npy.js +1 -0
  104. package/dist/lib/parsers/parse-pvr.d.ts +1 -1
  105. package/dist/lib/parsers/parse-pvr.d.ts.map +1 -1
  106. package/dist/lib/parsers/parse-pvr.js +2 -2
  107. package/dist/lib/utils/extract-mipmap-images.d.ts +8 -1
  108. package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -1
  109. package/dist/lib/utils/version.d.ts.map +1 -1
  110. package/dist/lib/utils/version.js +2 -1
  111. package/dist/libs/basis_encoder.js +20 -21
  112. package/dist/libs/basis_encoder.wasm +0 -0
  113. package/dist/libs/basis_transcoder.js +14 -13
  114. package/dist/libs/basis_transcoder.wasm +0 -0
  115. package/dist/npy-worker.js +48 -16
  116. package/dist/types.d.ts +0 -20
  117. package/dist/types.d.ts.map +1 -1
  118. package/dist/types.js +0 -1
  119. package/dist/workers/ktx2-basis-writer-nodejs-worker.d.ts +2 -0
  120. package/dist/workers/ktx2-basis-writer-nodejs-worker.d.ts.map +1 -0
  121. package/dist/workers/ktx2-basis-writer-nodejs-worker.js +26 -0
  122. package/dist/workers/ktx2-basis-writer-worker.d.ts +2 -0
  123. package/dist/workers/ktx2-basis-writer-worker.d.ts.map +1 -0
  124. package/dist/workers/ktx2-basis-writer-worker.js +26 -0
  125. package/package.json +13 -7
  126. package/src/compressed-texture-loader.ts +1 -1
  127. package/src/compressed-texture-writer.ts +20 -2
  128. package/src/index.ts +20 -2
  129. package/src/ktx2-basis-writer-nodejs.ts +4 -0
  130. package/src/{ktx2-basis-universal-texture-writer.ts → ktx2-basis-writer.ts} +3 -3
  131. package/src/lib/encoders/encode-texture.ts +2 -1
  132. package/src/lib/parsers/basis-module-loader.ts +1 -1
  133. package/src/lib/parsers/parse-basis.ts +68 -36
  134. package/src/lib/parsers/parse-compressed-texture.ts +1 -1
  135. package/src/lib/parsers/parse-crunch.ts +15 -14
  136. package/src/lib/parsers/parse-dds.ts +1 -1
  137. package/src/lib/parsers/parse-ktx.ts +2 -1
  138. package/src/lib/parsers/parse-npy.ts +2 -0
  139. package/src/lib/parsers/parse-pvr.ts +2 -1
  140. package/src/lib/utils/extract-mipmap-images.ts +9 -1
  141. package/src/lib/utils/texture-formats.ts +1 -1
  142. package/src/lib/utils/version.ts +2 -1
  143. package/src/libs/basis_encoder.js +20 -21
  144. package/src/libs/basis_encoder.wasm +0 -0
  145. package/src/libs/basis_transcoder.js +14 -13
  146. package/src/libs/basis_transcoder.wasm +0 -0
  147. package/src/types.ts +0 -30
  148. package/src/workers/ktx2-basis-writer-nodejs-worker.ts +25 -0
  149. package/src/workers/ktx2-basis-writer-worker.ts +25 -0
  150. package/dist/es5/ktx2-basis-universal-texture-writer.js.map +0 -1
  151. package/dist/esm/ktx2-basis-universal-texture-writer.js.map +0 -1
  152. package/dist/ktx2-basis-universal-texture-writer.d.ts.map +0 -1
@@ -28,7 +28,7 @@
28
28
  });
29
29
 
30
30
  // ../worker-utils/src/lib/env-utils/version.ts
31
- var VERSION = true ? "3.1.8" : DEFAULT_VERSION;
31
+ var VERSION = true ? "3.2.0-alpha.3" : DEFAULT_VERSION;
32
32
  if (false) {
33
33
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
34
34
  }
@@ -93,16 +93,33 @@
93
93
  }
94
94
 
95
95
  // ../worker-utils/src/lib/worker-farm/worker-body.ts
96
+ function getParentPort() {
97
+ let parentPort;
98
+ try {
99
+ eval("globalThis.parentPort = require('worker_threads').parentPort");
100
+ parentPort = globalThis.parentPort;
101
+ } catch {
102
+ }
103
+ return parentPort;
104
+ }
96
105
  var onMessageWrapperMap = new Map();
97
106
  var WorkerBody = class {
107
+ static inWorkerThread() {
108
+ return typeof self !== "undefined" || Boolean(getParentPort());
109
+ }
98
110
  static set onmessage(onMessage) {
99
- self.onmessage = (message) => {
100
- if (!isKnownMessage(message)) {
101
- return;
102
- }
103
- const { type, payload } = message.data;
111
+ function handleMessage(message) {
112
+ const parentPort3 = getParentPort();
113
+ const { type, payload } = parentPort3 ? message : message.data;
104
114
  onMessage(type, payload);
105
- };
115
+ }
116
+ const parentPort2 = getParentPort();
117
+ if (parentPort2) {
118
+ parentPort2.on("message", handleMessage);
119
+ parentPort2.on("exit", () => console.debug("Node worker closing"));
120
+ } else {
121
+ globalThis.onmessage = handleMessage;
122
+ }
106
123
  }
107
124
  static addEventListener(onMessage) {
108
125
  let onMessageWrapper = onMessageWrapperMap.get(onMessage);
@@ -111,22 +128,36 @@
111
128
  if (!isKnownMessage(message)) {
112
129
  return;
113
130
  }
114
- const { type, payload } = message.data;
131
+ const parentPort3 = getParentPort();
132
+ const { type, payload } = parentPort3 ? message : message.data;
115
133
  onMessage(type, payload);
116
134
  };
117
135
  }
118
- self.addEventListener("message", onMessageWrapper);
136
+ const parentPort2 = getParentPort();
137
+ if (parentPort2) {
138
+ console.error("not implemented");
139
+ } else {
140
+ globalThis.addEventListener("message", onMessageWrapper);
141
+ }
119
142
  }
120
143
  static removeEventListener(onMessage) {
121
144
  const onMessageWrapper = onMessageWrapperMap.get(onMessage);
122
145
  onMessageWrapperMap.delete(onMessage);
123
- self.removeEventListener("message", onMessageWrapper);
146
+ const parentPort2 = getParentPort();
147
+ if (parentPort2) {
148
+ console.error("not implemented");
149
+ } else {
150
+ globalThis.removeEventListener("message", onMessageWrapper);
151
+ }
124
152
  }
125
153
  static postMessage(type, payload) {
126
- if (self) {
127
- const data = { source: "loaders.gl", type, payload };
128
- const transferList = getTransferList(payload);
129
- self.postMessage(data, transferList);
154
+ const data = { source: "loaders.gl", type, payload };
155
+ const transferList = getTransferList(payload);
156
+ const parentPort2 = getParentPort();
157
+ if (parentPort2) {
158
+ parentPort2.postMessage(data, transferList);
159
+ } else {
160
+ globalThis.postMessage(data, transferList);
130
161
  }
131
162
  }
132
163
  };
@@ -137,7 +168,7 @@
137
168
 
138
169
  // ../worker-utils/src/lib/library-utils/library-utils.ts
139
170
  var node = __toModule(require_require_utils());
140
- var LATEST = "latest";
171
+ var LATEST = "beta";
141
172
  var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
142
173
  var loadLibraryPromises = {};
143
174
  async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
@@ -208,19 +239,20 @@
208
239
  // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
209
240
  var requestId = 0;
210
241
  function createLoaderWorker(loader) {
211
- if (typeof self === "undefined") {
242
+ if (!WorkerBody.inWorkerThread()) {
212
243
  return;
213
244
  }
214
245
  WorkerBody.onmessage = async (type, payload) => {
215
246
  switch (type) {
216
247
  case "process":
217
248
  try {
218
- const { input, options = {} } = payload;
249
+ const { input, options = {}, context = {} } = payload;
219
250
  const result = await parseData({
220
251
  loader,
221
252
  arrayBuffer: input,
222
253
  options,
223
254
  context: {
255
+ ...context,
224
256
  parse: parseOnMainThread
225
257
  }
226
258
  });
@@ -280,10 +312,10 @@
280
312
  }
281
313
 
282
314
  // src/lib/utils/version.ts
283
- var VERSION3 = true ? "3.1.8" : "latest";
315
+ var VERSION3 = true ? "3.2.0-alpha.3" : "beta";
284
316
 
285
317
  // src/lib/parsers/basis-module-loader.ts
286
- var VERSION4 = true ? "3.1.8" : "latest";
318
+ var VERSION4 = true ? "3.2.0-alpha.3" : "beta";
287
319
  var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
288
320
  var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
289
321
  var loadBasisTranscoderPromise;
@@ -572,7 +604,7 @@
572
604
  const basisFile = new BasisFile(new Uint8Array(data));
573
605
  try {
574
606
  if (!basisFile.startTranscoding()) {
575
- return null;
607
+ throw new Error("Failed to start basis transcoding");
576
608
  }
577
609
  const imageCount = basisFile.getNumImages();
578
610
  const images = [];
@@ -598,22 +630,22 @@
598
630
  const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
599
631
  const decodedData = new Uint8Array(decodedSize);
600
632
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
601
- return null;
633
+ throw new Error("failed to start Basis transcoding");
602
634
  }
603
635
  return {
604
636
  width,
605
637
  height,
606
638
  data: decodedData,
607
639
  compressed,
608
- hasAlpha,
609
- format
640
+ format,
641
+ hasAlpha
610
642
  };
611
643
  }
612
644
  function parseKTX2File(KTX2File, data, options) {
613
645
  const ktx2File = new KTX2File(new Uint8Array(data));
614
646
  try {
615
647
  if (!ktx2File.startTranscoding()) {
616
- return null;
648
+ throw new Error("failed to start KTX2 transcoding");
617
649
  }
618
650
  const levelsCount = ktx2File.getLevels();
619
651
  const levels = [];
@@ -621,7 +653,7 @@
621
653
  levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
622
654
  break;
623
655
  }
624
- return levels;
656
+ return [levels];
625
657
  } finally {
626
658
  ktx2File.close();
627
659
  ktx2File.delete();
@@ -633,14 +665,14 @@
633
665
  const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
634
666
  const decodedData = new Uint8Array(decodedSize);
635
667
  if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
636
- return null;
668
+ throw new Error("Failed to transcode KTX2 image");
637
669
  }
638
670
  return {
639
671
  width,
640
672
  height,
641
673
  data: decodedData,
642
674
  compressed,
643
- alphaFlag,
675
+ hasAlpha: alphaFlag,
644
676
  format
645
677
  };
646
678
  }
@@ -28,7 +28,7 @@ export declare const CompressedTextureWorkerLoader: {
28
28
  * Loader for KTX, DDS, and PVR texture container formats
29
29
  */
30
30
  export declare const CompressedTextureLoader: {
31
- parse: (arrayBuffer: any, options: any) => Promise<any[] | null>;
31
+ parse: (arrayBuffer: any, options: any) => Promise<import("@loaders.gl/schema").TextureLevel[]>;
32
32
  name: string;
33
33
  id: string;
34
34
  module: string;
@@ -54,7 +54,7 @@ exports.CompressedTextureLoader = {
54
54
  containerFormat: 'ktx2',
55
55
  module: 'encoder'
56
56
  };
57
- return await (0, parse_basis_1.default)(arrayBuffer, options);
57
+ return (await (0, parse_basis_1.default)(arrayBuffer, options))[0];
58
58
  }
59
59
  return (0, parse_compressed_texture_1.parseCompressedTexture)(arrayBuffer);
60
60
  }
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  // ../worker-utils/src/lib/env-utils/version.ts
38
- var VERSION = true ? "3.1.8" : DEFAULT_VERSION;
38
+ var VERSION = true ? "3.2.0-alpha.3" : 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
  }
@@ -100,16 +100,33 @@
100
100
  }
101
101
 
102
102
  // ../worker-utils/src/lib/worker-farm/worker-body.ts
103
+ function getParentPort() {
104
+ let parentPort;
105
+ try {
106
+ eval("globalThis.parentPort = require('worker_threads').parentPort");
107
+ parentPort = globalThis.parentPort;
108
+ } catch {
109
+ }
110
+ return parentPort;
111
+ }
103
112
  var onMessageWrapperMap = new Map();
104
113
  var WorkerBody = class {
114
+ static inWorkerThread() {
115
+ return typeof self !== "undefined" || Boolean(getParentPort());
116
+ }
105
117
  static set onmessage(onMessage) {
106
- self.onmessage = (message) => {
107
- if (!isKnownMessage(message)) {
108
- return;
109
- }
110
- const { type, payload } = message.data;
118
+ function handleMessage(message) {
119
+ const parentPort3 = getParentPort();
120
+ const { type, payload } = parentPort3 ? message : message.data;
111
121
  onMessage(type, payload);
112
- };
122
+ }
123
+ const parentPort2 = getParentPort();
124
+ if (parentPort2) {
125
+ parentPort2.on("message", handleMessage);
126
+ parentPort2.on("exit", () => console.debug("Node worker closing"));
127
+ } else {
128
+ globalThis.onmessage = handleMessage;
129
+ }
113
130
  }
114
131
  static addEventListener(onMessage) {
115
132
  let onMessageWrapper = onMessageWrapperMap.get(onMessage);
@@ -118,22 +135,36 @@
118
135
  if (!isKnownMessage(message)) {
119
136
  return;
120
137
  }
121
- const { type, payload } = message.data;
138
+ const parentPort3 = getParentPort();
139
+ const { type, payload } = parentPort3 ? message : message.data;
122
140
  onMessage(type, payload);
123
141
  };
124
142
  }
125
- self.addEventListener("message", onMessageWrapper);
143
+ const parentPort2 = getParentPort();
144
+ if (parentPort2) {
145
+ console.error("not implemented");
146
+ } else {
147
+ globalThis.addEventListener("message", onMessageWrapper);
148
+ }
126
149
  }
127
150
  static removeEventListener(onMessage) {
128
151
  const onMessageWrapper = onMessageWrapperMap.get(onMessage);
129
152
  onMessageWrapperMap.delete(onMessage);
130
- self.removeEventListener("message", onMessageWrapper);
153
+ const parentPort2 = getParentPort();
154
+ if (parentPort2) {
155
+ console.error("not implemented");
156
+ } else {
157
+ globalThis.removeEventListener("message", onMessageWrapper);
158
+ }
131
159
  }
132
160
  static postMessage(type, payload) {
133
- if (self) {
134
- const data = { source: "loaders.gl", type, payload };
135
- const transferList = getTransferList(payload);
136
- self.postMessage(data, transferList);
161
+ const data = { source: "loaders.gl", type, payload };
162
+ const transferList = getTransferList(payload);
163
+ const parentPort2 = getParentPort();
164
+ if (parentPort2) {
165
+ parentPort2.postMessage(data, transferList);
166
+ } else {
167
+ globalThis.postMessage(data, transferList);
137
168
  }
138
169
  }
139
170
  };
@@ -144,7 +175,7 @@
144
175
 
145
176
  // ../worker-utils/src/lib/library-utils/library-utils.ts
146
177
  var node = __toModule(require_require_utils());
147
- var LATEST = "latest";
178
+ var LATEST = "beta";
148
179
  var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
149
180
  var loadLibraryPromises = {};
150
181
  async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
@@ -215,19 +246,20 @@
215
246
  // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
216
247
  var requestId = 0;
217
248
  function createLoaderWorker(loader) {
218
- if (typeof self === "undefined") {
249
+ if (!WorkerBody.inWorkerThread()) {
219
250
  return;
220
251
  }
221
252
  WorkerBody.onmessage = async (type, payload) => {
222
253
  switch (type) {
223
254
  case "process":
224
255
  try {
225
- const { input, options = {} } = payload;
256
+ const { input, options = {}, context = {} } = payload;
226
257
  const result = await parseData({
227
258
  loader,
228
259
  arrayBuffer: input,
229
260
  options,
230
261
  context: {
262
+ ...context,
231
263
  parse: parseOnMainThread
232
264
  }
233
265
  });
@@ -287,7 +319,7 @@
287
319
  }
288
320
 
289
321
  // src/lib/utils/version.ts
290
- var VERSION3 = true ? "3.1.8" : "latest";
322
+ var VERSION3 = true ? "3.2.0-alpha.3" : "beta";
291
323
 
292
324
  // ../../node_modules/ktx-parse/dist/ktx-parse.modern.js
293
325
  var t = new Uint8Array([0]);
@@ -875,7 +907,7 @@
875
907
  }
876
908
 
877
909
  // src/lib/parsers/basis-module-loader.ts
878
- var VERSION4 = true ? "3.1.8" : "latest";
910
+ var VERSION4 = true ? "3.2.0-alpha.3" : "beta";
879
911
  var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
880
912
  var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
881
913
  var loadBasisTranscoderPromise;
@@ -1053,7 +1085,7 @@
1053
1085
  const basisFile = new BasisFile(new Uint8Array(data));
1054
1086
  try {
1055
1087
  if (!basisFile.startTranscoding()) {
1056
- return null;
1088
+ throw new Error("Failed to start basis transcoding");
1057
1089
  }
1058
1090
  const imageCount = basisFile.getNumImages();
1059
1091
  const images = [];
@@ -1079,22 +1111,22 @@
1079
1111
  const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
1080
1112
  const decodedData = new Uint8Array(decodedSize);
1081
1113
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
1082
- return null;
1114
+ throw new Error("failed to start Basis transcoding");
1083
1115
  }
1084
1116
  return {
1085
1117
  width,
1086
1118
  height,
1087
1119
  data: decodedData,
1088
1120
  compressed,
1089
- hasAlpha,
1090
- format
1121
+ format,
1122
+ hasAlpha
1091
1123
  };
1092
1124
  }
1093
1125
  function parseKTX2File(KTX2File, data, options) {
1094
1126
  const ktx2File = new KTX2File(new Uint8Array(data));
1095
1127
  try {
1096
1128
  if (!ktx2File.startTranscoding()) {
1097
- return null;
1129
+ throw new Error("failed to start KTX2 transcoding");
1098
1130
  }
1099
1131
  const levelsCount = ktx2File.getLevels();
1100
1132
  const levels = [];
@@ -1102,7 +1134,7 @@
1102
1134
  levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
1103
1135
  break;
1104
1136
  }
1105
- return levels;
1137
+ return [levels];
1106
1138
  } finally {
1107
1139
  ktx2File.close();
1108
1140
  ktx2File.delete();
@@ -1114,14 +1146,14 @@
1114
1146
  const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
1115
1147
  const decodedData = new Uint8Array(decodedSize);
1116
1148
  if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
1117
- return null;
1149
+ throw new Error("Failed to transcode KTX2 image");
1118
1150
  }
1119
1151
  return {
1120
1152
  width,
1121
1153
  height,
1122
1154
  data: decodedData,
1123
1155
  compressed,
1124
- alphaFlag,
1156
+ hasAlpha: alphaFlag,
1125
1157
  format
1126
1158
  };
1127
1159
  }
@@ -1200,7 +1232,7 @@
1200
1232
  containerFormat: "ktx2",
1201
1233
  module: "encoder"
1202
1234
  };
1203
- return await parseBasis(arrayBuffer, options);
1235
+ return (await parseBasis(arrayBuffer, options))[0];
1204
1236
  }
1205
1237
  return parseCompressedTexture(arrayBuffer);
1206
1238
  }
@@ -1,5 +1,16 @@
1
- import type { Writer } from '@loaders.gl/loader-utils';
1
+ import type { Writer, WriterOptions } from '@loaders.gl/loader-utils';
2
2
  import { encodeImageURLToCompressedTextureURL } from './lib/encoders/encode-texture';
3
+ export declare type CompressedTextureWriterOptions = WriterOptions & {
4
+ cwd?: string;
5
+ texture?: {
6
+ format: string;
7
+ compression: string;
8
+ quality: string;
9
+ mipmap: boolean;
10
+ flipY: boolean;
11
+ toolFlags: string;
12
+ };
13
+ };
3
14
  /**
4
15
  * DDS Texture Container Exporter
5
16
  */
@@ -21,5 +32,7 @@ export declare const CompressedTextureWriter: {
21
32
  };
22
33
  encodeURLtoURL: typeof encodeImageURLToCompressedTextureURL;
23
34
  };
24
- export declare const _TypecheckCompressedTextureWriter: Writer;
35
+ export declare const _TypecheckCompressedTextureWriter: Writer & {
36
+ encodeURLtoURL: (inputUrl: string, outputUrl: string, options?: CompressedTextureWriterOptions) => Promise<string>;
37
+ };
25
38
  //# sourceMappingURL=compressed-texture-writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compressed-texture-writer.d.ts","sourceRoot":"","sources":["../src/compressed-texture-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAC,oCAAoC,EAAC,MAAM,+BAA+B,CAAC;AAEnF;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;CAoBnC,CAAC;AAGF,eAAO,MAAM,iCAAiC,EAAE,MAAgC,CAAC"}
1
+ {"version":3,"file":"compressed-texture-writer.d.ts","sourceRoot":"","sources":["../src/compressed-texture-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAC,oCAAoC,EAAC,MAAM,+BAA+B,CAAC;AAEnF,oBAAY,8BAA8B,GAAG,aAAa,GAAG;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;CAoBnC,CAAC;AAGF,eAAO,MAAM,iCAAiC,EAAE,MAAM,GAAG;IACvD,cAAc,EAAE,CACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,8BAA8B,KACrC,OAAO,CAAC,MAAM,CAAC,CAAC;CACI,CAAC"}
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  // ../worker-utils/src/lib/env-utils/version.ts
38
- var VERSION = true ? "3.1.8" : DEFAULT_VERSION;
38
+ var VERSION = true ? "3.2.0-alpha.3" : 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
  }
@@ -100,16 +100,33 @@
100
100
  }
101
101
 
102
102
  // ../worker-utils/src/lib/worker-farm/worker-body.ts
103
+ function getParentPort() {
104
+ let parentPort;
105
+ try {
106
+ eval("globalThis.parentPort = require('worker_threads').parentPort");
107
+ parentPort = globalThis.parentPort;
108
+ } catch {
109
+ }
110
+ return parentPort;
111
+ }
103
112
  var onMessageWrapperMap = new Map();
104
113
  var WorkerBody = class {
114
+ static inWorkerThread() {
115
+ return typeof self !== "undefined" || Boolean(getParentPort());
116
+ }
105
117
  static set onmessage(onMessage) {
106
- self.onmessage = (message) => {
107
- if (!isKnownMessage(message)) {
108
- return;
109
- }
110
- const { type, payload } = message.data;
118
+ function handleMessage(message) {
119
+ const parentPort3 = getParentPort();
120
+ const { type, payload } = parentPort3 ? message : message.data;
111
121
  onMessage(type, payload);
112
- };
122
+ }
123
+ const parentPort2 = getParentPort();
124
+ if (parentPort2) {
125
+ parentPort2.on("message", handleMessage);
126
+ parentPort2.on("exit", () => console.debug("Node worker closing"));
127
+ } else {
128
+ globalThis.onmessage = handleMessage;
129
+ }
113
130
  }
114
131
  static addEventListener(onMessage) {
115
132
  let onMessageWrapper = onMessageWrapperMap.get(onMessage);
@@ -118,22 +135,36 @@
118
135
  if (!isKnownMessage(message)) {
119
136
  return;
120
137
  }
121
- const { type, payload } = message.data;
138
+ const parentPort3 = getParentPort();
139
+ const { type, payload } = parentPort3 ? message : message.data;
122
140
  onMessage(type, payload);
123
141
  };
124
142
  }
125
- self.addEventListener("message", onMessageWrapper);
143
+ const parentPort2 = getParentPort();
144
+ if (parentPort2) {
145
+ console.error("not implemented");
146
+ } else {
147
+ globalThis.addEventListener("message", onMessageWrapper);
148
+ }
126
149
  }
127
150
  static removeEventListener(onMessage) {
128
151
  const onMessageWrapper = onMessageWrapperMap.get(onMessage);
129
152
  onMessageWrapperMap.delete(onMessage);
130
- self.removeEventListener("message", onMessageWrapper);
153
+ const parentPort2 = getParentPort();
154
+ if (parentPort2) {
155
+ console.error("not implemented");
156
+ } else {
157
+ globalThis.removeEventListener("message", onMessageWrapper);
158
+ }
131
159
  }
132
160
  static postMessage(type, payload) {
133
- if (self) {
134
- const data = { source: "loaders.gl", type, payload };
135
- const transferList = getTransferList(payload);
136
- self.postMessage(data, transferList);
161
+ const data = { source: "loaders.gl", type, payload };
162
+ const transferList = getTransferList(payload);
163
+ const parentPort2 = getParentPort();
164
+ if (parentPort2) {
165
+ parentPort2.postMessage(data, transferList);
166
+ } else {
167
+ globalThis.postMessage(data, transferList);
137
168
  }
138
169
  }
139
170
  };
@@ -144,7 +175,7 @@
144
175
 
145
176
  // ../worker-utils/src/lib/library-utils/library-utils.ts
146
177
  var node = __toModule(require_require_utils());
147
- var LATEST = "latest";
178
+ var LATEST = "beta";
148
179
  var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
149
180
  var loadLibraryPromises = {};
150
181
  async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
@@ -215,19 +246,20 @@
215
246
  // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
216
247
  var requestId = 0;
217
248
  function createLoaderWorker(loader) {
218
- if (typeof self === "undefined") {
249
+ if (!WorkerBody.inWorkerThread()) {
219
250
  return;
220
251
  }
221
252
  WorkerBody.onmessage = async (type, payload) => {
222
253
  switch (type) {
223
254
  case "process":
224
255
  try {
225
- const { input, options = {} } = payload;
256
+ const { input, options = {}, context = {} } = payload;
226
257
  const result = await parseData({
227
258
  loader,
228
259
  arrayBuffer: input,
229
260
  options,
230
261
  context: {
262
+ ...context,
231
263
  parse: parseOnMainThread
232
264
  }
233
265
  });
@@ -287,7 +319,7 @@
287
319
  }
288
320
 
289
321
  // src/lib/utils/version.ts
290
- var VERSION3 = true ? "3.1.8" : "latest";
322
+ var VERSION3 = true ? "3.2.0-alpha.3" : "beta";
291
323
 
292
324
  // src/crunch-loader.ts
293
325
  var CrunchLoader = {
@@ -446,18 +478,19 @@
446
478
  cCRNFmtDXT3: 1,
447
479
  cCRNFmtDXT5: 2
448
480
  };
449
- var DXT_FORMAT_MAP = {};
450
- DXT_FORMAT_MAP[CRN_FORMAT.cCRNFmtDXT1] = {
451
- pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
452
- sizeFunction: getDxt1LevelSize
453
- };
454
- DXT_FORMAT_MAP[CRN_FORMAT.cCRNFmtDXT3] = {
455
- pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
456
- sizeFunction: getDxtXLevelSize
457
- };
458
- DXT_FORMAT_MAP[CRN_FORMAT.cCRNFmtDXT5] = {
459
- pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
460
- sizeFunction: getDxtXLevelSize
481
+ var DXT_FORMAT_MAP = {
482
+ [CRN_FORMAT.cCRNFmtDXT1]: {
483
+ pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
484
+ sizeFunction: getDxt1LevelSize
485
+ },
486
+ [CRN_FORMAT.cCRNFmtDXT3]: {
487
+ pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
488
+ sizeFunction: getDxtXLevelSize
489
+ },
490
+ [CRN_FORMAT.cCRNFmtDXT5]: {
491
+ pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
492
+ sizeFunction: getDxtXLevelSize
493
+ }
461
494
  };
462
495
  var cachedDstSize = 0;
463
496
  var dst;