@loaders.gl/textures 4.0.0-alpha.5 → 4.0.0-alpha.7

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 (316) hide show
  1. package/dist/basis-loader.d.ts +4 -43
  2. package/dist/basis-loader.d.ts.map +1 -1
  3. package/dist/basis-loader.js +34 -24
  4. package/dist/basis-worker-node.js +64152 -0
  5. package/dist/basis-worker.js +51 -18
  6. package/dist/bundle.js +2 -2
  7. package/dist/compressed-texture-loader.d.ts +1 -1
  8. package/dist/compressed-texture-loader.d.ts.map +1 -1
  9. package/dist/compressed-texture-loader.js +59 -36
  10. package/dist/compressed-texture-worker.js +51 -18
  11. package/dist/compressed-texture-writer.d.ts +13 -21
  12. package/dist/compressed-texture-writer.d.ts.map +1 -1
  13. package/dist/compressed-texture-writer.js +33 -21
  14. package/dist/crunch-loader.js +23 -16
  15. package/dist/crunch-worker.js +49 -17
  16. package/dist/dist.min.js +104 -35
  17. package/dist/es5/basis-loader.js +37 -0
  18. package/dist/es5/basis-loader.js.map +1 -0
  19. package/dist/es5/bundle.js +6 -0
  20. package/dist/es5/bundle.js.map +1 -0
  21. package/dist/es5/compressed-texture-loader.js +76 -0
  22. package/dist/es5/compressed-texture-loader.js.map +1 -0
  23. package/dist/es5/compressed-texture-writer.js +28 -0
  24. package/dist/es5/compressed-texture-writer.js.map +1 -0
  25. package/dist/es5/crunch-loader.js +26 -0
  26. package/dist/es5/crunch-loader.js.map +1 -0
  27. package/dist/es5/index.js +131 -0
  28. package/dist/es5/index.js.map +1 -0
  29. package/dist/es5/ktx2-basis-writer.js +26 -0
  30. package/dist/es5/ktx2-basis-writer.js.map +1 -0
  31. package/dist/es5/lib/encoders/encode-ktx.js +12 -0
  32. package/dist/es5/lib/encoders/encode-ktx.js.map +1 -0
  33. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +74 -0
  34. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  35. package/dist/es5/lib/encoders/encode-texture.js +38 -0
  36. package/dist/es5/lib/encoders/encode-texture.js.map +1 -0
  37. package/dist/es5/lib/gl-extensions.js +68 -0
  38. package/dist/es5/lib/gl-extensions.js.map +1 -0
  39. package/dist/es5/lib/parsers/basis-module-loader.js +194 -0
  40. package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -0
  41. package/dist/es5/lib/parsers/crunch-module-loader.js +67 -0
  42. package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -0
  43. package/dist/es5/lib/parsers/parse-basis.js +270 -0
  44. package/dist/es5/lib/parsers/parse-basis.js.map +1 -0
  45. package/dist/es5/lib/parsers/parse-compressed-texture.js +22 -0
  46. package/dist/es5/lib/parsers/parse-compressed-texture.js.map +1 -0
  47. package/dist/es5/lib/parsers/parse-crunch.js +100 -0
  48. package/dist/es5/lib/parsers/parse-crunch.js.map +1 -0
  49. package/dist/es5/lib/parsers/parse-dds.js +84 -0
  50. package/dist/es5/lib/parsers/parse-dds.js.map +1 -0
  51. package/dist/es5/lib/parsers/parse-ktx.js +34 -0
  52. package/dist/es5/lib/parsers/parse-ktx.js.map +1 -0
  53. package/dist/es5/lib/parsers/parse-npy.js +70 -0
  54. package/dist/es5/lib/parsers/parse-npy.js.map +1 -0
  55. package/dist/es5/lib/parsers/parse-pvr.js +161 -0
  56. package/dist/es5/lib/parsers/parse-pvr.js.map +1 -0
  57. package/dist/es5/lib/texture-api/async-deep-map.js +156 -0
  58. package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -0
  59. package/dist/es5/lib/texture-api/deep-load.js +63 -0
  60. package/dist/es5/lib/texture-api/deep-load.js.map +1 -0
  61. package/dist/es5/lib/texture-api/generate-url.js +20 -0
  62. package/dist/es5/lib/texture-api/generate-url.js.map +1 -0
  63. package/dist/es5/lib/texture-api/load-image-array.js +75 -0
  64. package/dist/es5/lib/texture-api/load-image-array.js.map +1 -0
  65. package/dist/es5/lib/texture-api/load-image-cube.js +136 -0
  66. package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -0
  67. package/dist/es5/lib/texture-api/load-image.js +129 -0
  68. package/dist/es5/lib/texture-api/load-image.js.map +1 -0
  69. package/dist/es5/lib/texture-api/texture-api-types.js +2 -0
  70. package/dist/es5/lib/texture-api/texture-api-types.js.map +1 -0
  71. package/dist/es5/lib/utils/extract-mipmap-images.js +41 -0
  72. package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -0
  73. package/dist/es5/lib/utils/ktx-format-helper.js +79 -0
  74. package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -0
  75. package/dist/es5/lib/utils/texture-formats.js +54 -0
  76. package/dist/es5/lib/utils/texture-formats.js.map +1 -0
  77. package/dist/es5/lib/utils/version.js +9 -0
  78. package/dist/es5/lib/utils/version.js.map +1 -0
  79. package/dist/es5/libs/basis_encoder.js +21 -0
  80. package/dist/es5/libs/basis_encoder.wasm +0 -0
  81. package/dist/es5/libs/basis_transcoder.js +22 -0
  82. package/dist/{libs → es5}/libs/basis_transcoder.wasm +0 -0
  83. package/dist/es5/npy-loader.js +51 -0
  84. package/dist/es5/npy-loader.js.map +1 -0
  85. package/dist/es5/types.js +2 -0
  86. package/dist/es5/types.js.map +1 -0
  87. package/dist/es5/workers/basis-worker-node.js +7 -0
  88. package/dist/es5/workers/basis-worker-node.js.map +1 -0
  89. package/dist/es5/workers/basis-worker.js +6 -0
  90. package/dist/es5/workers/basis-worker.js.map +1 -0
  91. package/dist/es5/workers/compressed-texture-worker.js +6 -0
  92. package/dist/es5/workers/compressed-texture-worker.js.map +1 -0
  93. package/dist/es5/workers/crunch-worker.js +19 -0
  94. package/dist/es5/workers/crunch-worker.js.map +1 -0
  95. package/dist/es5/workers/ktx2-basis-writer-worker-node.js +54 -0
  96. package/dist/es5/workers/ktx2-basis-writer-worker-node.js.map +1 -0
  97. package/dist/es5/workers/ktx2-basis-writer-worker.js +53 -0
  98. package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -0
  99. package/dist/es5/workers/npy-worker.js +6 -0
  100. package/dist/es5/workers/npy-worker.js.map +1 -0
  101. package/dist/esm/basis-loader.js +26 -0
  102. package/dist/esm/basis-loader.js.map +1 -0
  103. package/dist/esm/bundle.js +4 -0
  104. package/dist/esm/bundle.js.map +1 -0
  105. package/dist/esm/compressed-texture-loader.js +41 -0
  106. package/dist/esm/compressed-texture-loader.js.map +1 -0
  107. package/dist/esm/compressed-texture-writer.js +21 -0
  108. package/dist/esm/compressed-texture-writer.js.map +1 -0
  109. package/dist/esm/crunch-loader.js +18 -0
  110. package/dist/esm/crunch-loader.js.map +1 -0
  111. package/dist/esm/index.js +29 -0
  112. package/dist/esm/index.js.map +1 -0
  113. package/dist/{ktx2-basis-universal-texture-writer.js → esm/ktx2-basis-writer.js} +4 -4
  114. package/dist/esm/ktx2-basis-writer.js.map +1 -0
  115. package/dist/esm/lib/encoders/encode-ktx.js +6 -0
  116. package/dist/esm/lib/encoders/encode-ktx.js.map +1 -0
  117. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +35 -0
  118. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  119. package/dist/esm/lib/encoders/encode-texture.js +12 -0
  120. package/dist/esm/lib/encoders/encode-texture.js.map +1 -0
  121. package/dist/esm/lib/gl-extensions.js +61 -0
  122. package/dist/esm/lib/gl-extensions.js.map +1 -0
  123. package/dist/esm/lib/parsers/basis-module-loader.js +77 -0
  124. package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -0
  125. package/dist/esm/lib/parsers/crunch-module-loader.js +19 -0
  126. package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -0
  127. package/dist/esm/lib/parsers/parse-basis.js +231 -0
  128. package/dist/esm/lib/parsers/parse-basis.js.map +1 -0
  129. package/dist/esm/lib/parsers/parse-compressed-texture.js +16 -0
  130. package/dist/esm/lib/parsers/parse-compressed-texture.js.map +1 -0
  131. package/dist/esm/lib/parsers/parse-crunch.js +75 -0
  132. package/dist/esm/lib/parsers/parse-crunch.js.map +1 -0
  133. package/dist/esm/lib/parsers/parse-dds.js +75 -0
  134. package/dist/esm/lib/parsers/parse-dds.js.map +1 -0
  135. package/dist/esm/lib/parsers/parse-ktx.js +25 -0
  136. package/dist/esm/lib/parsers/parse-ktx.js.map +1 -0
  137. package/dist/esm/lib/parsers/parse-npy.js +63 -0
  138. package/dist/esm/lib/parsers/parse-npy.js.map +1 -0
  139. package/dist/esm/lib/parsers/parse-pvr.js +154 -0
  140. package/dist/esm/lib/parsers/parse-pvr.js.map +1 -0
  141. package/dist/esm/lib/texture-api/async-deep-map.js +34 -0
  142. package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -0
  143. package/dist/esm/lib/texture-api/deep-load.js +10 -0
  144. package/dist/esm/lib/texture-api/deep-load.js.map +1 -0
  145. package/dist/esm/lib/texture-api/generate-url.js +13 -0
  146. package/dist/esm/lib/texture-api/generate-url.js.map +1 -0
  147. package/dist/esm/lib/texture-api/load-image-array.js +20 -0
  148. package/dist/esm/lib/texture-api/load-image-array.js.map +1 -0
  149. package/dist/esm/lib/texture-api/load-image-cube.js +63 -0
  150. package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -0
  151. package/dist/esm/lib/texture-api/load-image.js +46 -0
  152. package/dist/esm/lib/texture-api/load-image.js.map +1 -0
  153. package/dist/esm/lib/texture-api/texture-api-types.js +2 -0
  154. package/dist/esm/lib/texture-api/texture-api-types.js.map +1 -0
  155. package/dist/esm/lib/utils/extract-mipmap-images.js +35 -0
  156. package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -0
  157. package/dist/esm/lib/utils/ktx-format-helper.js +73 -0
  158. package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -0
  159. package/dist/esm/lib/utils/texture-formats.js +36 -0
  160. package/dist/esm/lib/utils/texture-formats.js.map +1 -0
  161. package/dist/esm/lib/utils/version.js +2 -0
  162. package/dist/esm/lib/utils/version.js.map +1 -0
  163. package/dist/esm/libs/README.md +9 -0
  164. package/dist/esm/libs/basis_encoder.js +21 -0
  165. package/dist/esm/libs/basis_encoder.wasm +0 -0
  166. package/dist/esm/libs/basis_transcoder.js +22 -0
  167. package/dist/esm/libs/basis_transcoder.wasm +0 -0
  168. package/dist/esm/libs/crunch.js +136 -0
  169. package/dist/esm/npy-loader.js +22 -0
  170. package/dist/esm/npy-loader.js.map +1 -0
  171. package/dist/esm/types.js +2 -0
  172. package/dist/esm/types.js.map +1 -0
  173. package/dist/esm/workers/basis-worker-node.js +5 -0
  174. package/dist/esm/workers/basis-worker-node.js.map +1 -0
  175. package/dist/esm/workers/basis-worker.js +4 -0
  176. package/dist/esm/workers/basis-worker.js.map +1 -0
  177. package/dist/esm/workers/compressed-texture-worker.js +4 -0
  178. package/dist/esm/workers/compressed-texture-worker.js.map +1 -0
  179. package/dist/esm/workers/crunch-worker.js +9 -0
  180. package/dist/esm/workers/crunch-worker.js.map +1 -0
  181. package/dist/esm/workers/ktx2-basis-writer-worker-node.js +32 -0
  182. package/dist/esm/workers/ktx2-basis-writer-worker-node.js.map +1 -0
  183. package/dist/esm/workers/ktx2-basis-writer-worker.js +31 -0
  184. package/dist/esm/workers/ktx2-basis-writer-worker.js.map +1 -0
  185. package/dist/esm/workers/npy-worker.js +4 -0
  186. package/dist/esm/workers/npy-worker.js.map +1 -0
  187. package/dist/index.d.ts +15 -1
  188. package/dist/index.d.ts.map +1 -1
  189. package/dist/index.js +52 -14
  190. package/dist/ktx2-basis-writer-worker-node.js +63611 -0
  191. package/dist/ktx2-basis-writer-worker.js +343 -0
  192. package/dist/ktx2-basis-writer.d.ts +16 -0
  193. package/dist/ktx2-basis-writer.d.ts.map +1 -0
  194. package/dist/ktx2-basis-writer.js +26 -0
  195. package/dist/lib/encoders/encode-ktx.js +9 -5
  196. package/dist/lib/encoders/encode-ktx2-basis-texture.js +40 -34
  197. package/dist/lib/encoders/encode-texture.d.ts +2 -3
  198. package/dist/lib/encoders/encode-texture.d.ts.map +1 -1
  199. package/dist/lib/encoders/encode-texture.js +26 -11
  200. package/dist/lib/gl-extensions.js +71 -60
  201. package/dist/lib/parsers/basis-module-loader.js +100 -76
  202. package/dist/lib/parsers/crunch-module-loader.js +30 -18
  203. package/dist/lib/parsers/parse-basis.d.ts +1 -1
  204. package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
  205. package/dist/lib/parsers/parse-basis.js +225 -240
  206. package/dist/lib/parsers/parse-compressed-texture.js +25 -18
  207. package/dist/lib/parsers/parse-crunch.js +96 -82
  208. package/dist/lib/parsers/parse-dds.js +93 -63
  209. package/dist/lib/parsers/parse-ktx.js +44 -23
  210. package/dist/lib/parsers/parse-npy.d.ts +10 -5
  211. package/dist/lib/parsers/parse-npy.d.ts.map +1 -1
  212. package/dist/lib/parsers/parse-npy.js +76 -71
  213. package/dist/lib/parsers/parse-pvr.js +212 -133
  214. package/dist/lib/texture-api/async-deep-map.d.ts +2 -2
  215. package/dist/lib/texture-api/async-deep-map.d.ts.map +1 -1
  216. package/dist/lib/texture-api/async-deep-map.js +35 -33
  217. package/dist/lib/texture-api/deep-load.d.ts +2 -2
  218. package/dist/lib/texture-api/deep-load.d.ts.map +1 -1
  219. package/dist/lib/texture-api/deep-load.js +14 -8
  220. package/dist/lib/texture-api/generate-url.js +16 -13
  221. package/dist/lib/texture-api/load-image-array.js +19 -18
  222. package/dist/lib/texture-api/load-image-cube.d.ts +1 -1
  223. package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -1
  224. package/dist/lib/texture-api/load-image-cube.js +39 -55
  225. package/dist/lib/texture-api/load-image.js +38 -43
  226. package/dist/lib/texture-api/texture-api-types.d.ts +2 -2
  227. package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -1
  228. package/dist/lib/texture-api/texture-api-types.js +3 -2
  229. package/dist/lib/utils/extract-mipmap-images.d.ts +1 -1
  230. package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -1
  231. package/dist/lib/utils/extract-mipmap-images.js +45 -36
  232. package/dist/lib/utils/ktx-format-helper.js +122 -70
  233. package/dist/lib/utils/texture-formats.js +42 -30
  234. package/dist/lib/utils/version.js +8 -2
  235. package/dist/libs/basis_encoder.js +20 -21
  236. package/dist/libs/basis_encoder.wasm +0 -0
  237. package/dist/libs/basis_transcoder.js +14 -13
  238. package/dist/libs/basis_transcoder.wasm +0 -0
  239. package/dist/npy-loader.d.ts +6 -37
  240. package/dist/npy-loader.d.ts.map +1 -1
  241. package/dist/npy-loader.js +28 -20
  242. package/dist/npy-worker.js +60 -31
  243. package/dist/types.js +1 -2
  244. package/dist/workers/basis-worker-node.d.ts +2 -0
  245. package/dist/workers/basis-worker-node.d.ts.map +1 -0
  246. package/dist/workers/basis-worker-node.js +7 -0
  247. package/dist/workers/basis-worker.js +5 -4
  248. package/dist/workers/compressed-texture-worker.js +5 -4
  249. package/dist/workers/crunch-worker.js +13 -7
  250. package/dist/workers/ktx2-basis-writer-worker-node.d.ts +2 -0
  251. package/dist/workers/ktx2-basis-writer-worker-node.d.ts.map +1 -0
  252. package/dist/workers/ktx2-basis-writer-worker-node.js +28 -0
  253. package/dist/workers/ktx2-basis-writer-worker.d.ts +2 -0
  254. package/dist/workers/ktx2-basis-writer-worker.d.ts.map +1 -0
  255. package/dist/workers/ktx2-basis-writer-worker.js +26 -0
  256. package/dist/workers/npy-worker.js +5 -4
  257. package/package.json +21 -15
  258. package/src/basis-loader.ts +5 -7
  259. package/src/compressed-texture-writer.ts +21 -3
  260. package/src/index.ts +18 -1
  261. package/src/{ktx2-basis-universal-texture-writer.ts → ktx2-basis-writer.ts} +14 -3
  262. package/src/lib/encoders/encode-texture.ts +2 -1
  263. package/src/lib/parsers/parse-basis.ts +1 -1
  264. package/src/lib/parsers/parse-npy.ts +52 -31
  265. package/src/libs/basis_encoder.js +20 -21
  266. package/src/libs/basis_encoder.wasm +0 -0
  267. package/src/libs/basis_transcoder.js +14 -13
  268. package/src/libs/basis_transcoder.wasm +0 -0
  269. package/src/npy-loader.ts +7 -7
  270. package/src/workers/basis-worker-node.ts +6 -0
  271. package/src/workers/ktx2-basis-writer-worker-node.ts +27 -0
  272. package/src/workers/ktx2-basis-writer-worker.ts +25 -0
  273. package/dist/basis-loader.js.map +0 -1
  274. package/dist/bundle.js.map +0 -1
  275. package/dist/compressed-texture-loader.js.map +0 -1
  276. package/dist/compressed-texture-writer.js.map +0 -1
  277. package/dist/crunch-loader.js.map +0 -1
  278. package/dist/index.js.map +0 -1
  279. package/dist/ktx2-basis-universal-texture-writer.d.ts +0 -22
  280. package/dist/ktx2-basis-universal-texture-writer.d.ts.map +0 -1
  281. package/dist/ktx2-basis-universal-texture-writer.js.map +0 -1
  282. package/dist/lib/encoders/encode-ktx.js.map +0 -1
  283. package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
  284. package/dist/lib/encoders/encode-texture.js.map +0 -1
  285. package/dist/lib/gl-extensions.js.map +0 -1
  286. package/dist/lib/parsers/basis-module-loader.js.map +0 -1
  287. package/dist/lib/parsers/crunch-module-loader.js.map +0 -1
  288. package/dist/lib/parsers/parse-basis.js.map +0 -1
  289. package/dist/lib/parsers/parse-compressed-texture.js.map +0 -1
  290. package/dist/lib/parsers/parse-crunch.js.map +0 -1
  291. package/dist/lib/parsers/parse-dds.js.map +0 -1
  292. package/dist/lib/parsers/parse-ktx.js.map +0 -1
  293. package/dist/lib/parsers/parse-npy.js.map +0 -1
  294. package/dist/lib/parsers/parse-pvr.js.map +0 -1
  295. package/dist/lib/texture-api/async-deep-map.js.map +0 -1
  296. package/dist/lib/texture-api/deep-load.js.map +0 -1
  297. package/dist/lib/texture-api/generate-url.js.map +0 -1
  298. package/dist/lib/texture-api/load-image-array.js.map +0 -1
  299. package/dist/lib/texture-api/load-image-cube.js.map +0 -1
  300. package/dist/lib/texture-api/load-image.js.map +0 -1
  301. package/dist/lib/texture-api/texture-api-types.js.map +0 -1
  302. package/dist/lib/utils/extract-mipmap-images.js.map +0 -1
  303. package/dist/lib/utils/ktx-format-helper.js.map +0 -1
  304. package/dist/lib/utils/texture-formats.js.map +0 -1
  305. package/dist/lib/utils/version.js.map +0 -1
  306. package/dist/libs/libs/basis_encoder.js +0 -22
  307. package/dist/libs/libs/basis_encoder.wasm +0 -0
  308. package/dist/libs/libs/basis_transcoder.js +0 -21
  309. package/dist/npy-loader.js.map +0 -1
  310. package/dist/types.js.map +0 -1
  311. package/dist/workers/basis-worker.js.map +0 -1
  312. package/dist/workers/compressed-texture-worker.js.map +0 -1
  313. package/dist/workers/crunch-worker.js.map +0 -1
  314. package/dist/workers/npy-worker.js.map +0 -1
  315. /package/dist/{libs → es5}/libs/README.md +0 -0
  316. /package/dist/{libs → es5}/libs/crunch.js +0 -0
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  // ../worker-utils/src/lib/env-utils/version.ts
38
- var VERSION = true ? "4.0.0-alpha.5" : DEFAULT_VERSION;
38
+ var VERSION = true ? "4.0.0-alpha.7" : 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
  };
@@ -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 ? "4.0.0-alpha.5" : "beta";
322
+ var VERSION3 = true ? "4.0.0-alpha.7" : "beta";
291
323
 
292
324
  // src/crunch-loader.ts
293
325
  var CrunchLoader = {
package/dist/dist.min.js CHANGED
@@ -370,21 +370,21 @@
370
370
  const n2 = new Uint8Array(t2.buffer, t2.byteOffset, e.length);
371
371
  if (n2[0] !== e[0] || n2[1] !== e[1] || n2[2] !== e[2] || n2[3] !== e[3] || n2[4] !== e[4] || n2[5] !== e[5] || n2[6] !== e[6] || n2[7] !== e[7] || n2[8] !== e[8] || n2[9] !== e[9] || n2[10] !== e[10] || n2[11] !== e[11])
372
372
  throw new Error("Missing KTX 2.0 identifier.");
373
- const i2 = new U(), s2 = 17 * Uint32Array.BYTES_PER_ELEMENT, a2 = new c(t2, e.length, s2, true);
374
- i2.vkFormat = a2._nextUint32(), i2.typeSize = a2._nextUint32(), i2.pixelWidth = a2._nextUint32(), i2.pixelHeight = a2._nextUint32(), i2.pixelDepth = a2._nextUint32(), i2.layerCount = a2._nextUint32(), i2.faceCount = a2._nextUint32();
375
- const r2 = a2._nextUint32();
376
- i2.supercompressionScheme = a2._nextUint32();
377
- const o2 = a2._nextUint32(), l2 = a2._nextUint32(), f2 = a2._nextUint32(), h = a2._nextUint32(), g = a2._nextUint64(), p2 = a2._nextUint64(), x = new c(t2, e.length + s2, 3 * r2 * 8, true);
373
+ const i2 = new U(), s2 = 17 * Uint32Array.BYTES_PER_ELEMENT, a3 = new c(t2, e.length, s2, true);
374
+ i2.vkFormat = a3._nextUint32(), i2.typeSize = a3._nextUint32(), i2.pixelWidth = a3._nextUint32(), i2.pixelHeight = a3._nextUint32(), i2.pixelDepth = a3._nextUint32(), i2.layerCount = a3._nextUint32(), i2.faceCount = a3._nextUint32();
375
+ const r2 = a3._nextUint32();
376
+ i2.supercompressionScheme = a3._nextUint32();
377
+ const o2 = a3._nextUint32(), l2 = a3._nextUint32(), f2 = a3._nextUint32(), h = a3._nextUint32(), g = a3._nextUint64(), p2 = a3._nextUint64(), x = new c(t2, e.length + s2, 3 * r2 * 8, true);
378
378
  for (let e2 = 0; e2 < r2; e2++)
379
379
  i2.levels.push({ levelData: new Uint8Array(t2.buffer, t2.byteOffset + x._nextUint64(), x._nextUint64()), uncompressedByteLength: x._nextUint64() });
380
380
  const u = new c(t2, o2, l2, true), y = { vendorId: u._skip(4)._nextUint16(), descriptorType: u._nextUint16(), versionNumber: u._nextUint16(), descriptorBlockSize: u._nextUint16(), colorModel: u._nextUint8(), colorPrimaries: u._nextUint8(), transferFunction: u._nextUint8(), flags: u._nextUint8(), texelBlockDimension: { x: u._nextUint8() + 1, y: u._nextUint8() + 1, z: u._nextUint8() + 1, w: u._nextUint8() + 1 }, bytesPlane: [u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8()], samples: [] }, D = (y.descriptorBlockSize / 4 - 6) / 4;
381
381
  for (let t3 = 0; t3 < D; t3++)
382
382
  y.samples[t3] = { bitOffset: u._nextUint16(), bitLength: u._nextUint8(), channelID: u._nextUint8(), samplePosition: [u._nextUint8(), u._nextUint8(), u._nextUint8(), u._nextUint8()], sampleLower: u._nextUint32(), sampleUpper: u._nextUint32() };
383
383
  i2.dataFormatDescriptor.length = 0, i2.dataFormatDescriptor.push(y);
384
- const b = new c(t2, f2, h, true);
385
- for (; b._offset < h; ) {
386
- const t3 = b._nextUint32(), e2 = b._scan(t3), n3 = _(e2), s3 = b._scan(t3 - e2.byteLength);
387
- i2.keyValue[n3] = n3.match(/^ktx/i) ? _(s3) : s3, t3 % 4 && b._skip(4 - t3 % 4);
384
+ const b2 = new c(t2, f2, h, true);
385
+ for (; b2._offset < h; ) {
386
+ const t3 = b2._nextUint32(), e2 = b2._scan(t3), n3 = _(e2), s3 = b2._scan(t3 - e2.byteLength);
387
+ i2.keyValue[n3] = n3.match(/^ktx/i) ? _(s3) : s3, t3 % 4 && b2._skip(4 - t3 % 4);
388
388
  }
389
389
  if (p2 <= 0)
390
390
  return i2;
@@ -716,6 +716,7 @@
716
716
  height,
717
717
  data: decodedData,
718
718
  compressed,
719
+ levelSize: decodedSize,
719
720
  hasAlpha: alphaFlag,
720
721
  format
721
722
  };
@@ -1282,28 +1283,22 @@
1282
1283
  });
1283
1284
 
1284
1285
  // src/lib/parsers/parse-npy.ts
1285
- function systemIsLittleEndian() {
1286
- const a2 = new Uint32Array([305419896]);
1287
- const b = new Uint8Array(a2.buffer, a2.byteOffset, a2.byteLength);
1288
- return !(b[0] === 18);
1289
- }
1290
1286
  function parseNPY(arrayBuffer, options) {
1291
- if (!arrayBuffer) {
1292
- return null;
1293
- }
1294
1287
  const view = new DataView(arrayBuffer);
1295
1288
  const { header, headerEndOffset } = parseHeader(view);
1296
1289
  const numpyType = header.descr;
1297
1290
  const ArrayType = DTYPES[numpyType.slice(1, 3)];
1298
1291
  if (!ArrayType) {
1299
- console.warn(`Decoding of npy dtype not implemented: ${numpyType}`);
1300
- return null;
1292
+ throw new Error(`Unimplemented type ${numpyType}`);
1301
1293
  }
1302
- const nArrayElements = header.shape?.reduce((a2, b) => a2 * b);
1294
+ const nArrayElements = header.shape?.reduce((a3, b2) => a3 * b2);
1303
1295
  const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;
1296
+ if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {
1297
+ throw new Error("Buffer overflow");
1298
+ }
1304
1299
  const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
1305
1300
  if (numpyType[0] === ">" && LITTLE_ENDIAN_OS || numpyType[0] === "<" && !LITTLE_ENDIAN_OS) {
1306
- console.warn("Data is wrong endianness, byte swapping not yet implemented.");
1301
+ throw new Error("Incorrect endianness");
1307
1302
  }
1308
1303
  return {
1309
1304
  data,
@@ -1315,10 +1310,10 @@
1315
1310
  let offset = 8;
1316
1311
  let headerLength;
1317
1312
  if (majorVersion >= 2) {
1318
- headerLength = view.getUint32(8, true);
1313
+ headerLength = view.getUint32(offset, true);
1319
1314
  offset += 4;
1320
1315
  } else {
1321
- headerLength = view.getUint16(8, true);
1316
+ headerLength = view.getUint16(offset, true);
1322
1317
  offset += 2;
1323
1318
  }
1324
1319
  const encoding = majorVersion <= 2 ? "latin1" : "utf-8";
@@ -1329,10 +1324,13 @@
1329
1324
  const header = JSON.parse(headerText.replace(/'/g, '"').replace("False", "false").replace("(", "[").replace(/,*\),*/g, "]"));
1330
1325
  return { header, headerEndOffset: offset };
1331
1326
  }
1332
- var LITTLE_ENDIAN_OS, DTYPES;
1327
+ var a2, b, isLittleEndian, LITTLE_ENDIAN_OS, DTYPES;
1333
1328
  var init_parse_npy = __esm({
1334
1329
  "src/lib/parsers/parse-npy.ts"() {
1335
- LITTLE_ENDIAN_OS = systemIsLittleEndian();
1330
+ a2 = new Uint32Array([305419896]);
1331
+ b = new Uint8Array(a2.buffer, a2.byteOffset, a2.byteLength);
1332
+ isLittleEndian = !(b[0] === 18);
1333
+ LITTLE_ENDIAN_OS = isLittleEndian;
1336
1334
  DTYPES = {
1337
1335
  u1: Uint8Array,
1338
1336
  i1: Int8Array,
@@ -1462,15 +1460,15 @@
1462
1460
  }
1463
1461
  });
1464
1462
 
1465
- // src/ktx2-basis-universal-texture-writer.ts
1466
- var KTX2BasisUniversalTextureWriter;
1467
- var init_ktx2_basis_universal_texture_writer = __esm({
1468
- "src/ktx2-basis-universal-texture-writer.ts"() {
1463
+ // src/ktx2-basis-writer.ts
1464
+ var KTX2BasisWriter;
1465
+ var init_ktx2_basis_writer = __esm({
1466
+ "src/ktx2-basis-writer.ts"() {
1469
1467
  init_version();
1470
1468
  init_encode_ktx2_basis_texture();
1471
- KTX2BasisUniversalTextureWriter = {
1469
+ KTX2BasisWriter = {
1472
1470
  name: "Basis Universal Supercompressed GPU Texture",
1473
- id: "ktx2-basis-supercompressed-texture",
1471
+ id: "ktx2-basis-writer",
1474
1472
  module: "textures",
1475
1473
  version: VERSION,
1476
1474
  extensions: ["ktx2"],
@@ -1690,10 +1688,62 @@
1690
1688
  }
1691
1689
  });
1692
1690
 
1691
+ // ../images/src/lib/category-api/parse-isobmff-binary.ts
1692
+ function getISOBMFFMediaType(buffer) {
1693
+ if (!checkString(buffer, "ftyp", 4)) {
1694
+ return null;
1695
+ }
1696
+ if ((buffer[8] & 96) === 0) {
1697
+ return null;
1698
+ }
1699
+ return decodeMajorBrand(buffer);
1700
+ }
1701
+ function decodeMajorBrand(buffer) {
1702
+ const brandMajor = getUTF8String(buffer, 8, 12).replace("\0", " ").trim();
1703
+ switch (brandMajor) {
1704
+ case "avif":
1705
+ case "avis":
1706
+ return { extension: "avif", mimeType: "image/avif" };
1707
+ default:
1708
+ return null;
1709
+ }
1710
+ }
1711
+ function getUTF8String(array, start, end) {
1712
+ return String.fromCharCode(...array.slice(start, end));
1713
+ }
1714
+ function stringToBytes(string) {
1715
+ return [...string].map((character) => character.charCodeAt(0));
1716
+ }
1717
+ function checkString(buffer, header, offset = 0) {
1718
+ const headerBytes = stringToBytes(header);
1719
+ for (let i2 = 0; i2 < headerBytes.length; ++i2) {
1720
+ if (headerBytes[i2] !== buffer[i2 + offset]) {
1721
+ return false;
1722
+ }
1723
+ }
1724
+ return true;
1725
+ }
1726
+ var init_parse_isobmff_binary = __esm({
1727
+ "../images/src/lib/category-api/parse-isobmff-binary.ts"() {
1728
+ }
1729
+ });
1730
+
1693
1731
  // ../images/src/lib/category-api/binary-image-api.ts
1694
1732
  function getBinaryImageMetadata(binaryData) {
1695
1733
  const dataView = toDataView(binaryData);
1696
- return getPngMetadata(dataView) || getJpegMetadata(dataView) || getGifMetadata(dataView) || getBmpMetadata(dataView);
1734
+ return getPngMetadata(dataView) || getJpegMetadata(dataView) || getGifMetadata(dataView) || getBmpMetadata(dataView) || getISOBMFFMetadata(dataView);
1735
+ }
1736
+ function getISOBMFFMetadata(binaryData) {
1737
+ const buffer = new Uint8Array(binaryData instanceof DataView ? binaryData.buffer : binaryData);
1738
+ const mediaType = getISOBMFFMediaType(buffer);
1739
+ if (!mediaType) {
1740
+ return null;
1741
+ }
1742
+ return {
1743
+ mimeType: mediaType.mimeType,
1744
+ width: 0,
1745
+ height: 0
1746
+ };
1697
1747
  }
1698
1748
  function getPngMetadata(binaryData) {
1699
1749
  const dataView = toDataView(binaryData);
@@ -1794,6 +1844,7 @@
1794
1844
  var BIG_ENDIAN, LITTLE_ENDIAN;
1795
1845
  var init_binary_image_api = __esm({
1796
1846
  "../images/src/lib/category-api/binary-image-api.ts"() {
1847
+ init_parse_isobmff_binary();
1797
1848
  BIG_ENDIAN = false;
1798
1849
  LITTLE_ENDIAN = true;
1799
1850
  }
@@ -1867,12 +1918,13 @@
1867
1918
  init_version3();
1868
1919
  init_parse_image();
1869
1920
  init_binary_image_api();
1870
- EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "ico", "svg"];
1921
+ EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "ico", "svg", "avif"];
1871
1922
  MIME_TYPES = [
1872
1923
  "image/png",
1873
1924
  "image/jpeg",
1874
1925
  "image/gif",
1875
1926
  "image/webp",
1927
+ "image/avif",
1876
1928
  "image/bmp",
1877
1929
  "image/vnd.microsoft.icon",
1878
1930
  "image/svg+xml"
@@ -2084,7 +2136,8 @@
2084
2136
  CrunchLoader: () => CrunchLoader,
2085
2137
  CrunchWorkerLoader: () => CrunchLoader,
2086
2138
  GL_EXTENSIONS_CONSTANTS: () => GL_EXTENSIONS_CONSTANTS,
2087
- KTX2BasisUniversalTextureWriter: () => KTX2BasisUniversalTextureWriter,
2139
+ KTX2BasisWriter: () => KTX2BasisWriter,
2140
+ KTX2BasisWriterWorker: () => KTX2BasisWriterWorker,
2088
2141
  NPYLoader: () => NPYLoader,
2089
2142
  NPYWorkerLoader: () => NPYWorkerLoader,
2090
2143
  getSupportedGPUTextureFormats: () => getSupportedGPUTextureFormats,
@@ -2093,14 +2146,16 @@
2093
2146
  loadImageTextureCube: () => loadImageTextureCube,
2094
2147
  selectSupportedBasisFormat: () => selectSupportedBasisFormat
2095
2148
  });
2149
+ var KTX2BasisWriterWorker;
2096
2150
  var init_src4 = __esm({
2097
2151
  "src/index.ts"() {
2152
+ init_version();
2098
2153
  init_basis_loader();
2099
2154
  init_compressed_texture_loader();
2100
2155
  init_crunch_loader();
2101
2156
  init_npy_loader();
2102
2157
  init_compressed_texture_writer();
2103
- init_ktx2_basis_universal_texture_writer();
2158
+ init_ktx2_basis_writer();
2104
2159
  init_load_image();
2105
2160
  init_load_image_array();
2106
2161
  init_load_image_cube();
@@ -2108,6 +2163,20 @@
2108
2163
  init_parse_basis();
2109
2164
  init_texture_formats();
2110
2165
  init_crunch_loader();
2166
+ KTX2BasisWriterWorker = {
2167
+ name: "Basis Universal Supercompressed GPU Texture",
2168
+ id: "ktx2-basis-writer",
2169
+ module: "textures",
2170
+ version: VERSION,
2171
+ extensions: ["ktx2"],
2172
+ worker: true,
2173
+ options: {
2174
+ useSRGB: false,
2175
+ qualityLevel: 10,
2176
+ encodeUASTC: false,
2177
+ mipmaps: false
2178
+ }
2179
+ };
2111
2180
  }
2112
2181
  });
2113
2182
 
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.BasisWorkerLoader = exports.BasisLoader = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _version = require("./lib/utils/version");
10
+ var _parseBasis = _interopRequireDefault(require("./lib/parsers/parse-basis"));
11
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
+ var BasisWorkerLoader = {
14
+ name: 'Basis',
15
+ id: 'basis',
16
+ module: 'textures',
17
+ version: _version.VERSION,
18
+ worker: true,
19
+ extensions: ['basis', 'ktx2'],
20
+ mimeTypes: ['application/octet-stream', 'image/ktx2'],
21
+ tests: ['sB'],
22
+ binary: true,
23
+ options: {
24
+ basis: {
25
+ format: 'auto',
26
+ libraryPath: 'libs/',
27
+ containerFormat: 'auto',
28
+ module: 'transcoder'
29
+ }
30
+ }
31
+ };
32
+ exports.BasisWorkerLoader = BasisWorkerLoader;
33
+ var BasisLoader = _objectSpread(_objectSpread({}, BasisWorkerLoader), {}, {
34
+ parse: _parseBasis.default
35
+ });
36
+ exports.BasisLoader = BasisLoader;
37
+ //# sourceMappingURL=basis-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basis-loader.js","names":["_version","require","_parseBasis","_interopRequireDefault","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","BasisWorkerLoader","name","id","module","version","VERSION","worker","extensions","mimeTypes","tests","binary","options","basis","format","libraryPath","containerFormat","exports","BasisLoader","parse","parseBasis"],"sources":["../../src/basis-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport type {Loader, LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {TextureLevel} from '@loaders.gl/schema';\nimport {VERSION} from './lib/utils/version';\nimport parseBasis from './lib/parsers/parse-basis';\n\n/**\n * Worker loader for Basis super compressed textures\n */\nexport const BasisWorkerLoader: Loader<TextureLevel[][], never, LoaderOptions> = {\n name: 'Basis',\n id: 'basis',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: ['basis', 'ktx2'],\n mimeTypes: ['application/octet-stream', 'image/ktx2'],\n tests: ['sB'],\n binary: true,\n options: {\n basis: {\n format: 'auto', // gl context doesn't exist on a worker thread\n libraryPath: 'libs/',\n containerFormat: 'auto', // 'basis' || 'ktx2' || 'auto'\n module: 'transcoder' // 'transcoder' || 'encoder'\n }\n }\n};\n\n/**\n * Loader for Basis super compressed textures\n */\nexport const BasisLoader: LoaderWithParser<TextureLevel[][], never, LoaderOptions> = {\n ...BasisWorkerLoader,\n parse: parseBasis\n};\n"],"mappings":";;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAmD,SAAAG,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAK5C,IAAMY,iBAAiE,GAAG;EAC/EC,IAAI,EAAE,OAAO;EACbC,EAAE,EAAE,OAAO;EACXC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEC,gBAAO;EAChBC,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;EAC7BC,SAAS,EAAE,CAAC,0BAA0B,EAAE,YAAY,CAAC;EACrDC,KAAK,EAAE,CAAC,IAAI,CAAC;EACbC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE;IACPC,KAAK,EAAE;MACLC,MAAM,EAAE,MAAM;MACdC,WAAW,EAAE,OAAO;MACpBC,eAAe,EAAE,MAAM;MACvBZ,MAAM,EAAE;IACV;EACF;AACF,CAAC;AAACa,OAAA,CAAAhB,iBAAA,GAAAA,iBAAA;AAKK,IAAMiB,WAAqE,GAAA9B,aAAA,CAAAA,aAAA,KAC7Ea,iBAAiB;EACpBkB,KAAK,EAAEC;AAAU,EAClB;AAACH,OAAA,CAAAC,WAAA,GAAAA,WAAA"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ var moduleExports = require('./index');
4
+ globalThis.loaders = globalThis.loaders || {};
5
+ module.exports = Object.assign(globalThis.loaders, moduleExports);
6
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports._TypecheckCompressedTextureWorkerLoader = exports._TypecheckCompressedTextureLoader = exports.CompressedTextureWorkerLoader = exports.CompressedTextureLoader = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _version = require("./lib/utils/version");
12
+ var _parseCompressedTexture = require("./lib/parsers/parse-compressed-texture");
13
+ var _parseBasis = _interopRequireDefault(require("./lib/parsers/parse-basis"));
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
+ var DEFAULT_TEXTURE_LOADER_OPTIONS = {
17
+ 'compressed-texture': {
18
+ libraryPath: 'libs/',
19
+ useBasis: false
20
+ }
21
+ };
22
+ var CompressedTextureWorkerLoader = {
23
+ name: 'Texture Containers',
24
+ id: 'compressed-texture',
25
+ module: 'textures',
26
+ version: _version.VERSION,
27
+ worker: true,
28
+ extensions: ['ktx', 'ktx2', 'dds', 'pvr'],
29
+ mimeTypes: ['image/ktx2', 'image/ktx', 'image/vnd-ms.dds', 'image/x-dds', 'application/octet-stream'],
30
+ binary: true,
31
+ options: DEFAULT_TEXTURE_LOADER_OPTIONS
32
+ };
33
+ exports.CompressedTextureWorkerLoader = CompressedTextureWorkerLoader;
34
+ var CompressedTextureLoader = _objectSpread(_objectSpread({}, CompressedTextureWorkerLoader), {}, {
35
+ parse: function () {
36
+ var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
37
+ return _regenerator.default.wrap(function _callee$(_context) {
38
+ while (1) switch (_context.prev = _context.next) {
39
+ case 0:
40
+ if (!options['compressed-texture'].useBasis) {
41
+ _context.next = 5;
42
+ break;
43
+ }
44
+ options.basis = _objectSpread(_objectSpread({
45
+ format: {
46
+ alpha: 'BC3',
47
+ noAlpha: 'BC1'
48
+ }
49
+ }, options.basis), {}, {
50
+ containerFormat: 'ktx2',
51
+ module: 'encoder'
52
+ });
53
+ _context.next = 4;
54
+ return (0, _parseBasis.default)(arrayBuffer, options);
55
+ case 4:
56
+ return _context.abrupt("return", _context.sent[0]);
57
+ case 5:
58
+ return _context.abrupt("return", (0, _parseCompressedTexture.parseCompressedTexture)(arrayBuffer));
59
+ case 6:
60
+ case "end":
61
+ return _context.stop();
62
+ }
63
+ }, _callee);
64
+ }));
65
+ function parse(_x, _x2) {
66
+ return _parse.apply(this, arguments);
67
+ }
68
+ return parse;
69
+ }()
70
+ });
71
+ exports.CompressedTextureLoader = CompressedTextureLoader;
72
+ var _TypecheckCompressedTextureWorkerLoader = CompressedTextureWorkerLoader;
73
+ exports._TypecheckCompressedTextureWorkerLoader = _TypecheckCompressedTextureWorkerLoader;
74
+ var _TypecheckCompressedTextureLoader = CompressedTextureLoader;
75
+ exports._TypecheckCompressedTextureLoader = _TypecheckCompressedTextureLoader;
76
+ //# sourceMappingURL=compressed-texture-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compressed-texture-loader.js","names":["_version","require","_parseCompressedTexture","_parseBasis","_interopRequireDefault","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","DEFAULT_TEXTURE_LOADER_OPTIONS","libraryPath","useBasis","CompressedTextureWorkerLoader","name","id","module","version","VERSION","worker","extensions","mimeTypes","binary","options","exports","CompressedTextureLoader","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","basis","format","alpha","noAlpha","containerFormat","parseBasis","abrupt","sent","parseCompressedTexture","stop","_x","_x2","_TypecheckCompressedTextureWorkerLoader","_TypecheckCompressedTextureLoader"],"sources":["../../src/compressed-texture-loader.ts"],"sourcesContent":["import type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport {parseCompressedTexture} from './lib/parsers/parse-compressed-texture';\nimport parseBasis from './lib/parsers/parse-basis';\n\nexport type TextureLoaderOptions = {\n 'compressed-texture'?: {\n libraryPath?: string;\n useBasis?: boolean;\n };\n};\n\nconst DEFAULT_TEXTURE_LOADER_OPTIONS = {\n 'compressed-texture': {\n libraryPath: 'libs/',\n useBasis: false\n }\n};\n\n/**\n * Worker Loader for KTX, DDS, and PVR texture container formats\n */\nexport const CompressedTextureWorkerLoader = {\n name: 'Texture Containers',\n id: 'compressed-texture',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: [\n 'ktx',\n 'ktx2',\n 'dds', // WEBGL_compressed_texture_s3tc, WEBGL_compressed_texture_atc\n 'pvr' // WEBGL_compressed_texture_pvrtc\n ],\n mimeTypes: [\n 'image/ktx2',\n 'image/ktx',\n 'image/vnd-ms.dds',\n 'image/x-dds',\n 'application/octet-stream'\n ],\n binary: true,\n options: DEFAULT_TEXTURE_LOADER_OPTIONS\n};\n\n/**\n * Loader for KTX, DDS, and PVR texture container formats\n */\nexport const CompressedTextureLoader = {\n ...CompressedTextureWorkerLoader,\n parse: async (arrayBuffer, options) => {\n if (options['compressed-texture'].useBasis) {\n options.basis = {\n format: {\n alpha: 'BC3',\n noAlpha: 'BC1'\n },\n ...options.basis,\n containerFormat: 'ktx2',\n module: 'encoder'\n };\n return (await parseBasis(arrayBuffer, options))[0];\n }\n return parseCompressedTexture(arrayBuffer);\n }\n};\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckCompressedTextureWorkerLoader: Loader = CompressedTextureWorkerLoader;\nexport const _TypecheckCompressedTextureLoader: LoaderWithParser = CompressedTextureLoader;\n"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CompressedTextureWriter = void 0;
7
+ var _version = require("./lib/utils/version");
8
+ var _encodeTexture = require("./lib/encoders/encode-texture");
9
+ var CompressedTextureWriter = {
10
+ name: 'DDS Texture Container',
11
+ id: 'dds',
12
+ module: 'textures',
13
+ version: _version.VERSION,
14
+ extensions: ['dds'],
15
+ options: {
16
+ texture: {
17
+ format: 'auto',
18
+ compression: 'auto',
19
+ quality: 'auto',
20
+ mipmap: false,
21
+ flipY: false,
22
+ toolFlags: ''
23
+ }
24
+ },
25
+ encodeURLtoURL: _encodeTexture.encodeImageURLToCompressedTextureURL
26
+ };
27
+ exports.CompressedTextureWriter = CompressedTextureWriter;
28
+ //# sourceMappingURL=compressed-texture-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compressed-texture-writer.js","names":["_version","require","_encodeTexture","CompressedTextureWriter","name","id","module","version","VERSION","extensions","options","texture","format","compression","quality","mipmap","flipY","toolFlags","encodeURLtoURL","encodeImageURLToCompressedTextureURL","exports"],"sources":["../../src/compressed-texture-writer.ts"],"sourcesContent":["import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport {encodeImageURLToCompressedTextureURL} from './lib/encoders/encode-texture';\n\nexport type CompressedTextureWriterOptions = WriterOptions & {\n cwd?: string;\n texture?: {\n format: string;\n compression: string;\n quality: string;\n mipmap: boolean;\n flipY: boolean;\n toolFlags: string;\n };\n};\n\n/**\n * DDS Texture Container Exporter\n */\nexport const CompressedTextureWriter: Writer<unknown, unknown, CompressedTextureWriterOptions> = {\n name: 'DDS Texture Container',\n id: 'dds',\n module: 'textures',\n version: VERSION,\n\n extensions: ['dds'],\n\n options: {\n texture: {\n format: 'auto',\n compression: 'auto',\n quality: 'auto',\n mipmap: false,\n flipY: false,\n toolFlags: ''\n }\n },\n\n encodeURLtoURL: encodeImageURLToCompressedTextureURL\n};\n\n// TYPE TESTS - TODO find a better way than exporting junk\n// export const _TypecheckCompressedTextureWriter: typeof CompressedTextureWriter & {\n// encodeURLtoURL: (\n// inputUrl: string,\n// outputUrl: string,\n// options?: CompressedTextureWriterOptions\n// ) => Promise<string>;\n// } = CompressedTextureWriter;\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAiBO,IAAME,uBAAiF,GAAG;EAC/FC,IAAI,EAAE,uBAAuB;EAC7BC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEC,gBAAO;EAEhBC,UAAU,EAAE,CAAC,KAAK,CAAC;EAEnBC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,MAAM,EAAE,MAAM;MACdC,WAAW,EAAE,MAAM;MACnBC,OAAO,EAAE,MAAM;MACfC,MAAM,EAAE,KAAK;MACbC,KAAK,EAAE,KAAK;MACZC,SAAS,EAAE;IACb;EACF,CAAC;EAEDC,cAAc,EAAEC;AAClB,CAAC;AAACC,OAAA,CAAAjB,uBAAA,GAAAA,uBAAA"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports._TypecheckCrunchLoader = exports.CrunchLoader = void 0;
7
+ var _version = require("./lib/utils/version");
8
+ var CrunchLoader = {
9
+ id: 'crunch',
10
+ name: 'Crunch',
11
+ module: 'textures',
12
+ version: _version.VERSION,
13
+ worker: true,
14
+ extensions: ['crn'],
15
+ mimeTypes: ['image/crn', 'image/x-crn', 'application/octet-stream'],
16
+ binary: true,
17
+ options: {
18
+ crunch: {
19
+ libraryPath: 'libs/'
20
+ }
21
+ }
22
+ };
23
+ exports.CrunchLoader = CrunchLoader;
24
+ var _TypecheckCrunchLoader = CrunchLoader;
25
+ exports._TypecheckCrunchLoader = _TypecheckCrunchLoader;
26
+ //# sourceMappingURL=crunch-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crunch-loader.js","names":["_version","require","CrunchLoader","id","name","module","version","VERSION","worker","extensions","mimeTypes","binary","options","crunch","libraryPath","exports","_TypecheckCrunchLoader"],"sources":["../../src/crunch-loader.ts"],"sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\n\n/**\n * Worker loader for the Crunch compressed texture container format\n */\nexport const CrunchLoader = {\n id: 'crunch',\n name: 'Crunch',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: ['crn'],\n mimeTypes: ['image/crn', 'image/x-crn', 'application/octet-stream'],\n binary: true,\n options: {\n crunch: {\n libraryPath: 'libs/'\n }\n }\n};\n\n// We avoid bundling crunch - rare format, only offer worker loader\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckCrunchLoader: Loader = CrunchLoader;\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAKO,IAAMC,YAAY,GAAG;EAC1BC,EAAE,EAAE,QAAQ;EACZC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEC,gBAAO;EAChBC,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,0BAA0B,CAAC;EACnEC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE;IACPC,MAAM,EAAE;MACNC,WAAW,EAAE;IACf;EACF;AACF,CAAC;AAACC,OAAA,CAAAb,YAAA,GAAAA,YAAA;AAKK,IAAMc,sBAA8B,GAAGd,YAAY;AAACa,OAAA,CAAAC,sBAAA,GAAAA,sBAAA"}