@loaders.gl/textures 3.1.0-alpha.4 → 3.1.0-beta.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 (271) hide show
  1. package/dist/basis-loader.d.ts +50 -0
  2. package/dist/basis-loader.d.ts.map +1 -0
  3. package/dist/basis-loader.js +40 -0
  4. package/dist/basis-worker.js +675 -2
  5. package/dist/bundle.d.ts +2 -0
  6. package/dist/bundle.d.ts.map +1 -0
  7. package/dist/bundle.js +2107 -0
  8. package/dist/compressed-texture-loader.d.ts +63 -0
  9. package/dist/compressed-texture-loader.d.ts.map +1 -0
  10. package/dist/compressed-texture-loader.js +64 -0
  11. package/dist/compressed-texture-worker.js +1179 -2
  12. package/dist/compressed-texture-writer.d.ts +25 -0
  13. package/dist/compressed-texture-writer.d.ts.map +1 -0
  14. package/dist/compressed-texture-writer.js +28 -0
  15. package/dist/crunch-loader.d.ts +21 -0
  16. package/dist/crunch-loader.d.ts.map +1 -0
  17. package/dist/crunch-loader.js +25 -0
  18. package/dist/crunch-worker.js +486 -2
  19. package/dist/es5/basis-loader.js +5 -13
  20. package/dist/es5/basis-loader.js.map +1 -1
  21. package/dist/es5/bundle.js +1 -1
  22. package/dist/es5/bundle.js.map +1 -1
  23. package/dist/es5/compressed-texture-loader.js +20 -59
  24. package/dist/es5/compressed-texture-loader.js.map +1 -1
  25. package/dist/es5/compressed-texture-writer.js +2 -2
  26. package/dist/es5/compressed-texture-writer.js.map +1 -1
  27. package/dist/es5/crunch-loader.js +2 -2
  28. package/dist/es5/crunch-loader.js.map +1 -1
  29. package/dist/es5/index.js +26 -18
  30. package/dist/es5/index.js.map +1 -1
  31. package/dist/es5/ktx2-basis-universal-texture-writer.js +29 -0
  32. package/dist/es5/ktx2-basis-universal-texture-writer.js.map +1 -0
  33. package/dist/es5/lib/encoders/encode-ktx.js +1 -1
  34. package/dist/es5/lib/encoders/encode-ktx.js.map +1 -1
  35. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +43 -0
  36. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  37. package/dist/es5/lib/encoders/encode-texture.js +13 -41
  38. package/dist/es5/lib/encoders/encode-texture.js.map +1 -1
  39. package/dist/es5/lib/{gl-constants.js → gl-extensions.js} +4 -4
  40. package/dist/es5/lib/gl-extensions.js.map +1 -0
  41. package/dist/es5/lib/parsers/basis-module-loader.js +51 -190
  42. package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
  43. package/dist/es5/lib/parsers/crunch-module-loader.js +15 -71
  44. package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
  45. package/dist/es5/lib/parsers/parse-basis.js +86 -138
  46. package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
  47. package/dist/es5/lib/parsers/parse-crunch.js +59 -80
  48. package/dist/es5/lib/parsers/parse-crunch.js.map +1 -1
  49. package/dist/es5/lib/parsers/parse-dds.js +39 -39
  50. package/dist/es5/lib/parsers/parse-dds.js.map +1 -1
  51. package/dist/es5/lib/parsers/parse-ktx.js +14 -16
  52. package/dist/es5/lib/parsers/parse-ktx.js.map +1 -1
  53. package/dist/es5/lib/parsers/parse-npy.js +27 -28
  54. package/dist/es5/lib/parsers/parse-npy.js.map +1 -1
  55. package/dist/es5/lib/parsers/parse-pvr.js +49 -49
  56. package/dist/es5/lib/parsers/parse-pvr.js.map +1 -1
  57. package/dist/es5/lib/texture-api/async-deep-map.js +27 -156
  58. package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -1
  59. package/dist/es5/lib/texture-api/deep-load.js +6 -67
  60. package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
  61. package/dist/es5/lib/texture-api/generate-url.js +4 -16
  62. package/dist/es5/lib/texture-api/generate-url.js.map +1 -1
  63. package/dist/es5/lib/texture-api/load-image-array.js +12 -76
  64. package/dist/es5/lib/texture-api/load-image-array.js.map +1 -1
  65. package/dist/es5/lib/texture-api/load-image-cube.js +27 -96
  66. package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -1
  67. package/dist/es5/lib/texture-api/load-image.js +37 -146
  68. package/dist/es5/lib/texture-api/load-image.js.map +1 -1
  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 +9 -9
  72. package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -1
  73. package/dist/es5/lib/utils/ktx-format-helper.js +68 -68
  74. package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -1
  75. package/dist/es5/lib/utils/texture-formats.js +9 -27
  76. package/dist/es5/lib/utils/texture-formats.js.map +1 -1
  77. package/dist/es5/lib/utils/version.js +1 -1
  78. package/dist/es5/lib/utils/version.js.map +1 -1
  79. package/dist/es5/libs/README.md +2 -2
  80. package/dist/es5/libs/basis_encoder.js +1 -1
  81. package/dist/es5/libs/basis_transcoder.js +1 -1
  82. package/dist/es5/libs/crunch.js +1 -0
  83. package/dist/es5/npy-loader.js +7 -42
  84. package/dist/es5/npy-loader.js.map +1 -1
  85. package/dist/es5/workers/crunch-worker.js +2 -11
  86. package/dist/es5/workers/crunch-worker.js.map +1 -1
  87. package/dist/esm/index.js +2 -1
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/esm/ktx2-basis-universal-texture-writer.js +18 -0
  90. package/dist/esm/ktx2-basis-universal-texture-writer.js.map +1 -0
  91. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +35 -0
  92. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  93. package/dist/esm/lib/encoders/encode-texture.js +1 -1
  94. package/dist/esm/lib/encoders/encode-texture.js.map +1 -1
  95. package/dist/esm/lib/{gl-constants.js → gl-extensions.js} +2 -2
  96. package/dist/esm/lib/gl-extensions.js.map +1 -0
  97. package/dist/esm/lib/parsers/basis-module-loader.js +8 -3
  98. package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
  99. package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
  100. package/dist/esm/lib/parsers/parse-basis.js +8 -8
  101. package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
  102. package/dist/esm/lib/parsers/parse-crunch.js +4 -4
  103. package/dist/esm/lib/parsers/parse-crunch.js.map +1 -1
  104. package/dist/esm/lib/parsers/parse-dds.js +24 -24
  105. package/dist/esm/lib/parsers/parse-dds.js.map +1 -1
  106. package/dist/esm/lib/parsers/parse-ktx.js +2 -2
  107. package/dist/esm/lib/parsers/parse-ktx.js.map +1 -1
  108. package/dist/esm/lib/parsers/parse-npy.js +4 -2
  109. package/dist/esm/lib/parsers/parse-npy.js.map +1 -1
  110. package/dist/esm/lib/parsers/parse-pvr.js +28 -28
  111. package/dist/esm/lib/parsers/parse-pvr.js.map +1 -1
  112. package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -1
  113. package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
  114. package/dist/esm/lib/texture-api/generate-url.js +6 -14
  115. package/dist/esm/lib/texture-api/generate-url.js.map +1 -1
  116. package/dist/esm/lib/texture-api/load-image-array.js.map +1 -1
  117. package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -1
  118. package/dist/esm/lib/texture-api/load-image.js +2 -5
  119. package/dist/esm/lib/texture-api/load-image.js.map +1 -1
  120. package/dist/esm/lib/texture-api/texture-api-types.js +2 -0
  121. package/dist/esm/lib/texture-api/texture-api-types.js.map +1 -0
  122. package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -1
  123. package/dist/esm/lib/utils/ktx-format-helper.js +67 -67
  124. package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -1
  125. package/dist/esm/lib/utils/texture-formats.js +1 -1
  126. package/dist/esm/lib/utils/texture-formats.js.map +1 -1
  127. package/dist/esm/lib/utils/version.js +1 -1
  128. package/dist/esm/lib/utils/version.js.map +1 -1
  129. package/dist/esm/libs/README.md +2 -2
  130. package/dist/esm/libs/basis_encoder.js +1 -1
  131. package/dist/esm/libs/basis_transcoder.js +1 -1
  132. package/dist/esm/libs/crunch.js +1 -0
  133. package/dist/esm/npy-loader.js.map +1 -1
  134. package/dist/index.d.ts +16 -0
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/index.js +37 -0
  137. package/dist/ktx2-basis-universal-texture-writer.d.ts +22 -0
  138. package/dist/ktx2-basis-universal-texture-writer.d.ts.map +1 -0
  139. package/dist/ktx2-basis-universal-texture-writer.js +25 -0
  140. package/dist/lib/encoders/encode-ktx.d.ts +2 -0
  141. package/dist/lib/encoders/encode-ktx.d.ts.map +1 -0
  142. package/dist/lib/encoders/encode-ktx.js +10 -0
  143. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts +10 -0
  144. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -0
  145. package/dist/lib/encoders/encode-ktx2-basis-texture.js +41 -0
  146. package/dist/lib/encoders/encode-texture.d.ts +2 -0
  147. package/dist/lib/encoders/encode-texture.d.ts.map +1 -0
  148. package/dist/lib/encoders/encode-texture.js +30 -0
  149. package/dist/lib/gl-extensions.d.ts +61 -0
  150. package/dist/lib/gl-extensions.d.ts.map +1 -0
  151. package/dist/lib/gl-extensions.js +72 -0
  152. package/dist/lib/parsers/basis-module-loader.d.ts +13 -0
  153. package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -0
  154. package/dist/lib/parsers/basis-module-loader.js +114 -0
  155. package/dist/lib/parsers/crunch-module-loader.d.ts +7 -0
  156. package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -0
  157. package/dist/lib/parsers/crunch-module-loader.js +35 -0
  158. package/dist/lib/parsers/parse-basis.d.ts +30 -0
  159. package/dist/lib/parsers/parse-basis.d.ts.map +1 -0
  160. package/dist/lib/parsers/parse-basis.js +245 -0
  161. package/dist/lib/parsers/parse-compressed-texture.d.ts +8 -0
  162. package/dist/lib/parsers/parse-compressed-texture.d.ts.map +1 -0
  163. package/dist/lib/parsers/parse-compressed-texture.js +26 -0
  164. package/dist/lib/parsers/parse-crunch.d.ts +9 -0
  165. package/dist/lib/parsers/parse-crunch.d.ts.map +1 -0
  166. package/dist/lib/parsers/parse-crunch.js +105 -0
  167. package/dist/lib/parsers/parse-dds.d.ts +28 -0
  168. package/dist/lib/parsers/parse-dds.d.ts.map +1 -0
  169. package/dist/lib/parsers/parse-dds.js +108 -0
  170. package/dist/lib/parsers/parse-ktx.d.ts +3 -0
  171. package/dist/lib/parsers/parse-ktx.d.ts.map +1 -0
  172. package/dist/lib/parsers/parse-ktx.js +46 -0
  173. package/dist/lib/parsers/parse-npy.d.ts +10 -0
  174. package/dist/lib/parsers/parse-npy.d.ts.map +1 -0
  175. package/dist/lib/parsers/parse-npy.js +85 -0
  176. package/dist/lib/parsers/parse-pvr.d.ts +15 -0
  177. package/dist/lib/parsers/parse-pvr.d.ts.map +1 -0
  178. package/dist/lib/parsers/parse-pvr.js +250 -0
  179. package/dist/lib/texture-api/async-deep-map.d.ts +5 -0
  180. package/dist/lib/texture-api/async-deep-map.d.ts.map +1 -0
  181. package/dist/lib/texture-api/async-deep-map.js +41 -0
  182. package/dist/lib/texture-api/deep-load.d.ts +5 -0
  183. package/dist/lib/texture-api/deep-load.d.ts.map +1 -0
  184. package/dist/lib/texture-api/deep-load.js +16 -0
  185. package/dist/lib/texture-api/generate-url.d.ts +3 -0
  186. package/dist/lib/texture-api/generate-url.d.ts.map +1 -0
  187. package/dist/lib/texture-api/generate-url.js +17 -0
  188. package/dist/lib/texture-api/load-image-array.d.ts +4 -0
  189. package/dist/lib/texture-api/load-image-array.d.ts.map +1 -0
  190. package/dist/lib/texture-api/load-image-array.js +21 -0
  191. package/dist/lib/texture-api/load-image-cube.d.ts +12 -0
  192. package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -0
  193. package/dist/lib/texture-api/load-image-cube.js +47 -0
  194. package/dist/lib/texture-api/load-image.d.ts +8 -0
  195. package/dist/lib/texture-api/load-image.d.ts.map +1 -0
  196. package/dist/lib/texture-api/load-image.js +43 -0
  197. package/dist/lib/texture-api/texture-api-types.d.ts +10 -0
  198. package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -0
  199. package/dist/lib/texture-api/texture-api-types.js +3 -0
  200. package/dist/lib/utils/extract-mipmap-images.d.ts +13 -0
  201. package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -0
  202. package/dist/lib/utils/extract-mipmap-images.js +50 -0
  203. package/dist/lib/utils/ktx-format-helper.d.ts +9 -0
  204. package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -0
  205. package/dist/lib/utils/ktx-format-helper.js +125 -0
  206. package/dist/lib/utils/texture-formats.d.ts +8 -0
  207. package/dist/lib/utils/texture-formats.d.ts.map +1 -0
  208. package/dist/lib/utils/texture-formats.js +51 -0
  209. package/dist/lib/utils/version.d.ts +2 -0
  210. package/dist/lib/utils/version.d.ts.map +1 -0
  211. package/dist/lib/utils/version.js +8 -0
  212. package/dist/libs/README.md +2 -2
  213. package/dist/libs/basis_encoder.js +1 -1
  214. package/dist/libs/basis_transcoder.js +1 -1
  215. package/dist/libs/crunch.js +1 -0
  216. package/dist/npy-loader.d.ts +45 -0
  217. package/dist/npy-loader.d.ts.map +1 -0
  218. package/dist/npy-loader.js +34 -0
  219. package/dist/npy-worker.js +240 -2
  220. package/dist/types.d.ts +21 -0
  221. package/dist/types.d.ts.map +1 -0
  222. package/dist/types.js +2 -0
  223. package/dist/workers/basis-worker.d.ts +2 -0
  224. package/dist/workers/basis-worker.d.ts.map +1 -0
  225. package/dist/workers/basis-worker.js +5 -0
  226. package/dist/workers/compressed-texture-worker.d.ts +2 -0
  227. package/dist/workers/compressed-texture-worker.d.ts.map +1 -0
  228. package/dist/workers/compressed-texture-worker.js +5 -0
  229. package/dist/workers/crunch-worker.d.ts +21 -0
  230. package/dist/workers/crunch-worker.d.ts.map +1 -0
  231. package/dist/workers/crunch-worker.js +14 -0
  232. package/dist/workers/npy-worker.d.ts +2 -0
  233. package/dist/workers/npy-worker.d.ts.map +1 -0
  234. package/dist/workers/npy-worker.js +5 -0
  235. package/package.json +11 -11
  236. package/src/index.ts +2 -1
  237. package/src/ktx2-basis-universal-texture-writer.ts +27 -0
  238. package/src/lib/encoders/encode-ktx2-basis-texture.ts +44 -0
  239. package/src/lib/{gl-constants.ts → gl-extensions.ts} +1 -1
  240. package/src/lib/parsers/basis-module-loader.ts +12 -4
  241. package/src/lib/parsers/crunch-module-loader.ts +1 -0
  242. package/src/lib/parsers/parse-basis.js +32 -8
  243. package/src/lib/parsers/parse-crunch.ts +4 -4
  244. package/src/lib/parsers/parse-dds.ts +29 -26
  245. package/src/lib/parsers/parse-ktx.js +3 -6
  246. package/src/lib/parsers/parse-ktx.ts +47 -0
  247. package/src/lib/parsers/parse-npy.js +3 -17
  248. package/src/lib/parsers/parse-npy.ts +98 -0
  249. package/src/lib/parsers/parse-pvr.ts +90 -48
  250. package/src/lib/texture-api/async-deep-map.ts +15 -8
  251. package/src/lib/texture-api/deep-load.ts +7 -3
  252. package/src/lib/texture-api/generate-url.ts +10 -8
  253. package/src/lib/texture-api/load-image-array.ts +8 -2
  254. package/src/lib/texture-api/load-image-cube.ts +18 -4
  255. package/src/lib/texture-api/load-image.ts +15 -5
  256. package/src/lib/texture-api/texture-api-types.ts +12 -0
  257. package/src/lib/utils/extract-mipmap-images.ts +16 -3
  258. package/src/lib/utils/ktx-format-helper.ts +71 -71
  259. package/src/libs/README.md +2 -2
  260. package/src/libs/basis_encoder.js +1 -1
  261. package/src/libs/basis_transcoder.js +1 -1
  262. package/src/libs/crunch.js +1 -0
  263. package/src/npy-loader.ts +2 -2
  264. package/dist/basis-worker.js.map +0 -1
  265. package/dist/compressed-texture-worker.js.map +0 -1
  266. package/dist/crunch-worker.js.map +0 -1
  267. package/dist/dist.min.js +0 -2
  268. package/dist/dist.min.js.map +0 -1
  269. package/dist/es5/lib/gl-constants.js.map +0 -1
  270. package/dist/esm/lib/gl-constants.js.map +0 -1
  271. package/dist/npy-worker.js.map +0 -1
@@ -0,0 +1,25 @@
1
+ import type { Writer } from '@loaders.gl/loader-utils';
2
+ import { encodeImageURLToCompressedTextureURL } from './lib/encoders/encode-texture';
3
+ /**
4
+ * DDS Texture Container Exporter
5
+ */
6
+ export declare const CompressedTextureWriter: {
7
+ name: string;
8
+ id: string;
9
+ module: string;
10
+ version: any;
11
+ extensions: string[];
12
+ options: {
13
+ texture: {
14
+ format: string;
15
+ compression: string;
16
+ quality: string;
17
+ mipmap: boolean;
18
+ flipY: boolean;
19
+ toolFlags: string;
20
+ };
21
+ };
22
+ encodeURLtoURL: typeof encodeImageURLToCompressedTextureURL;
23
+ };
24
+ export declare const _TypecheckCompressedTextureWriter: Writer;
25
+ //# sourceMappingURL=compressed-texture-writer.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._TypecheckCompressedTextureWriter = exports.CompressedTextureWriter = void 0;
4
+ const version_1 = require("./lib/utils/version");
5
+ const encode_texture_1 = require("./lib/encoders/encode-texture");
6
+ /**
7
+ * DDS Texture Container Exporter
8
+ */
9
+ exports.CompressedTextureWriter = {
10
+ name: 'DDS Texture Container',
11
+ id: 'dds',
12
+ module: 'textures',
13
+ version: version_1.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: encode_texture_1.encodeImageURLToCompressedTextureURL
26
+ };
27
+ // TYPE TESTS - TODO find a better way than exporting junk
28
+ exports._TypecheckCompressedTextureWriter = exports.CompressedTextureWriter;
@@ -0,0 +1,21 @@
1
+ import type { Loader } from '@loaders.gl/loader-utils';
2
+ /**
3
+ * Worker loader for the Crunch compressed texture container format
4
+ */
5
+ export declare const CrunchLoader: {
6
+ id: string;
7
+ name: string;
8
+ module: string;
9
+ version: any;
10
+ worker: boolean;
11
+ extensions: string[];
12
+ mimeTypes: string[];
13
+ binary: boolean;
14
+ options: {
15
+ crunch: {
16
+ libraryPath: string;
17
+ };
18
+ };
19
+ };
20
+ export declare const _TypecheckCrunchLoader: Loader;
21
+ //# sourceMappingURL=crunch-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crunch-loader.d.ts","sourceRoot":"","sources":["../src/crunch-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAGrD;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAcxB,CAAC;AAKF,eAAO,MAAM,sBAAsB,EAAE,MAAqB,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._TypecheckCrunchLoader = exports.CrunchLoader = void 0;
4
+ const version_1 = require("./lib/utils/version");
5
+ /**
6
+ * Worker loader for the Crunch compressed texture container format
7
+ */
8
+ exports.CrunchLoader = {
9
+ id: 'crunch',
10
+ name: 'Crunch',
11
+ module: 'textures',
12
+ version: version_1.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
+ // We avoid bundling crunch - rare format, only offer worker loader
24
+ // TYPE TESTS - TODO find a better way than exporting junk
25
+ exports._TypecheckCrunchLoader = exports.CrunchLoader;
@@ -1,2 +1,486 @@
1
- !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=13)}([function(e,t,r){e.exports=r(10)},function(e,t){function r(e,t,r,n,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,o)}e.exports=function(e){return function(){var t=this,n=arguments;return new Promise((function(o,i){var a=e.apply(t,n);function u(e){r(a,o,i,u,c,"next",e)}function c(e){r(a,o,i,u,c,"throw",e)}u(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){"use strict";(function(e,n){r.d(t,"a",(function(){return a})),r.d(t,"b",(function(){return u})),r.d(t,"c",(function(){return c}));var o=r(5),i={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:void 0!==e&&e,document:"undefined"!=typeof document&&document},a=i.global||i.self||i.window||{},u="object"!==(void 0===n?"undefined":r.n(o)()(n))||"[object process]"!==String(n)||n.browser,c="function"==typeof importScripts,s=("undefined"!=typeof window&&window.orientation,void 0!==n&&n.version&&/v([0-9]*)/.exec(n.version));s&&parseFloat(s[1])}).call(this,r(11),r(12))},function(e,t){},function(e,t){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function r(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=r=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=r=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),r(t)}e.exports=r,e.exports.default=e.exports,e.exports.__esModule=!0},,function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}e.exports=function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e},e.exports.default=e.exports,e.exports.__esModule=!0},,function(e,t,r){var n=function(e){"use strict";var t=Object.prototype,r=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function u(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,r){return e[t]=r}}function c(e,t,r,n){var o=t&&t.prototype instanceof l?t:l,i=Object.create(o.prototype),a=new _(n||[]);return i._invoke=function(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return E()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var u=w(a,r);if(u){if(u===f)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=s(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(e,r,a),i}function s(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function l(){}function p(){}function h(){}var d={};d[o]=function(){return this};var y=Object.getPrototypeOf,v=y&&y(y(j([])));v&&v!==t&&r.call(v,o)&&(d=v);var m=h.prototype=l.prototype=Object.create(d);function g(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var n;this._invoke=function(o,i){function a(){return new t((function(n,a){!function n(o,i,a,u){var c=s(e[o],e,i);if("throw"!==c.type){var f=c.arg,l=f.value;return l&&"object"==typeof l&&r.call(l,"__await")?t.resolve(l.__await).then((function(e){n("next",e,a,u)}),(function(e){n("throw",e,a,u)})):t.resolve(l).then((function(e){f.value=e,a(f)}),(function(e){return n("throw",e,a,u)}))}u(c.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function w(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method))return f;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var n=s(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,f;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function j(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:E}}function E(){return{value:void 0,done:!0}}return p.prototype=m.constructor=h,h.constructor=p,p.displayName=u(h,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,h):(e.__proto__=h,u(e,a,"GeneratorFunction")),e.prototype=Object.create(m),e},e.awrap=function(e){return{__await:e}},g(b.prototype),b.prototype[i]=function(){return this},e.AsyncIterator=b,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new b(c(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},g(m),u(m,a,"Generator"),m[o]=function(){return this},m.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=j,_.prototype={constructor:_,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(O),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),O(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:j(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},e}(e.exports);try{regeneratorRuntime=n}catch(e){Function("r","regeneratorRuntime = r")(n)}},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t){var r,n,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function u(e){if(r===setTimeout)return setTimeout(e,0);if((r===i||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:i}catch(e){r=i}try{n="function"==typeof clearTimeout?clearTimeout:a}catch(e){n=a}}();var c,s=[],f=!1,l=-1;function p(){f&&c&&(f=!1,c.length?s=c.concat(s):l=-1,s.length&&h())}function h(){if(!f){var e=u(p);f=!0;for(var t=s.length;t;){for(c=s,s=[];++l<t;)c&&c[l].run();l=-1,t=s.length}c=null,f=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===a||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function d(e,t){this.fun=e,this.array=t}function y(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];s.push(new d(e,t)),1!==s.length||f||u(h)},d.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=y,o.addListener=y,o.once=y,o.off=y,o.removeListener=y,o.removeAllListeners=y,o.emit=y,o.prependListener=y,o.prependOnceListener=y,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t,r){"use strict";r.r(t),r.d(t,"CrunchLoaderWithParser",(function(){return ie}));var n=r(4),o=r.n(n),i=r(1),a=r.n(i),u=r(0),c=r.n(u),s=r(7),f=r.n(s),l=r(8),p=r.n(l),h=r(5),d=r.n(h);function y(e){return!!e&&(e instanceof ArrayBuffer||("undefined"!=typeof MessagePort&&e instanceof MessagePort||("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)))}var v=new Map,m=function(){function e(){f()(this,e)}return p()(e,null,[{key:"onmessage",set:function(e){self.onmessage=function(t){if(g(t)){var r=t.data,n=r.type,o=r.payload;e(n,o)}}}},{key:"addEventListener",value:function(e){var t=v.get(e);t||(t=function(t){if(g(t)){var r=t.data,n=r.type,o=r.payload;e(n,o)}}),self.addEventListener("message",t)}},{key:"removeEventListener",value:function(e){var t=v.get(e);v.delete(e),self.removeEventListener("message",t)}},{key:"postMessage",value:function(e,t){if(self){var r={source:"loaders.gl",type:e,payload:t},n=function e(t){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2?arguments[2]:void 0,o=n||new Set;if(t){if(y(t))o.add(t);else if(y(t.buffer))o.add(t.buffer);else if(ArrayBuffer.isView(t));else if(r&&"object"===d()(t))for(var i in t)e(t[i],r,o)}else;return void 0===n?Array.from(o):[]}(t);self.postMessage(r,n)}}}]),e}();function g(e){var t=e.type,r=e.data;return"message"===t&&r&&"string"==typeof r.source&&r.source.startsWith("loaders.gl")}function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function w(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?b(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):b(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var x=0;function O(e,t){return new Promise((function(r,n){var o=x++;m.addEventListener((function e(t,i){if(i.id===o)switch(t){case"done":m.removeEventListener(e),r(i.result);break;case"error":m.removeEventListener(e),n(i.error)}}));var i={id:o,input:e,options:t};m.postMessage("process",i)}))}function _(e){return j.apply(this,arguments)}function j(){return(j=a()(c.a.mark((function e(t){var r,n,o,i,a,u,s;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.loader,n=t.arrayBuffer,o=t.options,i=t.context,!r.parseSync&&!r.parse){e.next=6;break}a=n,u=r.parseSync||r.parse,e.next=13;break;case 6:if(!r.parseTextSync){e.next=12;break}s=new TextDecoder,a=s.decode(n),u=r.parseTextSync,e.next=13;break;case 12:throw new Error("Could not load data with ".concat(r.name," loader"));case 13:return o=w(w({},o),{},{modules:r&&r.options&&r.options.modules||{},worker:!1}),e.next=16,u(a,w({},o),i,r);case 16:return e.abrupt("return",e.sent);case 17:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var E={id:"crunch",name:"Crunch",module:"textures",version:"3.1.0-alpha.4",worker:!0,extensions:["crn"],mimeTypes:["image/crn","image/x-crn","application/octet-stream"],binary:!0,options:{crunch:{libraryPath:"libs/"}}},L=r(2),k=r(3);var P,S={};function T(e){return F.apply(this,arguments)}function F(){return(F=a()(c.a.mark((function e(t){var r,n,o=arguments;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:null,n=o.length>2&&void 0!==o[2]?o[2]:{},r&&(t=M(t,r,n)),S[t]=S[t]||A(t),e.next=6,S[t];case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function M(e,t,r){if(e.startsWith("http"))return e;var n=r.modules||{};return n[e]?n[e]:L.b?r.CDN?(function(e,t){if(!e)throw new Error(t||"loaders.gl assertion failed.")}(r.CDN.startsWith("http")),"".concat(r.CDN,"/").concat(t,"@").concat("3.1.0-alpha.4","/dist/libs/").concat(e)):L.c?"../src/libs/".concat(e):"modules/".concat(t,"/src/libs/").concat(e):"modules/".concat(t,"/dist/libs/").concat(e)}function A(e){return D.apply(this,arguments)}function D(){return(D=a()(c.a.mark((function e(t){var r,n,o;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.endsWith("wasm")){e.next=7;break}return e.next=3,fetch(t);case 3:return r=e.sent,e.next=6,r.arrayBuffer();case 6:return e.abrupt("return",e.sent);case 7:if(L.b){e.next=14;break}if(e.t0=k.requireFromFile,!e.t0){e.next=13;break}return e.next=12,k.requireFromFile(t);case 12:e.t0=e.sent;case 13:return e.abrupt("return",e.t0);case 14:if(!L.c){e.next=16;break}return e.abrupt("return",importScripts(t));case 16:return e.next=18,fetch(t);case 18:return n=e.sent,e.next=21,n.text();case 21:return o=e.sent,e.abrupt("return",C(o,t));case 23:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function C(e,t){if(!L.b)return k.requireFromString&&k.requireFromString(e,t);if(L.c)return eval.call(L.a,e),null;var r=document.createElement("script");r.id=t;try{r.appendChild(document.createTextNode(e))}catch(t){r.text=e}return document.body.appendChild(r),null}function N(e){return z.apply(this,arguments)}function z(){return(z=a()(c.a.mark((function e(t){var r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=t.modules||{}).crunch){e.next=3;break}return e.abrupt("return",r.crunch);case 3:return e.abrupt("return",B(t));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function B(e){return G.apply(this,arguments)}function G(){return(G=a()(c.a.mark((function e(t){var r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!P){e.next=2;break}return e.abrupt("return",P);case 2:return e.next=4,T("crunch.js","textures",t);case 4:return r=(r=e.sent)||globalThis.loadCrunchDecoder,P=r(),e.abrupt("return",P);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var U=33776,I=33778,W=33779;function q(e,t){if(!e)throw new Error(t||"loader assertion failed.")}function H(e,t){for(var r=new Array(t.mipMapLevels),n=t.width,o=t.height,i=0,a=0;a<t.mipMapLevels;++a){var u=Y(t,n,o,e,a),c=R(e,a,i,u);r[a]={compressed:!0,format:t.internalFormat,data:c,width:n,height:o,levelSize:u},n=Math.max(1,n>>1),o=Math.max(1,o>>1),i+=u}return r}function R(e,t,r,n){return Array.isArray(e)?e[t].levelData:new Uint8Array(e.buffer,e.byteOffset+r,n)}function Y(e,t,r,n,o){return Array.isArray(n)?e.sizeFunction(n[o]):e.sizeFunction(t,r)}function V(e,t){return(e+3>>2)*(t+3>>2)*8}function J(e,t){return(e+3>>2)*(t+3>>2)*16}var K=1,Q=2,X={};X[0]={pixelFormat:U,sizeFunction:V},X[K]={pixelFormat:I,sizeFunction:J},X[Q]={pixelFormat:W,sizeFunction:J};var Z,$=0;function ee(){return(ee=a()(c.a.mark((function e(t,r){var n,o,i,a,u,s,f,l,p,h,d,y;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,N(r);case 2:for(n=e.sent,o=t.byteLength,i=new Uint8Array(t),a=n._malloc(o),te(i,n.HEAPU8,a,o),u=n._crn_get_dxt_format(a,o),q(Boolean(X[u]),"Unsupported format"),s=n._crn_get_levels(a,o),f=n._crn_get_width(a,o),l=n._crn_get_height(a,o),p=X[u].sizeFunction,h=0,d=0;d<s;++d)h+=p(f>>d,l>>d);return $<h&&(Z&&n._free(Z),Z=n._malloc(h),$=h),n._crn_decompress(a,o,Z,h,0,s),n._free(a),y=new Uint8Array(n.HEAPU8.buffer,Z,h).slice(),e.abrupt("return",H(y,{mipMapLevels:s,width:f,height:l,sizeFunction:p,internalFormat:X[u].pixelFormat}));case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function te(e,t,r,n){var o,i=r/4,a=n%4,u=new Uint32Array(e.buffer,0,(n-a)/4),c=new Uint32Array(t.buffer);for(o=0;o<u.length;o++)c[i+o]=u[o];for(o=n-a;o<n;o++)t[r+o]=e[o]}function re(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ne(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?re(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):re(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var oe,ie=ne(ne({},E),{},{parse:function(e,t){return ee.apply(this,arguments)}});oe=ie,"undefined"!=typeof self&&(m.onmessage=function(){var e=a()(c.a.mark((function e(t,r){var n,o,i,a,u;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=t,e.next="process"===e.t0?3:16;break;case 3:return e.prev=3,n=r.input,o=r.options,i=void 0===o?{}:o,e.next=7,_({loader:oe,arrayBuffer:n,options:i,context:{parse:O}});case 7:a=e.sent,m.postMessage("done",{result:a}),e.next=15;break;case 11:e.prev=11,e.t1=e.catch(3),u=e.t1 instanceof Error?e.t1.message:"",m.postMessage("error",{error:u});case 15:return e.abrupt("break",16);case 16:case"end":return e.stop()}}),e,null,[[3,11]])})));return function(t,r){return e.apply(this,arguments)}}())}]);
2
- //# sourceMappingURL=crunch-worker.js.map
1
+ (() => {
2
+ // ../loader-utils/src/lib/env-utils/assert.ts
3
+ function assert(condition, message) {
4
+ if (!condition) {
5
+ throw new Error(message || "loader assertion failed.");
6
+ }
7
+ }
8
+
9
+ // ../worker-utils/src/lib/env-utils/version.ts
10
+ var DEFAULT_VERSION = "beta";
11
+ var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : DEFAULT_VERSION;
12
+ if (typeof __VERSION__ === "undefined") {
13
+ console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
14
+ }
15
+
16
+ // ../worker-utils/src/lib/env-utils/assert.ts
17
+ function assert2(condition, message) {
18
+ if (!condition) {
19
+ throw new Error(message || "loaders.gl assertion failed.");
20
+ }
21
+ }
22
+
23
+ // ../worker-utils/src/lib/env-utils/globals.ts
24
+ var globals = {
25
+ self: typeof self !== "undefined" && self,
26
+ window: typeof window !== "undefined" && window,
27
+ global: typeof global !== "undefined" && global,
28
+ document: typeof document !== "undefined" && document
29
+ };
30
+ var self_ = globals.self || globals.window || globals.global || {};
31
+ var window_ = globals.window || globals.self || globals.global || {};
32
+ var global_ = globals.global || globals.self || globals.window || {};
33
+ var document_ = globals.document || {};
34
+ var isBrowser = typeof process !== "object" || String(process) !== "[object process]" || process.browser;
35
+ var isWorker = typeof importScripts === "function";
36
+ var isMobile = typeof window !== "undefined" && typeof window.orientation !== "undefined";
37
+ var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
38
+ var nodeVersion = matches && parseFloat(matches[1]) || 0;
39
+
40
+ // ../worker-utils/src/lib/worker-utils/get-transfer-list.ts
41
+ function getTransferList(object, recursive = true, transfers) {
42
+ const transfersSet = transfers || new Set();
43
+ if (!object) {
44
+ } else if (isTransferable(object)) {
45
+ transfersSet.add(object);
46
+ } else if (isTransferable(object.buffer)) {
47
+ transfersSet.add(object.buffer);
48
+ } else if (ArrayBuffer.isView(object)) {
49
+ } else if (recursive && typeof object === "object") {
50
+ for (const key in object) {
51
+ getTransferList(object[key], recursive, transfersSet);
52
+ }
53
+ }
54
+ return transfers === void 0 ? Array.from(transfersSet) : [];
55
+ }
56
+ function isTransferable(object) {
57
+ if (!object) {
58
+ return false;
59
+ }
60
+ if (object instanceof ArrayBuffer) {
61
+ return true;
62
+ }
63
+ if (typeof MessagePort !== "undefined" && object instanceof MessagePort) {
64
+ return true;
65
+ }
66
+ if (typeof ImageBitmap !== "undefined" && object instanceof ImageBitmap) {
67
+ return true;
68
+ }
69
+ if (typeof OffscreenCanvas !== "undefined" && object instanceof OffscreenCanvas) {
70
+ return true;
71
+ }
72
+ return false;
73
+ }
74
+
75
+ // ../worker-utils/src/lib/worker-farm/worker-body.ts
76
+ var onMessageWrapperMap = new Map();
77
+ var WorkerBody = class {
78
+ static set onmessage(onMessage) {
79
+ self.onmessage = (message) => {
80
+ if (!isKnownMessage(message)) {
81
+ return;
82
+ }
83
+ const { type, payload } = message.data;
84
+ onMessage(type, payload);
85
+ };
86
+ }
87
+ static addEventListener(onMessage) {
88
+ let onMessageWrapper = onMessageWrapperMap.get(onMessage);
89
+ if (!onMessageWrapper) {
90
+ onMessageWrapper = (message) => {
91
+ if (!isKnownMessage(message)) {
92
+ return;
93
+ }
94
+ const { type, payload } = message.data;
95
+ onMessage(type, payload);
96
+ };
97
+ }
98
+ self.addEventListener("message", onMessageWrapper);
99
+ }
100
+ static removeEventListener(onMessage) {
101
+ const onMessageWrapper = onMessageWrapperMap.get(onMessage);
102
+ onMessageWrapperMap.delete(onMessage);
103
+ self.removeEventListener("message", onMessageWrapper);
104
+ }
105
+ static postMessage(type, payload) {
106
+ if (self) {
107
+ const data = { source: "loaders.gl", type, payload };
108
+ const transferList = getTransferList(payload);
109
+ self.postMessage(data, transferList);
110
+ }
111
+ }
112
+ };
113
+ function isKnownMessage(message) {
114
+ const { type, data } = message;
115
+ return type === "message" && data && typeof data.source === "string" && data.source.startsWith("loaders.gl");
116
+ }
117
+
118
+ // ../worker-utils/src/lib/library-utils/library-utils.ts
119
+ var LATEST = "beta";
120
+ var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
121
+ var loadLibraryPromises = {};
122
+ async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
123
+ if (moduleName) {
124
+ libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
125
+ }
126
+ loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
127
+ return await loadLibraryPromises[libraryUrl];
128
+ }
129
+ function getLibraryUrl(library, moduleName, options) {
130
+ if (library.startsWith("http")) {
131
+ return library;
132
+ }
133
+ const modules = options.modules || {};
134
+ if (modules[library]) {
135
+ return modules[library];
136
+ }
137
+ if (!isBrowser) {
138
+ return `modules/${moduleName}/dist/libs/${library}`;
139
+ }
140
+ if (options.CDN) {
141
+ assert2(options.CDN.startsWith("http"));
142
+ return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
143
+ }
144
+ if (isWorker) {
145
+ return `../src/libs/${library}`;
146
+ }
147
+ return `modules/${moduleName}/src/libs/${library}`;
148
+ }
149
+ async function loadLibraryFromFile(libraryUrl) {
150
+ if (libraryUrl.endsWith("wasm")) {
151
+ const response2 = await fetch(libraryUrl);
152
+ return await response2.arrayBuffer();
153
+ }
154
+ if (!isBrowser) {
155
+ return node.requireFromFile && await node.requireFromFile(libraryUrl);
156
+ }
157
+ if (isWorker) {
158
+ return importScripts(libraryUrl);
159
+ }
160
+ const response = await fetch(libraryUrl);
161
+ const scriptSource = await response.text();
162
+ return loadLibraryFromString(scriptSource, libraryUrl);
163
+ }
164
+ function loadLibraryFromString(scriptSource, id) {
165
+ if (!isBrowser) {
166
+ return node.requireFromString && node.requireFromString(scriptSource, id);
167
+ }
168
+ if (isWorker) {
169
+ eval.call(global_, scriptSource);
170
+ return null;
171
+ }
172
+ const script = document.createElement("script");
173
+ script.id = id;
174
+ try {
175
+ script.appendChild(document.createTextNode(scriptSource));
176
+ } catch (e) {
177
+ script.text = scriptSource;
178
+ }
179
+ document.body.appendChild(script);
180
+ return null;
181
+ }
182
+
183
+ // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
184
+ var requestId = 0;
185
+ function createLoaderWorker(loader) {
186
+ if (typeof self === "undefined") {
187
+ return;
188
+ }
189
+ WorkerBody.onmessage = async (type, payload) => {
190
+ switch (type) {
191
+ case "process":
192
+ try {
193
+ const { input, options = {} } = payload;
194
+ const result = await parseData({
195
+ loader,
196
+ arrayBuffer: input,
197
+ options,
198
+ context: {
199
+ parse: parseOnMainThread
200
+ }
201
+ });
202
+ WorkerBody.postMessage("done", { result });
203
+ } catch (error) {
204
+ const message = error instanceof Error ? error.message : "";
205
+ WorkerBody.postMessage("error", { error: message });
206
+ }
207
+ break;
208
+ default:
209
+ }
210
+ };
211
+ }
212
+ function parseOnMainThread(arrayBuffer, options) {
213
+ return new Promise((resolve, reject) => {
214
+ const id = requestId++;
215
+ const onMessage = (type, payload2) => {
216
+ if (payload2.id !== id) {
217
+ return;
218
+ }
219
+ switch (type) {
220
+ case "done":
221
+ WorkerBody.removeEventListener(onMessage);
222
+ resolve(payload2.result);
223
+ break;
224
+ case "error":
225
+ WorkerBody.removeEventListener(onMessage);
226
+ reject(payload2.error);
227
+ break;
228
+ default:
229
+ }
230
+ };
231
+ WorkerBody.addEventListener(onMessage);
232
+ const payload = { id, input: arrayBuffer, options };
233
+ WorkerBody.postMessage("process", payload);
234
+ });
235
+ }
236
+ async function parseData({ loader, arrayBuffer, options, context }) {
237
+ let data;
238
+ let parser;
239
+ if (loader.parseSync || loader.parse) {
240
+ data = arrayBuffer;
241
+ parser = loader.parseSync || loader.parse;
242
+ } else if (loader.parseTextSync) {
243
+ const textDecoder = new TextDecoder();
244
+ data = textDecoder.decode(arrayBuffer);
245
+ parser = loader.parseTextSync;
246
+ } else {
247
+ throw new Error(`Could not load data with ${loader.name} loader`);
248
+ }
249
+ options = {
250
+ ...options,
251
+ modules: loader && loader.options && loader.options.modules || {},
252
+ worker: false
253
+ };
254
+ return await parser(data, { ...options }, context, loader);
255
+ }
256
+
257
+ // src/lib/utils/version.ts
258
+ var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
259
+
260
+ // src/crunch-loader.ts
261
+ var CrunchLoader = {
262
+ id: "crunch",
263
+ name: "Crunch",
264
+ module: "textures",
265
+ version: VERSION3,
266
+ worker: true,
267
+ extensions: ["crn"],
268
+ mimeTypes: ["image/crn", "image/x-crn", "application/octet-stream"],
269
+ binary: true,
270
+ options: {
271
+ crunch: {
272
+ libraryPath: "libs/"
273
+ }
274
+ }
275
+ };
276
+
277
+ // src/lib/parsers/crunch-module-loader.ts
278
+ async function loadCrunchModule(options) {
279
+ const modules = options.modules || {};
280
+ if (modules.crunch) {
281
+ return modules.crunch;
282
+ }
283
+ return loadCrunch(options);
284
+ }
285
+ var crunchModule;
286
+ async function loadCrunch(options) {
287
+ if (crunchModule) {
288
+ return crunchModule;
289
+ }
290
+ let loadCrunchDecoder = await loadLibrary("crunch.js", "textures", options);
291
+ loadCrunchDecoder = loadCrunchDecoder || globalThis.loadCrunchDecoder;
292
+ crunchModule = loadCrunchDecoder();
293
+ return crunchModule;
294
+ }
295
+
296
+ // src/lib/gl-extensions.ts
297
+ var GL_EXTENSIONS_CONSTANTS = {
298
+ COMPRESSED_RGB_S3TC_DXT1_EXT: 33776,
299
+ COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777,
300
+ COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778,
301
+ COMPRESSED_RGBA_S3TC_DXT5_EXT: 33779,
302
+ COMPRESSED_R11_EAC: 37488,
303
+ COMPRESSED_SIGNED_R11_EAC: 37489,
304
+ COMPRESSED_RG11_EAC: 37490,
305
+ COMPRESSED_SIGNED_RG11_EAC: 37491,
306
+ COMPRESSED_RGB8_ETC2: 37492,
307
+ COMPRESSED_RGBA8_ETC2_EAC: 37493,
308
+ COMPRESSED_SRGB8_ETC2: 37494,
309
+ COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 37495,
310
+ COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37496,
311
+ COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37497,
312
+ COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840,
313
+ COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842,
314
+ COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841,
315
+ COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843,
316
+ COMPRESSED_RGB_ETC1_WEBGL: 36196,
317
+ COMPRESSED_RGB_ATC_WEBGL: 35986,
318
+ COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 35987,
319
+ COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 34798,
320
+ COMPRESSED_RGBA_ASTC_4X4_KHR: 37808,
321
+ COMPRESSED_RGBA_ASTC_5X4_KHR: 37809,
322
+ COMPRESSED_RGBA_ASTC_5X5_KHR: 37810,
323
+ COMPRESSED_RGBA_ASTC_6X5_KHR: 37811,
324
+ COMPRESSED_RGBA_ASTC_6X6_KHR: 37812,
325
+ COMPRESSED_RGBA_ASTC_8X5_KHR: 37813,
326
+ COMPRESSED_RGBA_ASTC_8X6_KHR: 37814,
327
+ COMPRESSED_RGBA_ASTC_8X8_KHR: 37815,
328
+ COMPRESSED_RGBA_ASTC_10X5_KHR: 37816,
329
+ COMPRESSED_RGBA_ASTC_10X6_KHR: 37817,
330
+ COMPRESSED_RGBA_ASTC_10X8_KHR: 37818,
331
+ COMPRESSED_RGBA_ASTC_10X10_KHR: 37819,
332
+ COMPRESSED_RGBA_ASTC_12X10_KHR: 37820,
333
+ COMPRESSED_RGBA_ASTC_12X12_KHR: 37821,
334
+ COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR: 37840,
335
+ COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR: 37841,
336
+ COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR: 37842,
337
+ COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR: 37843,
338
+ COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR: 37844,
339
+ COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR: 37845,
340
+ COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR: 37846,
341
+ COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR: 37847,
342
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR: 37848,
343
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR: 37849,
344
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR: 37850,
345
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 37851,
346
+ COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 37852,
347
+ COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 37853,
348
+ COMPRESSED_RED_RGTC1_EXT: 36283,
349
+ COMPRESSED_SIGNED_RED_RGTC1_EXT: 36284,
350
+ COMPRESSED_RED_GREEN_RGTC2_EXT: 36285,
351
+ COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 36286,
352
+ COMPRESSED_SRGB_S3TC_DXT1_EXT: 35916,
353
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 35917,
354
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 35918,
355
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 35919
356
+ };
357
+
358
+ // src/lib/utils/extract-mipmap-images.ts
359
+ function extractMipmapImages(data, options) {
360
+ const images = new Array(options.mipMapLevels);
361
+ let levelWidth = options.width;
362
+ let levelHeight = options.height;
363
+ let offset = 0;
364
+ for (let i = 0; i < options.mipMapLevels; ++i) {
365
+ const levelSize = getLevelSize(options, levelWidth, levelHeight, data, i);
366
+ const levelData = getLevelData(data, i, offset, levelSize);
367
+ images[i] = {
368
+ compressed: true,
369
+ format: options.internalFormat,
370
+ data: levelData,
371
+ width: levelWidth,
372
+ height: levelHeight,
373
+ levelSize
374
+ };
375
+ levelWidth = Math.max(1, levelWidth >> 1);
376
+ levelHeight = Math.max(1, levelHeight >> 1);
377
+ offset += levelSize;
378
+ }
379
+ return images;
380
+ }
381
+ function getLevelData(data, index, offset, levelSize) {
382
+ if (!Array.isArray(data)) {
383
+ return new Uint8Array(data.buffer, data.byteOffset + offset, levelSize);
384
+ }
385
+ return data[index].levelData;
386
+ }
387
+ function getLevelSize(options, levelWidth, levelHeight, data, index) {
388
+ if (!Array.isArray(data)) {
389
+ return options.sizeFunction(levelWidth, levelHeight);
390
+ }
391
+ return options.sizeFunction(data[index]);
392
+ }
393
+
394
+ // src/lib/parsers/parse-dds.ts
395
+ var DDS_PIXEL_FORMATS = {
396
+ DXT1: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
397
+ DXT3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
398
+ DXT5: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
399
+ "ATC ": GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,
400
+ ATCA: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
401
+ ATCI: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
402
+ };
403
+ function getDxt1LevelSize(width, height) {
404
+ return (width + 3 >> 2) * (height + 3 >> 2) * 8;
405
+ }
406
+ function getDxtXLevelSize(width, height) {
407
+ return (width + 3 >> 2) * (height + 3 >> 2) * 16;
408
+ }
409
+
410
+ // src/lib/parsers/parse-crunch.ts
411
+ var CRN_FORMAT = {
412
+ cCRNFmtInvalid: -1,
413
+ cCRNFmtDXT1: 0,
414
+ cCRNFmtDXT3: 1,
415
+ cCRNFmtDXT5: 2
416
+ };
417
+ var DXT_FORMAT_MAP = {};
418
+ DXT_FORMAT_MAP[CRN_FORMAT.cCRNFmtDXT1] = {
419
+ pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
420
+ sizeFunction: getDxt1LevelSize
421
+ };
422
+ DXT_FORMAT_MAP[CRN_FORMAT.cCRNFmtDXT3] = {
423
+ pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
424
+ sizeFunction: getDxtXLevelSize
425
+ };
426
+ DXT_FORMAT_MAP[CRN_FORMAT.cCRNFmtDXT5] = {
427
+ pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
428
+ sizeFunction: getDxtXLevelSize
429
+ };
430
+ var cachedDstSize = 0;
431
+ var dst;
432
+ async function parseCrunch(data, options) {
433
+ const crunchModule2 = await loadCrunchModule(options);
434
+ const srcSize = data.byteLength;
435
+ const bytes = new Uint8Array(data);
436
+ const src = crunchModule2._malloc(srcSize);
437
+ arrayBufferCopy(bytes, crunchModule2.HEAPU8, src, srcSize);
438
+ const format = crunchModule2._crn_get_dxt_format(src, srcSize);
439
+ assert(Boolean(DXT_FORMAT_MAP[format]), "Unsupported format");
440
+ const mipMapLevels = crunchModule2._crn_get_levels(src, srcSize);
441
+ const width = crunchModule2._crn_get_width(src, srcSize);
442
+ const height = crunchModule2._crn_get_height(src, srcSize);
443
+ const sizeFunction = DXT_FORMAT_MAP[format].sizeFunction;
444
+ let dstSize = 0;
445
+ for (let i = 0; i < mipMapLevels; ++i) {
446
+ dstSize += sizeFunction(width >> i, height >> i);
447
+ }
448
+ if (cachedDstSize < dstSize) {
449
+ if (dst) {
450
+ crunchModule2._free(dst);
451
+ }
452
+ dst = crunchModule2._malloc(dstSize);
453
+ cachedDstSize = dstSize;
454
+ }
455
+ crunchModule2._crn_decompress(src, srcSize, dst, dstSize, 0, mipMapLevels);
456
+ crunchModule2._free(src);
457
+ const image = new Uint8Array(crunchModule2.HEAPU8.buffer, dst, dstSize).slice();
458
+ return extractMipmapImages(image, {
459
+ mipMapLevels,
460
+ width,
461
+ height,
462
+ sizeFunction,
463
+ internalFormat: DXT_FORMAT_MAP[format].pixelFormat
464
+ });
465
+ }
466
+ function arrayBufferCopy(srcData, dstData, dstByteOffset, numBytes) {
467
+ let i;
468
+ const dst32Offset = dstByteOffset / 4;
469
+ const tail = numBytes % 4;
470
+ const src32 = new Uint32Array(srcData.buffer, 0, (numBytes - tail) / 4);
471
+ const dst32 = new Uint32Array(dstData.buffer);
472
+ for (i = 0; i < src32.length; i++) {
473
+ dst32[dst32Offset + i] = src32[i];
474
+ }
475
+ for (i = numBytes - tail; i < numBytes; i++) {
476
+ dstData[dstByteOffset + i] = srcData[i];
477
+ }
478
+ }
479
+
480
+ // src/workers/crunch-worker.ts
481
+ var CrunchLoaderWithParser = {
482
+ ...CrunchLoader,
483
+ parse: parseCrunch
484
+ };
485
+ createLoaderWorker(CrunchLoaderWithParser);
486
+ })();