@loaders.gl/scene 5.0.0-beta.1 → 5.0.0-beta.4

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 (541) hide show
  1. package/DRACO-README.md +15 -0
  2. package/README.md +7 -1
  3. package/THIRD-PARTY-NOTICES.md +4 -1
  4. package/dist/dist.dev.js +8894 -5137
  5. package/dist/dist.min.js +32 -24
  6. package/dist/draco/bundled.cjs +37 -0
  7. package/dist/draco/bundled.cjs.map +7 -0
  8. package/dist/draco/bundled.d.ts +6 -0
  9. package/dist/draco/bundled.d.ts.map +1 -0
  10. package/dist/draco/bundled.js +7 -0
  11. package/dist/draco/bundled.js.map +1 -0
  12. package/dist/draco/draco-format.cjs +41 -0
  13. package/dist/draco/draco-format.cjs.map +7 -0
  14. package/dist/draco/draco-format.d.ts +15 -0
  15. package/dist/draco/draco-format.d.ts.map +1 -0
  16. package/dist/draco/draco-format.js +18 -0
  17. package/dist/draco/draco-format.js.map +1 -0
  18. package/dist/draco/draco-javascript-loader-with-parser.cjs +44 -0
  19. package/dist/draco/draco-javascript-loader-with-parser.cjs.map +7 -0
  20. package/dist/draco/draco-javascript-loader-with-parser.d.ts +34 -0
  21. package/dist/draco/draco-javascript-loader-with-parser.d.ts.map +1 -0
  22. package/dist/draco/draco-javascript-loader-with-parser.js +14 -0
  23. package/dist/draco/draco-javascript-loader-with-parser.js.map +1 -0
  24. package/dist/draco/draco-libraries.cjs +61 -0
  25. package/dist/draco/draco-libraries.cjs.map +7 -0
  26. package/dist/draco/draco-libraries.d.ts +28 -0
  27. package/dist/draco/draco-libraries.d.ts.map +1 -0
  28. package/dist/draco/draco-libraries.js +33 -0
  29. package/dist/draco/draco-libraries.js.map +1 -0
  30. package/dist/draco/draco-library-options.cjs +80 -0
  31. package/dist/draco/draco-library-options.cjs.map +7 -0
  32. package/dist/draco/draco-library-options.d.ts +16 -0
  33. package/dist/draco/draco-library-options.d.ts.map +1 -0
  34. package/dist/draco/draco-library-options.js +52 -0
  35. package/dist/draco/draco-library-options.js.map +1 -0
  36. package/dist/draco/draco-loader-options.cjs +37 -0
  37. package/dist/draco/draco-loader-options.cjs.map +7 -0
  38. package/dist/draco/draco-loader-options.d.ts +27 -0
  39. package/dist/draco/draco-loader-options.d.ts.map +1 -0
  40. package/dist/draco/draco-loader-options.js +12 -0
  41. package/dist/draco/draco-loader-options.js.map +1 -0
  42. package/dist/draco/draco-loader-types.cjs +88 -0
  43. package/dist/draco/draco-loader-types.cjs.map +7 -0
  44. package/dist/draco/draco-loader-types.d.ts +69 -0
  45. package/dist/draco/draco-loader-types.d.ts.map +1 -0
  46. package/dist/draco/draco-loader-types.js +54 -0
  47. package/dist/draco/draco-loader-types.js.map +1 -0
  48. package/dist/draco/draco-loader.cjs +51 -0
  49. package/dist/draco/draco-loader.cjs.map +7 -0
  50. package/dist/draco/draco-loader.d.ts +39 -0
  51. package/dist/draco/draco-loader.d.ts.map +1 -0
  52. package/dist/draco/draco-loader.js +22 -0
  53. package/dist/draco/draco-loader.js.map +1 -0
  54. package/dist/draco/draco-wasm-loader-with-parser.cjs +48 -0
  55. package/dist/draco/draco-wasm-loader-with-parser.cjs.map +7 -0
  56. package/dist/draco/draco-wasm-loader-with-parser.d.ts +34 -0
  57. package/dist/draco/draco-wasm-loader-with-parser.d.ts.map +1 -0
  58. package/dist/draco/draco-wasm-loader-with-parser.js +14 -0
  59. package/dist/draco/draco-wasm-loader-with-parser.js.map +1 -0
  60. package/dist/draco/draco-writer.cjs +183 -0
  61. package/dist/draco/draco-writer.cjs.map +7 -0
  62. package/dist/draco/draco-writer.d.ts +97 -0
  63. package/dist/draco/draco-writer.d.ts.map +1 -0
  64. package/dist/draco/draco-writer.js +166 -0
  65. package/dist/draco/draco-writer.js.map +1 -0
  66. package/dist/draco/draco3d/draco3d-types.cjs +76 -0
  67. package/dist/draco/draco3d/draco3d-types.cjs.map +7 -0
  68. package/dist/draco/draco3d/draco3d-types.d.ts +303 -0
  69. package/dist/draco/draco3d/draco3d-types.d.ts.map +1 -0
  70. package/dist/draco/draco3d/draco3d-types.js +47 -0
  71. package/dist/draco/draco3d/draco3d-types.js.map +1 -0
  72. package/dist/draco/draco3d-loader-with-parser.cjs +50 -0
  73. package/dist/draco/draco3d-loader-with-parser.cjs.map +7 -0
  74. package/dist/draco/draco3d-loader-with-parser.d.ts +34 -0
  75. package/dist/draco/draco3d-loader-with-parser.d.ts.map +1 -0
  76. package/dist/draco/draco3d-loader-with-parser.js +21 -0
  77. package/dist/draco/draco3d-loader-with-parser.js.map +1 -0
  78. package/dist/draco/index.cjs +54 -0
  79. package/dist/draco/index.cjs.map +7 -0
  80. package/dist/draco/index.d.ts +13 -0
  81. package/dist/draco/index.d.ts.map +1 -0
  82. package/dist/draco/index.js +13 -0
  83. package/dist/draco/index.js.map +1 -0
  84. package/dist/draco/lib/draco-builder.cjs +660 -0
  85. package/dist/draco/lib/draco-builder.cjs.map +7 -0
  86. package/dist/draco/lib/draco-builder.d.ts +175 -0
  87. package/dist/draco/lib/draco-builder.d.ts.map +1 -0
  88. package/dist/draco/lib/draco-builder.js +612 -0
  89. package/dist/draco/lib/draco-builder.js.map +1 -0
  90. package/dist/draco/lib/draco-library-loader.cjs +47 -0
  91. package/dist/draco/lib/draco-library-loader.cjs.map +7 -0
  92. package/dist/draco/lib/draco-library-loader.d.ts +5 -0
  93. package/dist/draco/lib/draco-library-loader.d.ts.map +1 -0
  94. package/dist/draco/lib/draco-library-loader.js +23 -0
  95. package/dist/draco/lib/draco-library-loader.js.map +1 -0
  96. package/dist/draco/lib/draco-module-loader.cjs +281 -0
  97. package/dist/draco/lib/draco-module-loader.cjs.map +7 -0
  98. package/dist/draco/lib/draco-module-loader.d.ts +25 -0
  99. package/dist/draco/lib/draco-module-loader.d.ts.map +1 -0
  100. package/dist/draco/lib/draco-module-loader.js +220 -0
  101. package/dist/draco/lib/draco-module-loader.js.map +1 -0
  102. package/dist/draco/lib/draco-parser.cjs +598 -0
  103. package/dist/draco/lib/draco-parser.cjs.map +7 -0
  104. package/dist/draco/lib/draco-parser.d.ts +142 -0
  105. package/dist/draco/lib/draco-parser.d.ts.map +1 -0
  106. package/dist/draco/lib/draco-parser.js +595 -0
  107. package/dist/draco/lib/draco-parser.js.map +1 -0
  108. package/dist/draco/lib/draco-types.cjs +19 -0
  109. package/dist/draco/lib/draco-types.cjs.map +7 -0
  110. package/dist/draco/lib/draco-types.d.ts +59 -0
  111. package/dist/draco/lib/draco-types.d.ts.map +1 -0
  112. package/dist/draco/lib/draco-types.js +5 -0
  113. package/dist/draco/lib/draco-types.js.map +1 -0
  114. package/dist/draco/lib/parse-draco.cjs +59 -0
  115. package/dist/draco/lib/parse-draco.cjs.map +7 -0
  116. package/dist/draco/lib/parse-draco.d.ts +22 -0
  117. package/dist/draco/lib/parse-draco.d.ts.map +1 -0
  118. package/dist/draco/lib/parse-draco.js +32 -0
  119. package/dist/draco/lib/parse-draco.js.map +1 -0
  120. package/dist/draco/lib/utils/get-draco-schema.cjs +74 -0
  121. package/dist/draco/lib/utils/get-draco-schema.cjs.map +7 -0
  122. package/dist/draco/lib/utils/get-draco-schema.d.ts +7 -0
  123. package/dist/draco/lib/utils/get-draco-schema.d.ts.map +1 -0
  124. package/dist/draco/lib/utils/get-draco-schema.js +45 -0
  125. package/dist/draco/lib/utils/get-draco-schema.js.map +1 -0
  126. package/dist/draco/lib/utils/version.cjs +31 -0
  127. package/dist/draco/lib/utils/version.cjs.map +7 -0
  128. package/dist/draco/lib/utils/version.d.ts +2 -0
  129. package/dist/draco/lib/utils/version.d.ts.map +1 -0
  130. package/dist/draco/lib/utils/version.js +8 -0
  131. package/dist/draco/lib/utils/version.js.map +1 -0
  132. package/dist/draco/unbundled.cjs +33 -0
  133. package/dist/draco/unbundled.cjs.map +7 -0
  134. package/dist/draco/unbundled.d.ts +3 -0
  135. package/dist/draco/unbundled.d.ts.map +1 -0
  136. package/dist/draco/unbundled.js +5 -0
  137. package/dist/draco/unbundled.js.map +1 -0
  138. package/dist/draco/workers/draco-worker-node.cjs +8 -0
  139. package/dist/draco/workers/draco-worker-node.cjs.map +7 -0
  140. package/dist/draco/workers/draco-worker-node.d.ts +2 -0
  141. package/dist/draco/workers/draco-worker-node.d.ts.map +1 -0
  142. package/dist/draco/workers/draco-worker-node.js +9 -0
  143. package/dist/draco/workers/draco-worker-node.js.map +1 -0
  144. package/dist/draco/workers/draco-worker.cjs +7 -0
  145. package/dist/draco/workers/draco-worker.cjs.map +7 -0
  146. package/dist/draco/workers/draco-worker.d.ts +2 -0
  147. package/dist/draco/workers/draco-worker.d.ts.map +1 -0
  148. package/dist/draco/workers/draco-worker.js +7 -0
  149. package/dist/draco/workers/draco-worker.js.map +1 -0
  150. package/dist/draco/workers/draco-writer-worker-node.cjs +11 -0
  151. package/dist/draco/workers/draco-writer-worker-node.cjs.map +7 -0
  152. package/dist/draco/workers/draco-writer-worker-node.d.cts +2 -0
  153. package/dist/draco/workers/draco-writer-worker-node.d.cts.map +1 -0
  154. package/dist/draco/workers/draco-writer-worker-node.d.ts +2 -0
  155. package/dist/draco/workers/draco-writer-worker-node.d.ts.map +1 -0
  156. package/dist/draco/workers/draco-writer-worker-node.js +9 -0
  157. package/dist/draco/workers/draco-writer-worker-node.js.map +1 -0
  158. package/dist/draco/workers/draco-writer-worker.cjs +10 -0
  159. package/dist/draco/workers/draco-writer-worker.cjs.map +7 -0
  160. package/dist/draco/workers/draco-writer-worker.d.ts +2 -0
  161. package/dist/draco/workers/draco-writer-worker.d.ts.map +1 -0
  162. package/dist/draco/workers/draco-writer-worker.js +7 -0
  163. package/dist/draco/workers/draco-writer-worker.js.map +1 -0
  164. package/dist/draco-javascript-loader.cjs +25 -0
  165. package/dist/draco-javascript-loader.cjs.map +7 -0
  166. package/dist/draco-javascript-loader.d.ts +2 -0
  167. package/dist/draco-javascript-loader.d.ts.map +1 -0
  168. package/dist/draco-javascript-loader.js +3 -0
  169. package/dist/draco-javascript-loader.js.map +1 -0
  170. package/dist/draco-library-options.cjs +36 -0
  171. package/dist/draco-library-options.cjs.map +7 -0
  172. package/dist/draco-library-options.d.ts +3 -0
  173. package/dist/draco-library-options.d.ts.map +1 -0
  174. package/dist/draco-library-options.js +4 -0
  175. package/dist/draco-library-options.js.map +1 -0
  176. package/dist/draco-loader-types.cjs +25 -0
  177. package/dist/draco-loader-types.cjs.map +7 -0
  178. package/dist/draco-loader-types.d.ts +2 -0
  179. package/dist/draco-loader-types.d.ts.map +1 -0
  180. package/dist/draco-loader-types.js +3 -0
  181. package/dist/draco-loader-types.js.map +1 -0
  182. package/dist/draco-loader.cjs +25 -0
  183. package/dist/draco-loader.cjs.map +7 -0
  184. package/dist/draco-loader.d.ts +2 -0
  185. package/dist/draco-loader.d.ts.map +1 -0
  186. package/dist/draco-loader.js +3 -0
  187. package/dist/draco-loader.js.map +1 -0
  188. package/dist/draco-wasm-loader.cjs +25 -0
  189. package/dist/draco-wasm-loader.cjs.map +7 -0
  190. package/dist/draco-wasm-loader.d.ts +2 -0
  191. package/dist/draco-wasm-loader.d.ts.map +1 -0
  192. package/dist/draco-wasm-loader.js +3 -0
  193. package/dist/draco-wasm-loader.js.map +1 -0
  194. package/dist/draco-worker-node.js +28640 -0
  195. package/dist/draco-worker-node.js.map +7 -0
  196. package/dist/draco-worker.js +18481 -0
  197. package/dist/draco-worker.js.map +7 -0
  198. package/dist/draco-writer-worker-node.cjs +28855 -0
  199. package/dist/draco-writer-worker-node.cjs.map +7 -0
  200. package/dist/draco-writer-worker.js +18617 -0
  201. package/dist/draco-writer-worker.js.map +7 -0
  202. package/dist/draco-writer.cjs +25 -0
  203. package/dist/draco-writer.cjs.map +7 -0
  204. package/dist/draco-writer.d.ts +2 -0
  205. package/dist/draco-writer.d.ts.map +1 -0
  206. package/dist/draco-writer.js +3 -0
  207. package/dist/draco-writer.js.map +1 -0
  208. package/dist/draco3d-loader.cjs +25 -0
  209. package/dist/draco3d-loader.cjs.map +7 -0
  210. package/dist/draco3d-loader.d.ts +2 -0
  211. package/dist/draco3d-loader.d.ts.map +1 -0
  212. package/dist/draco3d-loader.js +3 -0
  213. package/dist/draco3d-loader.js.map +1 -0
  214. package/dist/glb-loader-types.cjs +61 -0
  215. package/dist/glb-loader-types.cjs.map +7 -0
  216. package/dist/glb-loader-types.d.ts +2 -0
  217. package/dist/glb-loader-types.d.ts.map +1 -0
  218. package/dist/glb-loader-types.js +2 -0
  219. package/dist/glb-loader-types.js.map +1 -0
  220. package/dist/glb-loader.cjs +48 -0
  221. package/dist/glb-loader.cjs.map +7 -0
  222. package/dist/glb-loader.d.ts +2 -0
  223. package/dist/glb-loader.d.ts.map +1 -0
  224. package/dist/glb-loader.js +2 -0
  225. package/dist/glb-loader.js.map +1 -0
  226. package/dist/glb-writer.cjs +53 -0
  227. package/dist/glb-writer.cjs.map +7 -0
  228. package/dist/glb-writer.d.ts +2 -0
  229. package/dist/glb-writer.d.ts.map +1 -0
  230. package/dist/glb-writer.js +2 -0
  231. package/dist/glb-writer.js.map +1 -0
  232. package/dist/gltf/glb-loader-types.cjs +1 -1
  233. package/dist/gltf/glb-loader-types.cjs.map +2 -2
  234. package/dist/gltf/glb-loader-types.d.ts +2 -2
  235. package/dist/gltf/glb-loader-types.js +1 -1
  236. package/dist/gltf/glb-loader-types.js.map +1 -1
  237. package/dist/gltf/gltf-loader-types.cjs +1 -1
  238. package/dist/gltf/gltf-loader-types.cjs.map +2 -2
  239. package/dist/gltf/gltf-loader-types.d.ts +11 -5
  240. package/dist/gltf/gltf-loader-types.d.ts.map +1 -1
  241. package/dist/gltf/gltf-loader-types.js +1 -1
  242. package/dist/gltf/gltf-loader-types.js.map +1 -1
  243. package/dist/gltf/gltf-loader.cjs.map +1 -1
  244. package/dist/gltf/gltf-loader.d.ts +4 -4
  245. package/dist/gltf/gltf-loader.d.ts.map +1 -1
  246. package/dist/gltf/index.cjs +2 -0
  247. package/dist/gltf/index.cjs.map +2 -2
  248. package/dist/gltf/index.d.ts +2 -2
  249. package/dist/gltf/index.d.ts.map +1 -1
  250. package/dist/gltf/index.js +1 -1
  251. package/dist/gltf/index.js.map +1 -1
  252. package/dist/gltf/lib/api/gltf-extensions.cjs +7 -2
  253. package/dist/gltf/lib/api/gltf-extensions.cjs.map +2 -2
  254. package/dist/gltf/lib/api/gltf-extensions.d.ts.map +1 -1
  255. package/dist/gltf/lib/api/gltf-extensions.js +7 -5
  256. package/dist/gltf/lib/api/gltf-extensions.js.map +1 -1
  257. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs +12 -2
  258. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs.map +2 -2
  259. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts +1 -1
  260. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts.map +1 -1
  261. package/dist/gltf/lib/encoders/encode-gltf-draco.js +1 -1
  262. package/dist/gltf/lib/encoders/encode-gltf-draco.js.map +1 -1
  263. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs +1 -0
  264. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs.map +2 -2
  265. package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  266. package/dist/gltf/lib/extensions/EXT_texture_webp.js +3 -0
  267. package/dist/gltf/lib/extensions/EXT_texture_webp.js.map +1 -1
  268. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs +45 -0
  269. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs.map +7 -0
  270. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts +6 -0
  271. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts.map +1 -0
  272. package/dist/gltf/lib/extensions/KHR_accessor_float64.js +20 -0
  273. package/dist/gltf/lib/extensions/KHR_accessor_float64.js.map +1 -0
  274. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs +2 -2
  275. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs.map +2 -2
  276. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
  277. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js +1 -1
  278. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  279. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs +12 -3
  280. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs.map +2 -2
  281. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts +2 -1
  282. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts.map +1 -1
  283. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js +9 -3
  284. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js.map +1 -1
  285. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs +64 -0
  286. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs.map +7 -0
  287. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts +12 -0
  288. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts.map +1 -0
  289. package/dist/gltf/lib/extensions/MSFT_texture_dds.js +39 -0
  290. package/dist/gltf/lib/extensions/MSFT_texture_dds.js.map +1 -0
  291. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs +1 -1
  292. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs.map +2 -2
  293. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -1
  294. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js +3 -1
  295. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js.map +1 -1
  296. package/dist/gltf/lib/parsers/parse-gltf.cjs +27 -2
  297. package/dist/gltf/lib/parsers/parse-gltf.cjs.map +3 -3
  298. package/dist/gltf/lib/parsers/parse-gltf.d.ts.map +1 -1
  299. package/dist/gltf/lib/parsers/parse-gltf.js +23 -5
  300. package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -1
  301. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs.map +1 -1
  302. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts +1 -1
  303. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts.map +1 -1
  304. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs +19 -0
  305. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs.map +7 -0
  306. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts +45 -0
  307. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts.map +1 -0
  308. package/dist/gltf/lib/types/gltf-texture-procedurals.js +5 -0
  309. package/dist/gltf/lib/types/gltf-texture-procedurals.js.map +1 -0
  310. package/dist/gltf/lib/types/gltf-types.cjs.map +1 -1
  311. package/dist/gltf/lib/types/gltf-types.d.ts +7 -0
  312. package/dist/gltf/lib/types/gltf-types.d.ts.map +1 -1
  313. package/dist/gltf/lib/types/gltf-zod-schema.cjs +3 -0
  314. package/dist/gltf/lib/types/gltf-zod-schema.cjs.map +2 -2
  315. package/dist/gltf/lib/types/gltf-zod-schema.d.ts +6 -1
  316. package/dist/gltf/lib/types/gltf-zod-schema.d.ts.map +1 -1
  317. package/dist/gltf/lib/types/gltf-zod-schema.js +4 -0
  318. package/dist/gltf/lib/types/gltf-zod-schema.js.map +1 -1
  319. package/dist/gltf/lib/utils/version.cjs +1 -1
  320. package/dist/gltf/lib/utils/version.js +1 -1
  321. package/dist/gltf/schema.cjs +3 -0
  322. package/dist/gltf/schema.cjs.map +2 -2
  323. package/dist/gltf/schema.d.ts +1 -0
  324. package/dist/gltf/schema.d.ts.map +1 -1
  325. package/dist/gltf/schema.js +1 -0
  326. package/dist/gltf/schema.js.map +1 -1
  327. package/dist/gltf-loader-types.cjs +73 -0
  328. package/dist/gltf-loader-types.cjs.map +7 -0
  329. package/dist/gltf-loader-types.d.ts +2 -0
  330. package/dist/gltf-loader-types.d.ts.map +1 -0
  331. package/dist/gltf-loader-types.js +2 -0
  332. package/dist/gltf-loader-types.js.map +1 -0
  333. package/dist/gltf-loader.cjs +48 -0
  334. package/dist/gltf-loader.cjs.map +7 -0
  335. package/dist/gltf-loader.d.ts +2 -0
  336. package/dist/gltf-loader.d.ts.map +1 -0
  337. package/dist/gltf-loader.js +2 -0
  338. package/dist/gltf-loader.js.map +1 -0
  339. package/dist/gltf-source.cjs +238 -0
  340. package/dist/gltf-source.cjs.map +7 -0
  341. package/dist/gltf-source.d.ts +2 -0
  342. package/dist/gltf-source.d.ts.map +1 -0
  343. package/dist/gltf-source.js +2 -0
  344. package/dist/gltf-source.js.map +1 -0
  345. package/dist/gltf-writer.cjs +69 -0
  346. package/dist/gltf-writer.cjs.map +7 -0
  347. package/dist/gltf-writer.d.ts +2 -0
  348. package/dist/gltf-writer.d.ts.map +1 -0
  349. package/dist/gltf-writer.js +2 -0
  350. package/dist/gltf-writer.js.map +1 -0
  351. package/dist/index.cjs +16 -0
  352. package/dist/index.cjs.map +2 -2
  353. package/dist/index.d.ts +6 -0
  354. package/dist/index.d.ts.map +1 -1
  355. package/dist/index.js +4 -0
  356. package/dist/index.js.map +1 -1
  357. package/dist/libs/DRACO-LICENSE +252 -0
  358. package/dist/libs/README.md +20 -0
  359. package/dist/libs/draco_decoder.js +34 -0
  360. package/dist/libs/draco_decoder.mjs +37 -0
  361. package/dist/libs/draco_decoder.wasm +0 -0
  362. package/dist/libs/draco_decoder_gltf.wasm +0 -0
  363. package/dist/libs/draco_encoder.js +98 -0
  364. package/dist/libs/draco_encoder.mjs +101 -0
  365. package/dist/libs/draco_encoder.wasm +0 -0
  366. package/dist/libs/draco_wasm_wrapper.js +117 -0
  367. package/dist/libs/draco_wasm_wrapper.mjs +120 -0
  368. package/dist/libs/draco_wasm_wrapper_gltf.js +116 -0
  369. package/dist/libs/draco_wasm_wrapper_gltf.mjs +119 -0
  370. package/dist/materialx/parse-materialx.cjs +61 -0
  371. package/dist/materialx/parse-materialx.cjs.map +7 -0
  372. package/dist/materialx/parse-materialx.d.ts +23 -0
  373. package/dist/materialx/parse-materialx.d.ts.map +1 -0
  374. package/dist/materialx/parse-materialx.js +39 -0
  375. package/dist/materialx/parse-materialx.js.map +1 -0
  376. package/dist/materialx/procedural-graph.cjs +77 -0
  377. package/dist/materialx/procedural-graph.cjs.map +7 -0
  378. package/dist/materialx/procedural-graph.d.ts +40 -0
  379. package/dist/materialx/procedural-graph.d.ts.map +1 -0
  380. package/dist/materialx/procedural-graph.js +59 -0
  381. package/dist/materialx/procedural-graph.js.map +1 -0
  382. package/dist/materialx-loader-types.cjs +57 -0
  383. package/dist/materialx-loader-types.cjs.map +7 -0
  384. package/dist/materialx-loader-types.d.ts +34 -0
  385. package/dist/materialx-loader-types.d.ts.map +1 -0
  386. package/dist/materialx-loader-types.js +20 -0
  387. package/dist/materialx-loader-types.js.map +1 -0
  388. package/dist/materialx-loader.cjs +40 -0
  389. package/dist/materialx-loader.cjs.map +7 -0
  390. package/dist/materialx-loader.d.ts +19 -0
  391. package/dist/materialx-loader.d.ts.map +1 -0
  392. package/dist/materialx-loader.js +14 -0
  393. package/dist/materialx-loader.js.map +1 -0
  394. package/dist/mtl-loader-types.cjs +64 -0
  395. package/dist/mtl-loader-types.cjs.map +7 -0
  396. package/dist/mtl-loader-types.d.ts +2 -0
  397. package/dist/mtl-loader-types.d.ts.map +1 -0
  398. package/dist/mtl-loader-types.js +2 -0
  399. package/dist/mtl-loader-types.js.map +1 -0
  400. package/dist/mtl-loader.cjs +47 -0
  401. package/dist/mtl-loader.cjs.map +7 -0
  402. package/dist/mtl-loader.d.ts +2 -0
  403. package/dist/mtl-loader.d.ts.map +1 -0
  404. package/dist/mtl-loader.js +2 -0
  405. package/dist/mtl-loader.js.map +1 -0
  406. package/dist/obj/mtl-loader-types.cjs +2 -2
  407. package/dist/obj/mtl-loader-types.cjs.map +2 -2
  408. package/dist/obj/mtl-loader-types.d.ts +2 -2
  409. package/dist/obj/mtl-loader-types.js +2 -2
  410. package/dist/obj/mtl-loader-types.js.map +1 -1
  411. package/dist/obj/mtl-loader.cjs +1 -1
  412. package/dist/obj/mtl-loader.cjs.map +2 -2
  413. package/dist/obj/mtl-loader.js +1 -1
  414. package/dist/obj/mtl-loader.js.map +1 -1
  415. package/dist/obj/obj-loader-types.cjs +2 -2
  416. package/dist/obj/obj-loader-types.cjs.map +2 -2
  417. package/dist/obj/obj-loader-types.js +2 -2
  418. package/dist/obj/obj-loader-types.js.map +1 -1
  419. package/dist/obj/obj-writer.cjs +1 -1
  420. package/dist/obj/obj-writer.js +1 -1
  421. package/dist/obj-loader-types.cjs +71 -0
  422. package/dist/obj-loader-types.cjs.map +7 -0
  423. package/dist/obj-loader-types.d.ts +2 -0
  424. package/dist/obj-loader-types.d.ts.map +1 -0
  425. package/dist/obj-loader-types.js +2 -0
  426. package/dist/obj-loader-types.js.map +1 -0
  427. package/dist/obj-loader.cjs +163 -0
  428. package/dist/obj-loader.cjs.map +7 -0
  429. package/dist/obj-loader.d.ts +2 -0
  430. package/dist/obj-loader.d.ts.map +1 -0
  431. package/dist/obj-loader.js +2 -0
  432. package/dist/obj-loader.js.map +1 -0
  433. package/dist/obj-worker.js +586 -117
  434. package/dist/obj-writer.cjs +167 -0
  435. package/dist/obj-writer.cjs.map +7 -0
  436. package/dist/obj-writer.d.ts +2 -0
  437. package/dist/obj-writer.d.ts.map +1 -0
  438. package/dist/obj-writer.js +2 -0
  439. package/dist/obj-writer.js.map +1 -0
  440. package/dist/usd/usd-loader-types.cjs +2 -2
  441. package/dist/usd/usd-loader-types.cjs.map +2 -2
  442. package/dist/usd/usd-loader-types.js +2 -2
  443. package/dist/usd/usd-loader-types.js.map +1 -1
  444. package/dist/usd-loader-types.cjs +69 -0
  445. package/dist/usd-loader-types.cjs.map +7 -0
  446. package/dist/usd-loader-types.d.ts +2 -0
  447. package/dist/usd-loader-types.d.ts.map +1 -0
  448. package/dist/usd-loader-types.js +2 -0
  449. package/dist/usd-loader-types.js.map +1 -0
  450. package/dist/usd-loader.cjs +43 -0
  451. package/dist/usd-loader.cjs.map +7 -0
  452. package/dist/usd-loader.d.ts +2 -0
  453. package/dist/usd-loader.d.ts.map +1 -0
  454. package/dist/usd-loader.js +2 -0
  455. package/dist/usd-loader.js.map +1 -0
  456. package/package.json +136 -71
  457. package/src/draco/bundled.ts +10 -0
  458. package/src/draco/draco-format.ts +20 -0
  459. package/src/draco/draco-javascript-loader-with-parser.ts +26 -0
  460. package/src/draco/draco-libraries.ts +35 -0
  461. package/src/draco/draco-library-options.ts +76 -0
  462. package/src/draco/draco-loader-options.ts +33 -0
  463. package/src/draco/draco-loader-types.ts +78 -0
  464. package/src/draco/draco-loader.ts +45 -0
  465. package/src/draco/draco-wasm-loader-with-parser.ts +31 -0
  466. package/src/draco/draco-writer.ts +252 -0
  467. package/src/draco/draco3d/draco3d-types.ts +498 -0
  468. package/src/draco/draco3d-loader-with-parser.ts +34 -0
  469. package/src/draco/index.ts +46 -0
  470. package/src/draco/lib/draco-builder.ts +935 -0
  471. package/src/draco/lib/draco-library-loader.ts +38 -0
  472. package/src/draco/lib/draco-module-loader.ts +370 -0
  473. package/src/draco/lib/draco-parser.ts +776 -0
  474. package/src/draco/lib/draco-types.ts +72 -0
  475. package/src/draco/lib/parse-draco.ts +51 -0
  476. package/src/draco/lib/utils/get-draco-schema.ts +65 -0
  477. package/src/draco/lib/utils/version.ts +8 -0
  478. package/src/draco/libs/DRACO-LICENSE +252 -0
  479. package/src/draco/libs/README.md +20 -0
  480. package/src/draco/libs/draco_decoder.js +34 -0
  481. package/src/draco/libs/draco_decoder.wasm +0 -0
  482. package/src/draco/libs/draco_decoder_gltf.wasm +0 -0
  483. package/src/draco/libs/draco_encoder.js +98 -0
  484. package/src/draco/libs/draco_encoder.wasm +0 -0
  485. package/src/draco/libs/draco_wasm_wrapper.js +117 -0
  486. package/src/draco/libs/draco_wasm_wrapper_gltf.js +116 -0
  487. package/src/draco/unbundled.ts +6 -0
  488. package/src/draco/workers/draco-worker-node.ts +10 -0
  489. package/src/draco/workers/draco-worker.ts +8 -0
  490. package/src/draco/workers/draco-writer-worker-node.cjs +21 -0
  491. package/src/draco/workers/draco-writer-worker-node.ts +13 -0
  492. package/src/draco/workers/draco-writer-worker.ts +11 -0
  493. package/src/draco-javascript-loader.ts +2 -0
  494. package/src/draco-library-options.ts +6 -0
  495. package/src/draco-loader-types.ts +2 -0
  496. package/src/draco-loader.ts +2 -0
  497. package/src/draco-wasm-loader.ts +2 -0
  498. package/src/draco-writer.ts +2 -0
  499. package/src/draco3d-loader.ts +2 -0
  500. package/src/glb-loader-types.ts +1 -0
  501. package/src/glb-loader.ts +1 -0
  502. package/src/glb-writer.ts +1 -0
  503. package/src/gltf/glb-loader-types.ts +1 -1
  504. package/src/gltf/gltf-loader-types.ts +11 -5
  505. package/src/gltf/gltf-loader.ts +4 -4
  506. package/src/gltf/index.ts +4 -1
  507. package/src/gltf/lib/api/gltf-extensions.ts +7 -2
  508. package/src/gltf/lib/encoders/encode-gltf-draco.ts +2 -2
  509. package/src/gltf/lib/extensions/EXT_texture_webp.ts +3 -0
  510. package/src/gltf/lib/extensions/KHR_accessor_float64.ts +22 -0
  511. package/src/gltf/lib/extensions/KHR_draco_mesh_compression.ts +2 -1
  512. package/src/gltf/lib/extensions/KHR_gaussian_splatting.ts +17 -3
  513. package/src/gltf/lib/extensions/MSFT_texture_dds.ts +52 -0
  514. package/src/gltf/lib/extensions/utils/3d-tiles-utils.ts +5 -1
  515. package/src/gltf/lib/parsers/parse-gltf.ts +34 -5
  516. package/src/gltf/lib/types/gltf-ext-gaussian-splatting-schema.ts +1 -1
  517. package/src/gltf/lib/types/gltf-texture-procedurals.ts +67 -0
  518. package/src/gltf/lib/types/gltf-types.ts +8 -0
  519. package/src/gltf/lib/types/gltf-zod-schema.ts +5 -0
  520. package/src/gltf/schema.ts +1 -0
  521. package/src/gltf-loader-types.ts +1 -0
  522. package/src/gltf-loader.ts +1 -0
  523. package/src/gltf-source.ts +1 -0
  524. package/src/gltf-writer.ts +1 -0
  525. package/src/index.ts +8 -0
  526. package/src/materialx/README.md +5 -0
  527. package/src/materialx/parse-materialx.ts +70 -0
  528. package/src/materialx/procedural-graph.ts +94 -0
  529. package/src/materialx-loader-types.ts +24 -0
  530. package/src/materialx-loader.ts +15 -0
  531. package/src/mtl-loader-types.ts +1 -0
  532. package/src/mtl-loader.ts +1 -0
  533. package/src/obj/mtl-loader-types.ts +1 -1
  534. package/src/obj/mtl-loader.ts +1 -1
  535. package/src/obj/obj-loader-types.ts +1 -1
  536. package/src/obj-loader-types.ts +1 -0
  537. package/src/obj-loader.ts +1 -0
  538. package/src/obj-writer.ts +1 -0
  539. package/src/usd/usd-loader-types.ts +1 -1
  540. package/src/usd-loader-types.ts +1 -0
  541. package/src/usd-loader.ts +1 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/sharp/dist/is.mjs", "../../../node_modules/detect-libc/lib/process.js", "../../../node_modules/detect-libc/lib/filesystem.js", "../../../node_modules/detect-libc/lib/elf.js", "../../../node_modules/detect-libc/lib/detect-libc.js", "../../../node_modules/semver/internal/constants.js", "../../../node_modules/semver/internal/debug.js", "../../../node_modules/semver/internal/re.js", "../../../node_modules/semver/internal/parse-options.js", "../../../node_modules/semver/internal/identifiers.js", "../../../node_modules/semver/classes/semver.js", "../../../node_modules/semver/functions/parse.js", "../../../node_modules/semver/functions/valid.js", "../../../node_modules/semver/functions/clean.js", "../../../node_modules/semver/functions/inc.js", "../../../node_modules/semver/functions/diff.js", "../../../node_modules/semver/functions/major.js", "../../../node_modules/semver/functions/minor.js", "../../../node_modules/semver/functions/patch.js", "../../../node_modules/semver/functions/prerelease.js", "../../../node_modules/semver/functions/compare.js", "../../../node_modules/semver/functions/rcompare.js", "../../../node_modules/semver/functions/compare-loose.js", "../../../node_modules/semver/functions/compare-build.js", "../../../node_modules/semver/functions/sort.js", "../../../node_modules/semver/functions/rsort.js", "../../../node_modules/semver/functions/gt.js", "../../../node_modules/semver/functions/lt.js", "../../../node_modules/semver/functions/eq.js", "../../../node_modules/semver/functions/neq.js", "../../../node_modules/semver/functions/gte.js", "../../../node_modules/semver/functions/lte.js", "../../../node_modules/semver/functions/cmp.js", "../../../node_modules/semver/functions/coerce.js", "../../../node_modules/semver/functions/truncate.js", "../../../node_modules/semver/internal/lrucache.js", "../../../node_modules/semver/classes/range.js", "../../../node_modules/semver/classes/comparator.js", "../../../node_modules/semver/functions/satisfies.js", "../../../node_modules/semver/ranges/to-comparators.js", "../../../node_modules/semver/ranges/max-satisfying.js", "../../../node_modules/semver/ranges/min-satisfying.js", "../../../node_modules/semver/ranges/min-version.js", "../../../node_modules/semver/ranges/valid.js", "../../../node_modules/semver/ranges/outside.js", "../../../node_modules/semver/ranges/gtr.js", "../../../node_modules/semver/ranges/ltr.js", "../../../node_modules/semver/ranges/intersects.js", "../../../node_modules/semver/ranges/simplify.js", "../../../node_modules/semver/ranges/subset.js", "../../../node_modules/semver/index.js", "../../../node_modules/sharp/package.json", "../../../node_modules/sharp/dist/libvips.mjs", "../../../node_modules/sharp/dist/sharp.mjs", "../../../node_modules/sharp/dist/constructor.mjs", "../../../node_modules/sharp/dist/input.mjs", "../../../node_modules/sharp/dist/resize.mjs", "../../../node_modules/sharp/dist/composite.mjs", "../../../node_modules/sharp/dist/operation.mjs", "../../../node_modules/@img/colour/color.cjs", "../../../node_modules/@img/colour/index.cjs", "../../../node_modules/sharp/dist/colour.mjs", "../../../node_modules/sharp/dist/channel.mjs", "../../../node_modules/sharp/dist/output.mjs", "../../../node_modules/sharp/dist/utility.mjs", "../../../node_modules/sharp/dist/index.mjs", "../../core/src/loader-utils/lib/module-utils/initialize-wasm-module.ts", "../../core/src/worker-utils/lib/env-utils/version.ts", "../../core/src/worker-utils/lib/env-utils/assert.ts", "../../core/src/worker-utils/lib/env-utils/globals.ts", "../../../node_modules/@math.gl/core/src/worker-utils/lib/node/worker_threads.ts", "../../../node_modules/@math.gl/core/src/worker-utils/lib/worker-utils/get-transfer-list.ts", "../../../node_modules/@math.gl/core/src/worker-utils/lib/worker-farm/worker-body.ts", "../../../node_modules/@math.gl/core/src/worker-utils/lib/async-queue/async-queue.ts", "../../../node_modules/@math.gl/core/src/worker-utils/lib/worker-api/shared-state.ts", "../../../node_modules/@math.gl/core/src/worker-utils/lib/worker-api/validate-output-ownership.ts", "../../../node_modules/@math.gl/core/src/worker-utils/lib/worker-api/create-worker.ts", "../../../node_modules/@math.gl/core/src/worker-utils/index.ts", "../../../node_modules/@math.gl/core/src/tasks/task-preload.ts", "../../../node_modules/@math.gl/core/src/tasks/task-runtime.ts", "../../../node_modules/@math.gl/core/src/tasks/index.ts", "../../core/src/worker-utils/lib/node/worker_threads.ts", "../../core/src/worker-utils/lib/worker-api/task-runtime.ts", "../../core/src/worker-utils/lib/worker-utils/get-transfer-list.ts", "../../core/src/worker-utils/lib/worker-api/create-worker.ts", "../../core/src/worker-utils/lib/library-utils/library-utils.ts", "../../core/src/worker-utils/index.ts", "../../core/src/loader-utils/lib/worker-loader-utils/create-loader-worker.ts", "../../../node_modules/@math.gl/core/src/lib/math-utils.ts", "../../../node_modules/@math.gl/core/src/gl-matrix/vec2.ts", "../../../node_modules/@math.gl/core/src/gl-matrix/vec3.ts", "../../../node_modules/@math.gl/core/src/gl-matrix/mat3.ts", "../../../node_modules/@math.gl/core/src/gl-matrix/mat4.ts", "../../../node_modules/@math.gl/core/src/gl-matrix/vec4.ts", "../../../node_modules/@math.gl/core/src/gl-matrix/quat.ts", "../../../node_modules/@math.gl/core/src/types/float16.ts", "../../../node_modules/@math.gl/core/src/types/index.ts", "../../../node_modules/@math.gl/core/src/types.ts", "../../../node_modules/@math.gl/core/src/mat3.ts", "../../../node_modules/@math.gl/core/src/mat4.ts", "../../../node_modules/@math.gl/core/src/quat.ts", "../../../node_modules/@math.gl/core/src/vec2.ts", "../../../node_modules/@math.gl/core/src/vec3.ts", "../../../node_modules/@math.gl/core/src/vec4.ts", "../../../node_modules/@math.gl/core/src/index.ts", "../../core/src/loader-utils/index.ts", "../../core/src/schema-utils/lib/schema/data-type.ts", "../../../node_modules/tslib/tslib.es6.mjs", "../../../node_modules/apache-arrow/util/utf8.ts", "../../../node_modules/apache-arrow/util/compat.ts", "../../../node_modules/apache-arrow/util/buffer.ts", "../../../node_modules/apache-arrow/io/adapters.ts", "../../../node_modules/apache-arrow/fb/metadata-version.ts", "../../../node_modules/apache-arrow/fb/union-mode.ts", "../../../node_modules/apache-arrow/fb/precision.ts", "../../../node_modules/apache-arrow/fb/date-unit.ts", "../../../node_modules/apache-arrow/fb/time-unit.ts", "../../../node_modules/apache-arrow/fb/interval-unit.ts", "../../../node_modules/flatbuffers/js/constants.js", "../../../node_modules/flatbuffers/js/utils.js", "../../../node_modules/flatbuffers/js/encoding.js", "../../../node_modules/flatbuffers/js/byte-buffer.js", "../../../node_modules/flatbuffers/js/builder.js", "../../../node_modules/flatbuffers/js/flatbuffers.js", "../../../node_modules/apache-arrow/fb/body-compression-method.ts", "../../../node_modules/apache-arrow/fb/compression-type.ts", "../../../node_modules/apache-arrow/fb/body-compression.ts", "../../../node_modules/apache-arrow/fb/buffer.ts", "../../../node_modules/apache-arrow/fb/field-node.ts", "../../../node_modules/apache-arrow/fb/record-batch.ts", "../../../node_modules/apache-arrow/fb/dictionary-batch.ts", "../../../node_modules/apache-arrow/fb/endianness.ts", "../../../node_modules/apache-arrow/fb/dictionary-kind.ts", "../../../node_modules/apache-arrow/fb/int.ts", "../../../node_modules/apache-arrow/fb/dictionary-encoding.ts", "../../../node_modules/apache-arrow/fb/key-value.ts", "../../../node_modules/apache-arrow/fb/binary.ts", "../../../node_modules/apache-arrow/fb/binary-view.ts", "../../../node_modules/apache-arrow/fb/bool.ts", "../../../node_modules/apache-arrow/fb/date.ts", "../../../node_modules/apache-arrow/fb/decimal.ts", "../../../node_modules/apache-arrow/fb/duration.ts", "../../../node_modules/apache-arrow/fb/fixed-size-binary.ts", "../../../node_modules/apache-arrow/fb/fixed-size-list.ts", "../../../node_modules/apache-arrow/fb/floating-point.ts", "../../../node_modules/apache-arrow/fb/interval.ts", "../../../node_modules/apache-arrow/fb/large-binary.ts", "../../../node_modules/apache-arrow/fb/large-list.ts", "../../../node_modules/apache-arrow/fb/large-utf8.ts", "../../../node_modules/apache-arrow/fb/list.ts", "../../../node_modules/apache-arrow/fb/map.ts", "../../../node_modules/apache-arrow/fb/null.ts", "../../../node_modules/apache-arrow/fb/struct-.ts", "../../../node_modules/apache-arrow/fb/time.ts", "../../../node_modules/apache-arrow/fb/timestamp.ts", "../../../node_modules/apache-arrow/fb/union.ts", "../../../node_modules/apache-arrow/fb/utf8.ts", "../../../node_modules/apache-arrow/fb/utf8-view.ts", "../../../node_modules/apache-arrow/fb/type.ts", "../../../node_modules/apache-arrow/fb/field.ts", "../../../node_modules/apache-arrow/fb/schema.ts", "../../../node_modules/apache-arrow/fb/message-header.ts", "../../../node_modules/apache-arrow/src/enum.ts", "../../../node_modules/apache-arrow/util/pretty.ts", "../../../node_modules/apache-arrow/util/bigint.ts", "../../../node_modules/apache-arrow/util/bn.ts", "../../../node_modules/apache-arrow/src/type.ts", "../../../node_modules/apache-arrow/src/visitor.ts", "../../../node_modules/apache-arrow/util/math.ts", "../../../node_modules/apache-arrow/visitor/set.ts", "../../../node_modules/apache-arrow/row/struct.ts", "../../../node_modules/apache-arrow/visitor/get.ts", "../../../node_modules/apache-arrow/row/map.ts", "../../../node_modules/apache-arrow/util/vector.ts", "../../../node_modules/apache-arrow/util/bit.ts", "../../../node_modules/apache-arrow/src/data.ts", "../../../node_modules/apache-arrow/util/chunk.ts", "../../../node_modules/apache-arrow/visitor/indexof.ts", "../../../node_modules/apache-arrow/visitor/iterator.ts", "../../../node_modules/apache-arrow/src/vector.ts", "../../../node_modules/apache-arrow/builder/valid.ts", "../../../node_modules/apache-arrow/builder/buffer.ts", "../../../node_modules/apache-arrow/src/builder.ts", "../../../node_modules/apache-arrow/fb/block.ts", "../../../node_modules/apache-arrow/fb/footer.ts", "../../../node_modules/apache-arrow/src/schema.ts", "../../../node_modules/apache-arrow/ipc/metadata/file.ts", "../../../node_modules/apache-arrow/fb/message.ts", "../../../node_modules/apache-arrow/visitor/typeassembler.ts", "../../../node_modules/apache-arrow/ipc/metadata/json.ts", "../../../node_modules/apache-arrow/ipc/metadata/message.ts", "../../../node_modules/apache-arrow/io/interfaces.ts", "../../../node_modules/apache-arrow/io/stream.ts", "../../../node_modules/apache-arrow/io/file.ts", "../../../node_modules/apache-arrow/util/int.ts", "../../../node_modules/apache-arrow/util/interval.ts", "../../../node_modules/apache-arrow/visitor/vectorloader.ts", "../../../node_modules/apache-arrow/builder/binary.ts", "../../../node_modules/apache-arrow/builder/largebinary.ts", "../../../node_modules/apache-arrow/builder/bool.ts", "../../../node_modules/apache-arrow/builder/date.ts", "../../../node_modules/apache-arrow/builder/decimal.ts", "../../../node_modules/apache-arrow/builder/dictionary.ts", "../../../node_modules/apache-arrow/builder/fixedsizebinary.ts", "../../../node_modules/apache-arrow/builder/fixedsizelist.ts", "../../../node_modules/apache-arrow/builder/float.ts", "../../../node_modules/apache-arrow/builder/interval.ts", "../../../node_modules/apache-arrow/builder/duration.ts", "../../../node_modules/apache-arrow/builder/int.ts", "../../../node_modules/apache-arrow/builder/list.ts", "../../../node_modules/apache-arrow/builder/largelist.ts", "../../../node_modules/apache-arrow/builder/map.ts", "../../../node_modules/apache-arrow/builder/null.ts", "../../../node_modules/apache-arrow/builder/struct.ts", "../../../node_modules/apache-arrow/builder/timestamp.ts", "../../../node_modules/apache-arrow/builder/time.ts", "../../../node_modules/apache-arrow/builder/union.ts", "../../../node_modules/apache-arrow/builder/utf8.ts", "../../../node_modules/apache-arrow/builder/largeutf8.ts", "../../../node_modules/apache-arrow/builder/binaryview.ts", "../../../node_modules/apache-arrow/builder/utf8view.ts", "../../../node_modules/apache-arrow/visitor/builderctor.ts", "../../../node_modules/apache-arrow/visitor/typecomparator.ts", "../../../node_modules/apache-arrow/src/factories.ts", "../../../node_modules/apache-arrow/util/recordbatch.ts", "../../../node_modules/apache-arrow/src/table.ts", "../../../node_modules/apache-arrow/src/recordbatch.ts", "../../../node_modules/apache-arrow/ipc/message.ts", "../../../node_modules/apache-arrow/ipc/compression/validators.ts", "../../../node_modules/apache-arrow/ipc/compression/registry.ts", "../../../node_modules/apache-arrow/ipc/compression/constants.ts", "../../../node_modules/apache-arrow/ipc/reader.ts", "../../../node_modules/apache-arrow/visitor/vectorassembler.ts", "../../../node_modules/apache-arrow/visitor/jsontypeassembler.ts", "../../../node_modules/apache-arrow/visitor/jsonvectorassembler.ts", "../../../node_modules/apache-arrow/ipc/writer.ts", "../../../node_modules/apache-arrow/io/node/iterable.ts", "../../../node_modules/apache-arrow/io/node/builder.ts", "../../../node_modules/apache-arrow/io/node/reader.ts", "../../../node_modules/apache-arrow/io/node/writer.ts", "../../../node_modules/apache-arrow/io/whatwg/iterable.ts", "../../../node_modules/apache-arrow/io/whatwg/builder.ts", "../../../node_modules/apache-arrow/io/whatwg/reader.ts", "../../../node_modules/apache-arrow/io/whatwg/writer.ts", "../../../node_modules/apache-arrow/ipc/serialization.ts", "../../../node_modules/apache-arrow/util/typecheck.ts", "../../../node_modules/apache-arrow/src/Arrow.ts", "../../../node_modules/apache-arrow/src/Arrow.dom.ts", "../../../node_modules/apache-arrow/src/Arrow.node.ts", "../../core/src/schema-utils/lib/schema/convert-arrow-schema.ts", "../../core/src/schema-utils/lib/mesh/mesh-utils.ts", "../../core/src/schema/float16.ts", "../../core/src/schema/categories/category-mesh.ts", "../../core/src/schema/index.ts", "../../core/src/schema-utils/lib/arrow-utils/arrow-fixed-size-list-utils.ts", "../../core/src/schema-utils/lib/mesh/convert-mesh-to-table.ts", "../../core/src/schema-utils/lib/mesh/deduce-mesh-schema.ts", "../../core/src/schema-utils/index.ts", "../src/draco/lib/utils/get-draco-schema.ts", "../src/draco/lib/draco-parser.ts", "../src/draco/lib/parse-draco.ts", "../src/draco/lib/draco-library-loader.ts", "../src/draco/draco-libraries.ts", "../src/draco/lib/draco-module-loader.ts", "../../core/src/schema-utils/lib/arrow/split-arrow-buffers.ts", "../../core/src/schema-utils/lib/arrow/arrow-table-transport.ts", "../../core/src/schema-utils/arrow-transport.ts", "../src/draco/lib/utils/version.ts", "../src/draco/draco-format.ts", "../src/draco/draco-loader-options.ts", "../src/draco/draco-wasm-loader-with-parser.ts", "../src/draco-wasm-loader.ts", "../src/draco/draco-javascript-loader-with-parser.ts", "../src/draco-javascript-loader.ts", "../src/draco/draco3d-loader-with-parser.ts", "../src/draco3d-loader.ts", "../src/draco/draco-loader-types.ts", "../../core/src/polyfills/utils/is-browser.ts", "../../core/src/polyfills/text-encoder/encoding-indexes.ts", "../../core/src/polyfills/text-encoder/text-encoder.ts", "../../core/src/polyfills/buffer/btoa.node.ts", "../../core/src/polyfills/images/load-sharp.ts", "../../core/src/polyfills/images/node-image-formats.ts", "../../core/src/polyfills/images/parse-image-node.ts", "../../core/src/polyfills/utils/buffer-utils.ts", "../../core/src/polyfills/images/encode-image-node.ts", "../../core/src/polyfills/images/node-image-bitmap.ts", "../../core/src/polyfills/utils/path-utils.ts", "../../core/src/polyfills/filesystems/node-file.ts", "../../core/src/polyfills/filesystems/node-filesystem.ts", "../../core/src/polyfills/filesystems/fetch-node.ts", "../../core/src/polyfills/filesystems/stream-utils.node.ts", "../../core/src/polyfills/crypto/node-hash.ts", "../../core/src/polyfills/index.ts", "../../core/src/polyfills/streams/make-node-stream.ts", "../../core/src/polyfills/file/file-reader.ts", "../../core/src/polyfills/file/install-file-polyfills.ts", "../../core/src/polyfills/load-library/require-utils.node.ts", "../src/draco/workers/draco-worker-node.ts", "../src/draco/draco-loader.ts"],
4
+ "sourcesContent": ["/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\n/**\n * Is this value defined and not null?\n * @private\n */\nconst defined = (val) => typeof val !== 'undefined' && val !== null;\n\n/**\n * Is this value an object?\n * @private\n */\nconst object = (val) => typeof val === 'object';\n\n/**\n * Is this value a plain object?\n * @private\n */\nconst plainObject = (val) => Object.prototype.toString.call(val) === '[object Object]';\n\n/**\n * Is this value a function?\n * @private\n */\nconst fn = (val) => typeof val === 'function';\n\n/**\n * Is this value a boolean?\n * @private\n */\nconst bool = (val) => typeof val === 'boolean';\n\n/**\n * Is this value a Buffer object?\n * @private\n */\nconst buffer = (val) => val instanceof Buffer;\n\n/**\n * Is this value a typed array object?. E.g. Uint8Array or Uint8ClampedArray?\n * @private\n */\nconst typedArray = (val) => {\n if (defined(val)) {\n switch (val.constructor) {\n case Uint8Array:\n case Uint8ClampedArray:\n case Int8Array:\n case Uint16Array:\n case Int16Array:\n case Uint32Array:\n case Int32Array:\n case Float32Array:\n case Float64Array:\n return true;\n }\n }\n\n return false;\n};\n\n/**\n * Is this value an ArrayBuffer object?\n * @private\n */\nconst arrayBuffer = (val) => val instanceof ArrayBuffer;\n\n/**\n * Is this value a non-empty string?\n * @private\n */\nconst string = (val) => typeof val === 'string' && val.length > 0;\n\n/**\n * Is this value a real number?\n * @private\n */\nconst number = (val) => typeof val === 'number' && Number.isFinite(val);\n\n/**\n * Is this value an integer?\n * @private\n */\nconst integer = (val) => Number.isInteger(val);\n\n/**\n * Is this value within an inclusive given range?\n * @private\n */\nconst inRange = (val, min, max) => val >= min && val <= max;\n\n/**\n * Is this value within the elements of an array?\n * @private\n */\nconst inArray = (val, list) => list.includes(val);\n\n/**\n * Create an Error with a message relating to an invalid parameter.\n *\n * @param {string} name - parameter name.\n * @param {string} expected - description of the type/value/range expected.\n * @param {*} actual - the value received.\n * @returns {Error} Containing the formatted message.\n * @private\n */\nconst invalidParameterError = (name, expected, actual) => {\n let actualString;\n try {\n actualString = String(actual).slice(0, 100);\n } catch {}\n return new Error(\n `Expected ${expected} for ${name} but received ${actualString} of type ${typeof actual}`\n );\n};\n\n/**\n * Ensures an Error from C++ contains a JS stack.\n *\n * @param {Error} native - Error with message from C++.\n * @param {Error} context - Error with stack from JS.\n * @returns {Error} Error with message and stack.\n * @private\n */\nconst nativeError = (native, context) => {\n context.message = native.message;\n return context;\n};\n\nexport default {\n defined,\n object,\n plainObject,\n fn,\n bool,\n buffer,\n typedArray,\n arrayBuffer,\n string,\n number,\n integer,\n inRange,\n inArray,\n invalidParameterError,\n nativeError\n};\n", "// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst isLinux = () => process.platform === 'linux';\n\nlet report = null;\nconst getReport = () => {\n if (!report) {\n /* istanbul ignore next */\n if (isLinux() && process.report) {\n const orig = process.report.excludeNetwork;\n process.report.excludeNetwork = true;\n report = process.report.getReport();\n process.report.excludeNetwork = orig;\n } else {\n report = {};\n }\n }\n return report;\n};\n\nmodule.exports = { isLinux, getReport };\n", "// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst fs = require('fs');\n\nconst LDD_PATH = '/usr/bin/ldd';\nconst SELF_PATH = '/proc/self/exe';\nconst MAX_LENGTH = 2048;\n\n/**\n * Read the content of a file synchronous\n *\n * @param {string} path\n * @returns {Buffer}\n */\nconst readFileSync = (path) => {\n const fd = fs.openSync(path, 'r');\n const buffer = Buffer.alloc(MAX_LENGTH);\n const bytesRead = fs.readSync(fd, buffer, 0, MAX_LENGTH, 0);\n fs.close(fd, () => {});\n return buffer.subarray(0, bytesRead);\n};\n\n/**\n * Read the content of a file\n *\n * @param {string} path\n * @returns {Promise<Buffer>}\n */\nconst readFile = (path) => new Promise((resolve, reject) => {\n fs.open(path, 'r', (err, fd) => {\n if (err) {\n reject(err);\n } else {\n const buffer = Buffer.alloc(MAX_LENGTH);\n fs.read(fd, buffer, 0, MAX_LENGTH, 0, (_, bytesRead) => {\n resolve(buffer.subarray(0, bytesRead));\n fs.close(fd, () => {});\n });\n }\n });\n});\n\nmodule.exports = {\n LDD_PATH,\n SELF_PATH,\n readFileSync,\n readFile\n};\n", "// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst interpreterPath = (elf) => {\n if (elf.length < 64) {\n return null;\n }\n if (elf.readUInt32BE(0) !== 0x7F454C46) {\n // Unexpected magic bytes\n return null;\n }\n if (elf.readUInt8(4) !== 2) {\n // Not a 64-bit ELF\n return null;\n }\n if (elf.readUInt8(5) !== 1) {\n // Not little-endian\n return null;\n }\n const offset = elf.readUInt32LE(32);\n const size = elf.readUInt16LE(54);\n const count = elf.readUInt16LE(56);\n for (let i = 0; i < count; i++) {\n const headerOffset = offset + (i * size);\n const type = elf.readUInt32LE(headerOffset);\n if (type === 3) {\n const fileOffset = elf.readUInt32LE(headerOffset + 8);\n const fileSize = elf.readUInt32LE(headerOffset + 32);\n return elf.subarray(fileOffset, fileOffset + fileSize).toString().replace(/\\0.*$/g, '');\n }\n }\n return null;\n};\n\nmodule.exports = {\n interpreterPath\n};\n", "// Copyright 2017 Lovell Fuller and others.\n// SPDX-License-Identifier: Apache-2.0\n\n'use strict';\n\nconst childProcess = require('child_process');\nconst { isLinux, getReport } = require('./process');\nconst { LDD_PATH, SELF_PATH, readFile, readFileSync } = require('./filesystem');\nconst { interpreterPath } = require('./elf');\n\nlet cachedFamilyInterpreter;\nlet cachedFamilyFilesystem;\nlet cachedVersionFilesystem;\n\nconst command = 'getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true';\nlet commandOut = '';\n\nconst safeCommand = () => {\n if (!commandOut) {\n return new Promise((resolve) => {\n childProcess.exec(command, (err, out) => {\n commandOut = err ? ' ' : out;\n resolve(commandOut);\n });\n });\n }\n return commandOut;\n};\n\nconst safeCommandSync = () => {\n if (!commandOut) {\n try {\n commandOut = childProcess.execSync(command, { encoding: 'utf8' });\n } catch (_err) {\n commandOut = ' ';\n }\n }\n return commandOut;\n};\n\n/**\n * A String constant containing the value `glibc`.\n * @type {string}\n * @public\n */\nconst GLIBC = 'glibc';\n\n/**\n * A Regexp constant to get the GLIBC Version.\n * @type {string}\n */\nconst RE_GLIBC_VERSION = /LIBC[a-z0-9 \\-).]*?(\\d+\\.\\d+)/i;\n\n/**\n * A String constant containing the value `musl`.\n * @type {string}\n * @public\n */\nconst MUSL = 'musl';\n\nconst isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-');\n\nconst familyFromReport = () => {\n const report = getReport();\n if (report.header && report.header.glibcVersionRuntime) {\n return GLIBC;\n }\n if (Array.isArray(report.sharedObjects)) {\n if (report.sharedObjects.some(isFileMusl)) {\n return MUSL;\n }\n }\n return null;\n};\n\nconst familyFromCommand = (out) => {\n const [getconf, ldd1] = out.split(/[\\r\\n]+/);\n if (getconf && getconf.includes(GLIBC)) {\n return GLIBC;\n }\n if (ldd1 && ldd1.includes(MUSL)) {\n return MUSL;\n }\n return null;\n};\n\nconst familyFromInterpreterPath = (path) => {\n if (path) {\n if (path.includes('/ld-musl-')) {\n return MUSL;\n } else if (path.includes('/ld-linux-')) {\n return GLIBC;\n }\n }\n return null;\n};\n\nconst getFamilyFromLddContent = (content) => {\n content = content.toString();\n if (content.includes('musl')) {\n return MUSL;\n }\n if (content.includes('GNU C Library')) {\n return GLIBC;\n }\n return null;\n};\n\nconst familyFromFilesystem = async () => {\n if (cachedFamilyFilesystem !== undefined) {\n return cachedFamilyFilesystem;\n }\n cachedFamilyFilesystem = null;\n try {\n const lddContent = await readFile(LDD_PATH);\n cachedFamilyFilesystem = getFamilyFromLddContent(lddContent);\n } catch (e) {}\n return cachedFamilyFilesystem;\n};\n\nconst familyFromFilesystemSync = () => {\n if (cachedFamilyFilesystem !== undefined) {\n return cachedFamilyFilesystem;\n }\n cachedFamilyFilesystem = null;\n try {\n const lddContent = readFileSync(LDD_PATH);\n cachedFamilyFilesystem = getFamilyFromLddContent(lddContent);\n } catch (e) {}\n return cachedFamilyFilesystem;\n};\n\nconst familyFromInterpreter = async () => {\n if (cachedFamilyInterpreter !== undefined) {\n return cachedFamilyInterpreter;\n }\n cachedFamilyInterpreter = null;\n try {\n const selfContent = await readFile(SELF_PATH);\n const path = interpreterPath(selfContent);\n cachedFamilyInterpreter = familyFromInterpreterPath(path);\n } catch (e) {}\n return cachedFamilyInterpreter;\n};\n\nconst familyFromInterpreterSync = () => {\n if (cachedFamilyInterpreter !== undefined) {\n return cachedFamilyInterpreter;\n }\n cachedFamilyInterpreter = null;\n try {\n const selfContent = readFileSync(SELF_PATH);\n const path = interpreterPath(selfContent);\n cachedFamilyInterpreter = familyFromInterpreterPath(path);\n } catch (e) {}\n return cachedFamilyInterpreter;\n};\n\n/**\n * Resolves with the libc family when it can be determined, `null` otherwise.\n * @returns {Promise<?string>}\n */\nconst family = async () => {\n let family = null;\n if (isLinux()) {\n family = await familyFromInterpreter();\n if (!family) {\n family = await familyFromFilesystem();\n if (!family) {\n family = familyFromReport();\n }\n if (!family) {\n const out = await safeCommand();\n family = familyFromCommand(out);\n }\n }\n }\n return family;\n};\n\n/**\n * Returns the libc family when it can be determined, `null` otherwise.\n * @returns {?string}\n */\nconst familySync = () => {\n let family = null;\n if (isLinux()) {\n family = familyFromInterpreterSync();\n if (!family) {\n family = familyFromFilesystemSync();\n if (!family) {\n family = familyFromReport();\n }\n if (!family) {\n const out = safeCommandSync();\n family = familyFromCommand(out);\n }\n }\n }\n return family;\n};\n\n/**\n * Resolves `true` only when the platform is Linux and the libc family is not `glibc`.\n * @returns {Promise<boolean>}\n */\nconst isNonGlibcLinux = async () => isLinux() && await family() !== GLIBC;\n\n/**\n * Returns `true` only when the platform is Linux and the libc family is not `glibc`.\n * @returns {boolean}\n */\nconst isNonGlibcLinuxSync = () => isLinux() && familySync() !== GLIBC;\n\nconst versionFromFilesystem = async () => {\n if (cachedVersionFilesystem !== undefined) {\n return cachedVersionFilesystem;\n }\n cachedVersionFilesystem = null;\n try {\n const lddContent = await readFile(LDD_PATH);\n const versionMatch = lddContent.match(RE_GLIBC_VERSION);\n if (versionMatch) {\n cachedVersionFilesystem = versionMatch[1];\n }\n } catch (e) {}\n return cachedVersionFilesystem;\n};\n\nconst versionFromFilesystemSync = () => {\n if (cachedVersionFilesystem !== undefined) {\n return cachedVersionFilesystem;\n }\n cachedVersionFilesystem = null;\n try {\n const lddContent = readFileSync(LDD_PATH);\n const versionMatch = lddContent.match(RE_GLIBC_VERSION);\n if (versionMatch) {\n cachedVersionFilesystem = versionMatch[1];\n }\n } catch (e) {}\n return cachedVersionFilesystem;\n};\n\nconst versionFromReport = () => {\n const report = getReport();\n if (report.header && report.header.glibcVersionRuntime) {\n return report.header.glibcVersionRuntime;\n }\n return null;\n};\n\nconst versionSuffix = (s) => s.trim().split(/\\s+/)[1];\n\nconst versionFromCommand = (out) => {\n const [getconf, ldd1, ldd2] = out.split(/[\\r\\n]+/);\n if (getconf && getconf.includes(GLIBC)) {\n return versionSuffix(getconf);\n }\n if (ldd1 && ldd2 && ldd1.includes(MUSL)) {\n return versionSuffix(ldd2);\n }\n return null;\n};\n\n/**\n * Resolves with the libc version when it can be determined, `null` otherwise.\n * @returns {Promise<?string>}\n */\nconst version = async () => {\n let version = null;\n if (isLinux()) {\n version = await versionFromFilesystem();\n if (!version) {\n version = versionFromReport();\n }\n if (!version) {\n const out = await safeCommand();\n version = versionFromCommand(out);\n }\n }\n return version;\n};\n\n/**\n * Returns the libc version when it can be determined, `null` otherwise.\n * @returns {?string}\n */\nconst versionSync = () => {\n let version = null;\n if (isLinux()) {\n version = versionFromFilesystemSync();\n if (!version) {\n version = versionFromReport();\n }\n if (!version) {\n const out = safeCommandSync();\n version = versionFromCommand(out);\n }\n }\n return version;\n};\n\nmodule.exports = {\n GLIBC,\n MUSL,\n family,\n familySync,\n isNonGlibcLinux,\n isNonGlibcLinuxSync,\n version,\n versionSync\n};\n", "'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n", "'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifier, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n", "'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\n\nconst isPrereleaseIdentifier = (prerelease, identifier) => {\n const identifiers = identifier.split('.')\n if (identifiers.length > prerelease.length) {\n return false\n }\n\n for (let i = 0; i < identifiers.length; i++) {\n if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {\n return false\n }\n }\n\n return true\n}\n\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (isPrereleaseIdentifier(this.prerelease, identifier)) {\n const prereleaseBase = this.prerelease[identifier.split('.').length]\n if (isNaN(prereleaseBase)) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n", "'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are prereleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\n\nconst parse = require('./parse')\nconst constants = require('../internal/constants')\nconst SemVer = require('../classes/semver')\n\nconst truncate = (version, truncation, options) => {\n if (!constants.RELEASE_TYPES.includes(truncation)) {\n return null\n }\n\n const clonedVersion = cloneInputVersion(version, options)\n return clonedVersion && doTruncation(clonedVersion, truncation)\n}\n\nconst cloneInputVersion = (version, options) => {\n const versionStringToParse = (\n version instanceof SemVer ? version.version : version\n )\n\n return parse(versionStringToParse, options)\n}\n\nconst doTruncation = (version, truncation) => {\n if (isPrerelease(truncation)) {\n return version.version\n }\n\n version.prerelease = []\n\n switch (truncation) {\n case 'major':\n version.minor = 0\n version.patch = 0\n break\n case 'minor':\n version.patch = 0\n break\n }\n\n return version.format()\n}\n\nconst isPrerelease = (type) => {\n return type.startsWith('pre')\n}\n\nmodule.exports = truncate\n", "'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n", "'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // strip build metadata so it can't bleed into the version\n range = range.replace(BUILDSTRIPRE, '')\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n src,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\n// unbounded global build-metadata stripper used by parseRange\nconst BUILDSTRIPRE = new RegExp(src[t.BUILD], 'g')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\nconst invalidXRangeOrder = (M, m, p) => (\n (isX(M) && !isX(m)) ||\n (isX(m) && p && !isX(p))\n)\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n // if we're including prereleases in the match, then the lower bound is\n // -0, the lowest possible prerelease value, just like x-ranges and carets.\n // this keeps `~1.2` equivalent to the `1.2.x` x-range it's documented as.\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n if (invalidXRangeOrder(M, m, p)) {\n return comp\n }\n\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If LT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !c.test(gt.semver)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !c.test(lt.semver)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst truncate = require('./functions/truncate')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n truncate,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "{\n \"name\": \"sharp\",\n \"description\": \"High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images\",\n \"version\": \"0.35.5\",\n \"author\": \"Lovell Fuller <npm@lovell.info>\",\n \"homepage\": \"https://sharp.pixelplumbing.com\",\n \"contributors\": [\n \"Pierre Inglebert <pierre.inglebert@gmail.com>\",\n \"Jonathan Ong <jonathanrichardong@gmail.com>\",\n \"Chanon Sajjamanochai <chanon.s@gmail.com>\",\n \"Juliano Julio <julianojulio@gmail.com>\",\n \"Daniel Gasienica <daniel@gasienica.ch>\",\n \"Julian Walker <julian@fiftythree.com>\",\n \"Amit Pitaru <pitaru.amit@gmail.com>\",\n \"Brandon Aaron <hello.brandon@aaron.sh>\",\n \"Andreas Lind <andreas@one.com>\",\n \"Maurus Cuelenaere <mcuelenaere@gmail.com>\",\n \"Linus Unneb\u00E4ck <linus@folkdatorn.se>\",\n \"Victor Mateevitsi <mvictoras@gmail.com>\",\n \"Alaric Holloway <alaric.holloway@gmail.com>\",\n \"Bernhard K. Weisshuhn <bkw@codingforce.com>\",\n \"Chris Riley <criley@primedia.com>\",\n \"David Carley <dacarley@gmail.com>\",\n \"John Tobin <john@limelightmobileinc.com>\",\n \"Kenton Gray <kentongray@gmail.com>\",\n \"Felix B\u00FCnemann <Felix.Buenemann@gmail.com>\",\n \"Samy Al Zahrani <samyalzahrany@gmail.com>\",\n \"Chintan Thakkar <lemnisk8@gmail.com>\",\n \"F. Orlando Galashan <frulo@gmx.de>\",\n \"Kleis Auke Wolthuizen <info@kleisauke.nl>\",\n \"Matt Hirsch <mhirsch@media.mit.edu>\",\n \"Matthias Thoemmes <thoemmes@gmail.com>\",\n \"Patrick Paskaris <patrick@paskaris.gr>\",\n \"J\u00E9r\u00E9my Lal <kapouer@melix.org>\",\n \"Rahul Nanwani <r.nanwani@gmail.com>\",\n \"Alice Monday <alice0meta@gmail.com>\",\n \"Kristo Jorgenson <kristo.jorgenson@gmail.com>\",\n \"YvesBos <yves_bos@outlook.com>\",\n \"Guy Maliar <guy@tailorbrands.com>\",\n \"Nicolas Coden <nicolas@ncoden.fr>\",\n \"Matt Parrish <matt.r.parrish@gmail.com>\",\n \"Marcel Bretschneider <marcel.bretschneider@gmail.com>\",\n \"Matthew McEachen <matthew+github@mceachen.org>\",\n \"Jarda Kot\u011B\u0161ovec <jarda.kotesovec@gmail.com>\",\n \"Kenric D'Souza <kenric.dsouza@gmail.com>\",\n \"Oleh Aleinyk <oleg.aleynik@gmail.com>\",\n \"Marcel Bretschneider <marcel.bretschneider@gmail.com>\",\n \"Andrea Bianco <andrea.bianco@unibas.ch>\",\n \"Rik Heywood <rik@rik.org>\",\n \"Thomas Parisot <hi@oncletom.io>\",\n \"Nathan Graves <nathanrgraves+github@gmail.com>\",\n \"Tom Lokhorst <tom@lokhorst.eu>\",\n \"Espen Hovlandsdal <espen@hovlandsdal.com>\",\n \"Sylvain Dumont <sylvain.dumont35@gmail.com>\",\n \"Alun Davies <alun.owain.davies@googlemail.com>\",\n \"Aidan Hoolachan <ajhoolachan21@gmail.com>\",\n \"Axel Eirola <axel.eirola@iki.fi>\",\n \"Freezy <freezy@xbmc.org>\",\n \"Daiz <taneli.vatanen@gmail.com>\",\n \"Julian Aubourg <j@ubourg.net>\",\n \"Keith Belovay <keith@picthrive.com>\",\n \"Michael B. Klein <mbklein@gmail.com>\",\n \"Jordan Prudhomme <jordan@raboland.fr>\",\n \"Ilya Ovdin <iovdin@gmail.com>\",\n \"Andargor <andargor@yahoo.com>\",\n \"Paul Neave <paul.neave@gmail.com>\",\n \"Brendan Kennedy <brenwken@gmail.com>\",\n \"Brychan Bennett-Odlum <git@brychan.io>\",\n \"Edward Silverton <e.silverton@gmail.com>\",\n \"Roman Malieiev <aromaleev@gmail.com>\",\n \"Tomas Szabo <tomas.szabo@deftomat.com>\",\n \"Robert O'Rourke <robert@o-rourke.org>\",\n \"Guillermo Alfonso Varela Chouci\u00F1o <guillevch@gmail.com>\",\n \"Christian Flintrup <chr@gigahost.dk>\",\n \"Manan Jadhav <manan@motionden.com>\",\n \"Leon Radley <leon@radley.se>\",\n \"alza54 <alza54@thiocod.in>\",\n \"Jacob Smith <jacob@frende.me>\",\n \"Michael Nutt <michael@nutt.im>\",\n \"Brad Parham <baparham@gmail.com>\",\n \"Taneli Vatanen <taneli.vatanen@gmail.com>\",\n \"Joris Dugu\u00E9 <zaruike10@gmail.com>\",\n \"Chris Banks <christopher.bradley.banks@gmail.com>\",\n \"Ompal Singh <ompal.hitm09@gmail.com>\",\n \"Brodan <christopher.hranj@gmail.com>\",\n \"Ankur Parihar <ankur.github@gmail.com>\",\n \"Brahim Ait elhaj <brahima@gmail.com>\",\n \"Mart Jansink <m.jansink@gmail.com>\",\n \"Lachlan Newman <lachnewman007@gmail.com>\",\n \"Dennis Beatty <dennis@dcbeatty.com>\",\n \"Ingvar Stepanyan <me@rreverser.com>\",\n \"Don Denton <don@happycollision.com>\",\n \"Dmytro Tiapukhin <cool.gegeg@gmail.com>\",\n \"Florian Lefebvre <contact@florian-lefebvre.dev>\"\n ],\n \"scripts\": {\n \"build\": \"node install/build.js\",\n \"build:dist\": \"node scripts/build.mjs\",\n \"clean\": \"rm -rf src/build/ test/fixtures/output.*\",\n \"test\": \"npm run lint && npm run test-unit\",\n \"lint\": \"npm run lint-cpp && npm run lint-js && npm run lint-types && npm run lint-publish\",\n \"lint-cpp\": \"cpplint --quiet src/*.h src/*.cc\",\n \"lint-js\": \"biome lint\",\n \"lint-publish\": \"publint --strict\",\n \"lint-types\": \"tsd --files ./test/types/sharp.test-d.{cts,mts}\",\n \"test-leak\": \"./test/leak/leak.sh\",\n \"test-unit\": \"node --experimental-test-coverage test/unit.mjs\",\n \"package-from-local-build\": \"node npm/from-local-build.js\",\n \"package-wasm-wrappers\": \"node npm/wasm-wrappers.js\",\n \"package-release-notes\": \"node npm/release-notes.js\",\n \"docs-build\": \"node docs/build.mjs\",\n \"docs-serve\": \"cd docs && npm start\",\n \"docs-publish\": \"cd docs && npm run build && npx firebase-tools deploy --project pixelplumbing --only hosting:pixelplumbing-sharp\"\n },\n \"type\": \"commonjs\",\n \"files\": [\n \"dist\",\n \"install\",\n \"lib/index.d.ts\",\n \"src/*.{cc,h,gyp}\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.mts\",\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.mts\",\n \"default\": \"./dist/index.mjs\"\n },\n \"require\": {\n \"types\": \"./dist/index.d.cts\",\n \"default\": \"./dist/index.cjs\"\n }\n }\n },\n \"sideEffects\": true,\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/lovell/sharp.git\"\n },\n \"keywords\": [\n \"jpeg\",\n \"png\",\n \"webp\",\n \"avif\",\n \"tiff\",\n \"gif\",\n \"svg\",\n \"jp2\",\n \"dzi\",\n \"image\",\n \"resize\",\n \"thumbnail\",\n \"crop\",\n \"embed\",\n \"libvips\",\n \"vips\"\n ],\n \"dependencies\": {\n \"@img/colour\": \"^1.1.0\",\n \"detect-libc\": \"^2.1.2\",\n \"semver\": \"^7.8.5\"\n },\n \"optionalDependencies\": {\n \"@img/sharp-darwin-arm64\": \"0.35.5\",\n \"@img/sharp-darwin-x64\": \"0.35.5\",\n \"@img/sharp-freebsd-wasm32\": \"0.35.5\",\n \"@img/sharp-libvips-darwin-arm64\": \"1.3.4\",\n \"@img/sharp-libvips-darwin-x64\": \"1.3.4\",\n \"@img/sharp-libvips-linux-arm\": \"1.3.4\",\n \"@img/sharp-libvips-linux-arm64\": \"1.3.4\",\n \"@img/sharp-libvips-linux-ppc64\": \"1.3.4\",\n \"@img/sharp-libvips-linux-riscv64\": \"1.3.4\",\n \"@img/sharp-libvips-linux-s390x\": \"1.3.4\",\n \"@img/sharp-libvips-linux-x64\": \"1.3.4\",\n \"@img/sharp-libvips-linuxmusl-arm64\": \"1.3.4\",\n \"@img/sharp-libvips-linuxmusl-x64\": \"1.3.4\",\n \"@img/sharp-linux-arm\": \"0.35.5\",\n \"@img/sharp-linux-arm64\": \"0.35.5\",\n \"@img/sharp-linux-ppc64\": \"0.35.5\",\n \"@img/sharp-linux-riscv64\": \"0.35.5\",\n \"@img/sharp-linux-s390x\": \"0.35.5\",\n \"@img/sharp-linux-x64\": \"0.35.5\",\n \"@img/sharp-linuxmusl-arm64\": \"0.35.5\",\n \"@img/sharp-linuxmusl-x64\": \"0.35.5\",\n \"@img/sharp-webcontainers-wasm32\": \"0.35.5\",\n \"@img/sharp-win32-arm64\": \"0.35.5\",\n \"@img/sharp-win32-ia32\": \"0.35.5\",\n \"@img/sharp-win32-x64\": \"0.35.5\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n }\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"^2.5.14\",\n \"@cpplint/cli\": \"^0.1.0\",\n \"@emnapi/runtime\": \"^1.11.3\",\n \"@img/sharp-libvips-dev\": \"1.3.4\",\n \"@img/sharp-libvips-dev-wasm32\": \"1.3.4\",\n \"@img/sharp-libvips-win32-arm64\": \"1.3.4\",\n \"@img/sharp-libvips-win32-ia32\": \"1.3.4\",\n \"@img/sharp-libvips-win32-x64\": \"1.3.4\",\n \"@types/node\": \"*\",\n \"emnapi\": \"^1.11.3\",\n \"exif-reader\": \"^2.0.3\",\n \"icc\": \"^4.0.0\",\n \"node-addon-api\": \"^8.9.2\",\n \"node-gyp\": \"^12.4.0\",\n \"publint\": \"^0.3.24\",\n \"tar-fs\": \"^3.1.3\",\n \"tsd\": \"^0.33.0\",\n \"yauzl\": \"^3.4.0\"\n },\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=20.9.0\"\n },\n \"config\": {\n \"libvips\": \">=8.18.7\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/libvips\"\n }\n}\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport { spawnSync } from 'node:child_process';\nimport { createHash } from 'node:crypto';\nimport semver from 'semver';\nimport detectLibc from 'detect-libc';\nimport pkg from '../package.json' with { type: 'json' };\n\n/* node:coverage ignore next */\nconst minimumLibvipsVersionLabelled = process.env.npm_package_config_libvips || pkg.config.libvips;\nconst minimumLibvipsVersion = semver.coerce(minimumLibvipsVersionLabelled).version;\n\nconst prebuiltPlatforms = [\n 'darwin-arm64', 'darwin-x64',\n 'freebsd-arm64', 'freebsd-x64',\n 'linux-arm', 'linux-arm64', 'linux-ppc64', 'linux-riscv64', 'linux-s390x', 'linux-wasm32', 'linux-x64',\n 'linuxmusl-arm64', 'linuxmusl-x64',\n 'win32-arm64', 'win32-ia32', 'win32-x64'\n];\n\nconst spawnSyncOptions = {\n encoding: 'utf8',\n shell: true\n};\n\nconst log = (item) => {\n if (item instanceof Error) {\n console.error(`sharp: Installation error: ${item.message}`);\n } else {\n console.log(`sharp: ${item}`);\n }\n};\n\n/* node:coverage disable */\n\nconst runtimeLibc = () => detectLibc.isNonGlibcLinuxSync() ? detectLibc.familySync() : '';\n\nconst runtimePlatformArch = () => `${process.platform}${runtimeLibc()}-${process.arch}`;\n\nconst buildPlatformArch = () => {\n if (isEmscripten()) {\n return 'wasm32';\n }\n const { npm_config_arch, npm_config_platform, npm_config_libc } = process.env;\n const libc = typeof npm_config_libc === 'string' ? npm_config_libc : runtimeLibc();\n return `${npm_config_platform || process.platform}${libc}-${npm_config_arch || process.arch}`;\n};\n\nconst buildSharpLibvipsIncludeDir = () => {\n try {\n return require(`@img/sharp-libvips-dev-${buildPlatformArch()}/include`);\n } catch {\n try {\n return require('@img/sharp-libvips-dev/include');\n } catch {}\n }\n return '';\n};\n\nconst buildSharpLibvipsCPlusPlusDir = () => {\n try {\n return require('@img/sharp-libvips-dev/cplusplus');\n } catch {}\n return '';\n};\n\nconst buildSharpLibvipsLibDir = () => {\n try {\n return require(`@img/sharp-libvips-dev-${buildPlatformArch()}/lib`);\n } catch {\n try {\n return require(`@img/sharp-libvips-${buildPlatformArch()}/lib`);\n } catch {}\n }\n return '';\n};\n\nconst isUnsupportedNodeRuntime = () => {\n if (process.release?.name === 'node' && process.versions) {\n if (!semver.satisfies(process.versions.node, pkg.engines.node)) {\n return { found: process.versions.node, expected: pkg.engines.node };\n }\n }\n};\n\nconst isEmscripten = () => {\n const { CC } = process.env;\n return Boolean(CC?.endsWith('/emcc'));\n};\n\nconst isRosetta = () => {\n if (process.platform === 'darwin' && process.arch === 'x64') {\n const translated = spawnSync('sysctl sysctl.proc_translated', spawnSyncOptions).stdout;\n return (translated || '').trim() === 'sysctl.proc_translated: 1';\n }\n return false;\n};\n\n/* node:coverage enable */\n\nconst sha512 = (s) => createHash('sha512').update(s).digest('hex');\n\nconst yarnLocator = () => {\n try {\n const identHash = sha512(`imgsharp-libvips-${buildPlatformArch()}`);\n const npmVersion = semver.coerce(pkg.optionalDependencies[`@img/sharp-libvips-${buildPlatformArch()}`], {\n includePrerelease: true\n }).version;\n return sha512(`${identHash}npm:${npmVersion}`).slice(0, 10);\n } catch {}\n return '';\n};\n\n/* node:coverage disable */\n\nconst spawnRebuild = () =>\n spawnSync(`node-gyp rebuild --directory=src ${isEmscripten() ? '--nodedir=emscripten' : ''}`, {\n ...spawnSyncOptions,\n stdio: 'inherit'\n }).status;\n\nconst globalLibvipsVersion = () => {\n if (process.platform !== 'win32') {\n const globalLibvipsVersion = spawnSync('pkg-config --modversion vips-cpp', {\n ...spawnSyncOptions,\n env: {\n ...process.env,\n PKG_CONFIG_PATH: pkgConfigPath()\n }\n }).stdout;\n return (globalLibvipsVersion || '').trim();\n } else {\n return '';\n }\n};\n\nconst getBrewPkgConfigPath = () => {\n try {\n const brewPrefix = (spawnSync('brew', ['--prefix'], { encoding: 'utf8' }).stdout || '').trim();\n if (brewPrefix) {\n return `${brewPrefix}/lib/pkgconfig`;\n }\n } catch (_err) {}\n return undefined;\n};\n\nconst getPkgConfigPath = () => {\n try {\n const pkgConfigPath = (spawnSync('pkg-config', ['--variable', 'pc_path', 'pkg-config'], { encoding: 'utf8' }).stdout || '').trim();\n if (pkgConfigPath) {\n return pkgConfigPath;\n }\n } catch (_err) {}\n return undefined;\n};\n\n/* node:coverage enable */\n\nconst pkgConfigPath = () => {\n if (process.platform !== 'win32') {\n return [\n getBrewPkgConfigPath(),\n getPkgConfigPath(),\n process.env.PKG_CONFIG_PATH\n ].filter(Boolean).join(':');\n } else {\n return '';\n }\n};\n\nconst skipSearch = (status, reason, logger) => {\n if (logger) {\n logger(`Detected ${reason}, skipping search for globally-installed libvips`);\n }\n return status;\n};\n\nconst useGlobalLibvips = (logger) => {\n if (Boolean(process.env.SHARP_IGNORE_GLOBAL_LIBVIPS) === true) {\n return skipSearch(false, 'SHARP_IGNORE_GLOBAL_LIBVIPS', logger);\n }\n if (Boolean(process.env.SHARP_FORCE_GLOBAL_LIBVIPS) === true) {\n return skipSearch(true, 'SHARP_FORCE_GLOBAL_LIBVIPS', logger);\n }\n /* node:coverage ignore next 3 */\n if (isRosetta()) {\n return skipSearch(false, 'Rosetta', logger);\n }\n const globalVipsVersion = globalLibvipsVersion();\n /* node:coverage ignore next */\n return !!globalVipsVersion && semver.gte(globalVipsVersion, minimumLibvipsVersion);\n};\n\nexport default {\n minimumLibvipsVersion,\n prebuiltPlatforms,\n buildPlatformArch,\n buildSharpLibvipsIncludeDir,\n buildSharpLibvipsCPlusPlusDir,\n buildSharpLibvipsLibDir,\n isUnsupportedNodeRuntime,\n runtimePlatformArch,\n log,\n yarnLocator,\n spawnRebuild,\n globalLibvipsVersion,\n pkgConfigPath,\n useGlobalLibvips\n};\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\n// Inspects the runtime environment and exports the relevant sharp.node binary\n\nimport { createRequire } from \"node:module\"\nimport { familySync, versionSync } from \"detect-libc\";\n\nimport libvips from \"./libvips.mjs\";\nimport pkg from '../package.json' with { type: 'json' };\n\nconst require = createRequire(import.meta.url);\nconst { version } = pkg;\n\nconst { runtimePlatformArch, isUnsupportedNodeRuntime, prebuiltPlatforms, minimumLibvipsVersion } = libvips;\nconst runtimePlatform = runtimePlatformArch();\n\n/* node:coverage disable */\n\nlet sharp;\nconst errors = [];\ntry {\n sharp = require(`../src/build/Release/sharp-${runtimePlatform}-${version}.node`);\n} catch (err) {\n errors.push(err);\n}\nif (!sharp) {\n try {\n sharp = require(`../src/build/Release/sharp-wasm32-${version}.node`);\n } catch (err) {\n errors.push(err);\n }\n}\nif (!sharp) {\n try {\n switch (runtimePlatform) {\n case \"darwin-arm64\":\n sharp = require(\"@img/sharp-darwin-arm64/sharp.node\");\n break;\n case \"darwin-x64\":\n sharp = require(\"@img/sharp-darwin-x64/sharp.node\");\n break;\n case \"linux-arm\":\n sharp = require(\"@img/sharp-linux-arm/sharp.node\");\n break;\n case \"linux-arm64\":\n sharp = require(\"@img/sharp-linux-arm64/sharp.node\");\n break;\n case \"linux-ppc64\":\n sharp = require(\"@img/sharp-linux-ppc64/sharp.node\");\n break;\n case \"linux-riscv64\":\n sharp = require(\"@img/sharp-linux-riscv64/sharp.node\");\n break;\n case \"linux-s390x\":\n sharp = require(\"@img/sharp-linux-s390x/sharp.node\");\n break;\n case \"linux-x64\":\n sharp = require(\"@img/sharp-linux-x64/sharp.node\");\n break;\n case \"linuxmusl-arm64\":\n sharp = require(\"@img/sharp-linuxmusl-arm64/sharp.node\");\n break;\n case \"linuxmusl-x64\":\n sharp = require(\"@img/sharp-linuxmusl-x64/sharp.node\");\n break;\n case \"win32-arm64\":\n sharp = require(\"@img/sharp-win32-arm64/sharp.node\");\n break;\n case \"win32-ia32\":\n sharp = require(\"@img/sharp-win32-ia32/sharp.node\");\n break;\n case \"win32-x64\":\n sharp = require(\"@img/sharp-win32-x64/sharp.node\");\n break;\n case \"freebsd-arm64\":\n case \"freebsd-x64\":\n sharp = require(\"@img/sharp-freebsd-wasm32/sharp.node\");\n break;\n case \"linux-wasm32\":\n sharp = require(\"@img/sharp-webcontainers-wasm32/sharp.node\");\n break;\n }\n if (sharp && [\"linux-x64\", \"linuxmusl-x64\"].includes(runtimePlatform) && !sharp._isUsingX64V2()) {\n const err = new Error(\"Prebuilt binaries for Linux x64 require v2 microarchitecture\");\n err.code = \"Unsupported CPU\";\n errors.push(err);\n sharp = null;\n }\n if (sharp && process.versions.electron && runtimePlatform.startsWith(\"linux\")) {\n process.emitWarning(\n \"Binaries provided by Electron for use on Linux may be incompatible with sharp - see https://sharp.pixelplumbing.com/install#electron-and-linux\",\n { code: \"SharpElectronLinux\" }\n );\n }\n } catch (err) {\n errors.push(err);\n }\n}\nif (!sharp) {\n try {\n sharp = require(\"@img/sharp-wasm32/sharp.node\");\n } catch (err) {\n errors.push(err);\n }\n}\n\nif (!sharp) {\n const [isLinux, isMacOs, isWindows] = [\"linux\", \"darwin\", \"win32\"].map((os) => runtimePlatform.startsWith(os));\n\n const help = [`Could not load the \"sharp\" module using the ${runtimePlatform} runtime`];\n errors.forEach((err) => {\n if (!err.code?.endsWith(\"MODULE_NOT_FOUND\")) {\n help.push(err.code ? `${err.code}: ${err.message}` : err.message);\n }\n });\n const messages = errors.map((err) => err.message).join(\" \");\n help.push(\"Possible solutions:\");\n // Common error messages\n if (isUnsupportedNodeRuntime()) {\n const { found, expected } = isUnsupportedNodeRuntime();\n help.push(\"- Please upgrade Node.js:\", ` Found ${found}`, ` Requires ${expected}`);\n } else if (prebuiltPlatforms.includes(runtimePlatform) && !/libstdc\\+\\+\\.so/.test(messages)) {\n const [os, cpu] = runtimePlatform.split(\"-\");\n const libc = os.endsWith(\"musl\") ? \" --libc=musl\" : \"\";\n help.push(\n \"- Ensure optional dependencies can be installed:\",\n \" npm install --include=optional sharp\",\n \"- Ensure your package manager supports multi-platform installation:\",\n \" See https://sharp.pixelplumbing.com/install#cross-platform\",\n \"- Add platform-specific dependencies:\",\n ` npm install --os=${os.replace(\"musl\", \"\")}${libc} --cpu=${cpu} sharp`,\n );\n } else {\n help.push(\n `- Manually install libvips >= ${minimumLibvipsVersion}`,\n \" See https://sharp.pixelplumbing.com/install#building-from-source\",\n \"- Add WebAssembly-based dependencies:\",\n \" npm install sharp @img/sharp-wasm32\",\n );\n }\n if (isLinux && /(symbol not found|CXXABI_)/i.test(messages)) {\n try {\n const { config } = require(`@img/sharp-libvips-${runtimePlatform}/package`);\n const libcFound = `${familySync()} ${versionSync()}`;\n const libcRequires = `${config.musl ? \"musl\" : \"glibc\"} ${config.musl || config.glibc}`;\n help.push(\"- Update your OS:\", ` Found ${libcFound}`, ` Requires ${libcRequires}`);\n } catch (_errEngines) {}\n }\n if (isLinux && /\\/snap\\/core[0-9]{2}/.test(messages)) {\n help.push(\"- Remove the Node.js Snap, which does not support native modules\", \" snap remove node\");\n }\n if (isMacOs && /Incompatible library version/.test(messages)) {\n help.push(\"- Update Homebrew:\", \" brew update && brew upgrade vips\");\n }\n if (errors.some((err) => err.code === \"ERR_DLOPEN_DISABLED\")) {\n help.push(\"- Run Node.js without using the --no-addons flag\");\n }\n // Link to installation docs\n if (isWindows && /The specified procedure could not be found/.test(messages)) {\n help.push(\n \"- Using the canvas package on Windows?\",\n \" See https://sharp.pixelplumbing.com/install#canvas-and-windows\",\n \"- Check for outdated versions of sharp in the dependency tree:\",\n \" npm ls sharp\",\n );\n }\n help.push(\"- Consult the installation documentation:\", \" See https://sharp.pixelplumbing.com/install\");\n throw new Error(help.join(\"\\n\"));\n}\n\nexport default sharp;\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport util from 'node:util';\nimport stream from 'node:stream';\nimport is from './is.mjs';\n\nimport './sharp.mjs';\n\n// Use NODE_DEBUG=sharp to enable libvips warnings\nconst debuglog = util.debuglog('sharp');\n\nconst queueListener = (queueLength) => {\n Sharp.queue.emit('change', queueLength);\n};\n\n/**\n * Constructor factory to create an instance of `sharp`, to which further methods are chained.\n *\n * JPEG, PNG, WebP, GIF, AVIF or TIFF format image data can be streamed out from this object.\n * When using Stream based output, derived attributes are available from the `info` event.\n *\n * Non-critical problems encountered during processing are emitted as `warning` events.\n *\n * Implements the [stream.Duplex](http://nodejs.org/api/stream.html#stream_class_stream_duplex) class.\n *\n * When loading more than one page/frame of an animated image,\n * these are combined as a vertically-stacked \"toilet roll\" image\n * where the overall height is the `pageHeight` multiplied by the number of `pages`.\n *\n * @constructs Sharp\n *\n * @emits Sharp#info\n * @emits Sharp#warning\n *\n * @example\n * sharp('input.jpg')\n * .resize(300, 200)\n * .toFile('output.jpg', function(err) {\n * // output.jpg is a 300 pixels wide and 200 pixels high image\n * // containing a scaled and cropped version of input.jpg\n * });\n *\n * @example\n * // Read image data from remote URL,\n * // resize to 300 pixels wide,\n * // emit an 'info' event with calculated dimensions\n * // and finally write image data to writableStream\n * const { body } = await fetch('https://...');\n * const readableStream = Readable.fromWeb(body);\n * const transformer = sharp()\n * .resize(300)\n * .on('info', ({ height }) => {\n * console.log(`Image height is ${height}`);\n * });\n * readableStream.pipe(transformer).pipe(writableStream);\n *\n * @example\n * // Web Streams API, requires Node.js >= 24.15.0\n * import { Duplex } from 'node:stream';\n *\n * const { body } = await fetch('https://...');\n * const transformer = Duplex.toWeb(\n * sharp().resize(300),\n * { readableType: 'bytes' }\n * );\n * body.pipeThrough(transformer).pipeTo(writable);\n *\n * @example\n * // Create a blank 300x200 PNG image of semi-translucent red pixels\n * sharp({\n * create: {\n * width: 300,\n * height: 200,\n * channels: 4,\n * background: { r: 255, g: 0, b: 0, alpha: 0.5 }\n * }\n * })\n * .png()\n * .toBuffer()\n * .then( ... );\n *\n * @example\n * // Convert an animated GIF to an animated WebP\n * await sharp('in.gif', { animated: true }).toFile('out.webp');\n *\n * @example\n * // Read a raw array of pixels and save it to a png\n * const input = Uint8Array.from([255, 255, 255, 0, 0, 0]); // or Uint8ClampedArray\n * const image = sharp(input, {\n * // because the input does not contain its dimensions or how many channels it has\n * // we need to specify it in the constructor options\n * raw: {\n * width: 2,\n * height: 1,\n * channels: 3\n * }\n * });\n * await image.toFile('my-two-pixels.png');\n *\n * @example\n * // Generate RGB Gaussian noise\n * await sharp({\n * create: {\n * width: 300,\n * height: 200,\n * channels: 3,\n * noise: {\n * type: 'gaussian',\n * mean: 128,\n * sigma: 30\n * }\n * }\n * }).toFile('noise.png');\n *\n * @example\n * // Generate an image from text\n * await sharp({\n * text: {\n * text: 'Hello, world!',\n * width: 400, // max width\n * height: 300 // max height\n * }\n * }).toFile('text_bw.png');\n *\n * @example\n * // Generate an rgba image from text using pango markup and font\n * await sharp({\n * text: {\n * text: '<span foreground=\"red\">Red!</span><span background=\"cyan\">blue</span>',\n * font: 'sans',\n * rgba: true,\n * dpi: 300\n * }\n * }).toFile('text_rgba.png');\n *\n * @example\n * // Join four input images as a 2x2 grid with a 4 pixel gutter\n * const data = await sharp(\n * [image1, image2, image3, image4],\n * { join: { across: 2, shim: 4 } }\n * ).toBuffer();\n *\n * @example\n * // Generate a two-frame animated image from emoji\n * const images = ['\uD83D\uDE00', '\uD83D\uDE1B'].map(text => ({\n * text: { text, width: 64, height: 64, channels: 4, rgba: true }\n * }));\n * await sharp(images, { join: { animated: true } }).toFile('out.gif');\n *\n * @param {(Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array|Float32Array|Float64Array|string|Array)} [input] - if present, can be\n * a Buffer / ArrayBuffer / Uint8Array / Uint8ClampedArray containing JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image data, or\n * a TypedArray containing raw pixel image data, or\n * a String containing the filesystem path to an JPEG, PNG, WebP, AVIF, GIF, SVG or TIFF image file.\n * An array of inputs can be provided, and these will be joined together.\n * JPEG, PNG, WebP, AVIF, GIF, SVG, TIFF or raw pixel image data can be streamed into the object when not present.\n * @param {Object} [options] - if present, is an Object with optional attributes.\n * @param {string} [options.failOn='warning'] - When to abort processing of invalid pixel data, one of (in order of sensitivity, least to most): 'none', 'truncated', 'error', 'warning'. Higher levels imply lower levels. Invalid metadata will always abort. Use the default 'warning' level with untrusted input.\n * @param {number|boolean} [options.limitInputPixels=268402689] - Do not process input images where the number of pixels\n * (width x height) exceeds this limit. Assumes image dimensions contained in the input metadata can be trusted.\n * An integral Number of pixels, zero or false to remove limit, true to use default limit of 268402689 (0x3FFF x 0x3FFF).\n * @param {number|boolean} [options.limitInputChannels=5] - Do not process input images where the number of channels exceeds this limit. Assumes image metadata can be trusted.\n * An integral Number of channels, zero or false to remove limit, true to use default limit of 5.\n * @param {boolean} [options.unlimited=false] - Set this to `true` to remove safety features that help prevent memory exhaustion (JPEG, PNG, SVG, HEIF).\n * @param {boolean} [options.autoOrient=false] - Set this to `true` to rotate/flip the image to match EXIF `Orientation`, if any.\n * @param {boolean} [options.sequentialRead=true] - Set this to `false` to use random access rather than sequential read. Some operations will do this automatically.\n * @param {number} [options.density=72] - The DPI at which to render SVG and PDF images, in the range 1 to 100000.\n * @param {number} [options.ignoreIcc=false] - should the embedded ICC profile, if any, be ignored.\n * @param {number} [options.pages=1] - Number of pages to extract for multi-page input (GIF, WebP, TIFF), use -1 for all pages.\n * @param {number} [options.page=0] - Page number to start extracting from for multi-page input (GIF, WebP, TIFF), zero based.\n * @param {boolean} [options.animated=false] - Set to `true` to read all frames/pages of an animated image (GIF, WebP, TIFF), equivalent of setting `pages` to `-1`.\n * @param {Object} [options.raw] - describes raw pixel input image data. See `raw()` for pixel ordering.\n * @param {number} [options.raw.width] - integral number of pixels wide.\n * @param {number} [options.raw.height] - integral number of pixels high.\n * @param {number} [options.raw.channels] - integral number of channels, between 1 and 4.\n * @param {boolean} [options.raw.premultiplied] - specifies that the raw input has already been premultiplied, set to `true`\n * to avoid sharp premultiplying the image. (optional, default `false`)\n * @param {number} [options.raw.pageHeight] - The pixel height of each page/frame for animated images, must be an integral factor of `raw.height`.\n * @param {Object} [options.create] - describes a new image to be created.\n * @param {number} [options.create.width] - integral number of pixels wide.\n * @param {number} [options.create.height] - integral number of pixels high.\n * @param {number} [options.create.channels] - integral number of channels, either 3 (RGB) or 4 (RGBA).\n * @param {string|Object} [options.create.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @param {number} [options.create.pageHeight] - The pixel height of each page/frame for animated images, must be an integral factor of `create.height`.\n * @param {Object} [options.create.noise] - describes a noise to be created.\n * @param {string} [options.create.noise.type] - type of generated noise, currently only `gaussian` is supported.\n * @param {number} [options.create.noise.mean=128] - Mean value of pixels in the generated noise.\n * @param {number} [options.create.noise.sigma=30] - Standard deviation of pixel values in the generated noise.\n * @param {Object} [options.text] - describes a new text image to be created.\n * @param {string} [options.text.text] - text to render as a UTF-8 string. It can contain Pango markup, for example `<i>Le</i>Monde`.\n * @param {string} [options.text.font] - font name to render with.\n * @param {string} [options.text.fontfile] - absolute filesystem path to a font file that can be used by `font`.\n * @param {number} [options.text.width=0] - Integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries.\n * @param {number} [options.text.height=0] - Maximum integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0.\n * @param {string} [options.text.align='left'] - Alignment style for multi-line text (`'left'`, `'centre'`, `'center'`, `'right'`).\n * @param {boolean} [options.text.justify=false] - set this to true to apply justification to the text.\n * @param {number} [options.text.dpi=72] - the resolution (size) at which to render the text. Does not take effect if `height` is specified.\n * @param {boolean} [options.text.rgba=false] - set this to true to enable RGBA output. This is useful for colour emoji rendering, or support for pango markup features like `<span foreground=\"red\">Red!</span>`.\n * @param {number} [options.text.spacing=0] - text line height in points. Will use the font line height if none is specified.\n * @param {string} [options.text.wrap='word'] - word wrapping style when width is provided, one of: 'word', 'char', 'word-char' (prefer word, fallback to char) or 'none'.\n * @param {Object} [options.join] - describes how an array of input images should be joined.\n * @param {number} [options.join.across=1] - number of images to join horizontally.\n * @param {boolean} [options.join.animated=false] - set this to `true` to join the images as an animated image.\n * @param {number} [options.join.shim=0] - number of pixels to insert between joined images.\n * @param {string|Object} [options.join.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @param {string} [options.join.halign='left'] - horizontal alignment style for images joined horizontally (`'left'`, `'centre'`, `'center'`, `'right'`).\n * @param {string} [options.join.valign='top'] - vertical alignment style for images joined vertically (`'top'`, `'centre'`, `'center'`, `'bottom'`).\n * @param {Object} [options.tiff] - Describes TIFF specific options.\n * @param {number} [options.tiff.subifd=-1] - Sub Image File Directory to extract for OME-TIFF, defaults to main image.\n * @param {Object} [options.svg] - Describes SVG specific options.\n * @param {string} [options.svg.stylesheet] - Custom CSS for SVG input, applied with a User Origin during the CSS cascade.\n * @param {boolean} [options.svg.highBitdepth=false] - Set to `true` to render SVG input at 32-bits per channel (128-bit) instead of 8-bits per channel (32-bit) RGBA.\n * @param {Object} [options.pdf] - Describes PDF specific options. Requires the use of a globally-installed libvips compiled with support for PDFium, Poppler, ImageMagick or GraphicsMagick.\n * @param {string|Object} [options.pdf.background] - Background colour to use when PDF is partially transparent. Parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @param {Object} [options.openSlide] - Describes OpenSlide specific options. Requires the use of a globally-installed libvips compiled with support for OpenSlide.\n * @param {number} [options.openSlide.level=0] - Level to extract from a multi-level input, zero based.\n * @param {Object} [options.jp2] - Describes JPEG 2000 specific options. Requires the use of a globally-installed libvips compiled with support for OpenJPEG.\n * @param {boolean} [options.jp2.oneshot=false] - Set to `true` to decode tiled JPEG 2000 images in a single operation, improving compatibility.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nconst Sharp = function (input, options) {\n // biome-ignore lint/complexity/noArguments: constructor factory\n if (arguments.length === 1 && !is.defined(input)) {\n throw new Error('Invalid input');\n }\n if (!(this instanceof Sharp)) {\n return new Sharp(input, options);\n }\n stream.Duplex.call(this);\n this.options = {\n // resize options\n topOffsetPre: -1,\n leftOffsetPre: -1,\n widthPre: -1,\n heightPre: -1,\n topOffsetPost: -1,\n leftOffsetPost: -1,\n widthPost: -1,\n heightPost: -1,\n width: -1,\n height: -1,\n canvas: 'crop',\n position: 0,\n resizeBackground: [0, 0, 0, 255],\n angle: 0,\n rotationAngle: 0,\n rotationBackground: [0, 0, 0, 255],\n rotateBefore: false,\n orientBefore: false,\n flip: false,\n flop: false,\n extendTop: 0,\n extendBottom: 0,\n extendLeft: 0,\n extendRight: 0,\n extendBackground: [0, 0, 0, 255],\n extendWith: 'background',\n withoutEnlargement: false,\n withoutReduction: false,\n affineMatrix: [],\n affineBackground: [0, 0, 0, 255],\n affineIdx: 0,\n affineIdy: 0,\n affineOdx: 0,\n affineOdy: 0,\n affineInterpolator: this.constructor.interpolators.bilinear,\n kernel: 'lanczos3',\n fastShrinkOnLoad: true,\n // operations\n tint: [-1, 0, 0, 0],\n flatten: false,\n flattenBackground: [0, 0, 0],\n unflatten: false,\n negate: false,\n negateAlpha: true,\n medianSize: 0,\n blurSigma: 0,\n precision: 'integer',\n minAmpl: 0.2,\n sharpenSigma: 0,\n sharpenM1: 1,\n sharpenM2: 2,\n sharpenX1: 2,\n sharpenY2: 10,\n sharpenY3: 20,\n threshold: 0,\n thresholdGrayscale: true,\n trimBackground: [],\n trimThreshold: -1,\n trimLineArt: false,\n trimMargin: 0,\n dilateWidth: 0,\n erodeWidth: 0,\n gamma: 0,\n gammaOut: 0,\n greyscale: false,\n normalise: false,\n normaliseLower: 1,\n normaliseUpper: 99,\n claheWidth: 0,\n claheHeight: 0,\n claheMaxSlope: 3,\n brightness: 1,\n saturation: 1,\n hue: 0,\n lightness: 0,\n booleanBufferIn: null,\n booleanFileIn: '',\n joinChannelIn: [],\n extractChannel: -1,\n removeAlpha: false,\n ensureAlpha: -1,\n colourspace: 'srgb',\n colourspacePipeline: 'last',\n composite: [],\n // output\n fileOut: '',\n formatOut: 'input',\n streamOut: false,\n typedArrayOut: false,\n keepMetadata: 0,\n withMetadataOrientation: -1,\n withMetadataDensity: 0,\n withIccProfile: '',\n withExif: {},\n withExifMerge: true,\n withXmp: '',\n keepGainMap: false,\n withGainMap: false,\n resolveWithObject: false,\n loop: -1,\n delay: [],\n // output format\n jpegQuality: 80,\n jpegProgressive: false,\n jpegChromaSubsampling: '4:2:0',\n jpegTrellisQuantisation: false,\n jpegOvershootDeringing: false,\n jpegOptimiseScans: false,\n jpegOptimiseCoding: true,\n jpegQuantisationTable: 0,\n pngProgressive: false,\n pngCompressionLevel: 6,\n pngAdaptiveFiltering: false,\n pngPalette: false,\n pngQuality: 100,\n pngEffort: 7,\n pngBitdepth: 8,\n pngDither: 1,\n jp2Quality: 80,\n jp2TileHeight: 512,\n jp2TileWidth: 512,\n jp2Lossless: false,\n jp2ChromaSubsampling: '4:4:4',\n webpQuality: 80,\n webpAlphaQuality: 100,\n webpLossless: false,\n webpNearLossless: false,\n webpSmartSubsample: false,\n webpSmartDeblock: false,\n webpPreset: 'default',\n webpEffort: 4,\n webpMinSize: false,\n webpMixed: false,\n webpExact: false,\n gifBitdepth: 8,\n gifEffort: 7,\n gifDither: 1,\n gifInterFrameMaxError: 0,\n gifInterPaletteMaxError: 3,\n gifKeepDuplicateFrames: false,\n gifReuse: true,\n gifProgressive: false,\n tiffQuality: 80,\n tiffCompression: 'jpeg',\n tiffBigtiff: false,\n tiffPredictor: 'horizontal',\n tiffPyramid: false,\n tiffMiniswhite: false,\n tiffBitdepth: 0,\n tiffTile: false,\n tiffTileHeight: 256,\n tiffTileWidth: 256,\n tiffXres: 1.0,\n tiffYres: 1.0,\n tiffResolutionUnit: 'inch',\n heifQuality: 50,\n heifLossless: false,\n heifCompression: 'av1',\n heifEffort: 4,\n heifChromaSubsampling: '4:4:4',\n heifBitdepth: 8,\n heifTune: 'auto',\n jxlDistance: 1,\n jxlDecodingTier: 0,\n jxlEffort: 7,\n jxlLossless: false,\n rawDepth: 'uchar',\n tileSize: 256,\n tileOverlap: 0,\n tileContainer: 'fs',\n tileLayout: 'dz',\n tileFormat: 'last',\n tileDepth: 'last',\n tileAngle: 0,\n tileSkipBlanks: -1,\n tileBackground: [255, 255, 255, 255],\n tileCentre: false,\n tileId: 'https://example.com/iiif',\n tileBasename: '',\n timeoutSeconds: 0,\n linearA: [],\n linearB: [],\n pdfBackground: [255, 255, 255, 255],\n // Function to notify of libvips warnings\n debuglog: warning => {\n this.emit('warning', warning);\n debuglog(warning);\n },\n // Function to notify of queue length changes\n queueListener\n };\n this.options.input = this._createInputDescriptor(input, options, { allowStream: true });\n return this;\n};\nObject.setPrototypeOf(Sharp.prototype, stream.Duplex.prototype);\nObject.setPrototypeOf(Sharp, stream.Duplex);\n\n/**\n * Take a \"snapshot\" of the Sharp instance, returning a new instance.\n * Cloned instances inherit the input of their parent instance.\n * This allows multiple output Streams and therefore multiple processing pipelines to share a single input Stream.\n *\n * @example\n * // firstWritableStream receives auto-rotated, resized readableStream\n * // secondWritableStream receives auto-rotated, extracted region of readableStream\n *\n * const pipeline = sharp().rotate();\n * pipeline\n * .clone()\n * .resize(800, 600)\n * .pipe(firstWritableStream);\n * pipeline\n * .clone()\n * .extract({ left: 20, top: 20, width: 100, height: 100 })\n * .pipe(secondWritableStream);\n * readableStream.pipe(pipeline);\n *\n * @example\n * // Create a pipeline that will download an image, resize it and format it to different files\n * // Using Promises to know when the pipeline is complete\n *\n * const sharpStream = sharp();\n *\n * const promises = [];\n * promises.push(\n * sharpStream\n * .clone()\n * .jpeg({ quality: 100 })\n * .toFile(\"originalFile.jpg\")\n * );\n * promises.push(\n * sharpStream\n * .clone()\n * .resize({ width: 500 })\n * .jpeg({ quality: 80 })\n * .toFile(\"optimized-500.jpg\")\n * );\n * promises.push(\n * sharpStream\n * .clone()\n * .resize({ width: 500 })\n * .webp({ quality: 80 })\n * .toFile(\"optimized-500.webp\")\n * );\n *\n * const res = await fetch(\"https://www.example.com/some-file.jpg\")\n * Readable.fromWeb(res.body).pipe(sharpStream);\n * await Promise.all(promises);\n *\n * @returns {Sharp}\n */\nfunction clone () {\n // Clone existing options\n const clone = this.constructor.call();\n const { debuglog, queueListener, ...options } = this.options;\n clone.options = structuredClone(options);\n clone.options.debuglog = debuglog;\n clone.options.queueListener = queueListener;\n // Pass 'finish' event to clone for Stream-based input\n if (this._isStreamInput()) {\n this._whenStreamInFinished(() => {\n // Clone inherits input data\n this._flattenBufferIn();\n clone.options.input.buffer = this.options.input.buffer;\n clone.emit('finish');\n });\n }\n return clone;\n}\nObject.assign(Sharp.prototype, { clone });\n\n/**\n * Export constructor.\n * @module Sharp\n * @private\n */\nexport default Sharp;\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport is from './is.mjs';\nimport sharp from './sharp.mjs';\n\n/**\n * Justification alignment\n * @member\n * @private\n */\nconst align = {\n left: 'low',\n top: 'low',\n low: 'low',\n center: 'centre',\n centre: 'centre',\n right: 'high',\n bottom: 'high',\n high: 'high'\n};\n\nconst inputStreamParameters = [\n // Limits and error handling\n 'failOn', 'limitInputPixels', 'limitInputChannels', 'unlimited',\n // Format-generic\n 'animated', 'autoOrient', 'density', 'ignoreIcc', 'page', 'pages', 'sequentialRead',\n // Format-specific\n 'jp2', 'openSlide', 'pdf', 'raw', 'svg', 'tiff',\n // Deprecated\n 'openSlideLevel', 'pdfBackground', 'tiffSubifd'\n];\n\n/**\n * Extract input options, if any, from an object.\n * @private\n */\nfunction _inputOptionsFromObject (obj) {\n const params = inputStreamParameters\n .filter(p => is.defined(obj[p]))\n .map(p => ([p, obj[p]]));\n return params.length\n ? Object.fromEntries(params)\n : undefined;\n}\n\n/**\n * Create Object containing input and input-related options.\n * @private\n */\nfunction _createInputDescriptor (input, inputOptions, containerOptions) {\n const inputDescriptor = {\n autoOrient: false,\n failOn: 'warning',\n limitInputPixels: 0x3FFF ** 2,\n limitInputChannels: 5,\n ignoreIcc: false,\n unlimited: false,\n sequentialRead: true\n };\n if (is.string(input)) {\n // filesystem\n inputDescriptor.file = input;\n } else if (is.buffer(input)) {\n // Buffer\n if (input.length === 0) {\n throw Error('Input Buffer is empty');\n }\n inputDescriptor.buffer = input;\n } else if (is.arrayBuffer(input)) {\n if (input.byteLength === 0) {\n throw Error('Input bit Array is empty');\n }\n inputDescriptor.buffer = Buffer.from(input, 0, input.byteLength);\n } else if (is.typedArray(input)) {\n if (input.length === 0) {\n throw Error('Input Bit Array is empty');\n }\n inputDescriptor.buffer = Buffer.from(input.buffer, input.byteOffset, input.byteLength);\n } else if (is.plainObject(input) && !is.defined(inputOptions)) {\n // Plain Object descriptor, e.g. create\n inputOptions = input;\n if (_inputOptionsFromObject(inputOptions)) {\n // Stream with options\n inputDescriptor.buffer = [];\n }\n } else if (!is.defined(input) && !is.defined(inputOptions) && is.object(containerOptions) && containerOptions.allowStream) {\n // Stream without options\n inputDescriptor.buffer = [];\n } else if (Array.isArray(input)) {\n if (input.length > 1) {\n // Join images together\n if (!this.options.joining) {\n this.options.joining = true;\n this.options.join = input.map(i => this._createInputDescriptor(i));\n } else {\n throw new Error('Recursive join is unsupported');\n }\n } else {\n throw new Error('Expected at least two images to join');\n }\n } else {\n throw new Error(`Unsupported input '${input}' of type ${typeof input}${\n is.defined(inputOptions) ? ` when also providing options of type ${typeof inputOptions}` : ''\n }`);\n }\n if (is.object(inputOptions)) {\n // failOn\n if (is.defined(inputOptions.failOn)) {\n if (is.string(inputOptions.failOn) && is.inArray(inputOptions.failOn, ['none', 'truncated', 'error', 'warning'])) {\n inputDescriptor.failOn = inputOptions.failOn;\n } else {\n throw is.invalidParameterError('failOn', 'one of: none, truncated, error, warning', inputOptions.failOn);\n }\n }\n // autoOrient\n if (is.defined(inputOptions.autoOrient)) {\n if (is.bool(inputOptions.autoOrient)) {\n inputDescriptor.autoOrient = inputOptions.autoOrient;\n } else {\n throw is.invalidParameterError('autoOrient', 'boolean', inputOptions.autoOrient);\n }\n }\n // Density\n if (is.defined(inputOptions.density)) {\n if (is.number(inputOptions.density) && is.inRange(inputOptions.density, 1, 100000)) {\n inputDescriptor.density = inputOptions.density;\n } else {\n throw is.invalidParameterError('density', 'number between 1 and 100000', inputOptions.density);\n }\n }\n // Ignore embeddded ICC profile\n if (is.defined(inputOptions.ignoreIcc)) {\n if (is.bool(inputOptions.ignoreIcc)) {\n inputDescriptor.ignoreIcc = inputOptions.ignoreIcc;\n } else {\n throw is.invalidParameterError('ignoreIcc', 'boolean', inputOptions.ignoreIcc);\n }\n }\n // limitInputPixels\n if (is.defined(inputOptions.limitInputPixels)) {\n if (is.bool(inputOptions.limitInputPixels)) {\n inputDescriptor.limitInputPixels = inputOptions.limitInputPixels\n ? 0x3FFF ** 2\n : 0;\n } else if (is.integer(inputOptions.limitInputPixels) && is.inRange(inputOptions.limitInputPixels, 0, Number.MAX_SAFE_INTEGER)) {\n inputDescriptor.limitInputPixels = inputOptions.limitInputPixels;\n } else {\n throw is.invalidParameterError('limitInputPixels', 'positive integer', inputOptions.limitInputPixels);\n }\n }\n // limitInputChannels\n if (is.defined(inputOptions.limitInputChannels)) {\n if (is.bool(inputOptions.limitInputChannels)) {\n inputDescriptor.limitInputChannels = inputOptions.limitInputChannels ? 5 : 0;\n } else if (is.integer(inputOptions.limitInputChannels) && is.inRange(inputOptions.limitInputChannels, 0, Number.MAX_SAFE_INTEGER)) {\n inputDescriptor.limitInputChannels = inputOptions.limitInputChannels;\n } else {\n throw is.invalidParameterError('limitInputChannels', 'positive integer', inputOptions.limitInputChannels);\n }\n }\n // unlimited\n if (is.defined(inputOptions.unlimited)) {\n if (is.bool(inputOptions.unlimited)) {\n inputDescriptor.unlimited = inputOptions.unlimited;\n } else {\n throw is.invalidParameterError('unlimited', 'boolean', inputOptions.unlimited);\n }\n }\n // sequentialRead\n if (is.defined(inputOptions.sequentialRead)) {\n if (is.bool(inputOptions.sequentialRead)) {\n inputDescriptor.sequentialRead = inputOptions.sequentialRead;\n } else {\n throw is.invalidParameterError('sequentialRead', 'boolean', inputOptions.sequentialRead);\n }\n }\n // Raw pixel input\n if (is.defined(inputOptions.raw)) {\n if (\n is.object(inputOptions.raw) &&\n is.integer(inputOptions.raw.width) && is.inRange(inputOptions.raw.width, 1, 100000000) &&\n is.integer(inputOptions.raw.height) && is.inRange(inputOptions.raw.height, 1, 100000000) &&\n is.integer(inputOptions.raw.channels) && is.inRange(inputOptions.raw.channels, 1, 4)\n ) {\n inputDescriptor.rawWidth = inputOptions.raw.width;\n inputDescriptor.rawHeight = inputOptions.raw.height;\n inputDescriptor.rawChannels = inputOptions.raw.channels;\n switch (input.constructor) {\n case Uint8Array:\n case Uint8ClampedArray:\n inputDescriptor.rawDepth = 'uchar';\n break;\n case Int8Array:\n inputDescriptor.rawDepth = 'char';\n break;\n case Uint16Array:\n inputDescriptor.rawDepth = 'ushort';\n break;\n case Int16Array:\n inputDescriptor.rawDepth = 'short';\n break;\n case Uint32Array:\n inputDescriptor.rawDepth = 'uint';\n break;\n case Int32Array:\n inputDescriptor.rawDepth = 'int';\n break;\n case Float32Array:\n inputDescriptor.rawDepth = 'float';\n break;\n case Float64Array:\n inputDescriptor.rawDepth = 'double';\n break;\n default:\n inputDescriptor.rawDepth = 'uchar';\n break;\n }\n } else {\n throw new Error('Expected width, height and channels for raw pixel input');\n }\n inputDescriptor.rawPremultiplied = false;\n if (is.defined(inputOptions.raw.premultiplied)) {\n if (is.bool(inputOptions.raw.premultiplied)) {\n inputDescriptor.rawPremultiplied = inputOptions.raw.premultiplied;\n } else {\n throw is.invalidParameterError('raw.premultiplied', 'boolean', inputOptions.raw.premultiplied);\n }\n }\n inputDescriptor.rawPageHeight = 0;\n if (is.defined(inputOptions.raw.pageHeight)) {\n if (is.integer(inputOptions.raw.pageHeight) && inputOptions.raw.pageHeight > 0 && inputOptions.raw.pageHeight <= inputOptions.raw.height) {\n if (inputOptions.raw.height % inputOptions.raw.pageHeight !== 0) {\n throw new Error(`Expected raw.height ${inputOptions.raw.height} to be a multiple of raw.pageHeight ${inputOptions.raw.pageHeight}`);\n }\n inputDescriptor.rawPageHeight = inputOptions.raw.pageHeight;\n } else {\n throw is.invalidParameterError('raw.pageHeight', 'positive integer', inputOptions.raw.pageHeight);\n }\n }\n }\n // Multi-page input (GIF, TIFF, PDF)\n if (is.defined(inputOptions.animated)) {\n if (is.bool(inputOptions.animated)) {\n inputDescriptor.pages = inputOptions.animated ? -1 : 1;\n } else {\n throw is.invalidParameterError('animated', 'boolean', inputOptions.animated);\n }\n }\n if (is.defined(inputOptions.pages)) {\n if (is.integer(inputOptions.pages) && is.inRange(inputOptions.pages, -1, 100000)) {\n inputDescriptor.pages = inputOptions.pages;\n } else {\n throw is.invalidParameterError('pages', 'integer between -1 and 100000', inputOptions.pages);\n }\n }\n if (is.defined(inputOptions.page)) {\n if (is.integer(inputOptions.page) && is.inRange(inputOptions.page, 0, 100000)) {\n inputDescriptor.page = inputOptions.page;\n } else {\n throw is.invalidParameterError('page', 'integer between 0 and 100000', inputOptions.page);\n }\n }\n // OpenSlide specific options\n if (is.object(inputOptions.openSlide) && is.defined(inputOptions.openSlide.level)) {\n if (is.integer(inputOptions.openSlide.level) && is.inRange(inputOptions.openSlide.level, 0, 256)) {\n inputDescriptor.openSlideLevel = inputOptions.openSlide.level;\n } else {\n throw is.invalidParameterError('openSlide.level', 'integer between 0 and 256', inputOptions.openSlide.level);\n }\n } else if (is.defined(inputOptions.level)) {\n // Deprecated\n if (is.integer(inputOptions.level) && is.inRange(inputOptions.level, 0, 256)) {\n inputDescriptor.openSlideLevel = inputOptions.level;\n } else {\n throw is.invalidParameterError('level', 'integer between 0 and 256', inputOptions.level);\n }\n }\n // TIFF specific options\n if (is.object(inputOptions.tiff) && is.defined(inputOptions.tiff.subifd)) {\n if (is.integer(inputOptions.tiff.subifd) && is.inRange(inputOptions.tiff.subifd, -1, 100000)) {\n inputDescriptor.tiffSubifd = inputOptions.tiff.subifd;\n } else {\n throw is.invalidParameterError('tiff.subifd', 'integer between -1 and 100000', inputOptions.tiff.subifd);\n }\n } else if (is.defined(inputOptions.subifd)) {\n // Deprecated\n if (is.integer(inputOptions.subifd) && is.inRange(inputOptions.subifd, -1, 100000)) {\n inputDescriptor.tiffSubifd = inputOptions.subifd;\n } else {\n throw is.invalidParameterError('subifd', 'integer between -1 and 100000', inputOptions.subifd);\n }\n }\n // SVG specific options\n if (is.object(inputOptions.svg)) {\n if (is.defined(inputOptions.svg.stylesheet)) {\n if (is.string(inputOptions.svg.stylesheet)) {\n inputDescriptor.svgStylesheet = inputOptions.svg.stylesheet;\n } else {\n throw is.invalidParameterError('svg.stylesheet', 'string', inputOptions.svg.stylesheet);\n }\n }\n if (is.defined(inputOptions.svg.highBitdepth)) {\n if (is.bool(inputOptions.svg.highBitdepth)) {\n inputDescriptor.svgHighBitdepth = inputOptions.svg.highBitdepth;\n } else {\n throw is.invalidParameterError('svg.highBitdepth', 'boolean', inputOptions.svg.highBitdepth);\n }\n }\n }\n // PDF specific options\n if (is.object(inputOptions.pdf) && is.defined(inputOptions.pdf.background)) {\n inputDescriptor.pdfBackground = this._getBackgroundColourOption(inputOptions.pdf.background);\n } else if (is.defined(inputOptions.pdfBackground)) {\n // Deprecated\n inputDescriptor.pdfBackground = this._getBackgroundColourOption(inputOptions.pdfBackground);\n }\n // JPEG 2000 specific options\n if (is.object(inputOptions.jp2) && is.defined(inputOptions.jp2.oneshot)) {\n if (is.bool(inputOptions.jp2.oneshot)) {\n inputDescriptor.jp2Oneshot = inputOptions.jp2.oneshot;\n } else {\n throw is.invalidParameterError('jp2.oneshot', 'boolean', inputOptions.jp2.oneshot);\n }\n }\n // Create new image\n if (is.defined(inputOptions.create)) {\n if (\n is.object(inputOptions.create) &&\n is.integer(inputOptions.create.width) && is.inRange(inputOptions.create.width, 1, 100000000) &&\n is.integer(inputOptions.create.height) && is.inRange(inputOptions.create.height, 1, 100000000) &&\n is.integer(inputOptions.create.channels)\n ) {\n inputDescriptor.createWidth = inputOptions.create.width;\n inputDescriptor.createHeight = inputOptions.create.height;\n inputDescriptor.createChannels = inputOptions.create.channels;\n inputDescriptor.createPageHeight = 0;\n if (is.defined(inputOptions.create.pageHeight)) {\n if (is.integer(inputOptions.create.pageHeight) && inputOptions.create.pageHeight > 0 && inputOptions.create.pageHeight <= inputOptions.create.height) {\n if (inputOptions.create.height % inputOptions.create.pageHeight !== 0) {\n throw new Error(`Expected create.height ${inputOptions.create.height} to be a multiple of create.pageHeight ${inputOptions.create.pageHeight}`);\n }\n inputDescriptor.createPageHeight = inputOptions.create.pageHeight;\n } else {\n throw is.invalidParameterError('create.pageHeight', 'positive integer', inputOptions.create.pageHeight);\n }\n }\n // Noise\n if (is.defined(inputOptions.create.noise)) {\n if (!is.object(inputOptions.create.noise)) {\n throw new Error('Expected noise to be an object');\n }\n if (inputOptions.create.noise.type !== 'gaussian') {\n throw new Error('Only gaussian noise is supported at the moment');\n }\n inputDescriptor.createNoiseType = inputOptions.create.noise.type;\n if (!is.inRange(inputOptions.create.channels, 1, 4)) {\n throw is.invalidParameterError('create.channels', 'number between 1 and 4', inputOptions.create.channels);\n }\n inputDescriptor.createNoiseMean = 128;\n if (is.defined(inputOptions.create.noise.mean)) {\n if (is.number(inputOptions.create.noise.mean) && is.inRange(inputOptions.create.noise.mean, 0, 10000)) {\n inputDescriptor.createNoiseMean = inputOptions.create.noise.mean;\n } else {\n throw is.invalidParameterError('create.noise.mean', 'number between 0 and 10000', inputOptions.create.noise.mean);\n }\n }\n inputDescriptor.createNoiseSigma = 30;\n if (is.defined(inputOptions.create.noise.sigma)) {\n if (is.number(inputOptions.create.noise.sigma) && is.inRange(inputOptions.create.noise.sigma, 0, 10000)) {\n inputDescriptor.createNoiseSigma = inputOptions.create.noise.sigma;\n } else {\n throw is.invalidParameterError('create.noise.sigma', 'number between 0 and 10000', inputOptions.create.noise.sigma);\n }\n }\n } else if (is.defined(inputOptions.create.background)) {\n if (!is.inRange(inputOptions.create.channels, 3, 4)) {\n throw is.invalidParameterError('create.channels', 'number between 3 and 4', inputOptions.create.channels);\n }\n inputDescriptor.createBackground = this._getBackgroundColourOption(inputOptions.create.background);\n } else {\n throw new Error('Expected valid noise or background to create a new input image');\n }\n delete inputDescriptor.buffer;\n } else {\n throw new Error('Expected valid width, height and channels to create a new input image');\n }\n }\n // Create a new image with text\n if (is.defined(inputOptions.text)) {\n if (is.object(inputOptions.text) && is.string(inputOptions.text.text)) {\n inputDescriptor.textValue = inputOptions.text.text;\n if (is.defined(inputOptions.text.height) && is.defined(inputOptions.text.dpi)) {\n throw new Error('Expected only one of dpi or height');\n }\n if (is.defined(inputOptions.text.font)) {\n if (is.string(inputOptions.text.font)) {\n inputDescriptor.textFont = inputOptions.text.font;\n } else {\n throw is.invalidParameterError('text.font', 'string', inputOptions.text.font);\n }\n }\n if (is.defined(inputOptions.text.fontfile)) {\n if (is.string(inputOptions.text.fontfile)) {\n inputDescriptor.textFontfile = inputOptions.text.fontfile;\n } else {\n throw is.invalidParameterError('text.fontfile', 'string', inputOptions.text.fontfile);\n }\n }\n if (is.defined(inputOptions.text.width)) {\n if (is.integer(inputOptions.text.width) && is.inRange(inputOptions.text.width, 1, 1000000)) {\n inputDescriptor.textWidth = inputOptions.text.width;\n } else {\n throw is.invalidParameterError('text.width', 'integer between 1 and 1000000', inputOptions.text.width);\n }\n }\n if (is.defined(inputOptions.text.height)) {\n if (is.integer(inputOptions.text.height) && is.inRange(inputOptions.text.height, 1, 1000000)) {\n inputDescriptor.textHeight = inputOptions.text.height;\n } else {\n throw is.invalidParameterError('text.height', 'integer between 1 and 1000000', inputOptions.text.height);\n }\n }\n if (is.defined(inputOptions.text.align)) {\n if (is.string(inputOptions.text.align) && is.string(this.constructor.align[inputOptions.text.align])) {\n inputDescriptor.textAlign = this.constructor.align[inputOptions.text.align];\n } else {\n throw is.invalidParameterError('text.align', 'valid alignment', inputOptions.text.align);\n }\n }\n if (is.defined(inputOptions.text.justify)) {\n if (is.bool(inputOptions.text.justify)) {\n inputDescriptor.textJustify = inputOptions.text.justify;\n } else {\n throw is.invalidParameterError('text.justify', 'boolean', inputOptions.text.justify);\n }\n }\n if (is.defined(inputOptions.text.dpi)) {\n if (is.integer(inputOptions.text.dpi) && is.inRange(inputOptions.text.dpi, 1, 1000000)) {\n inputDescriptor.textDpi = inputOptions.text.dpi;\n } else {\n throw is.invalidParameterError('text.dpi', 'integer between 1 and 1000000', inputOptions.text.dpi);\n }\n }\n if (is.defined(inputOptions.text.rgba)) {\n if (is.bool(inputOptions.text.rgba)) {\n inputDescriptor.textRgba = inputOptions.text.rgba;\n } else {\n throw is.invalidParameterError('text.rgba', 'bool', inputOptions.text.rgba);\n }\n }\n if (is.defined(inputOptions.text.spacing)) {\n if (is.integer(inputOptions.text.spacing) && is.inRange(inputOptions.text.spacing, -1000000, 1000000)) {\n inputDescriptor.textSpacing = inputOptions.text.spacing;\n } else {\n throw is.invalidParameterError('text.spacing', 'integer between -1000000 and 1000000', inputOptions.text.spacing);\n }\n }\n if (is.defined(inputOptions.text.wrap)) {\n if (is.string(inputOptions.text.wrap) && is.inArray(inputOptions.text.wrap, ['word', 'char', 'word-char', 'none'])) {\n inputDescriptor.textWrap = inputOptions.text.wrap;\n } else {\n throw is.invalidParameterError('text.wrap', 'one of: word, char, word-char, none', inputOptions.text.wrap);\n }\n }\n delete inputDescriptor.buffer;\n } else {\n throw new Error('Expected a valid string to create an image with text.');\n }\n }\n // Join images together\n if (is.defined(inputOptions.join)) {\n if (is.defined(this.options.join)) {\n if (is.defined(inputOptions.join.animated)) {\n if (is.bool(inputOptions.join.animated)) {\n inputDescriptor.joinAnimated = inputOptions.join.animated;\n } else {\n throw is.invalidParameterError('join.animated', 'boolean', inputOptions.join.animated);\n }\n }\n if (is.defined(inputOptions.join.across)) {\n if (is.integer(inputOptions.join.across) && is.inRange(inputOptions.join.across, 1, 1000000)) {\n inputDescriptor.joinAcross = inputOptions.join.across;\n } else {\n throw is.invalidParameterError('join.across', 'integer between 1 and 100000', inputOptions.join.across);\n }\n }\n if (is.defined(inputOptions.join.shim)) {\n if (is.integer(inputOptions.join.shim) && is.inRange(inputOptions.join.shim, 0, 1000000)) {\n inputDescriptor.joinShim = inputOptions.join.shim;\n } else {\n throw is.invalidParameterError('join.shim', 'integer between 0 and 100000', inputOptions.join.shim);\n }\n }\n if (is.defined(inputOptions.join.background)) {\n inputDescriptor.joinBackground = this._getBackgroundColourOption(inputOptions.join.background);\n }\n if (is.defined(inputOptions.join.halign)) {\n if (is.string(inputOptions.join.halign) && is.string(this.constructor.align[inputOptions.join.halign])) {\n inputDescriptor.joinHalign = this.constructor.align[inputOptions.join.halign];\n } else {\n throw is.invalidParameterError('join.halign', 'valid alignment', inputOptions.join.halign);\n }\n }\n if (is.defined(inputOptions.join.valign)) {\n if (is.string(inputOptions.join.valign) && is.string(this.constructor.align[inputOptions.join.valign])) {\n inputDescriptor.joinValign = this.constructor.align[inputOptions.join.valign];\n } else {\n throw is.invalidParameterError('join.valign', 'valid alignment', inputOptions.join.valign);\n }\n }\n } else {\n throw new Error('Expected input to be an array of images to join');\n }\n }\n } else if (is.defined(inputOptions)) {\n throw new Error(`Invalid input options ${inputOptions}`);\n }\n return inputDescriptor;\n}\n\n/**\n * Handle incoming Buffer chunk on Writable Stream.\n * @private\n * @param {Buffer} chunk\n * @param {string} encoding - unused\n * @param {Function} callback\n */\nfunction _write (chunk, _encoding, callback) {\n if (Array.isArray(this.options.input.buffer)) {\n if (is.buffer(chunk)) {\n this.options.input.buffer.push(chunk);\n callback();\n } else {\n callback(new Error('Non-Buffer data on Writable Stream'));\n }\n } else {\n callback(new Error('Unexpected data on Writable Stream'));\n }\n}\n\n/**\n * Flattens the array of chunks accumulated in input.buffer.\n * @private\n */\nfunction _flattenBufferIn () {\n if (this._isStreamInput()) {\n this.options.input.buffer = Buffer.concat(this.options.input.buffer);\n }\n}\n\n/**\n * Are we expecting Stream-based input?\n * @private\n * @returns {boolean}\n */\nfunction _isStreamInput () {\n return Array.isArray(this.options.input.buffer);\n}\n\n/**\n * Call fn when the Writable side of Stream-based input has finished,\n * or immediately when it already has, as 'finish' is emitted only once.\n * @private\n * @param {Function} fn\n */\nfunction _whenStreamInFinished (fn) {\n if (this.writableFinished) {\n fn();\n } else {\n this.once('finish', fn);\n }\n}\n\n/**\n * Fast access to (uncached) image metadata without decoding any compressed pixel data.\n *\n * This is read from the header of the input image.\n * It does not take into consideration any operations to be applied to the output image,\n * such as resize or rotate.\n *\n * Dimensions in the response will respect the `page` and `pages` properties of the\n * {@link /api-constructor/ constructor parameters}.\n *\n * A `Promise` is returned when `callback` is not provided.\n *\n * - `format`: Name of decoder used to parse image e.g. `jpeg`, `png`, `webp`, `gif`, `svg`, `heif`, `tiff`\n * - `mediaType`: Media Type (MIME Type) e.g. `image/jpeg`, `image/png`, `image/svg+xml`, `image/avif`\n * - `size`: Total size of image in bytes, for Stream and Buffer input only\n * - `width`: Number of pixels wide (EXIF orientation is not taken into consideration, see example below)\n * - `height`: Number of pixels high (EXIF orientation is not taken into consideration, see example below)\n * - `space`: Name of colour space interpretation e.g. `srgb`, `rgb`, `cmyk`, `lab`, `b-w` [...](https://www.libvips.org/API/current/enum.Interpretation.html)\n * - `channels`: Number of bands e.g. `3` for sRGB, `4` for CMYK\n * - `depth`: Name of pixel depth format e.g. `uchar`, `char`, `ushort`, `float` [...](https://www.libvips.org/API/current/enum.BandFormat.html)\n * - `density`: Number of pixels per inch (DPI), if present\n * - `chromaSubsampling`: String containing JPEG chroma subsampling, `4:2:0` or `4:4:4` for RGB, `4:2:0:4` or `4:4:4:4` for CMYK\n * - `isProgressive`: Boolean indicating whether the image is interlaced using a progressive scan\n * - `isPalette`: Boolean indicating whether the image is palette-based (GIF, PNG).\n * - `bitsPerSample`: Number of bits per sample for each channel (GIF, PNG, HEIF).\n * - `pages`: Number of pages/frames contained within the image, with support for TIFF, HEIF, PDF, animated GIF and animated WebP\n * - `pageHeight`: Number of pixels high each page in a multi-page image will be.\n * - `loop`: Number of times to loop an animated image, zero refers to a continuous loop.\n * - `delay`: Delay in ms between each page in an animated image, provided as an array of integers.\n * - `pagePrimary`: Number of the primary page in a HEIF image\n * - `levels`: Details of each level in a multi-level image provided as an array of objects, requires libvips compiled with support for OpenSlide\n * - `subifds`: Number of Sub Image File Directories in an OME-TIFF image\n * - `background`: Default background colour, if present, for PNG (bKGD) and GIF images\n * - `compression`: The encoder used to compress an HEIF file, `av1` (AVIF) or `hevc` (HEIC)\n * - `resolutionUnit`: The unit of resolution (density), either `inch` or `cm`, if present\n * - `hasProfile`: Boolean indicating the presence of an embedded ICC profile\n * - `hasAlpha`: Boolean indicating the presence of an alpha transparency channel\n * - `orientation`: Number value of the EXIF Orientation header, if present\n * - `exif`: Buffer containing raw EXIF data, if present\n * - `icc`: Buffer containing raw [ICC](https://www.npmjs.com/package/icc) profile data, if present\n * - `iptc`: Buffer containing raw IPTC data, if present\n * - `xmp`: Buffer containing raw XMP data, if present\n * - `xmpAsString`: String containing XMP data, if valid UTF-8.\n * - `tifftagPhotoshop`: Buffer containing raw TIFFTAG_PHOTOSHOP data, if present\n * - `formatMagick`: String containing format for images loaded via *magick\n * - `comments`: Array of keyword/text pairs representing PNG text blocks, if present.\n * - `gainMap.image`: HDR gain map, if present, as compressed JPEG image.\n *\n * @example\n * const metadata = await sharp(input).metadata();\n *\n * @example\n * const image = sharp(inputJpg);\n * image\n * .metadata()\n * .then(function(metadata) {\n * return image\n * .resize(Math.round(metadata.width / 2))\n * .webp()\n * .toBuffer();\n * })\n * .then(function(data) {\n * // data contains a WebP image half the width and height of the original JPEG\n * });\n *\n * @example\n * // Get dimensions taking EXIF Orientation into account.\n * const { autoOrient } = await sharp(input).metadata();\n * const { width, height } = autoOrient;\n *\n * @param {Function} [callback] - called with the arguments `(err, metadata)`\n * @returns {Promise<Object>|Sharp}\n */\nfunction metadata (callback) {\n const stack = Error();\n if (is.fn(callback)) {\n if (this._isStreamInput()) {\n this._whenStreamInFinished(() => {\n this._flattenBufferIn();\n sharp.metadata(this.options, (err, metadata) => {\n if (err) {\n callback(is.nativeError(err, stack));\n } else {\n callback(null, metadata);\n }\n });\n });\n } else {\n sharp.metadata(this.options, (err, metadata) => {\n if (err) {\n callback(is.nativeError(err, stack));\n } else {\n callback(null, metadata);\n }\n });\n }\n return this;\n } else {\n if (this._isStreamInput()) {\n return new Promise((resolve, reject) => {\n this._whenStreamInFinished(() => {\n this._flattenBufferIn();\n sharp.metadata(this.options, (err, metadata) => {\n if (err) {\n reject(is.nativeError(err, stack));\n } else {\n resolve(metadata);\n }\n });\n });\n });\n } else {\n return new Promise((resolve, reject) => {\n sharp.metadata(this.options, (err, metadata) => {\n if (err) {\n reject(is.nativeError(err, stack));\n } else {\n resolve(metadata);\n }\n });\n });\n }\n }\n}\n\n/**\n * Access to pixel-derived image statistics for every channel in the image.\n * A `Promise` is returned when `callback` is not provided.\n *\n * - `channels`: Array of channel statistics for each channel in the image. Each channel statistic contains\n * - `min` (minimum value in the channel)\n * - `max` (maximum value in the channel)\n * - `sum` (sum of all values in a channel)\n * - `squaresSum` (sum of squared values in a channel)\n * - `mean` (mean of the values in a channel)\n * - `stdev` (standard deviation for the values in a channel)\n * - `minX` (x-coordinate of one of the pixel where the minimum lies)\n * - `minY` (y-coordinate of one of the pixel where the minimum lies)\n * - `maxX` (x-coordinate of one of the pixel where the maximum lies)\n * - `maxY` (y-coordinate of one of the pixel where the maximum lies)\n * - `isOpaque`: Is the image fully opaque? Will be `true` if the image has no alpha channel or if every pixel is fully opaque.\n * - `entropy`: Histogram-based estimation of greyscale entropy, discarding alpha channel if any.\n * - `sharpness`: Estimation of greyscale sharpness based on the standard deviation of a Laplacian convolution, discarding alpha channel if any.\n * - `dominant`: Object containing most dominant sRGB colour based on a 4096-bin 3D histogram.\n *\n * **Note**: Statistics are derived from the original input image. Any operations performed on the image must first be\n * written to a buffer in order to run `stats` on the result (see third example).\n *\n * @example\n * const image = sharp(inputJpg);\n * image\n * .stats()\n * .then(function(stats) {\n * // stats contains the channel-wise statistics array and the isOpaque value\n * });\n *\n * @example\n * const { entropy, sharpness, dominant } = await sharp(input).stats();\n * const { r, g, b } = dominant;\n *\n * @example\n * const image = sharp(input);\n * // store intermediate result\n * const part = await image.extract(region).toBuffer();\n * // create new instance to obtain statistics of extracted region\n * const stats = await sharp(part).stats();\n *\n * @param {Function} [callback] - called with the arguments `(err, stats)`\n * @returns {Promise<Object>}\n */\nfunction stats (callback) {\n const stack = Error();\n if (is.fn(callback)) {\n if (this._isStreamInput()) {\n this._whenStreamInFinished(() => {\n this._flattenBufferIn();\n sharp.stats(this.options, (err, stats) => {\n if (err) {\n callback(is.nativeError(err, stack));\n } else {\n callback(null, stats);\n }\n });\n });\n } else {\n sharp.stats(this.options, (err, stats) => {\n if (err) {\n callback(is.nativeError(err, stack));\n } else {\n callback(null, stats);\n }\n });\n }\n return this;\n } else {\n if (this._isStreamInput()) {\n return new Promise((resolve, reject) => {\n this._whenStreamInFinished(() => {\n this._flattenBufferIn();\n sharp.stats(this.options, (err, stats) => {\n if (err) {\n reject(is.nativeError(err, stack));\n } else {\n resolve(stats);\n }\n });\n });\n });\n } else {\n return new Promise((resolve, reject) => {\n sharp.stats(this.options, (err, stats) => {\n if (err) {\n reject(is.nativeError(err, stack));\n } else {\n resolve(stats);\n }\n });\n });\n }\n }\n}\n\n/**\n * Decorate the Sharp prototype with input-related functions.\n * @module Sharp\n * @private\n */\nexport default (Sharp) => {\n Object.assign(Sharp.prototype, {\n // Private\n _inputOptionsFromObject,\n _createInputDescriptor,\n _write,\n _flattenBufferIn,\n _isStreamInput,\n _whenStreamInFinished,\n // Public\n metadata,\n stats\n });\n // Class attributes\n Sharp.align = align;\n};\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport is from './is.mjs';\n\n/**\n * Weighting to apply when using contain/cover fit.\n * @member\n * @private\n */\nconst gravity = {\n center: 0,\n centre: 0,\n north: 1,\n east: 2,\n south: 3,\n west: 4,\n northeast: 5,\n southeast: 6,\n southwest: 7,\n northwest: 8\n};\n\n/**\n * Position to apply when using contain/cover fit.\n * @member\n * @private\n */\nconst position = {\n top: 1,\n right: 2,\n bottom: 3,\n left: 4,\n 'right top': 5,\n 'right bottom': 6,\n 'left bottom': 7,\n 'left top': 8\n};\n\n/**\n * How to extend the image.\n * @member\n * @private\n */\nconst extendWith = {\n background: 'background',\n copy: 'copy',\n repeat: 'repeat',\n mirror: 'mirror'\n};\n\n/**\n * Strategies for automagic cover behaviour.\n * @member\n * @private\n */\nconst strategy = {\n entropy: 16,\n attention: 17\n};\n\n/**\n * Reduction kernels.\n * @member\n * @private\n */\nconst kernel = {\n nearest: 'nearest',\n linear: 'linear',\n cubic: 'cubic',\n mitchell: 'mitchell',\n lanczos2: 'lanczos2',\n lanczos3: 'lanczos3',\n mks2013: 'mks2013',\n mks2021: 'mks2021'\n};\n\n/**\n * Methods by which an image can be resized to fit the provided dimensions.\n * @member\n * @private\n */\nconst fit = {\n contain: 'contain',\n cover: 'cover',\n fill: 'fill',\n inside: 'inside',\n outside: 'outside'\n};\n\n/**\n * Map external fit property to internal canvas property.\n * @member\n * @private\n */\nconst mapFitToCanvas = {\n contain: 'embed',\n cover: 'crop',\n fill: 'ignore_aspect',\n inside: 'max',\n outside: 'min'\n};\n\n/**\n * @private\n */\nfunction isRotationExpected (options) {\n return (options.angle % 360) !== 0 || options.rotationAngle !== 0;\n}\n\n/**\n * @private\n */\nfunction isResizeExpected (options) {\n return options.width !== -1 || options.height !== -1;\n}\n\n/**\n * Resize image to `width`, `height` or `width x height`.\n *\n * When both a `width` and `height` are provided, the possible methods by which the image should **fit** these are:\n * - `cover`: (default) Preserving aspect ratio, attempt to ensure the image covers both provided dimensions by cropping/clipping to fit.\n * - `contain`: Preserving aspect ratio, contain within both provided dimensions using \"letterboxing\" where necessary.\n * - `fill`: Ignore the aspect ratio of the input and stretch to both provided dimensions.\n * - `inside`: Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to both those specified.\n * - `outside`: Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to both those specified.\n *\n * Some of these values are based on the [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) CSS property.\n *\n * <img alt=\"Examples of various values for the fit property when resizing\" width=\"100%\" style=\"aspect-ratio: 998/243\" src=\"/api-resize-fit.svg\">\n *\n * When using a **fit** of `cover` or `contain`, the default **position** is `centre`. Other options are:\n * - `sharp.position`: `top`, `right top`, `right`, `right bottom`, `bottom`, `left bottom`, `left`, `left top`.\n * - `sharp.gravity`: `north`, `northeast`, `east`, `southeast`, `south`, `southwest`, `west`, `northwest`, `center` or `centre`.\n * - `sharp.strategy`: `cover` only, dynamically crop using either the `entropy` or `attention` strategy.\n *\n * Some of these values are based on the [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) CSS property.\n *\n * The strategy-based approach initially resizes so one dimension is at its target length\n * then repeatedly ranks edge regions, discarding the edge with the lowest score based on the selected strategy.\n * - `entropy`: focus on the region with the highest [Shannon entropy](https://en.wikipedia.org/wiki/Entropy_%28information_theory%29).\n * - `attention`: focus on the region with the highest luminance frequency, colour saturation and presence of skin tones.\n *\n * Possible downsizing kernels are:\n * - `nearest`: Use [nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation).\n * - `linear`: Use a [triangle filter](https://en.wikipedia.org/wiki/Triangular_function).\n * - `cubic`: Use a [Catmull-Rom spline](https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline).\n * - `mitchell`: Use a [Mitchell-Netravali spline](https://www.cs.utexas.edu/~fussell/courses/cs384g-fall2013/lectures/mitchell/Mitchell.pdf).\n * - `lanczos2`: Use a [Lanczos kernel](https://en.wikipedia.org/wiki/Lanczos_resampling#Lanczos_kernel) with `a=2`.\n * - `lanczos3`: Use a Lanczos kernel with `a=3` (the default).\n * - `mks2013`: Use a [Magic Kernel Sharp](https://johncostella.com/magic/mks.pdf) 2013 kernel, as adopted by Facebook.\n * - `mks2021`: Use a Magic Kernel Sharp 2021 kernel, with more accurate (reduced) sharpening than the 2013 version.\n *\n * When upsampling, these kernels map to `nearest`, `linear` and `cubic` interpolators.\n * Downsampling kernels without a matching upsampling interpolator map to `cubic`.\n *\n * Only one resize can occur per pipeline.\n * Previous calls to `resize` in the same pipeline will be ignored.\n *\n * @example\n * sharp(input)\n * .resize({ width: 100 })\n * .toBuffer()\n * .then(data => {\n * // 100 pixels wide, auto-scaled height\n * });\n *\n * @example\n * sharp(input)\n * .resize({ height: 100 })\n * .toBuffer()\n * .then(data => {\n * // 100 pixels high, auto-scaled width\n * });\n *\n * @example\n * sharp(input)\n * .resize(200, 300, {\n * kernel: sharp.kernel.nearest,\n * fit: 'contain',\n * position: 'right top',\n * background: { r: 255, g: 255, b: 255, alpha: 0.5 }\n * })\n * .toFile('output.png')\n * .then(() => {\n * // output.png is a 200 pixels wide and 300 pixels high image\n * // containing a nearest-neighbour scaled version\n * // contained within the north-east corner of a semi-transparent white canvas\n * });\n *\n * @example\n * const transformer = sharp()\n * .resize({\n * width: 200,\n * height: 200,\n * fit: sharp.fit.cover,\n * position: sharp.strategy.entropy\n * });\n * // Read image data from readableStream\n * // Write 200px square auto-cropped image data to writableStream\n * readableStream\n * .pipe(transformer)\n * .pipe(writableStream);\n *\n * @example\n * sharp(input)\n * .resize(200, 200, {\n * fit: sharp.fit.inside,\n * withoutEnlargement: true\n * })\n * .toFormat('jpeg')\n * .toBuffer()\n * .then(function(outputBuffer) {\n * // outputBuffer contains JPEG image data\n * // no wider and no higher than 200 pixels\n * // and no larger than the input image\n * });\n *\n * @example\n * sharp(input)\n * .resize(200, 200, {\n * fit: sharp.fit.outside,\n * withoutReduction: true\n * })\n * .toFormat('jpeg')\n * .toBuffer()\n * .then(function(outputBuffer) {\n * // outputBuffer contains JPEG image data\n * // of at least 200 pixels wide and 200 pixels high while maintaining aspect ratio\n * // and no smaller than the input image\n * });\n *\n * @example\n * const scaleByHalf = await sharp(input)\n * .metadata()\n * .then(({ width }) => sharp(input)\n * .resize(Math.round(width * 0.5))\n * .toBuffer()\n * );\n *\n * @param {number} [width] - How many pixels wide the resultant image should be. Use `null` or `undefined` to auto-scale the width to match the height.\n * @param {number} [height] - How many pixels high the resultant image should be. Use `null` or `undefined` to auto-scale the height to match the width.\n * @param {Object} [options]\n * @param {number} [options.width] - An alternative means of specifying `width`. If both are present this takes priority.\n * @param {number} [options.height] - An alternative means of specifying `height`. If both are present this takes priority.\n * @param {String} [options.fit='cover'] - How the image should be resized/cropped to fit the target dimension(s), one of `cover`, `contain`, `fill`, `inside` or `outside`.\n * @param {String} [options.position='centre'] - A position, gravity or strategy to use when `fit` is `cover` or `contain`.\n * @param {String|Object} [options.background={r: 0, g: 0, b: 0, alpha: 1}] - background colour when `fit` is `contain`, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black without transparency.\n * @param {String} [options.kernel='lanczos3'] - The kernel to use for image reduction and the inferred interpolator to use for upsampling. Use the `fastShrinkOnLoad` option to control kernel vs shrink-on-load.\n * @param {Boolean} [options.withoutEnlargement=false] - Do not scale up if the width *or* height are already less than the target dimensions, equivalent to GraphicsMagick's `>` geometry option. This may result in output dimensions smaller than the target dimensions.\n * @param {Boolean} [options.withoutReduction=false] - Do not scale down if the width *or* height are already greater than the target dimensions, equivalent to GraphicsMagick's `<` geometry option. This may still result in a crop to reach the target dimensions.\n * @param {Boolean} [options.fastShrinkOnLoad=true] - Take greater advantage of the JPEG and WebP shrink-on-load feature, which can lead to a slight moir\u00E9 pattern or round-down of an auto-scaled dimension.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction resize (widthOrOptions, height, options) {\n if (isResizeExpected(this.options)) {\n this.options.debuglog('ignoring previous resize options');\n }\n if (this.options.widthPost !== -1) {\n this.options.debuglog('operation order will be: extract, resize, extract');\n }\n if (is.defined(widthOrOptions)) {\n if (is.object(widthOrOptions) && !is.defined(options)) {\n options = widthOrOptions;\n } else if (is.integer(widthOrOptions) && is.inRange(widthOrOptions, 1, 100000000)) {\n this.options.width = widthOrOptions;\n } else {\n throw is.invalidParameterError('width', 'positive integer between 1 and 100000000', widthOrOptions);\n }\n } else {\n this.options.width = -1;\n }\n if (is.defined(height)) {\n if (is.integer(height) && is.inRange(height, 1, 100000000)) {\n this.options.height = height;\n } else {\n throw is.invalidParameterError('height', 'positive integer between 1 and 100000000', height);\n }\n } else {\n this.options.height = -1;\n }\n if (is.object(options)) {\n // Width\n if (is.defined(options.width)) {\n if (is.integer(options.width) && is.inRange(options.width, 1, 100000000)) {\n this.options.width = options.width;\n } else {\n throw is.invalidParameterError('width', 'positive integer between 1 and 100000000', options.width);\n }\n }\n // Height\n if (is.defined(options.height)) {\n if (is.integer(options.height) && is.inRange(options.height, 1, 100000000)) {\n this.options.height = options.height;\n } else {\n throw is.invalidParameterError('height', 'positive integer between 1 and 100000000', options.height);\n }\n }\n // Fit\n if (is.defined(options.fit)) {\n const canvas = mapFitToCanvas[options.fit];\n if (is.string(canvas)) {\n this.options.canvas = canvas;\n } else {\n throw is.invalidParameterError('fit', 'valid fit', options.fit);\n }\n }\n // Position\n if (is.defined(options.position)) {\n const pos = is.integer(options.position)\n ? options.position\n : strategy[options.position] || position[options.position] || gravity[options.position];\n if (is.integer(pos) && (is.inRange(pos, 0, 8) || is.inRange(pos, 16, 17))) {\n this.options.position = pos;\n } else {\n throw is.invalidParameterError('position', 'valid position/gravity/strategy', options.position);\n }\n }\n // Background\n this._setBackgroundColourOption('resizeBackground', options.background);\n // Kernel\n if (is.defined(options.kernel)) {\n if (is.string(kernel[options.kernel])) {\n this.options.kernel = kernel[options.kernel];\n } else {\n throw is.invalidParameterError('kernel', 'valid kernel name', options.kernel);\n }\n }\n // Without enlargement\n if (is.defined(options.withoutEnlargement)) {\n this._setBooleanOption('withoutEnlargement', options.withoutEnlargement);\n }\n // Without reduction\n if (is.defined(options.withoutReduction)) {\n this._setBooleanOption('withoutReduction', options.withoutReduction);\n }\n // Shrink on load\n if (is.defined(options.fastShrinkOnLoad)) {\n this._setBooleanOption('fastShrinkOnLoad', options.fastShrinkOnLoad);\n }\n }\n if (isRotationExpected(this.options) && isResizeExpected(this.options)) {\n this.options.rotateBefore = true;\n }\n return this;\n}\n\n/**\n * Extend / pad / extrude one or more edges of the image with either\n * the provided background colour or pixels derived from the image.\n * This operation will always occur after resizing and extraction, if any.\n *\n * @example\n * // Resize to 140 pixels wide, then add 10 transparent pixels\n * // to the top, left and right edges and 20 to the bottom edge\n * sharp(input)\n * .resize(140)\n * .extend({\n * top: 10,\n * bottom: 20,\n * left: 10,\n * right: 10,\n * background: { r: 0, g: 0, b: 0, alpha: 0 }\n * })\n * ...\n *\n* @example\n * // Add a row of 10 red pixels to the bottom\n * sharp(input)\n * .extend({\n * bottom: 10,\n * background: 'red'\n * })\n * ...\n *\n * @example\n * // Extrude image by 8 pixels to the right, mirroring existing right hand edge\n * sharp(input)\n * .extend({\n * right: 8,\n * background: 'mirror'\n * })\n * ...\n *\n * @param {(number|Object)} extend - single pixel count to add to all edges or an Object with per-edge counts\n * @param {number} [extend.top=0] - number of pixels to add to the top edge, valid values are integers in the range 0-100000000\n * @param {number} [extend.left=0] - number of pixels to add to the left edge, valid values are integers in the range 0-100000000\n * @param {number} [extend.bottom=0] - number of pixels to add to the bottom edge, valid values are integers in the range 0-100000000\n * @param {number} [extend.right=0] - number of pixels to add to the right edge, valid values are integers in the range 0-100000000\n * @param {String} [extend.extendWith='background'] - populate new pixels using this method, one of: background, copy, repeat, mirror.\n * @param {String|Object} [extend.background={r: 0, g: 0, b: 0, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black without transparency.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n*/\nfunction extend (extend) {\n if (is.integer(extend)) {\n if (is.inRange(extend, 1, 100000000)) {\n this.options.extendTop = extend;\n this.options.extendBottom = extend;\n this.options.extendLeft = extend;\n this.options.extendRight = extend;\n } else {\n throw is.invalidParameterError('extend', 'integer between 1 and 100000000', extend);\n }\n } else if (is.object(extend)) {\n if (is.defined(extend.top)) {\n if (is.integer(extend.top) && is.inRange(extend.top, 0, 100000000)) {\n this.options.extendTop = extend.top;\n } else {\n throw is.invalidParameterError('top', 'integer between 0 and 100000000', extend.top);\n }\n }\n if (is.defined(extend.bottom)) {\n if (is.integer(extend.bottom) && is.inRange(extend.bottom, 0, 100000000)) {\n this.options.extendBottom = extend.bottom;\n } else {\n throw is.invalidParameterError('bottom', 'integer between 0 and 100000000', extend.bottom);\n }\n }\n if (is.defined(extend.left)) {\n if (is.integer(extend.left) && is.inRange(extend.left, 0, 100000000)) {\n this.options.extendLeft = extend.left;\n } else {\n throw is.invalidParameterError('left', 'integer between 0 and 100000000', extend.left);\n }\n }\n if (is.defined(extend.right)) {\n if (is.integer(extend.right) && is.inRange(extend.right, 0, 100000000)) {\n this.options.extendRight = extend.right;\n } else {\n throw is.invalidParameterError('right', 'integer between 0 and 100000000', extend.right);\n }\n }\n this._setBackgroundColourOption('extendBackground', extend.background);\n if (is.defined(extend.extendWith)) {\n if (is.string(extendWith[extend.extendWith])) {\n this.options.extendWith = extendWith[extend.extendWith];\n } else {\n throw is.invalidParameterError('extendWith', 'one of: background, copy, repeat, mirror', extend.extendWith);\n }\n }\n } else {\n throw is.invalidParameterError('extend', 'integer or object', extend);\n }\n return this;\n}\n\n/**\n * Extract/crop a region of the image.\n *\n * - Use `extract` before `resize` for pre-resize extraction.\n * - Use `extract` after `resize` for post-resize extraction.\n * - Use `extract` twice and `resize` once for extract-then-resize-then-extract in a fixed operation order.\n *\n * @example\n * sharp(input)\n * .extract({ left: left, top: top, width: width, height: height })\n * .toFile(output, function(err) {\n * // Extract a region of the input image, saving in the same format.\n * });\n * @example\n * sharp(input)\n * .extract({ left: leftOffsetPre, top: topOffsetPre, width: widthPre, height: heightPre })\n * .resize(width, height)\n * .extract({ left: leftOffsetPost, top: topOffsetPost, width: widthPost, height: heightPost })\n * .toFile(output, function(err) {\n * // Extract a region, resize, then extract from the resized image\n * });\n *\n * @param {Object} options - describes the region to extract using integral pixel values\n * @param {number} options.left - zero-indexed offset from left edge, an integer between 0 and 100000000\n * @param {number} options.top - zero-indexed offset from top edge, an integer between 0 and 100000000\n * @param {number} options.width - width of region to extract, an integer between 0 and 100000000\n * @param {number} options.height - height of region to extract, an integer between 0 and 100000000\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction extract (options) {\n const suffix = isResizeExpected(this.options) || this.options.widthPre !== -1 ? 'Post' : 'Pre';\n if (this.options[`width${suffix}`] !== -1) {\n this.options.debuglog('ignoring previous extract options');\n }\n ['left', 'top', 'width', 'height'].forEach(function (name) {\n const value = options[name];\n if (is.integer(value) && is.inRange(value, 0, 100000000)) {\n this.options[name + (name === 'left' || name === 'top' ? 'Offset' : '') + suffix] = value;\n } else {\n throw is.invalidParameterError(name, 'integer between 0 and 100000000', value);\n }\n }, this);\n // Ensure existing rotation occurs before pre-resize extraction\n if (isRotationExpected(this.options) && !isResizeExpected(this.options)) {\n if (this.options.widthPre === -1 || this.options.widthPost === -1) {\n this.options.rotateBefore = true;\n }\n }\n if (this.options.input.autoOrient) {\n this.options.orientBefore = true;\n }\n return this;\n}\n\n/**\n * Trim pixels from all edges that contain values similar to the given background colour, which defaults to that of the top-left pixel.\n *\n * Images with an alpha channel will use the combined bounding box of alpha and non-alpha channels.\n *\n * If the result of this operation would trim an image to nothing then no change is made.\n *\n * Use the `lineArt` and `threshold` options for control over sensitivity.\n *\n * The `info` response Object will contain `trimOffsetLeft` and `trimOffsetTop` properties.\n *\n * @example\n * // Trim pixels with a colour similar to that of the top-left pixel.\n * await sharp(input)\n * .trim()\n * .toFile(output);\n *\n * @example\n * // Trim pixels with the exact same colour as that of the top-left pixel.\n * await sharp(input)\n * .trim({\n * threshold: 0\n * })\n * .toFile(output);\n *\n * @example\n * // Assume input is line art and trim only pixels with a similar colour to red.\n * const output = await sharp(input)\n * .trim({\n * background: \"#FF0000\",\n * lineArt: true\n * })\n * .toBuffer();\n *\n * @example\n * // Trim all \"yellow-ish\" pixels, being more lenient with the higher threshold.\n * const output = await sharp(input)\n * .trim({\n * background: \"yellow\",\n * threshold: 42,\n * })\n * .toBuffer();\n *\n * @example\n * // Trim image leaving (up to) a 10 pixel margin around the trimmed content.\n * const output = await sharp(input)\n * .trim({\n * margin: 10\n * })\n * .toBuffer();\n *\n * @param {Object} [options]\n * @param {string|Object} [options.background='top-left pixel'] - Background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to that of the top-left pixel.\n * @param {number} [options.threshold=10] - Allowed difference from the above colour, a positive number.\n * @param {boolean} [options.lineArt=false] - Does the input more closely resemble line art (e.g. vector) rather than being photographic?\n * @param {number} [options.margin=0] - Leave a margin around trimmed content, integral number of pixels between 0 and 10000000.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction trim (options) {\n this.options.trimThreshold = 10;\n if (is.defined(options)) {\n if (is.object(options)) {\n if (is.defined(options.background)) {\n this._setBackgroundColourOption('trimBackground', options.background);\n }\n if (is.defined(options.threshold)) {\n if (is.number(options.threshold) && options.threshold >= 0) {\n this.options.trimThreshold = options.threshold;\n } else {\n throw is.invalidParameterError('threshold', 'positive number', options.threshold);\n }\n }\n if (is.defined(options.lineArt)) {\n this._setBooleanOption('trimLineArt', options.lineArt);\n }\n if (is.defined(options.margin)) {\n if (is.integer(options.margin) && is.inRange(options.margin, 0, 10000000)) {\n this.options.trimMargin = options.margin;\n } else {\n throw is.invalidParameterError('margin', 'integer between 0 and 10000000', options.margin);\n }\n }\n } else {\n throw is.invalidParameterError('trim', 'object', options);\n }\n }\n if (isRotationExpected(this.options)) {\n this.options.rotateBefore = true;\n }\n return this;\n}\n\n/**\n * Decorate the Sharp prototype with resize-related functions.\n * @module Sharp\n * @private\n */\nexport default (Sharp) => {\n Object.assign(Sharp.prototype, {\n resize,\n extend,\n extract,\n trim\n });\n // Class attributes\n Sharp.gravity = gravity;\n Sharp.strategy = strategy;\n Sharp.kernel = kernel;\n Sharp.fit = fit;\n Sharp.position = position;\n};\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport is from './is.mjs';\n\n/**\n * Blend modes.\n * @member\n * @private\n */\nconst blend = {\n clear: 'clear',\n source: 'source',\n over: 'over',\n in: 'in',\n out: 'out',\n atop: 'atop',\n dest: 'dest',\n 'dest-over': 'dest-over',\n 'dest-in': 'dest-in',\n 'dest-out': 'dest-out',\n 'dest-atop': 'dest-atop',\n xor: 'xor',\n add: 'add',\n saturate: 'saturate',\n multiply: 'multiply',\n screen: 'screen',\n overlay: 'overlay',\n darken: 'darken',\n lighten: 'lighten',\n 'colour-dodge': 'colour-dodge',\n 'color-dodge': 'colour-dodge',\n 'colour-burn': 'colour-burn',\n 'color-burn': 'colour-burn',\n 'hard-light': 'hard-light',\n 'soft-light': 'soft-light',\n difference: 'difference',\n exclusion: 'exclusion'\n};\n\n/**\n * Composite image(s) over the processed (resized, extracted etc.) image.\n *\n * The images to composite must be the same size or smaller than the processed image.\n * If both `top` and `left` options are provided, they take precedence over `gravity`.\n *\n * Other operations in the same processing pipeline (e.g. resize, rotate, flip,\n * flop, extract) will always be applied to the input image before composition.\n *\n * The `blend` option can be one of `clear`, `source`, `over`, `in`, `out`, `atop`,\n * `dest`, `dest-over`, `dest-in`, `dest-out`, `dest-atop`,\n * `xor`, `add`, `saturate`, `multiply`, `screen`, `overlay`, `darken`, `lighten`,\n * `colour-dodge`, `color-dodge`, `colour-burn`,`color-burn`,\n * `hard-light`, `soft-light`, `difference`, `exclusion`.\n *\n * More information about blend modes can be found at\n * https://www.libvips.org/API/current/enum.BlendMode.html\n * and https://www.cairographics.org/operators/\n *\n * @since 0.22.0\n *\n * @example\n * await sharp(background)\n * .composite([\n * { input: layer1, gravity: 'northwest' },\n * { input: layer2, gravity: 'southeast' },\n * ])\n * .toFile('combined.png');\n *\n * @example\n * const output = await sharp('input.gif', { animated: true })\n * .composite([\n * { input: 'overlay.png', tile: true, blend: 'saturate' }\n * ])\n * .toBuffer();\n *\n * @example\n * sharp('input.png')\n * .rotate(180)\n * .resize(300)\n * .flatten( { background: '#ff6600' } )\n * .composite([{ input: 'overlay.png', gravity: 'southeast' }])\n * .sharpen()\n * .withMetadata()\n * .webp( { quality: 90 } )\n * .toBuffer()\n * .then(function(outputBuffer) {\n * // outputBuffer contains upside down, 300px wide, alpha channel flattened\n * // onto orange background, composited with overlay.png with SE gravity,\n * // sharpened, with metadata, 90% quality WebP image data. Phew!\n * });\n *\n * @param {Object[]} images - Ordered list of images to composite\n * @param {Buffer|String} [images[].input] - Buffer containing image data, String containing the path to an image file, or Create object (see below)\n * @param {Object} [images[].input.create] - describes a blank overlay to be created.\n * @param {Number} [images[].input.create.width]\n * @param {Number} [images[].input.create.height]\n * @param {Number} [images[].input.create.channels] - 3-4\n * @param {String|Object} [images[].input.create.background] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @param {Object} [images[].input.text] - describes a new text image to be created.\n * @param {string} [images[].input.text.text] - text to render as a UTF-8 string. It can contain Pango markup, for example `<i>Le</i>Monde`.\n * @param {string} [images[].input.text.font] - font name to render with.\n * @param {string} [images[].input.text.fontfile] - absolute filesystem path to a font file that can be used by `font`.\n * @param {number} [images[].input.text.width=0] - integral number of pixels to word-wrap at. Lines of text wider than this will be broken at word boundaries.\n * @param {number} [images[].input.text.height=0] - integral number of pixels high. When defined, `dpi` will be ignored and the text will automatically fit the pixel resolution defined by `width` and `height`. Will be ignored if `width` is not specified or set to 0.\n * @param {string} [images[].input.text.align='left'] - text alignment (`'left'`, `'centre'`, `'center'`, `'right'`).\n * @param {boolean} [images[].input.text.justify=false] - set this to true to apply justification to the text.\n * @param {number} [images[].input.text.dpi=72] - the resolution (size) at which to render the text. Does not take effect if `height` is specified.\n * @param {boolean} [images[].input.text.rgba=false] - set this to true to enable RGBA output. This is useful for colour emoji rendering, or support for Pango markup features like `<span foreground=\"red\">Red!</span>`.\n * @param {number} [images[].input.text.spacing=0] - text line height in points. Will use the font line height if none is specified.\n * @param {Boolean} [images[].autoOrient=false] - set to true to use EXIF orientation data, if present, to orient the image.\n * @param {String} [images[].blend='over'] - how to blend this image with the image below.\n * @param {String} [images[].gravity='centre'] - gravity at which to place the overlay.\n * @param {Number} [images[].top] - the pixel offset from the top edge, an integer between -100000000 and 100000000.\n * @param {Number} [images[].left] - the pixel offset from the left edge, an integer between -100000000 and 100000000.\n * @param {Boolean} [images[].tile=false] - set to true to repeat the overlay image across the entire image with the given `gravity`.\n * @param {Boolean} [images[].premultiplied=false] - set to true to avoid premultiplying the image below. Equivalent to the `--premultiplied` vips option.\n * @param {Number} [images[].density=72] - number representing the DPI for vector overlay image.\n * @param {Object} [images[].raw] - describes overlay when using raw pixel data.\n * @param {Number} [images[].raw.width]\n * @param {Number} [images[].raw.height]\n * @param {Number} [images[].raw.channels]\n * @param {boolean} [images[].animated=false] - Set to `true` to read all frames/pages of an animated image.\n * @param {string} [images[].failOn='warning'] - @see {@link /api-constructor/ constructor parameters}\n * @param {number|boolean} [images[].limitInputPixels=268402689] - @see {@link /api-constructor/ constructor parameters}\n * @param {number|boolean} [images[].limitInputChannels=5] - @see {@link /api-constructor/ constructor parameters}\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction composite (images) {\n if (!Array.isArray(images)) {\n throw is.invalidParameterError('images to composite', 'array', images);\n }\n this.options.composite = images.map(image => {\n if (!is.object(image)) {\n throw is.invalidParameterError('image to composite', 'object', image);\n }\n const inputOptions = this._inputOptionsFromObject(image);\n const composite = {\n input: this._createInputDescriptor(image.input, inputOptions, { allowStream: false }),\n blend: 'over',\n tile: false,\n left: 0,\n top: 0,\n hasOffset: false,\n gravity: 0,\n premultiplied: false\n };\n if (is.defined(image.blend)) {\n if (is.string(blend[image.blend])) {\n composite.blend = blend[image.blend];\n } else {\n throw is.invalidParameterError('blend', 'valid blend name', image.blend);\n }\n }\n if (is.defined(image.tile)) {\n if (is.bool(image.tile)) {\n composite.tile = image.tile;\n } else {\n throw is.invalidParameterError('tile', 'boolean', image.tile);\n }\n }\n if (is.defined(image.left)) {\n if (is.integer(image.left) && is.inRange(image.left, -100000000, 100000000)) {\n composite.left = image.left;\n } else {\n throw is.invalidParameterError('left', 'integer between -100000000 and 100000000', image.left);\n }\n }\n if (is.defined(image.top)) {\n if (is.integer(image.top) && is.inRange(image.top, -100000000, 100000000)) {\n composite.top = image.top;\n } else {\n throw is.invalidParameterError('top', 'integer between -100000000 and 100000000', image.top);\n }\n }\n if (is.defined(image.top) !== is.defined(image.left)) {\n throw new Error('Expected both left and top to be set');\n } else {\n composite.hasOffset = is.integer(image.top) && is.integer(image.left);\n }\n if (is.defined(image.gravity)) {\n if (is.integer(image.gravity) && is.inRange(image.gravity, 0, 8)) {\n composite.gravity = image.gravity;\n } else if (is.string(image.gravity) && is.integer(this.constructor.gravity[image.gravity])) {\n composite.gravity = this.constructor.gravity[image.gravity];\n } else {\n throw is.invalidParameterError('gravity', 'valid gravity', image.gravity);\n }\n }\n if (is.defined(image.premultiplied)) {\n if (is.bool(image.premultiplied)) {\n composite.premultiplied = image.premultiplied;\n } else {\n throw is.invalidParameterError('premultiplied', 'boolean', image.premultiplied);\n }\n }\n return composite;\n });\n return this;\n}\n\n/**\n * Decorate the Sharp prototype with composite-related functions.\n * @module Sharp\n * @private\n */\nexport default (Sharp) => {\n Sharp.prototype.composite = composite;\n Sharp.blend = blend;\n};\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport is from './is.mjs';\n\n/**\n * How accurate an operation should be.\n * @member\n * @private\n */\nconst vipsPrecision = {\n integer: 'integer',\n float: 'float',\n approximate: 'approximate'\n};\n\n/**\n * Rotate the output image.\n *\n * The provided angle is converted to a valid positive degree rotation.\n * For example, `-450` will produce a 270 degree rotation.\n *\n * When rotating by an angle other than a multiple of 90,\n * the background colour can be provided with the `background` option.\n *\n * For backwards compatibility, if no angle is provided, `.autoOrient()` will be called.\n *\n * Only one rotation can occur per pipeline (aside from an initial call without\n * arguments to orient via EXIF data). Previous calls to `rotate` in the same\n * pipeline will be ignored.\n *\n * Multi-page images can only be rotated by 180 degrees.\n *\n * Method order is important when rotating, resizing and/or extracting regions,\n * for example `.rotate(x).extract(y)` will produce a different result to `.extract(y).rotate(x)`.\n *\n * @example\n * const rotateThenResize = await sharp(input)\n * .rotate(90)\n * .resize({ width: 16, height: 8, fit: 'fill' })\n * .toBuffer();\n * const resizeThenRotate = await sharp(input)\n * .resize({ width: 16, height: 8, fit: 'fill' })\n * .rotate(90)\n * .toBuffer();\n *\n * @param {number} [angle=auto] angle of rotation.\n * @param {Object} [options] - if present, is an Object with optional attributes.\n * @param {string|Object} [options.background=\"#000000\"] parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction rotate (angle, options) {\n if (!is.defined(angle)) {\n return this.autoOrient();\n }\n if (this.options.angle || this.options.rotationAngle) {\n this.options.debuglog('ignoring previous rotate options');\n this.options.angle = 0;\n this.options.rotationAngle = 0;\n }\n if (is.integer(angle) && !(angle % 90)) {\n this.options.angle = angle;\n } else if (is.number(angle)) {\n this.options.rotationAngle = angle;\n if (is.object(options) && options.background) {\n this._setBackgroundColourOption('rotationBackground', options.background);\n }\n } else {\n throw is.invalidParameterError('angle', 'numeric', angle);\n }\n return this;\n}\n\n/**\n * Auto-orient based on the EXIF `Orientation` tag, then remove the tag.\n * Mirroring is supported and may infer the use of a flip operation.\n *\n * Only the EXIF `Orientation` tag is considered; orientation carried in other\n * places, such as an XMP `tiff:Orientation` element, is left untouched and\n * remains the responsibility of the consumer.\n *\n * Previous or subsequent use of `rotate(angle)` and either `flip()` or `flop()`\n * will logically occur after auto-orientation, regardless of call order.\n *\n * @example\n * const output = await sharp(input).autoOrient().toBuffer();\n *\n * @example\n * const pipeline = sharp()\n * .autoOrient()\n * .resize(null, 200)\n * .toBuffer(function (err, outputBuffer, info) {\n * // outputBuffer contains 200px high JPEG image data,\n * // auto-oriented using EXIF Orientation tag\n * // info.width and info.height contain the dimensions of the resized image\n * });\n * readableStream.pipe(pipeline);\n *\n * @returns {Sharp}\n */\nfunction autoOrient () {\n this.options.input.autoOrient = true;\n return this;\n}\n\n/**\n * Mirror the image vertically (up-down) about the x-axis.\n * This always occurs before rotation, if any.\n *\n * This operation does not work correctly with multi-page images.\n *\n * @example\n * const output = await sharp(input).flip().toBuffer();\n *\n * @param {Boolean} [flip=true]\n * @returns {Sharp}\n */\nfunction flip (flip) {\n this.options.flip = is.bool(flip) ? flip : true;\n return this;\n}\n\n/**\n * Mirror the image horizontally (left-right) about the y-axis.\n * This always occurs before rotation, if any.\n *\n * @example\n * const output = await sharp(input).flop().toBuffer();\n *\n * @param {Boolean} [flop=true]\n * @returns {Sharp}\n */\nfunction flop (flop) {\n this.options.flop = is.bool(flop) ? flop : true;\n return this;\n}\n\n/**\n * Perform an affine transform on an image. This operation will always occur after resizing, extraction and rotation, if any.\n *\n * You must provide an array of length 4 or a 2x2 affine transformation matrix.\n * By default, new pixels are filled with a black background. You can provide a background colour with the `background` option.\n * A particular interpolator may also be specified. Set the `interpolator` option to an attribute of the `sharp.interpolators` Object e.g. `sharp.interpolators.nohalo`.\n *\n * In the case of a 2x2 matrix, the transform is:\n * - X = `matrix[0, 0]` \\* (x + `idx`) + `matrix[0, 1]` \\* (y + `idy`) + `odx`\n * - Y = `matrix[1, 0]` \\* (x + `idx`) + `matrix[1, 1]` \\* (y + `idy`) + `ody`\n *\n * where:\n * - x and y are the coordinates in input image.\n * - X and Y are the coordinates in output image.\n * - (0,0) is the upper left corner.\n *\n * @since 0.27.0\n *\n * @example\n * const pipeline = sharp()\n * .affine([[1, 0.3], [0.1, 0.7]], {\n * background: 'white',\n * interpolator: sharp.interpolators.nohalo\n * })\n * .toBuffer((err, outputBuffer, info) => {\n * // outputBuffer contains the transformed image\n * // info.width and info.height contain the new dimensions\n * });\n *\n * inputStream\n * .pipe(pipeline);\n *\n * @param {Array<Array<number>>|Array<number>} matrix - affine transformation matrix\n * @param {Object} [options] - if present, is an Object with optional attributes.\n * @param {String|Object} [options.background=\"#000000\"] - parsed by the [color](https://www.npmjs.org/package/color) module to extract values for red, green, blue and alpha.\n * @param {Number} [options.idx=0] - input horizontal offset\n * @param {Number} [options.idy=0] - input vertical offset\n * @param {Number} [options.odx=0] - output horizontal offset\n * @param {Number} [options.ody=0] - output vertical offset\n * @param {String} [options.interpolator=sharp.interpolators.bicubic] - interpolator\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction affine (matrix, options) {\n const isValidShape = Array.isArray(matrix) && (\n // 1x4 array of numbers\n (matrix.length === 4 && matrix.every(is.number)) ||\n // 2x2 array of arrays of numbers\n (matrix.length === 2 && matrix.every((row) => Array.isArray(row) && row.length === 2))\n );\n const flatMatrix = isValidShape ? matrix.flat() : [];\n if (flatMatrix.length === 4 && flatMatrix.every(is.number)) {\n this.options.affineMatrix = flatMatrix;\n } else {\n throw is.invalidParameterError('matrix', '1x4 or 2x2 array', matrix);\n }\n\n if (is.defined(options)) {\n if (is.object(options)) {\n this._setBackgroundColourOption('affineBackground', options.background);\n if (is.defined(options.idx)) {\n if (is.number(options.idx)) {\n this.options.affineIdx = options.idx;\n } else {\n throw is.invalidParameterError('options.idx', 'number', options.idx);\n }\n }\n if (is.defined(options.idy)) {\n if (is.number(options.idy)) {\n this.options.affineIdy = options.idy;\n } else {\n throw is.invalidParameterError('options.idy', 'number', options.idy);\n }\n }\n if (is.defined(options.odx)) {\n if (is.number(options.odx)) {\n this.options.affineOdx = options.odx;\n } else {\n throw is.invalidParameterError('options.odx', 'number', options.odx);\n }\n }\n if (is.defined(options.ody)) {\n if (is.number(options.ody)) {\n this.options.affineOdy = options.ody;\n } else {\n throw is.invalidParameterError('options.ody', 'number', options.ody);\n }\n }\n if (is.defined(options.interpolator)) {\n if (is.inArray(options.interpolator, Object.values(this.constructor.interpolators))) {\n this.options.affineInterpolator = options.interpolator;\n } else {\n throw is.invalidParameterError('options.interpolator', 'valid interpolator name', options.interpolator);\n }\n }\n } else {\n throw is.invalidParameterError('options', 'object', options);\n }\n }\n\n return this;\n}\n\n/**\n * Sharpen the image.\n *\n * When used without parameters, performs a fast, mild sharpen of the output image.\n *\n * When a `sigma` is provided, performs a slower, more accurate sharpen of the L channel in the LAB colour space.\n * Fine-grained control over the level of sharpening in \"flat\" (m1) and \"jagged\" (m2) areas is available.\n *\n * See {@link https://www.libvips.org/API/current/method.Image.sharpen.html libvips sharpen} operation.\n *\n * @example\n * const data = await sharp(input).sharpen().toBuffer();\n *\n * @example\n * const data = await sharp(input).sharpen({ sigma: 2 }).toBuffer();\n *\n * @example\n * const data = await sharp(input)\n * .sharpen({\n * sigma: 2,\n * m1: 0,\n * m2: 3,\n * x1: 3,\n * y2: 15,\n * y3: 15,\n * })\n * .toBuffer();\n *\n * @param {Object} [options] - if present, is an Object with attributes\n * @param {number} [options.sigma] - the sigma of the Gaussian mask, where `sigma = 1 + radius / 2`, between 0.000001 and 10\n * @param {number} [options.m1=1.0] - the level of sharpening to apply to \"flat\" areas, between 0 and 1000000\n * @param {number} [options.m2=2.0] - the level of sharpening to apply to \"jagged\" areas, between 0 and 1000000\n * @param {number} [options.x1=2.0] - threshold between \"flat\" and \"jagged\", between 0 and 1000000\n * @param {number} [options.y2=10.0] - maximum amount of brightening, between 0 and 1000000\n * @param {number} [options.y3=20.0] - maximum amount of darkening, between 0 and 1000000\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction sharpen (options) {\n if (is.plainObject(options)) {\n if (is.number(options.sigma) && is.inRange(options.sigma, 0.000001, 10)) {\n this.options.sharpenSigma = options.sigma;\n } else {\n throw is.invalidParameterError('options.sigma', 'number between 0.000001 and 10', options.sigma);\n }\n if (is.defined(options.m1)) {\n if (is.number(options.m1) && is.inRange(options.m1, 0, 1000000)) {\n this.options.sharpenM1 = options.m1;\n } else {\n throw is.invalidParameterError('options.m1', 'number between 0 and 1000000', options.m1);\n }\n }\n if (is.defined(options.m2)) {\n if (is.number(options.m2) && is.inRange(options.m2, 0, 1000000)) {\n this.options.sharpenM2 = options.m2;\n } else {\n throw is.invalidParameterError('options.m2', 'number between 0 and 1000000', options.m2);\n }\n }\n if (is.defined(options.x1)) {\n if (is.number(options.x1) && is.inRange(options.x1, 0, 1000000)) {\n this.options.sharpenX1 = options.x1;\n } else {\n throw is.invalidParameterError('options.x1', 'number between 0 and 1000000', options.x1);\n }\n }\n if (is.defined(options.y2)) {\n if (is.number(options.y2) && is.inRange(options.y2, 0, 1000000)) {\n this.options.sharpenY2 = options.y2;\n } else {\n throw is.invalidParameterError('options.y2', 'number between 0 and 1000000', options.y2);\n }\n }\n if (is.defined(options.y3)) {\n if (is.number(options.y3) && is.inRange(options.y3, 0, 1000000)) {\n this.options.sharpenY3 = options.y3;\n } else {\n throw is.invalidParameterError('options.y3', 'number between 0 and 1000000', options.y3);\n }\n }\n } else {\n this.options.sharpenSigma = -1;\n }\n return this;\n}\n\n/**\n * Apply median filter.\n * When used without parameters the default window is 3x3.\n *\n * @example\n * const output = await sharp(input).median().toBuffer();\n *\n * @example\n * const output = await sharp(input).median(5).toBuffer();\n *\n * @param {number} [size=3] square mask size: size x size\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction median (size) {\n if (!is.defined(size)) {\n // No arguments: default to 3x3\n this.options.medianSize = 3;\n } else if (is.integer(size) && is.inRange(size, 1, 1000)) {\n // Numeric argument: specific sigma\n this.options.medianSize = size;\n } else {\n throw is.invalidParameterError('size', 'integer between 1 and 1000', size);\n }\n return this;\n}\n\n/**\n * Blur the image.\n *\n * When used without parameters, performs a fast 3x3 box blur (equivalent to a box linear filter).\n *\n * When a `sigma` is provided, performs a slower, more accurate Gaussian blur.\n *\n * @example\n * const boxBlurred = await sharp(input)\n * .blur()\n * .toBuffer();\n *\n * @example\n * const gaussianBlurred = await sharp(input)\n * .blur(5)\n * .toBuffer();\n *\n * @param {Object|number|Boolean} [options]\n * @param {number} [options.sigma] a value between 0.3 and 1000 representing the sigma of the Gaussian mask, where `sigma = 1 + radius / 2`.\n * @param {string} [options.precision='integer'] How accurate the operation should be, one of: integer, float, approximate.\n * @param {number} [options.minAmplitude=0.2] A value between 0.001 and 1. A smaller value will generate a larger, more accurate mask.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction blur (options) {\n let sigma;\n if (is.number(options)) {\n sigma = options;\n } else if (is.plainObject(options)) {\n if (!is.number(options.sigma)) {\n throw is.invalidParameterError('options.sigma', 'number between 0.3 and 1000', sigma);\n }\n sigma = options.sigma;\n if ('precision' in options) {\n if (is.string(vipsPrecision[options.precision])) {\n this.options.precision = vipsPrecision[options.precision];\n } else {\n throw is.invalidParameterError('precision', 'one of: integer, float, approximate', options.precision);\n }\n }\n if ('minAmplitude' in options) {\n if (is.number(options.minAmplitude) && is.inRange(options.minAmplitude, 0.001, 1)) {\n this.options.minAmpl = options.minAmplitude;\n } else {\n throw is.invalidParameterError('minAmplitude', 'number between 0.001 and 1', options.minAmplitude);\n }\n }\n }\n\n if (!is.defined(options)) {\n // No arguments: default to mild blur\n this.options.blurSigma = -1;\n } else if (is.bool(options)) {\n // Boolean argument: apply mild blur?\n this.options.blurSigma = options ? -1 : 0;\n } else if (is.number(sigma) && is.inRange(sigma, 0.3, 1000)) {\n // Numeric argument: specific sigma\n this.options.blurSigma = sigma;\n } else {\n throw is.invalidParameterError('sigma', 'number between 0.3 and 1000', sigma);\n }\n\n return this;\n}\n\n/**\n * Expand foreground objects using the dilate morphological operator.\n *\n * @example\n * const output = await sharp(input)\n * .dilate()\n * .toBuffer();\n *\n * @param {Number} [width=1] dilation width in pixels.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction dilate (width) {\n if (!is.defined(width)) {\n this.options.dilateWidth = 1;\n } else if (is.integer(width) && is.inRange(width, 1, 65536)) {\n this.options.dilateWidth = width;\n } else {\n throw is.invalidParameterError('width', 'integer between 1 and 65536', width);\n }\n return this;\n}\n\n/**\n * Shrink foreground objects using the erode morphological operator.\n *\n * @example\n * const output = await sharp(input)\n * .erode()\n * .toBuffer();\n *\n * @param {Number} [width=1] erosion width in pixels.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction erode (width) {\n if (!is.defined(width)) {\n this.options.erodeWidth = 1;\n } else if (is.integer(width) && is.inRange(width, 1, 65536)) {\n this.options.erodeWidth = width;\n } else {\n throw is.invalidParameterError('width', 'integer between 1 and 65536', width);\n }\n return this;\n}\n\n/**\n * Merge alpha transparency channel, if any, with a background, then remove the alpha channel.\n *\n * See also {@link /api-channel#removealpha removeAlpha}.\n *\n * @example\n * await sharp(rgbaInput)\n * .flatten({ background: '#F0A703' })\n * .toBuffer();\n *\n * @param {Object} [options]\n * @param {string|Object} [options.background={r: 0, g: 0, b: 0}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to black.\n * @returns {Sharp}\n */\nfunction flatten (options) {\n this.options.flatten = is.bool(options) ? options : true;\n if (is.object(options)) {\n this._setBackgroundColourOption('flattenBackground', options.background);\n }\n return this;\n}\n\n/**\n * Ensure the image has an alpha channel\n * with all white pixel values made fully transparent.\n *\n * Existing alpha channel values for non-white pixels remain unchanged.\n *\n * @since 0.32.1\n *\n * @example\n * await sharp(rgbInput)\n * .unflatten()\n * .toBuffer();\n *\n * @example\n * await sharp(rgbInput)\n * .threshold(128, { grayscale: false }) // converter bright pixels to white\n * .unflatten()\n * .toBuffer();\n */\nfunction unflatten () {\n this.options.unflatten = true;\n return this;\n}\n\n/**\n * Apply a gamma correction by reducing the encoding (darken) pre-resize at a factor of `1/gamma`\n * then increasing the encoding (brighten) post-resize at a factor of `gamma`.\n * This can improve the perceived brightness of a resized image in non-linear colour spaces.\n * JPEG and WebP input images will not take advantage of the shrink-on-load performance optimisation\n * when applying a gamma correction.\n *\n * Supply a second argument to use a different output gamma value, otherwise the first value is used in both cases.\n *\n * @param {number} [gamma=2.2] value between 1.0 and 3.0.\n * @param {number} [gammaOut] value between 1.0 and 3.0. (optional, defaults to same as `gamma`)\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction gamma (gamma, gammaOut) {\n if (!is.defined(gamma)) {\n // Default gamma correction of 2.2 (sRGB)\n this.options.gamma = 2.2;\n } else if (is.number(gamma) && is.inRange(gamma, 1, 3)) {\n this.options.gamma = gamma;\n } else {\n throw is.invalidParameterError('gamma', 'number between 1.0 and 3.0', gamma);\n }\n if (!is.defined(gammaOut)) {\n // Default gamma correction for output is same as input\n this.options.gammaOut = this.options.gamma;\n } else if (is.number(gammaOut) && is.inRange(gammaOut, 1, 3)) {\n this.options.gammaOut = gammaOut;\n } else {\n throw is.invalidParameterError('gammaOut', 'number between 1.0 and 3.0', gammaOut);\n }\n return this;\n}\n\n/**\n * Produce the \"negative\" of the image.\n *\n * @example\n * const output = await sharp(input)\n * .negate()\n * .toBuffer();\n *\n * @example\n * const output = await sharp(input)\n * .negate({ alpha: false })\n * .toBuffer();\n *\n * @param {Object} [options]\n * @param {Boolean} [options.alpha=true] Whether or not to negate any alpha channel\n * @returns {Sharp}\n */\nfunction negate (options) {\n this.options.negate = is.bool(options) ? options : true;\n if (is.plainObject(options) && 'alpha' in options) {\n if (!is.bool(options.alpha)) {\n throw is.invalidParameterError('alpha', 'should be boolean value', options.alpha);\n } else {\n this.options.negateAlpha = options.alpha;\n }\n }\n return this;\n}\n\n/**\n * Enhance output image contrast by stretching its luminance to cover a full dynamic range.\n *\n * Uses a histogram-based approach, taking a default range of 1% to 99% to reduce sensitivity to noise at the extremes.\n *\n * Luminance values below the `lower` percentile will be underexposed by clipping to zero.\n * Luminance values above the `upper` percentile will be overexposed by clipping to the max pixel value.\n *\n * @example\n * const output = await sharp(input)\n * .normalise()\n * .toBuffer();\n *\n * @example\n * const output = await sharp(input)\n * .normalise({ lower: 0, upper: 100 })\n * .toBuffer();\n *\n * @param {Object} [options]\n * @param {number} [options.lower=1] - Percentile below which luminance values will be underexposed.\n * @param {number} [options.upper=99] - Percentile above which luminance values will be overexposed.\n * @returns {Sharp}\n */\nfunction normalise (options) {\n if (is.plainObject(options)) {\n if (is.defined(options.lower)) {\n if (is.number(options.lower) && is.inRange(options.lower, 0, 99)) {\n this.options.normaliseLower = options.lower;\n } else {\n throw is.invalidParameterError('lower', 'number between 0 and 99', options.lower);\n }\n }\n if (is.defined(options.upper)) {\n if (is.number(options.upper) && is.inRange(options.upper, 1, 100)) {\n this.options.normaliseUpper = options.upper;\n } else {\n throw is.invalidParameterError('upper', 'number between 1 and 100', options.upper);\n }\n }\n }\n if (this.options.normaliseLower >= this.options.normaliseUpper) {\n throw is.invalidParameterError('range', 'lower to be less than upper',\n `${this.options.normaliseLower} >= ${this.options.normaliseUpper}`);\n }\n this.options.normalise = true;\n return this;\n}\n\n/**\n * Alternative spelling of normalise.\n *\n * @example\n * const output = await sharp(input)\n * .normalize()\n * .toBuffer();\n *\n * @param {Object} [options]\n * @param {number} [options.lower=1] - Percentile below which luminance values will be underexposed.\n * @param {number} [options.upper=99] - Percentile above which luminance values will be overexposed.\n * @returns {Sharp}\n */\nfunction normalize (options) {\n return this.normalise(options);\n}\n\n/**\n * Perform contrast limiting adaptive histogram equalization\n * {@link https://en.wikipedia.org/wiki/Adaptive_histogram_equalization#Contrast_Limited_AHE CLAHE}.\n *\n * This will, in general, enhance the clarity of the image by bringing out darker details.\n *\n * @since 0.28.3\n *\n * @example\n * const output = await sharp(input)\n * .clahe({\n * width: 3,\n * height: 3,\n * })\n * .toBuffer();\n *\n * @param {Object} options\n * @param {number} options.width - Integral width of the search window, in pixels, between 1 and 65536.\n * @param {number} options.height - Integral height of the search window, in pixels, between 1 and 65536.\n * @param {number} [options.maxSlope=3] - Integral level of brightening, between 0 and 100, where 0 disables contrast limiting.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction clahe (options) {\n if (is.plainObject(options)) {\n if (is.integer(options.width) && is.inRange(options.width, 1, 65536)) {\n this.options.claheWidth = options.width;\n } else {\n throw is.invalidParameterError('width', 'integer between 1 and 65536', options.width);\n }\n if (is.integer(options.height) && is.inRange(options.height, 1, 65536)) {\n this.options.claheHeight = options.height;\n } else {\n throw is.invalidParameterError('height', 'integer between 1 and 65536', options.height);\n }\n if (is.defined(options.maxSlope)) {\n if (is.integer(options.maxSlope) && is.inRange(options.maxSlope, 0, 100)) {\n this.options.claheMaxSlope = options.maxSlope;\n } else {\n throw is.invalidParameterError('maxSlope', 'integer between 0 and 100', options.maxSlope);\n }\n }\n } else {\n throw is.invalidParameterError('options', 'plain object', options);\n }\n return this;\n}\n\n/**\n * Convolve the image with the specified kernel.\n *\n * @example\n * sharp(input)\n * .convolve({\n * width: 3,\n * height: 3,\n * kernel: [-1, 0, 1, -2, 0, 2, -1, 0, 1]\n * })\n * .raw()\n * .toBuffer(function(err, data, info) {\n * // data contains the raw pixel data representing the convolution\n * // of the input image with the horizontal Sobel operator\n * });\n *\n * @param {Object} kernel\n * @param {number} kernel.width - width of the kernel in pixels.\n * @param {number} kernel.height - height of the kernel in pixels.\n * @param {Array<number>} kernel.kernel - Array of length `width*height` containing the kernel values.\n * @param {number} [kernel.scale=sum] - the scale of the kernel in pixels.\n * @param {number} [kernel.offset=0] - the offset of the kernel in pixels.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction convolve (kernel) {\n if (!is.object(kernel) || !Array.isArray(kernel.kernel) ||\n !is.integer(kernel.width) || !is.integer(kernel.height) ||\n !is.inRange(kernel.width, 3, 1001) || !is.inRange(kernel.height, 3, 1001) ||\n kernel.height * kernel.width !== kernel.kernel.length ||\n !kernel.kernel.every(is.number)\n ) {\n // must pass in a kernel\n throw new Error('Invalid convolution kernel');\n }\n // Default scale is sum of kernel values\n if (!is.integer(kernel.scale)) {\n kernel.scale = kernel.kernel.reduce((a, b) => a + b, 0);\n }\n // Clip scale to a minimum value of 1\n if (kernel.scale < 1) {\n kernel.scale = 1;\n }\n if (!is.integer(kernel.offset)) {\n kernel.offset = 0;\n }\n this.options.convKernel = kernel;\n return this;\n}\n\n/**\n * Any pixel value greater than or equal to the threshold value will be set to 255, otherwise it will be set to 0.\n * @param {number} [threshold=128] - a value in the range 0-255 representing the level at which the threshold will be applied.\n * @param {Object} [options]\n * @param {Boolean} [options.greyscale=true] - convert to single channel greyscale.\n * @param {Boolean} [options.grayscale=true] - alternative spelling for greyscale.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction threshold (threshold, options) {\n if (!is.defined(threshold)) {\n this.options.threshold = 128;\n } else if (is.bool(threshold)) {\n this.options.threshold = threshold ? 128 : 0;\n } else if (is.integer(threshold) && is.inRange(threshold, 0, 255)) {\n this.options.threshold = threshold;\n } else {\n throw is.invalidParameterError('threshold', 'integer between 0 and 255', threshold);\n }\n if (!is.object(options) || options.greyscale === true || options.grayscale === true) {\n this.options.thresholdGrayscale = true;\n } else {\n this.options.thresholdGrayscale = false;\n }\n return this;\n}\n\n/**\n * Perform a bitwise boolean operation with operand image.\n *\n * This operation creates an output image where each pixel is the result of\n * the selected bitwise boolean `operation` between the corresponding pixels of the input images.\n *\n * @param {Buffer|string} operand - Buffer containing image data or string containing the path to an image file.\n * @param {string} operator - one of `and`, `or` or `eor` to perform that bitwise operation, like the C logic operators `&`, `|` and `^` respectively.\n * @param {Object} [options]\n * @param {Object} [options.raw] - describes operand when using raw pixel data.\n * @param {number} [options.raw.width]\n * @param {number} [options.raw.height]\n * @param {number} [options.raw.channels]\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction boolean (operand, operator, options) {\n this.options.boolean = this._createInputDescriptor(operand, options);\n if (is.string(operator) && is.inArray(operator, ['and', 'or', 'eor'])) {\n this.options.booleanOp = operator;\n } else {\n throw is.invalidParameterError('operator', 'one of: and, or, eor', operator);\n }\n return this;\n}\n\n/**\n * Apply the linear formula `a` * input + `b` to the image to adjust image levels.\n *\n * When a single number is provided, it will be used for all image channels.\n * When an array of numbers is provided, the array length must match the number of channels.\n *\n * @example\n * await sharp(input)\n * .linear(0.5, 2)\n * .toBuffer();\n *\n * @example\n * await sharp(rgbInput)\n * .linear(\n * [0.25, 0.5, 0.75],\n * [150, 100, 50]\n * )\n * .toBuffer();\n *\n * @param {(number|number[])} [a=[]] multiplier\n * @param {(number|number[])} [b=[]] offset\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction linear (a, b) {\n if (!is.defined(a) && is.number(b)) {\n a = 1.0;\n } else if (is.number(a) && !is.defined(b)) {\n b = 0.0;\n }\n if (!is.defined(a)) {\n this.options.linearA = [];\n } else if (is.number(a)) {\n this.options.linearA = [a];\n } else if (Array.isArray(a) && is.inRange(a.length, 1, 1000000) && a.every(is.number)) {\n this.options.linearA = a;\n } else {\n throw is.invalidParameterError('a', 'number or array of numbers', a);\n }\n if (!is.defined(b)) {\n this.options.linearB = [];\n } else if (is.number(b)) {\n this.options.linearB = [b];\n } else if (Array.isArray(b) && is.inRange(b.length, 1, 1000000) && b.every(is.number)) {\n this.options.linearB = b;\n } else {\n throw is.invalidParameterError('b', 'number or array of numbers', b);\n }\n if (this.options.linearA.length !== this.options.linearB.length) {\n throw new Error('Expected a and b to be arrays of the same length');\n }\n return this;\n}\n\n/**\n * Recombine the image with the specified matrix.\n *\n * @since 0.21.1\n *\n * @example\n * sharp(input)\n * .recomb([\n * [0.3588, 0.7044, 0.1368],\n * [0.2990, 0.5870, 0.1140],\n * [0.2392, 0.4696, 0.0912],\n * ])\n * .raw()\n * .toBuffer(function(err, data, info) {\n * // data contains the raw pixel data after applying the matrix\n * // With this example input, a sepia filter has been applied\n * });\n *\n * @param {Array<Array<number>>} inputMatrix - 3x3 or 4x4 Recombination matrix\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction recomb (inputMatrix) {\n if (!Array.isArray(inputMatrix)) {\n throw is.invalidParameterError('inputMatrix', 'array', inputMatrix);\n }\n const dimensions = inputMatrix.length;\n if (dimensions !== 3 && dimensions !== 4) {\n throw is.invalidParameterError('inputMatrix', '3x3 or 4x4 array', dimensions);\n }\n if (!inputMatrix.every((row) => Array.isArray(row) && row.length === dimensions)) {\n throw is.invalidParameterError('inputMatrix', `array of ${dimensions} arrays of length ${dimensions}`, inputMatrix);\n }\n const recombMatrix = inputMatrix.flat();\n if (!recombMatrix.every(is.number)) {\n throw is.invalidParameterError('inputMatrix', 'array of numbers', recombMatrix);\n }\n this.options.recombMatrix = recombMatrix;\n return this;\n}\n\n/**\n * Transforms the image using brightness, saturation, hue rotation, and lightness.\n * Brightness and lightness both operate on luminance, with the difference being that\n * brightness is multiplicative whereas lightness is additive.\n *\n * @since 0.22.1\n *\n * @example\n * // increase brightness by a factor of 2\n * const output = await sharp(input)\n * .modulate({\n * brightness: 2\n * })\n * .toBuffer();\n *\n * @example\n * // hue-rotate by 180 degrees\n * const output = await sharp(input)\n * .modulate({\n * hue: 180\n * })\n * .toBuffer();\n *\n * @example\n * // increase lightness by +50\n * const output = await sharp(input)\n * .modulate({\n * lightness: 50\n * })\n * .toBuffer();\n *\n * @example\n * // decrease brightness and saturation while also hue-rotating by 90 degrees\n * const output = await sharp(input)\n * .modulate({\n * brightness: 0.5,\n * saturation: 0.5,\n * hue: 90,\n * })\n * .toBuffer();\n *\n * @param {Object} [options]\n * @param {number} [options.brightness] Brightness multiplier\n * @param {number} [options.saturation] Saturation multiplier\n * @param {number} [options.hue] Degrees for hue rotation\n * @param {number} [options.lightness] Lightness addend\n * @returns {Sharp}\n */\nfunction modulate (options) {\n if (!is.plainObject(options)) {\n throw is.invalidParameterError('options', 'plain object', options);\n }\n if ('brightness' in options) {\n if (is.number(options.brightness) && options.brightness >= 0) {\n this.options.brightness = options.brightness;\n } else {\n throw is.invalidParameterError('brightness', 'number above zero', options.brightness);\n }\n }\n if ('saturation' in options) {\n if (is.number(options.saturation) && options.saturation >= 0) {\n this.options.saturation = options.saturation;\n } else {\n throw is.invalidParameterError('saturation', 'number above zero', options.saturation);\n }\n }\n if ('hue' in options) {\n if (is.integer(options.hue)) {\n this.options.hue = options.hue % 360;\n } else {\n throw is.invalidParameterError('hue', 'number', options.hue);\n }\n }\n if ('lightness' in options) {\n if (is.number(options.lightness)) {\n this.options.lightness = options.lightness;\n } else {\n throw is.invalidParameterError('lightness', 'number', options.lightness);\n }\n }\n return this;\n}\n\n/**\n * Decorate the Sharp prototype with operation-related functions.\n * @module Sharp\n * @private\n */\nexport default (Sharp) => {\n Object.assign(Sharp.prototype, {\n autoOrient,\n rotate,\n flip,\n flop,\n affine,\n sharpen,\n erode,\n dilate,\n median,\n blur,\n flatten,\n unflatten,\n gamma,\n negate,\n normalise,\n normalize,\n clahe,\n convolve,\n threshold,\n boolean,\n linear,\n recomb,\n modulate\n });\n};\n", "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// node_modules/color/index.js\nvar index_exports = {};\n__export(index_exports, {\n default: () => index_default\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// node_modules/color-name/index.js\nvar colors = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50]\n};\nfor (const key in colors) Object.freeze(colors[key]);\nvar color_name_default = Object.freeze(colors);\n\n// node_modules/color-string/index.js\nvar reverseNames = /* @__PURE__ */ Object.create(null);\nfor (const name in color_name_default) {\n if (Object.hasOwn(color_name_default, name)) {\n reverseNames[color_name_default[name]] = name;\n }\n}\nvar cs = {\n to: {},\n get: {}\n};\ncs.get = function(string) {\n const prefix = string.slice(0, 3).toLowerCase();\n let value;\n let model;\n switch (prefix) {\n case \"hsl\": {\n value = cs.get.hsl(string);\n model = \"hsl\";\n break;\n }\n case \"hwb\": {\n value = cs.get.hwb(string);\n model = \"hwb\";\n break;\n }\n default: {\n value = cs.get.rgb(string);\n model = \"rgb\";\n break;\n }\n }\n if (!value) {\n return null;\n }\n return { model, value };\n};\ncs.get.rgb = function(string) {\n if (!string) {\n return null;\n }\n const abbr = /^#([a-f\\d]{3,4})$/i;\n const hex = /^#([a-f\\d]{6})([a-f\\d]{2})?$/i;\n const rgba = /^rgba?\\(\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)\\s*(?:[\\s,|/]\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(%?)\\s*)?\\)$/i;\n const per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/i;\n const keyword = /^(\\w+)$/;\n let rgb = [0, 0, 0, 1];\n let match;\n let i;\n let hexAlpha;\n if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (i = 0; i < 3; i++) {\n const i2 = i * 2;\n rgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16);\n }\n if (hexAlpha) {\n rgb[3] = Number.parseInt(hexAlpha, 16) / 255;\n }\n } else if (match = string.match(abbr)) {\n match = match[1];\n hexAlpha = match[3];\n for (i = 0; i < 3; i++) {\n rgb[i] = Number.parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n rgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;\n }\n } else if (match = string.match(rgba)) {\n for (i = 0; i < 3; i++) {\n rgb[i] = Number.parseFloat(match[i + 1]);\n }\n if (match[4]) {\n rgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n }\n } else if (match = string.match(per)) {\n for (i = 0; i < 3; i++) {\n rgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55);\n }\n if (match[4]) {\n rgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n }\n } else if (match = string.toLowerCase().match(keyword)) {\n if (match[1] === \"transparent\") {\n return [0, 0, 0, 0];\n }\n if (!Object.hasOwn(color_name_default, match[1])) {\n return null;\n }\n rgb = color_name_default[match[1]].slice();\n rgb[3] = 1;\n return rgb;\n } else {\n return null;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] = clamp(rgb[i], 0, 255);\n }\n rgb[3] = clamp(rgb[3], 0, 1);\n return rgb;\n};\ncs.get.hsl = function(string) {\n if (!string) {\n return null;\n }\n const hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n const match = string.match(hsl);\n if (match) {\n const alpha = Number.parseFloat(match[4]);\n const h = (Number.parseFloat(match[1]) % 360 + 360) % 360;\n const s = clamp(Number.parseFloat(match[2]), 0, 100);\n const l = clamp(Number.parseFloat(match[3]), 0, 100);\n const a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n return null;\n};\ncs.get.hwb = function(string) {\n if (!string) {\n return null;\n }\n const hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n const match = string.match(hwb);\n if (match) {\n const alpha = Number.parseFloat(match[4]);\n const h = (Number.parseFloat(match[1]) % 360 + 360) % 360;\n const w = clamp(Number.parseFloat(match[2]), 0, 100);\n const b = clamp(Number.parseFloat(match[3]), 0, 100);\n const a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n return null;\n};\ncs.to.hex = function(...rgba) {\n return \"#\" + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (rgba[3] < 1 ? hexDouble(Math.round(rgba[3] * 255)) : \"\");\n};\ncs.to.rgb = function(...rgba) {\n return rgba.length < 4 || rgba[3] === 1 ? \"rgb(\" + Math.round(rgba[0]) + \", \" + Math.round(rgba[1]) + \", \" + Math.round(rgba[2]) + \")\" : \"rgba(\" + Math.round(rgba[0]) + \", \" + Math.round(rgba[1]) + \", \" + Math.round(rgba[2]) + \", \" + rgba[3] + \")\";\n};\ncs.to.rgb.percent = function(...rgba) {\n const r = Math.round(rgba[0] / 255 * 100);\n const g = Math.round(rgba[1] / 255 * 100);\n const b = Math.round(rgba[2] / 255 * 100);\n return rgba.length < 4 || rgba[3] === 1 ? \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\" : \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + rgba[3] + \")\";\n};\ncs.to.hsl = function(...hsla) {\n return hsla.length < 4 || hsla[3] === 1 ? \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\" : \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \" + hsla[3] + \")\";\n};\ncs.to.hwb = function(...hwba) {\n let a = \"\";\n if (hwba.length >= 4 && hwba[3] !== 1) {\n a = \", \" + hwba[3];\n }\n return \"hwb(\" + hwba[0] + \", \" + hwba[1] + \"%, \" + hwba[2] + \"%\" + a + \")\";\n};\ncs.to.keyword = function(...rgb) {\n return reverseNames[rgb.slice(0, 3)];\n};\nfunction clamp(number_, min, max) {\n return Math.min(Math.max(min, number_), max);\n}\nfunction hexDouble(number_) {\n const string_ = Math.round(number_).toString(16).toUpperCase();\n return string_.length < 2 ? \"0\" + string_ : string_;\n}\nvar color_string_default = cs;\n\n// node_modules/color-convert/conversions.js\nvar reverseKeywords = {};\nfor (const key of Object.keys(color_name_default)) {\n reverseKeywords[color_name_default[key]] = key;\n}\nvar convert = {\n rgb: { channels: 3, labels: \"rgb\" },\n hsl: { channels: 3, labels: \"hsl\" },\n hsv: { channels: 3, labels: \"hsv\" },\n hwb: { channels: 3, labels: \"hwb\" },\n cmyk: { channels: 4, labels: \"cmyk\" },\n xyz: { channels: 3, labels: \"xyz\" },\n lab: { channels: 3, labels: \"lab\" },\n oklab: { channels: 3, labels: [\"okl\", \"oka\", \"okb\"] },\n lch: { channels: 3, labels: \"lch\" },\n oklch: { channels: 3, labels: [\"okl\", \"okc\", \"okh\"] },\n hex: { channels: 1, labels: [\"hex\"] },\n keyword: { channels: 1, labels: [\"keyword\"] },\n ansi16: { channels: 1, labels: [\"ansi16\"] },\n ansi256: { channels: 1, labels: [\"ansi256\"] },\n hcg: { channels: 3, labels: [\"h\", \"c\", \"g\"] },\n apple: { channels: 3, labels: [\"r16\", \"g16\", \"b16\"] },\n gray: { channels: 1, labels: [\"gray\"] }\n};\nvar conversions_default = convert;\nvar LAB_FT = (6 / 29) ** 3;\nfunction srgbNonlinearTransform(c) {\n const cc = c > 31308e-7 ? 1.055 * c ** (1 / 2.4) - 0.055 : c * 12.92;\n return Math.min(Math.max(0, cc), 1);\n}\nfunction srgbNonlinearTransformInv(c) {\n return c > 0.04045 ? ((c + 0.055) / 1.055) ** 2.4 : c / 12.92;\n}\nfor (const model of Object.keys(convert)) {\n if (!(\"channels\" in convert[model])) {\n throw new Error(\"missing channels property: \" + model);\n }\n if (!(\"labels\" in convert[model])) {\n throw new Error(\"missing channel labels property: \" + model);\n }\n if (convert[model].labels.length !== convert[model].channels) {\n throw new Error(\"channel and label counts mismatch: \" + model);\n }\n const { channels, labels } = convert[model];\n delete convert[model].channels;\n delete convert[model].labels;\n Object.defineProperty(convert[model], \"channels\", { value: channels });\n Object.defineProperty(convert[model], \"labels\", { value: labels });\n}\nconvert.rgb.hsl = function(rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const delta = max - min;\n let h;\n let s;\n switch (max) {\n case min: {\n h = 0;\n break;\n }\n case r: {\n h = (g - b) / delta;\n break;\n }\n case g: {\n h = 2 + (b - r) / delta;\n break;\n }\n case b: {\n h = 4 + (r - g) / delta;\n break;\n }\n }\n h = Math.min(h * 60, 360);\n if (h < 0) {\n h += 360;\n }\n const l = (min + max) / 2;\n if (max === min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n return [h, s * 100, l * 100];\n};\nconvert.rgb.hsv = function(rgb) {\n let rdif;\n let gdif;\n let bdif;\n let h;\n let s;\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const v = Math.max(r, g, b);\n const diff = v - Math.min(r, g, b);\n const diffc = function(c) {\n return (v - c) / 6 / diff + 1 / 2;\n };\n if (diff === 0) {\n h = 0;\n s = 0;\n } else {\n s = diff / v;\n rdif = diffc(r);\n gdif = diffc(g);\n bdif = diffc(b);\n switch (v) {\n case r: {\n h = bdif - gdif;\n break;\n }\n case g: {\n h = 1 / 3 + rdif - bdif;\n break;\n }\n case b: {\n h = 2 / 3 + gdif - rdif;\n break;\n }\n }\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n }\n return [\n h * 360,\n s * 100,\n v * 100\n ];\n};\nconvert.rgb.hwb = function(rgb) {\n const r = rgb[0];\n const g = rgb[1];\n let b = rgb[2];\n const h = convert.rgb.hsl(rgb)[0];\n const w = 1 / 255 * Math.min(r, Math.min(g, b));\n b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n return [h, w * 100, b * 100];\n};\nconvert.rgb.oklab = function(rgb) {\n const r = srgbNonlinearTransformInv(rgb[0] / 255);\n const g = srgbNonlinearTransformInv(rgb[1] / 255);\n const b = srgbNonlinearTransformInv(rgb[2] / 255);\n const lp = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);\n const mp = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);\n const sp = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);\n const l = 0.2104542553 * lp + 0.793617785 * mp - 0.0040720468 * sp;\n const aa = 1.9779984951 * lp - 2.428592205 * mp + 0.4505937099 * sp;\n const bb = 0.0259040371 * lp + 0.7827717662 * mp - 0.808675766 * sp;\n return [l * 100, aa * 100, bb * 100];\n};\nconvert.rgb.cmyk = function(rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const k = Math.min(1 - r, 1 - g, 1 - b);\n const c = (1 - r - k) / (1 - k) || 0;\n const m = (1 - g - k) / (1 - k) || 0;\n const y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n};\nfunction comparativeDistance(x, y) {\n return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2;\n}\nconvert.rgb.keyword = function(rgb) {\n const reversed = reverseKeywords[rgb];\n if (reversed) {\n return reversed;\n }\n let currentClosestDistance = Number.POSITIVE_INFINITY;\n let currentClosestKeyword;\n for (const keyword of Object.keys(color_name_default)) {\n const value = color_name_default[keyword];\n const distance = comparativeDistance(rgb, value);\n if (distance < currentClosestDistance) {\n currentClosestDistance = distance;\n currentClosestKeyword = keyword;\n }\n }\n return currentClosestKeyword;\n};\nconvert.keyword.rgb = function(keyword) {\n return [...color_name_default[keyword]];\n};\nconvert.rgb.xyz = function(rgb) {\n const r = srgbNonlinearTransformInv(rgb[0] / 255);\n const g = srgbNonlinearTransformInv(rgb[1] / 255);\n const b = srgbNonlinearTransformInv(rgb[2] / 255);\n const x = r * 0.4124564 + g * 0.3575761 + b * 0.1804375;\n const y = r * 0.2126729 + g * 0.7151522 + b * 0.072175;\n const z = r * 0.0193339 + g * 0.119192 + b * 0.9503041;\n return [x * 100, y * 100, z * 100];\n};\nconvert.rgb.lab = function(rgb) {\n const xyz = convert.rgb.xyz(rgb);\n let x = xyz[0];\n let y = xyz[1];\n let z = xyz[2];\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > LAB_FT ? x ** (1 / 3) : 7.787 * x + 16 / 116;\n y = y > LAB_FT ? y ** (1 / 3) : 7.787 * y + 16 / 116;\n z = z > LAB_FT ? z ** (1 / 3) : 7.787 * z + 16 / 116;\n const l = 116 * y - 16;\n const a = 500 * (x - y);\n const b = 200 * (y - z);\n return [l, a, b];\n};\nconvert.hsl.rgb = function(hsl) {\n const h = hsl[0] / 360;\n const s = hsl[1] / 100;\n const l = hsl[2] / 100;\n let t3;\n let value;\n if (s === 0) {\n value = l * 255;\n return [value, value, value];\n }\n const t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n value = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n value = t2;\n } else if (3 * t3 < 2) {\n value = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n } else {\n value = t1;\n }\n rgb[i] = value * 255;\n }\n return rgb;\n};\nconvert.hsl.hsv = function(hsl) {\n const h = hsl[0];\n let s = hsl[1] / 100;\n let l = hsl[2] / 100;\n let smin = s;\n const lmin = Math.max(l, 0.01);\n l *= 2;\n s *= l <= 1 ? l : 2 - l;\n smin *= lmin <= 1 ? lmin : 2 - lmin;\n const v = (l + s) / 2;\n const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);\n return [h, sv * 100, v * 100];\n};\nconvert.hsv.rgb = function(hsv) {\n const h = hsv[0] / 60;\n const s = hsv[1] / 100;\n let v = hsv[2] / 100;\n const hi = Math.floor(h) % 6;\n const f = h - Math.floor(h);\n const p = 255 * v * (1 - s);\n const q = 255 * v * (1 - s * f);\n const t = 255 * v * (1 - s * (1 - f));\n v *= 255;\n switch (hi) {\n case 0: {\n return [v, t, p];\n }\n case 1: {\n return [q, v, p];\n }\n case 2: {\n return [p, v, t];\n }\n case 3: {\n return [p, q, v];\n }\n case 4: {\n return [t, p, v];\n }\n case 5: {\n return [v, p, q];\n }\n }\n};\nconvert.hsv.hsl = function(hsv) {\n const h = hsv[0];\n const s = hsv[1] / 100;\n const v = hsv[2] / 100;\n const vmin = Math.max(v, 0.01);\n let sl;\n let l;\n l = (2 - s) * v;\n const lmin = (2 - s) * vmin;\n sl = s * vmin;\n sl /= lmin <= 1 ? lmin : 2 - lmin;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n};\nconvert.hwb.rgb = function(hwb) {\n const h = hwb[0] / 360;\n let wh = hwb[1] / 100;\n let bl = hwb[2] / 100;\n const ratio = wh + bl;\n let f;\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n const i = Math.floor(6 * h);\n const v = 1 - bl;\n f = 6 * h - i;\n if ((i & 1) !== 0) {\n f = 1 - f;\n }\n const n = wh + f * (v - wh);\n let r;\n let g;\n let b;\n switch (i) {\n default:\n case 6:\n case 0: {\n r = v;\n g = n;\n b = wh;\n break;\n }\n case 1: {\n r = n;\n g = v;\n b = wh;\n break;\n }\n case 2: {\n r = wh;\n g = v;\n b = n;\n break;\n }\n case 3: {\n r = wh;\n g = n;\n b = v;\n break;\n }\n case 4: {\n r = n;\n g = wh;\n b = v;\n break;\n }\n case 5: {\n r = v;\n g = wh;\n b = n;\n break;\n }\n }\n return [r * 255, g * 255, b * 255];\n};\nconvert.cmyk.rgb = function(cmyk) {\n const c = cmyk[0] / 100;\n const m = cmyk[1] / 100;\n const y = cmyk[2] / 100;\n const k = cmyk[3] / 100;\n const r = 1 - Math.min(1, c * (1 - k) + k);\n const g = 1 - Math.min(1, m * (1 - k) + k);\n const b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n};\nconvert.xyz.rgb = function(xyz) {\n const x = xyz[0] / 100;\n const y = xyz[1] / 100;\n const z = xyz[2] / 100;\n let r;\n let g;\n let b;\n r = x * 3.2404542 + y * -1.5371385 + z * -0.4985314;\n g = x * -0.969266 + y * 1.8760108 + z * 0.041556;\n b = x * 0.0556434 + y * -0.2040259 + z * 1.0572252;\n r = srgbNonlinearTransform(r);\n g = srgbNonlinearTransform(g);\n b = srgbNonlinearTransform(b);\n return [r * 255, g * 255, b * 255];\n};\nconvert.xyz.lab = function(xyz) {\n let x = xyz[0];\n let y = xyz[1];\n let z = xyz[2];\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > LAB_FT ? x ** (1 / 3) : 7.787 * x + 16 / 116;\n y = y > LAB_FT ? y ** (1 / 3) : 7.787 * y + 16 / 116;\n z = z > LAB_FT ? z ** (1 / 3) : 7.787 * z + 16 / 116;\n const l = 116 * y - 16;\n const a = 500 * (x - y);\n const b = 200 * (y - z);\n return [l, a, b];\n};\nconvert.xyz.oklab = function(xyz) {\n const x = xyz[0] / 100;\n const y = xyz[1] / 100;\n const z = xyz[2] / 100;\n const lp = Math.cbrt(0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z);\n const mp = Math.cbrt(0.0329845436 * x + 0.9293118715 * y + 0.0361456387 * z);\n const sp = Math.cbrt(0.0482003018 * x + 0.2643662691 * y + 0.633851707 * z);\n const l = 0.2104542553 * lp + 0.793617785 * mp - 0.0040720468 * sp;\n const a = 1.9779984951 * lp - 2.428592205 * mp + 0.4505937099 * sp;\n const b = 0.0259040371 * lp + 0.7827717662 * mp - 0.808675766 * sp;\n return [l * 100, a * 100, b * 100];\n};\nconvert.oklab.oklch = function(oklab) {\n return convert.lab.lch(oklab);\n};\nconvert.oklab.xyz = function(oklab) {\n const ll = oklab[0] / 100;\n const a = oklab[1] / 100;\n const b = oklab[2] / 100;\n const l = (0.999999998 * ll + 0.396337792 * a + 0.215803758 * b) ** 3;\n const m = (1.000000008 * ll - 0.105561342 * a - 0.063854175 * b) ** 3;\n const s = (1.000000055 * ll - 0.089484182 * a - 1.291485538 * b) ** 3;\n const x = 1.227013851 * l - 0.55779998 * m + 0.281256149 * s;\n const y = -0.040580178 * l + 1.11225687 * m - 0.071676679 * s;\n const z = -0.076381285 * l - 0.421481978 * m + 1.58616322 * s;\n return [x * 100, y * 100, z * 100];\n};\nconvert.oklab.rgb = function(oklab) {\n const ll = oklab[0] / 100;\n const aa = oklab[1] / 100;\n const bb = oklab[2] / 100;\n const l = (ll + 0.3963377774 * aa + 0.2158037573 * bb) ** 3;\n const m = (ll - 0.1055613458 * aa - 0.0638541728 * bb) ** 3;\n const s = (ll - 0.0894841775 * aa - 1.291485548 * bb) ** 3;\n const r = srgbNonlinearTransform(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s);\n const g = srgbNonlinearTransform(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s);\n const b = srgbNonlinearTransform(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s);\n return [r * 255, g * 255, b * 255];\n};\nconvert.oklch.oklab = function(oklch) {\n return convert.lch.lab(oklch);\n};\nconvert.lab.xyz = function(lab) {\n const l = lab[0];\n const a = lab[1];\n const b = lab[2];\n let x;\n let y;\n let z;\n y = (l + 16) / 116;\n x = a / 500 + y;\n z = y - b / 200;\n const y2 = y ** 3;\n const x2 = x ** 3;\n const z2 = z ** 3;\n y = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787;\n x = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787;\n z = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787;\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return [x, y, z];\n};\nconvert.lab.lch = function(lab) {\n const l = lab[0];\n const a = lab[1];\n const b = lab[2];\n let h;\n const hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n const c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n};\nconvert.lch.lab = function(lch) {\n const l = lch[0];\n const c = lch[1];\n const h = lch[2];\n const hr = h / 360 * 2 * Math.PI;\n const a = c * Math.cos(hr);\n const b = c * Math.sin(hr);\n return [l, a, b];\n};\nconvert.rgb.ansi16 = function(args, saturation = null) {\n const [r, g, b] = args;\n let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation;\n value = Math.round(value / 50);\n if (value === 0) {\n return 30;\n }\n let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));\n if (value === 2) {\n ansi += 60;\n }\n return ansi;\n};\nconvert.hsv.ansi16 = function(args) {\n return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\nconvert.rgb.ansi256 = function(args) {\n const r = args[0];\n const g = args[1];\n const b = args[2];\n if (r >> 4 === g >> 4 && g >> 4 === b >> 4) {\n if (r < 8) {\n return 16;\n }\n if (r > 248) {\n return 231;\n }\n return Math.round((r - 8) / 247 * 24) + 232;\n }\n const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);\n return ansi;\n};\nconvert.ansi16.rgb = function(args) {\n args = args[0];\n let color = args % 10;\n if (color === 0 || color === 7) {\n if (args > 50) {\n color += 3.5;\n }\n color = color / 10.5 * 255;\n return [color, color, color];\n }\n const mult = (Math.trunc(args > 50) + 1) * 0.5;\n const r = (color & 1) * mult * 255;\n const g = (color >> 1 & 1) * mult * 255;\n const b = (color >> 2 & 1) * mult * 255;\n return [r, g, b];\n};\nconvert.ansi256.rgb = function(args) {\n args = args[0];\n if (args >= 232) {\n const c = (args - 232) * 10 + 8;\n return [c, c, c];\n }\n args -= 16;\n let rem;\n const r = Math.floor(args / 36) / 5 * 255;\n const g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n const b = rem % 6 / 5 * 255;\n return [r, g, b];\n};\nconvert.rgb.hex = function(args) {\n const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255);\n const string = integer.toString(16).toUpperCase();\n return \"000000\".slice(string.length) + string;\n};\nconvert.hex.rgb = function(args) {\n const match = args.toString(16).match(/[a-f\\d]{6}|[a-f\\d]{3}/i);\n if (!match) {\n return [0, 0, 0];\n }\n let colorString = match[0];\n if (match[0].length === 3) {\n colorString = [...colorString].map((char) => char + char).join(\"\");\n }\n const integer = Number.parseInt(colorString, 16);\n const r = integer >> 16 & 255;\n const g = integer >> 8 & 255;\n const b = integer & 255;\n return [r, g, b];\n};\nconvert.rgb.hcg = function(rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(Math.max(r, g), b);\n const min = Math.min(Math.min(r, g), b);\n const chroma = max - min;\n let hue;\n const grayscale = chroma < 1 ? min / (1 - chroma) : 0;\n if (chroma <= 0) {\n hue = 0;\n } else if (max === r) {\n hue = (g - b) / chroma % 6;\n } else if (max === g) {\n hue = 2 + (b - r) / chroma;\n } else {\n hue = 4 + (r - g) / chroma;\n }\n hue /= 6;\n hue %= 1;\n return [hue * 360, chroma * 100, grayscale * 100];\n};\nconvert.hsl.hcg = function(hsl) {\n const s = hsl[1] / 100;\n const l = hsl[2] / 100;\n const c = l < 0.5 ? 2 * s * l : 2 * s * (1 - l);\n let f = 0;\n if (c < 1) {\n f = (l - 0.5 * c) / (1 - c);\n }\n return [hsl[0], c * 100, f * 100];\n};\nconvert.hsv.hcg = function(hsv) {\n const s = hsv[1] / 100;\n const v = hsv[2] / 100;\n const c = s * v;\n let f = 0;\n if (c < 1) {\n f = (v - c) / (1 - c);\n }\n return [hsv[0], c * 100, f * 100];\n};\nconvert.hcg.rgb = function(hcg) {\n const h = hcg[0] / 360;\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n if (c === 0) {\n return [g * 255, g * 255, g * 255];\n }\n const pure = [0, 0, 0];\n const hi = h % 1 * 6;\n const v = hi % 1;\n const w = 1 - v;\n let mg = 0;\n switch (Math.floor(hi)) {\n case 0: {\n pure[0] = 1;\n pure[1] = v;\n pure[2] = 0;\n break;\n }\n case 1: {\n pure[0] = w;\n pure[1] = 1;\n pure[2] = 0;\n break;\n }\n case 2: {\n pure[0] = 0;\n pure[1] = 1;\n pure[2] = v;\n break;\n }\n case 3: {\n pure[0] = 0;\n pure[1] = w;\n pure[2] = 1;\n break;\n }\n case 4: {\n pure[0] = v;\n pure[1] = 0;\n pure[2] = 1;\n break;\n }\n default: {\n pure[0] = 1;\n pure[1] = 0;\n pure[2] = w;\n }\n }\n mg = (1 - c) * g;\n return [\n (c * pure[0] + mg) * 255,\n (c * pure[1] + mg) * 255,\n (c * pure[2] + mg) * 255\n ];\n};\nconvert.hcg.hsv = function(hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const v = c + g * (1 - c);\n let f = 0;\n if (v > 0) {\n f = c / v;\n }\n return [hcg[0], f * 100, v * 100];\n};\nconvert.hcg.hsl = function(hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const l = g * (1 - c) + 0.5 * c;\n let s = 0;\n if (l > 0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1) {\n s = c / (2 * (1 - l));\n }\n return [hcg[0], s * 100, l * 100];\n};\nconvert.hcg.hwb = function(hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const v = c + g * (1 - c);\n return [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\nconvert.hwb.hcg = function(hwb) {\n const w = hwb[1] / 100;\n const b = hwb[2] / 100;\n const v = 1 - b;\n const c = v - w;\n let g = 0;\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n return [hwb[0], c * 100, g * 100];\n};\nconvert.apple.rgb = function(apple) {\n return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];\n};\nconvert.rgb.apple = function(rgb) {\n return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];\n};\nconvert.gray.rgb = function(args) {\n return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\nconvert.gray.hsl = function(args) {\n return [0, 0, args[0]];\n};\nconvert.gray.hsv = convert.gray.hsl;\nconvert.gray.hwb = function(gray) {\n return [0, 100, gray[0]];\n};\nconvert.gray.cmyk = function(gray) {\n return [0, 0, 0, gray[0]];\n};\nconvert.gray.lab = function(gray) {\n return [gray[0], 0, 0];\n};\nconvert.gray.hex = function(gray) {\n const value = Math.round(gray[0] / 100 * 255) & 255;\n const integer = (value << 16) + (value << 8) + value;\n const string = integer.toString(16).toUpperCase();\n return \"000000\".slice(string.length) + string;\n};\nconvert.rgb.gray = function(rgb) {\n const value = (rgb[0] + rgb[1] + rgb[2]) / 3;\n return [value / 255 * 100];\n};\n\n// node_modules/color-convert/route.js\nfunction buildGraph() {\n const graph = {};\n const models2 = Object.keys(conversions_default);\n for (let { length } = models2, i = 0; i < length; i++) {\n graph[models2[i]] = {\n // http://jsperf.com/1-vs-infinity\n // micro-opt, but this is simple.\n distance: -1,\n parent: null\n };\n }\n return graph;\n}\nfunction deriveBFS(fromModel) {\n const graph = buildGraph();\n const queue = [fromModel];\n graph[fromModel].distance = 0;\n while (queue.length > 0) {\n const current = queue.pop();\n const adjacents = Object.keys(conversions_default[current]);\n for (let { length } = adjacents, i = 0; i < length; i++) {\n const adjacent = adjacents[i];\n const node = graph[adjacent];\n if (node.distance === -1) {\n node.distance = graph[current].distance + 1;\n node.parent = current;\n queue.unshift(adjacent);\n }\n }\n }\n return graph;\n}\nfunction link(from, to) {\n return function(args) {\n return to(from(args));\n };\n}\nfunction wrapConversion(toModel, graph) {\n const path = [graph[toModel].parent, toModel];\n let fn = conversions_default[graph[toModel].parent][toModel];\n let cur = graph[toModel].parent;\n while (graph[cur].parent) {\n path.unshift(graph[cur].parent);\n fn = link(conversions_default[graph[cur].parent][cur], fn);\n cur = graph[cur].parent;\n }\n fn.conversion = path;\n return fn;\n}\nfunction route(fromModel) {\n const graph = deriveBFS(fromModel);\n const conversion = {};\n const models2 = Object.keys(graph);\n for (let { length } = models2, i = 0; i < length; i++) {\n const toModel = models2[i];\n const node = graph[toModel];\n if (node.parent === null) {\n continue;\n }\n conversion[toModel] = wrapConversion(toModel, graph);\n }\n return conversion;\n}\nvar route_default = route;\n\n// node_modules/color-convert/index.js\nvar convert2 = {};\nvar models = Object.keys(conversions_default);\nfunction wrapRaw(fn) {\n const wrappedFn = function(...args) {\n const arg0 = args[0];\n if (arg0 === void 0 || arg0 === null) {\n return arg0;\n }\n if (arg0.length > 1) {\n args = arg0;\n }\n return fn(args);\n };\n if (\"conversion\" in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n}\nfunction wrapRounded(fn) {\n const wrappedFn = function(...args) {\n const arg0 = args[0];\n if (arg0 === void 0 || arg0 === null) {\n return arg0;\n }\n if (arg0.length > 1) {\n args = arg0;\n }\n const result = fn(args);\n if (typeof result === \"object\") {\n for (let { length } = result, i = 0; i < length; i++) {\n result[i] = Math.round(result[i]);\n }\n }\n return result;\n };\n if (\"conversion\" in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n}\nfor (const fromModel of models) {\n convert2[fromModel] = {};\n Object.defineProperty(convert2[fromModel], \"channels\", { value: conversions_default[fromModel].channels });\n Object.defineProperty(convert2[fromModel], \"labels\", { value: conversions_default[fromModel].labels });\n const routes = route_default(fromModel);\n const routeModels = Object.keys(routes);\n for (const toModel of routeModels) {\n const fn = routes[toModel];\n convert2[fromModel][toModel] = wrapRounded(fn);\n convert2[fromModel][toModel].raw = wrapRaw(fn);\n }\n}\nvar color_convert_default = convert2;\n\n// node_modules/color/index.js\nvar skippedModels = [\n // To be honest, I don't really feel like keyword belongs in color convert, but eh.\n \"keyword\",\n // Gray conflicts with some method names, and has its own method defined.\n \"gray\",\n // Shouldn't really be in color-convert either...\n \"hex\"\n];\nvar hashedModelKeys = {};\nfor (const model of Object.keys(color_convert_default)) {\n hashedModelKeys[[...color_convert_default[model].labels].sort().join(\"\")] = model;\n}\nvar limiters = {};\nfunction Color(object, model) {\n if (!(this instanceof Color)) {\n return new Color(object, model);\n }\n if (model && model in skippedModels) {\n model = null;\n }\n if (model && !(model in color_convert_default)) {\n throw new Error(\"Unknown model: \" + model);\n }\n let i;\n let channels;\n if (object == null) {\n this.model = \"rgb\";\n this.color = [0, 0, 0];\n this.valpha = 1;\n } else if (object instanceof Color) {\n this.model = object.model;\n this.color = [...object.color];\n this.valpha = object.valpha;\n } else if (typeof object === \"string\") {\n const result = color_string_default.get(object);\n if (result === null) {\n throw new Error(\"Unable to parse color from string: \" + object);\n }\n this.model = result.model;\n channels = color_convert_default[this.model].channels;\n this.color = result.value.slice(0, channels);\n this.valpha = typeof result.value[channels] === \"number\" ? result.value[channels] : 1;\n } else if (object.length > 0) {\n this.model = model || \"rgb\";\n channels = color_convert_default[this.model].channels;\n const newArray = Array.prototype.slice.call(object, 0, channels);\n this.color = zeroArray(newArray, channels);\n this.valpha = typeof object[channels] === \"number\" ? object[channels] : 1;\n } else if (typeof object === \"number\") {\n this.model = \"rgb\";\n this.color = [\n object >> 16 & 255,\n object >> 8 & 255,\n object & 255\n ];\n this.valpha = 1;\n } else {\n this.valpha = 1;\n const keys = Object.keys(object);\n if (\"alpha\" in object) {\n keys.splice(keys.indexOf(\"alpha\"), 1);\n this.valpha = typeof object.alpha === \"number\" ? object.alpha : 0;\n }\n const hashedKeys = keys.sort().join(\"\");\n if (!(hashedKeys in hashedModelKeys)) {\n throw new Error(\"Unable to parse color from object: \" + JSON.stringify(object));\n }\n this.model = hashedModelKeys[hashedKeys];\n const { labels } = color_convert_default[this.model];\n const color = [];\n for (i = 0; i < labels.length; i++) {\n color.push(object[labels[i]]);\n }\n this.color = zeroArray(color);\n }\n if (limiters[this.model]) {\n channels = color_convert_default[this.model].channels;\n for (i = 0; i < channels; i++) {\n const limit = limiters[this.model][i];\n if (limit) {\n this.color[i] = limit(this.color[i]);\n }\n }\n }\n this.valpha = Math.max(0, Math.min(1, this.valpha));\n if (Object.freeze) {\n Object.freeze(this);\n }\n}\nColor.prototype = {\n toString() {\n return this.string();\n },\n toJSON() {\n return this[this.model]();\n },\n string(places) {\n let self = this.model in color_string_default.to ? this : this.rgb();\n self = self.round(typeof places === \"number\" ? places : 1);\n const arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n return color_string_default.to[self.model](...arguments_);\n },\n percentString(places) {\n const self = this.rgb().round(typeof places === \"number\" ? places : 1);\n const arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n return color_string_default.to.rgb.percent(...arguments_);\n },\n array() {\n return this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n },\n object() {\n const result = {};\n const { channels } = color_convert_default[this.model];\n const { labels } = color_convert_default[this.model];\n for (let i = 0; i < channels; i++) {\n result[labels[i]] = this.color[i];\n }\n if (this.valpha !== 1) {\n result.alpha = this.valpha;\n }\n return result;\n },\n unitArray() {\n const rgb = this.rgb().color;\n rgb[0] /= 255;\n rgb[1] /= 255;\n rgb[2] /= 255;\n if (this.valpha !== 1) {\n rgb.push(this.valpha);\n }\n return rgb;\n },\n unitObject() {\n const rgb = this.rgb().object();\n rgb.r /= 255;\n rgb.g /= 255;\n rgb.b /= 255;\n if (this.valpha !== 1) {\n rgb.alpha = this.valpha;\n }\n return rgb;\n },\n round(places) {\n places = Math.max(places || 0, 0);\n return new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n },\n alpha(value) {\n if (value !== void 0) {\n return new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n }\n return this.valpha;\n },\n // Rgb\n red: getset(\"rgb\", 0, maxfn(255)),\n green: getset(\"rgb\", 1, maxfn(255)),\n blue: getset(\"rgb\", 2, maxfn(255)),\n hue: getset([\"hsl\", \"hsv\", \"hsl\", \"hwb\", \"hcg\"], 0, (value) => (value % 360 + 360) % 360),\n saturationl: getset(\"hsl\", 1, maxfn(100)),\n lightness: getset(\"hsl\", 2, maxfn(100)),\n saturationv: getset(\"hsv\", 1, maxfn(100)),\n value: getset(\"hsv\", 2, maxfn(100)),\n chroma: getset(\"hcg\", 1, maxfn(100)),\n gray: getset(\"hcg\", 2, maxfn(100)),\n white: getset(\"hwb\", 1, maxfn(100)),\n wblack: getset(\"hwb\", 2, maxfn(100)),\n cyan: getset(\"cmyk\", 0, maxfn(100)),\n magenta: getset(\"cmyk\", 1, maxfn(100)),\n yellow: getset(\"cmyk\", 2, maxfn(100)),\n black: getset(\"cmyk\", 3, maxfn(100)),\n x: getset(\"xyz\", 0, maxfn(95.047)),\n y: getset(\"xyz\", 1, maxfn(100)),\n z: getset(\"xyz\", 2, maxfn(108.833)),\n l: getset(\"lab\", 0, maxfn(100)),\n a: getset(\"lab\", 1),\n b: getset(\"lab\", 2),\n keyword(value) {\n if (value !== void 0) {\n return new Color(value);\n }\n return color_convert_default[this.model].keyword(this.color);\n },\n hex(value) {\n if (value !== void 0) {\n return new Color(value);\n }\n return color_string_default.to.hex(...this.rgb().round().color);\n },\n hexa(value) {\n if (value !== void 0) {\n return new Color(value);\n }\n const rgbArray = this.rgb().round().color;\n let alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n if (alphaHex.length === 1) {\n alphaHex = \"0\" + alphaHex;\n }\n return color_string_default.to.hex(...rgbArray) + alphaHex;\n },\n rgbNumber() {\n const rgb = this.rgb().color;\n return (rgb[0] & 255) << 16 | (rgb[1] & 255) << 8 | rgb[2] & 255;\n },\n luminosity() {\n const rgb = this.rgb().color;\n const lum = [];\n for (const [i, element] of rgb.entries()) {\n const chan = element / 255;\n lum[i] = chan <= 0.04045 ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n }\n return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n },\n contrast(color2) {\n const lum1 = this.luminosity();\n const lum2 = color2.luminosity();\n if (lum1 > lum2) {\n return (lum1 + 0.05) / (lum2 + 0.05);\n }\n return (lum2 + 0.05) / (lum1 + 0.05);\n },\n level(color2) {\n const contrastRatio = this.contrast(color2);\n if (contrastRatio >= 7) {\n return \"AAA\";\n }\n return contrastRatio >= 4.5 ? \"AA\" : \"\";\n },\n isDark() {\n const rgb = this.rgb().color;\n const yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 1e4;\n return yiq < 128;\n },\n isLight() {\n return !this.isDark();\n },\n negate() {\n const rgb = this.rgb();\n for (let i = 0; i < 3; i++) {\n rgb.color[i] = 255 - rgb.color[i];\n }\n return rgb;\n },\n lighten(ratio) {\n const hsl = this.hsl();\n hsl.color[2] += hsl.color[2] * ratio;\n return hsl;\n },\n darken(ratio) {\n const hsl = this.hsl();\n hsl.color[2] -= hsl.color[2] * ratio;\n return hsl;\n },\n saturate(ratio) {\n const hsl = this.hsl();\n hsl.color[1] += hsl.color[1] * ratio;\n return hsl;\n },\n desaturate(ratio) {\n const hsl = this.hsl();\n hsl.color[1] -= hsl.color[1] * ratio;\n return hsl;\n },\n whiten(ratio) {\n const hwb = this.hwb();\n hwb.color[1] += hwb.color[1] * ratio;\n return hwb;\n },\n blacken(ratio) {\n const hwb = this.hwb();\n hwb.color[2] += hwb.color[2] * ratio;\n return hwb;\n },\n grayscale() {\n const rgb = this.rgb().color;\n const value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n return Color.rgb(value, value, value);\n },\n fade(ratio) {\n return this.alpha(this.valpha - this.valpha * ratio);\n },\n opaquer(ratio) {\n return this.alpha(this.valpha + this.valpha * ratio);\n },\n rotate(degrees) {\n const hsl = this.hsl();\n let hue = hsl.color[0];\n hue = (hue + degrees) % 360;\n hue = hue < 0 ? 360 + hue : hue;\n hsl.color[0] = hue;\n return hsl;\n },\n mix(mixinColor, weight) {\n if (!mixinColor || !mixinColor.rgb) {\n throw new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n }\n const color1 = mixinColor.rgb();\n const color2 = this.rgb();\n const p = weight === void 0 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = color1.alpha() - color2.alpha();\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2;\n const w2 = 1 - w1;\n return Color.rgb(\n w1 * color1.red() + w2 * color2.red(),\n w1 * color1.green() + w2 * color2.green(),\n w1 * color1.blue() + w2 * color2.blue(),\n color1.alpha() * p + color2.alpha() * (1 - p)\n );\n }\n};\nfor (const model of Object.keys(color_convert_default)) {\n if (skippedModels.includes(model)) {\n continue;\n }\n const { channels } = color_convert_default[model];\n Color.prototype[model] = function(...arguments_) {\n if (this.model === model) {\n return new Color(this);\n }\n if (arguments_.length > 0) {\n return new Color(arguments_, model);\n }\n return new Color([...assertArray(color_convert_default[this.model][model].raw(this.color)), this.valpha], model);\n };\n Color[model] = function(...arguments_) {\n let color = arguments_[0];\n if (typeof color === \"number\") {\n color = zeroArray(arguments_, channels);\n }\n return new Color(color, model);\n };\n}\nfunction roundTo(number, places) {\n return Number(number.toFixed(places));\n}\nfunction roundToPlace(places) {\n return function(number) {\n return roundTo(number, places);\n };\n}\nfunction getset(model, channel, modifier) {\n model = Array.isArray(model) ? model : [model];\n for (const m of model) {\n (limiters[m] ||= [])[channel] = modifier;\n }\n model = model[0];\n return function(value) {\n let result;\n if (value !== void 0) {\n if (modifier) {\n value = modifier(value);\n }\n result = this[model]();\n result.color[channel] = value;\n return result;\n }\n result = this[model]().color[channel];\n if (modifier) {\n result = modifier(result);\n }\n return result;\n };\n}\nfunction maxfn(max) {\n return function(v) {\n return Math.max(0, Math.min(max, v));\n };\n}\nfunction assertArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nfunction zeroArray(array, length) {\n for (let i = 0; i < length; i++) {\n if (typeof array[i] !== \"number\") {\n array[i] = 0;\n }\n }\n return array;\n}\nvar index_default = Color;\n", "module.exports = require(\"./color.cjs\").default;\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport color from '@img/colour';\nimport is from './is.mjs';\n\n/**\n * Colourspaces.\n * @private\n */\nconst colourspace = {\n multiband: 'multiband',\n 'b-w': 'b-w',\n bw: 'b-w',\n cmyk: 'cmyk',\n srgb: 'srgb'\n};\n\n/**\n * Tint the image using the provided colour.\n * An alpha channel may be present and will be unchanged by the operation.\n *\n * @example\n * const output = await sharp(input)\n * .tint({ r: 255, g: 240, b: 16 })\n * .toBuffer();\n *\n * @param {string|Object} tint - Parsed by the [color](https://www.npmjs.org/package/color) module.\n * @returns {Sharp}\n * @throws {Error} Invalid parameter\n */\nfunction tint (tint) {\n this._setBackgroundColourOption('tint', tint);\n return this;\n}\n\n/**\n * Convert to 8-bit greyscale; 256 shades of grey.\n * This is a linear operation. If the input image is in a non-linear colour space such as sRGB, use `gamma()` with `greyscale()` for the best results.\n * By default the output image will be web-friendly sRGB and contain three (identical) colour channels.\n * This may be overridden by other sharp operations such as `toColourspace('b-w')`,\n * which will produce an output image containing one colour channel.\n * An alpha channel may be present, and will be unchanged by the operation.\n *\n * @example\n * const output = await sharp(input).greyscale().toBuffer();\n *\n * @param {Boolean} [greyscale=true]\n * @returns {Sharp}\n */\nfunction greyscale (greyscale) {\n this.options.greyscale = is.bool(greyscale) ? greyscale : true;\n return this;\n}\n\n/**\n * Alternative spelling of `greyscale`.\n * @param {Boolean} [grayscale=true]\n * @returns {Sharp}\n */\nfunction grayscale (grayscale) {\n return this.greyscale(grayscale);\n}\n\n/**\n * Set the pipeline colourspace.\n *\n * The input image will be converted to the provided colourspace at the start of the pipeline.\n * All operations will use this colourspace before converting to the output colourspace,\n * as defined by {@link #tocolourspace toColourspace}.\n *\n * @since 0.29.0\n *\n * @example\n * // Run pipeline in 16 bits per channel RGB while converting final result to 8 bits per channel sRGB.\n * await sharp(input)\n * .pipelineColourspace('rgb16')\n * .toColourspace('srgb')\n * .toFile('16bpc-pipeline-to-8bpc-output.png')\n *\n * @param {string} [colourspace] - pipeline colourspace e.g. `rgb16`, `scrgb`, `lab`, `grey16` [...](https://www.libvips.org/API/current/enum.Interpretation.html)\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction pipelineColourspace (colourspace) {\n if (!is.string(colourspace)) {\n throw is.invalidParameterError('colourspace', 'string', colourspace);\n }\n this.options.colourspacePipeline = colourspace;\n return this;\n}\n\n/**\n * Alternative spelling of `pipelineColourspace`.\n * @param {string} [colorspace] - pipeline colorspace.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction pipelineColorspace (colorspace) {\n return this.pipelineColourspace(colorspace);\n}\n\n/**\n * Set the output colourspace.\n * By default output image will be web-friendly sRGB, with additional channels interpreted as alpha channels.\n *\n * @example\n * // Output 16 bits per pixel RGB\n * await sharp(input)\n * .toColourspace('rgb16')\n * .toFile('16-bpp.png')\n *\n * @param {string} [colourspace] - output colourspace e.g. `srgb`, `rgb`, `cmyk`, `lab`, `b-w` [...](https://www.libvips.org/API/current/enum.Interpretation.html)\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction toColourspace (colourspace) {\n if (!is.string(colourspace)) {\n throw is.invalidParameterError('colourspace', 'string', colourspace);\n }\n this.options.colourspace = colourspace;\n return this;\n}\n\n/**\n * Alternative spelling of `toColourspace`.\n * @param {string} [colorspace] - output colorspace.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction toColorspace (colorspace) {\n return this.toColourspace(colorspace);\n}\n\n/**\n * Create a RGBA colour array from a given value.\n * @private\n * @param {string|Object} value\n * @throws {Error} Invalid value\n */\nfunction _getBackgroundColourOption (value) {\n if (\n is.object(value) ||\n (is.string(value) && value.length >= 3 && value.length <= 200)\n ) {\n const colour = color(value);\n const red = colour.red();\n const green = colour.green();\n const blue = colour.blue();\n const alpha = Math.round(colour.alpha() * 255);\n for (const [channel, component] of [['red', red], ['green', green], ['blue', blue], ['alpha', alpha]]) {\n if (!is.number(component)) {\n throw is.invalidParameterError(`background.${channel}`, 'number', component);\n }\n }\n return [red, green, blue, alpha];\n } else {\n throw is.invalidParameterError('background', 'object or string', value);\n }\n}\n\n/**\n * Update a colour attribute of the this.options Object.\n * @private\n * @param {string} key\n * @param {string|Object} value\n * @throws {Error} Invalid value\n */\nfunction _setBackgroundColourOption (key, value) {\n if (is.defined(value)) {\n this.options[key] = _getBackgroundColourOption(value);\n }\n}\n\n/**\n * Decorate the Sharp prototype with colour-related functions.\n * @module Sharp\n * @private\n */\nexport default (Sharp) => {\n Object.assign(Sharp.prototype, {\n // Public\n tint,\n greyscale,\n grayscale,\n pipelineColourspace,\n pipelineColorspace,\n toColourspace,\n toColorspace,\n // Private\n _getBackgroundColourOption,\n _setBackgroundColourOption\n });\n // Class attributes\n Sharp.colourspace = colourspace;\n Sharp.colorspace = colourspace;\n};\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport is from './is.mjs';\n\n/**\n * Boolean operations for bandbool.\n * @private\n */\nconst bool = {\n and: 'and',\n or: 'or',\n eor: 'eor'\n};\n\n/**\n * Remove alpha channels, if any. This is a no-op if the image does not have an alpha channel.\n *\n * See also {@link /api-operation/#flatten flatten}.\n *\n * @example\n * sharp('rgba.png')\n * .removeAlpha()\n * .toFile('rgb.png', function(err, info) {\n * // rgb.png is a 3 channel image without an alpha channel\n * });\n *\n * @returns {Sharp}\n */\nfunction removeAlpha () {\n this.options.removeAlpha = true;\n return this;\n}\n\n/**\n * Ensure the output image has an alpha transparency channel.\n * If missing, the added alpha channel will have the specified\n * transparency level, defaulting to fully-opaque (1).\n * This is a no-op if the image already has an alpha channel.\n *\n * @since 0.21.2\n *\n * @example\n * // rgba.png will be a 4 channel image with a fully-opaque alpha channel\n * await sharp('rgb.jpg')\n * .ensureAlpha()\n * .toFile('rgba.png')\n *\n * @example\n * // rgba is a 4 channel image with a fully-transparent alpha channel\n * const rgba = await sharp(rgb)\n * .ensureAlpha(0)\n * .toBuffer();\n *\n * @param {number} [alpha=1] - alpha transparency level (0=fully-transparent, 1=fully-opaque)\n * @returns {Sharp}\n * @throws {Error} Invalid alpha transparency level\n */\nfunction ensureAlpha (alpha) {\n if (is.defined(alpha)) {\n if (is.number(alpha) && is.inRange(alpha, 0, 1)) {\n this.options.ensureAlpha = alpha;\n } else {\n throw is.invalidParameterError('alpha', 'number between 0 and 1', alpha);\n }\n } else {\n this.options.ensureAlpha = 1;\n }\n return this;\n}\n\n/**\n * Extract a single channel from a multi-channel image.\n *\n * The output colourspace will be either `b-w` (8-bit) or `grey16` (16-bit).\n *\n * @example\n * // green.jpg is a greyscale image containing the green channel of the input\n * await sharp(input)\n * .extractChannel('green')\n * .toFile('green.jpg');\n *\n * @example\n * // red1 is the red value of the first pixel, red2 the second pixel etc.\n * const [red1, red2, ...] = await sharp(input)\n * .extractChannel(0)\n * .raw()\n * .toBuffer();\n *\n * @param {number|string} channel - zero-indexed channel/band number to extract, or `red`, `green`, `blue` or `alpha`.\n * @returns {Sharp}\n * @throws {Error} Invalid channel\n */\nfunction extractChannel (channel) {\n const channelMap = { red: 0, green: 1, blue: 2, alpha: 3 };\n if (Object.keys(channelMap).includes(channel)) {\n channel = channelMap[channel];\n }\n if (is.integer(channel) && is.inRange(channel, 0, 4)) {\n this.options.extractChannel = channel;\n } else {\n throw is.invalidParameterError('channel', 'integer or one of: red, green, blue, alpha', channel);\n }\n return this;\n}\n\n/**\n * Join one or more channels to the image.\n * The meaning of the added channels depends on the output colourspace, set with `toColourspace()`.\n * By default the output image will be web-friendly sRGB, with additional channels interpreted as alpha channels.\n * Channel ordering follows vips convention:\n * - sRGB: 0: Red, 1: Green, 2: Blue, 3: Alpha.\n * - CMYK: 0: Magenta, 1: Cyan, 2: Yellow, 3: Black, 4: Alpha.\n *\n * Buffers may be any of the image formats supported by sharp.\n * For raw pixel input, the `options` object should contain a `raw` attribute, which follows the format of the attribute of the same name in the `sharp()` constructor.\n *\n * @param {Array<string|Buffer>|string|Buffer} images - one or more images (file paths, Buffers).\n * @param {Object} options - image options, see `sharp()` constructor.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction joinChannel (images, options) {\n if (Array.isArray(images)) {\n images.forEach(function (image) {\n this.options.joinChannelIn.push(this._createInputDescriptor(image, options));\n }, this);\n } else {\n this.options.joinChannelIn.push(this._createInputDescriptor(images, options));\n }\n return this;\n}\n\n/**\n * Perform a bitwise boolean operation on all input image channels (bands) to produce a single channel output image.\n *\n * @example\n * sharp('3-channel-rgb-input.png')\n * .bandbool(sharp.bool.and)\n * .toFile('1-channel-output.png', function (err, info) {\n * // The output will be a single channel image where each pixel `P = R & G & B`.\n * // If `I(1,1) = [247, 170, 14] = [0b11110111, 0b10101010, 0b00001111]`\n * // then `O(1,1) = 0b11110111 & 0b10101010 & 0b00001111 = 0b00000010 = 2`.\n * });\n *\n * @param {string} boolOp - one of `and`, `or` or `eor` to perform that bitwise operation, like the C logic operators `&`, `|` and `^` respectively.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction bandbool (boolOp) {\n if (is.string(boolOp) && is.inArray(boolOp, ['and', 'or', 'eor'])) {\n this.options.bandBoolOp = boolOp;\n } else {\n throw is.invalidParameterError('boolOp', 'one of: and, or, eor', boolOp);\n }\n return this;\n}\n\n/**\n * Decorate the Sharp prototype with channel-related functions.\n * @module Sharp\n * @private\n */\nexport default (Sharp) => {\n Object.assign(Sharp.prototype, {\n // Public instance functions\n removeAlpha,\n ensureAlpha,\n extractChannel,\n joinChannel,\n bandbool\n });\n // Class attributes\n Sharp.bool = bool;\n};\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport path from 'node:path';\nimport is from './is.mjs';\nimport sharp from './sharp.mjs';\n\nconst formats = new Map([\n ['heic', 'heif'],\n ['heif', 'heif'],\n ['avif', 'avif'],\n ['jpeg', 'jpeg'],\n ['jpg', 'jpeg'],\n ['jpe', 'jpeg'],\n ['tile', 'tile'],\n ['dz', 'tile'],\n ['png', 'png'],\n ['raw', 'raw'],\n ['tiff', 'tiff'],\n ['tif', 'tiff'],\n ['webp', 'webp'],\n ['gif', 'gif'],\n ['jp2', 'jp2'],\n ['jpx', 'jp2'],\n ['j2k', 'jp2'],\n ['j2c', 'jp2'],\n ['jxl', 'jxl']\n]);\n\nconst jp2Regex = /\\.(jp[2x]|j2[kc])$/i;\n\nconst errJp2Save = () => new Error('JP2 output requires libvips with support for OpenJPEG');\n\nconst bitdepthFromColourCount = (colours) => 1 << 32 - Math.clz32(Math.ceil(Math.log2(colours)) - 1);\n\n/**\n * Write output image data to a file.\n *\n * If an explicit output format is not selected, it will be inferred from the extension,\n * with JPEG, PNG, WebP, AVIF, TIFF, GIF, DZI, and libvips' V format supported.\n * Note that raw pixel data is only supported for buffer output.\n *\n * By default all metadata will be removed, which includes EXIF-based orientation.\n * See {@link #withmetadata withMetadata} for control over this.\n *\n * The caller is responsible for ensuring directory structures and permissions exist.\n *\n * A `Promise` is returned when `callback` is not provided.\n *\n * @example\n * sharp(input)\n * .toFile('output.png', (err, info) => { ... });\n *\n * @example\n * sharp(input)\n * .toFile('output.png')\n * .then(info => { ... })\n * .catch(err => { ... });\n *\n * @param {string} fileOut - the path to write the image data to.\n * @param {Function} [callback] - called on completion with two arguments `(err, info)`.\n * `info` contains the output image `format`, `size` (bytes), `width`, `height`,\n * `channels` and `premultiplied` (indicating if premultiplication was used).\n * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`.\n * When using the attention crop strategy also contains `attentionX` and `attentionY`, the focal point of the cropped region.\n * Animated output will also contain `pageHeight` and `pages`.\n * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text.\n * @returns {Promise<Object>} - when no callback is provided\n * @throws {Error} Invalid parameters\n */\nfunction toFile (fileOut, callback) {\n let err;\n if (!is.string(fileOut)) {\n err = new Error('Missing output file path');\n } else if (is.string(this.options.input.file) && path.resolve(this.options.input.file) === path.resolve(fileOut)) {\n err = new Error('Cannot use same file for input and output');\n } else if (jp2Regex.test(path.extname(fileOut)) && !this.constructor.format.jp2.output.file) {\n err = errJp2Save();\n }\n if (err) {\n if (is.fn(callback)) {\n callback(err);\n } else {\n return Promise.reject(err);\n }\n } else {\n this.options.fileOut = fileOut;\n const stack = Error();\n return this._pipeline(callback, stack);\n }\n return this;\n}\n\n/**\n * Write output to a Buffer.\n * JPEG, PNG, WebP, AVIF, TIFF, GIF and raw pixel data output are supported.\n *\n * Use {@link #toformat toFormat} or one of the format-specific functions such as {@link #jpeg jpeg}, {@link #png png} etc. to set the output format.\n *\n * If no explicit format is set, the output format will match the input image, except SVG input which becomes PNG output.\n *\n * By default all metadata will be removed, which includes EXIF-based orientation.\n * See {@link #withmetadata withMetadata} for control over this.\n *\n * `callback`, if present, gets three arguments `(err, data, info)` where:\n * - `err` is an error, if any.\n * - `data` is the output image data.\n * - `info` contains the output image `format`, `size` (bytes), `width`, `height`,\n * `channels` and `premultiplied` (indicating if premultiplication was used).\n * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`.\n * Animated output will also contain `pageHeight` and `pages`.\n * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text.\n *\n * The underlying `ArrayBuffer` may be marked as non-transferable by some JavaScript runtimes.\n * Use {@link #touint8array toUint8Array} for a guaranteed transferable `ArrayBuffer`.\n *\n * A `Promise` is returned when `callback` is not provided.\n *\n * @example\n * const data = await sharp(input)\n * .png()\n * .toBuffer();\n *\n * @example\n * const { data, info } = await sharp(input)\n * .png()\n * .toBuffer({ resolveWithObject: true });\n *\n * @example\n * const { data, info } = await sharp('my-image.jpg')\n * // output the raw pixels\n * .raw()\n * .toBuffer({ resolveWithObject: true });\n *\n * // create a more type safe way to work with the raw pixel data\n * // this will not copy the data, instead it will change `data`s underlying ArrayBuffer\n * // so `data` and `pixelArray` point to the same memory location\n * const pixelArray = new Uint8ClampedArray(data.buffer);\n *\n * // When you are done changing the pixelArray, sharp takes the `pixelArray` as an input\n * const { width, height, channels } = info;\n * await sharp(pixelArray, { raw: { width, height, channels } })\n * .toFile('my-changed-image.jpg');\n *\n * @param {Object} [options]\n * @param {boolean} [options.resolveWithObject] Resolve the Promise with an Object containing `data` and `info` properties instead of resolving only with `data`.\n * @param {Function} [callback]\n * @returns {Promise<Buffer>} - when no callback is provided\n */\nfunction toBuffer (options, callback) {\n if (is.object(options)) {\n this._setBooleanOption('resolveWithObject', options.resolveWithObject);\n } else if (this.options.resolveWithObject) {\n this.options.resolveWithObject = false;\n }\n this.options.fileOut = '';\n const stack = Error();\n return this._pipeline(is.fn(options) ? options : callback, stack);\n}\n\n/**\n * Write output to a `Uint8Array` backed by a transferable `ArrayBuffer`.\n * JPEG, PNG, WebP, AVIF, TIFF, GIF and raw pixel data output are supported.\n *\n * Use {@link #toformat toFormat} or one of the format-specific functions such as {@link #jpeg jpeg}, {@link #png png} etc. to set the output format.\n *\n * If no explicit format is set, the output format will match the input image, except SVG input which becomes PNG output.\n *\n * By default all metadata will be removed, which includes EXIF-based orientation.\n * See {@link #keepexif keepExif} and similar methods for control over this.\n *\n * Resolves with an `Object` containing:\n * - `data` is the output image as a `Uint8Array` backed by a transferable `ArrayBuffer`.\n * - `info` contains properties relating to the output image such as `width` and `height`.\n *\n * @since v0.35.0\n *\n * @example\n * const { data, info } = await sharp(input).toUint8Array();\n *\n * @example\n * const { data } = await sharp(input)\n * .avif()\n * .toUint8Array();\n * const base64String = data.toBase64();\n *\n * @returns {Promise<{ data: Uint8Array, info: Object }>}\n */\nfunction toUint8Array () {\n this.options.resolveWithObject = true;\n this.options.typedArrayOut = true;\n const stack = Error();\n return this._pipeline(null, stack);\n}\n\n/**\n * Set output density (DPI) in EXIF metadata.\n *\n * @since 0.35.0\n *\n * @example\n * const data = await sharp(input)\n * .withDensity(96)\n * .toBuffer();\n *\n * @param {number} density Number of pixels per inch (DPI).\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withDensity (density) {\n if (is.number(density) && density > 0) {\n this.options.withMetadataDensity = density;\n } else {\n throw is.invalidParameterError('density', 'positive number', density);\n }\n return this.keepExif();\n}\n\n/**\n * Keep all EXIF metadata from the input image in the output image.\n *\n * EXIF metadata is unsupported for TIFF output.\n *\n * @since 0.33.0\n *\n * @example\n * const outputWithExif = await sharp(inputWithExif)\n * .keepExif()\n * .toBuffer();\n *\n * @returns {Sharp}\n */\nfunction keepExif () {\n this.options.keepMetadata |= 0b00001;\n return this;\n}\n\n/**\n * Set EXIF metadata in the output image, ignoring any EXIF in the input image.\n *\n * @since 0.33.0\n *\n * @example\n * const dataWithExif = await sharp(input)\n * .withExif({\n * IFD0: {\n * Copyright: 'The National Gallery'\n * },\n * IFD3: {\n * GPSLatitudeRef: 'N',\n * GPSLatitude: '51/1 30/1 3230/100',\n * GPSLongitudeRef: 'W',\n * GPSLongitude: '0/1 7/1 4366/100'\n * }\n * })\n * .toBuffer();\n *\n * @param {Object<string, Object<string, string>>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withExif (exif) {\n if (is.object(exif)) {\n for (const [ifd, entries] of Object.entries(exif)) {\n if (is.object(entries)) {\n for (const [k, v] of Object.entries(entries)) {\n if (is.string(v)) {\n this.options.withExif[`exif-${ifd.toLowerCase()}-${k}`] = v;\n } else {\n throw is.invalidParameterError(`${ifd}.${k}`, 'string', v);\n }\n }\n } else {\n throw is.invalidParameterError(ifd, 'object', entries);\n }\n }\n } else {\n throw is.invalidParameterError('exif', 'object', exif);\n }\n this.options.withExifMerge = false;\n return this.keepExif();\n}\n\n/**\n * Update EXIF metadata from the input image in the output image.\n *\n * @since 0.33.0\n *\n * @example\n * const dataWithMergedExif = await sharp(inputWithExif)\n * .withExifMerge({\n * IFD0: {\n * Copyright: 'The National Gallery'\n * }\n * })\n * .toBuffer();\n *\n * @param {Object<string, Object<string, string>>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withExifMerge (exif) {\n this.withExif(exif);\n this.options.withExifMerge = true;\n return this;\n}\n\n/**\n * Keep ICC profile from the input image in the output image.\n *\n * When input and output colour spaces differ, use with {@link /api-colour/#tocolourspace toColourspace} and optionally {@link /api-colour/#pipelinecolourspace pipelineColourspace}.\n *\n * @since 0.33.0\n *\n * @example\n * const outputWithIccProfile = await sharp(inputWithIccProfile)\n * .keepIccProfile()\n * .toBuffer();\n *\n * @example\n * const cmykOutputWithIccProfile = await sharp(cmykInputWithIccProfile)\n * .pipelineColourspace('cmyk')\n * .toColourspace('cmyk')\n * .keepIccProfile()\n * .toBuffer();\n *\n * @returns {Sharp}\n */\nfunction keepIccProfile () {\n this.options.keepMetadata |= 0b01000;\n return this;\n}\n\n/**\n * Transform using an ICC profile and attach to the output image.\n *\n * This can either be an absolute filesystem path or\n * built-in profile name (`srgb`, `p3`, `cmyk`).\n *\n * @since 0.33.0\n *\n * @example\n * const outputWithP3 = await sharp(input)\n * .withIccProfile('p3')\n * .toBuffer();\n *\n * @param {string} icc - Absolute filesystem path to output ICC profile or built-in profile name (srgb, p3, cmyk).\n * @param {Object} [options]\n * @param {number} [options.attach=true] Should the ICC profile be included in the output image metadata?\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withIccProfile (icc, options) {\n if (is.string(icc)) {\n this.options.withIccProfile = icc;\n } else {\n throw is.invalidParameterError('icc', 'string', icc);\n }\n this.keepIccProfile();\n if (is.object(options)) {\n if (is.defined(options.attach)) {\n if (is.bool(options.attach)) {\n if (!options.attach) {\n this.options.keepMetadata &= ~0b01000;\n }\n } else {\n throw is.invalidParameterError('attach', 'boolean', options.attach);\n }\n }\n }\n return this;\n}\n\n/**\n * If the input contains gain map metadata, attempt to process the image and gain map separately,\n * recombining them into a single output image.\n *\n * This approach is faster and should produce better results than {@link #withgainmap withGainMap},\n * however not all operations are supported.\n *\n * Only JPEG input and output are supported.\n * JPEG output options other than `quality` are ignored.\n *\n * This feature is experimental and the API may change.\n *\n * @since 0.35.0\n *\n * @example\n * const outputWithResizedGainMap = await sharp(inputWithGainMap)\n * .keepGainMap()\n * .resize({ width: 64 })\n * .toBuffer();\n *\n * @returns {Sharp}\n */\nfunction keepGainMap() {\n this.options.keepGainMap = true;\n this.options.withGainMap = false;\n this.options.keepMetadata |= 0b100000;\n return this;\n}\n\n/**\n * If the input contains gain map metadata, use it to convert the main image to HDR (High Dynamic Range) before further processing.\n * The input gain map is discarded.\n *\n * If the output is JPEG, generate and attach a new ISO 21496-1 gain map.\n * JPEG output options other than `quality` are ignored.\n *\n * This feature is experimental and the API may change.\n *\n * @since 0.35.0\n *\n * @example\n * const outputWithRegeneratedGainMap = await sharp(inputWithGainMap)\n * .withGainMap()\n * .toBuffer();\n *\n * @returns {Sharp}\n */\nfunction withGainMap() {\n this.options.withGainMap = true;\n this.options.keepGainMap = false;\n this.options.colourspace = 'scrgb';\n return this;\n}\n\n/**\n * Keep XMP metadata from the input image in the output image.\n *\n * @since 0.34.3\n *\n * @example\n * const outputWithXmp = await sharp(inputWithXmp)\n * .keepXmp()\n * .toBuffer();\n *\n * @returns {Sharp}\n */\nfunction keepXmp () {\n this.options.keepMetadata |= 0b00010;\n return this;\n}\n\n/**\n * Set XMP metadata in the output image.\n *\n * Supported by PNG, JPEG, WebP, and TIFF output.\n *\n * @since 0.34.3\n *\n * @example\n * const xmpString = `\n * <?xml version=\"1.0\"?>\n * <x:xmpmeta xmlns:x=\"adobe:ns:meta/\">\n * <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n * <rdf:Description rdf:about=\"\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n * <dc:creator><rdf:Seq><rdf:li>John Doe</rdf:li></rdf:Seq></dc:creator>\n * </rdf:Description>\n * </rdf:RDF>\n * </x:xmpmeta>`;\n *\n * const data = await sharp(input)\n * .withXmp(xmpString)\n * .toBuffer();\n *\n * @param {string} xmp String containing XMP metadata to be embedded in the output image.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withXmp (xmp) {\n if (is.string(xmp) && xmp.length > 0) {\n this.options.withXmp = xmp;\n this.options.keepMetadata |= 0b00010;\n } else {\n throw is.invalidParameterError('xmp', 'non-empty string', xmp);\n }\n return this;\n}\n\n/**\n * Keep all metadata (EXIF, ICC, XMP, IPTC) from the input image in the output image.\n *\n * The default behaviour, when `keepMetadata` is not used, is to convert to the device-independent\n * sRGB colour space and strip all metadata, including the removal of any ICC profile.\n *\n * @since 0.33.0\n *\n * @example\n * const outputWithMetadata = await sharp(inputWithMetadata)\n * .keepMetadata()\n * .toBuffer();\n *\n * @returns {Sharp}\n */\nfunction keepMetadata () {\n this.options.keepMetadata |= 0b11111;\n return this;\n}\n\n/**\n * Keep most metadata (EXIF, XMP, IPTC) from the input image in the output image.\n *\n * This will also convert to and add a web-friendly sRGB ICC profile if appropriate.\n *\n * Allows orientation and density to be set or updated.\n *\n * @example\n * const outputSrgbWithMetadata = await sharp(inputRgbWithMetadata)\n * .withMetadata()\n * .toBuffer();\n *\n * @example\n * // Set output metadata to 96 DPI\n * const data = await sharp(input)\n * .withMetadata({ density: 96 })\n * .toBuffer();\n *\n * @param {Object} [options]\n * @param {number} [options.orientation] Used to update the EXIF `Orientation` tag, integer between 1 and 8.\n * @param {number} [options.density] Number of pixels per inch (DPI).\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction withMetadata (options) {\n this.keepMetadata();\n this.withIccProfile('srgb');\n if (is.object(options)) {\n if (is.defined(options.orientation)) {\n if (is.integer(options.orientation) && is.inRange(options.orientation, 1, 8)) {\n this.options.withMetadataOrientation = options.orientation;\n } else {\n throw is.invalidParameterError('orientation', 'integer between 1 and 8', options.orientation);\n }\n }\n if (is.defined(options.density)) {\n if (is.number(options.density) && options.density > 0) {\n this.options.withMetadataDensity = options.density;\n } else {\n throw is.invalidParameterError('density', 'positive number', options.density);\n }\n }\n if (is.defined(options.icc)) {\n this.withIccProfile(options.icc);\n }\n if (is.defined(options.exif)) {\n this.withExifMerge(options.exif);\n }\n }\n return this;\n}\n\n/**\n * Force output to a given format.\n *\n * @example\n * // Convert any input to PNG output\n * const data = await sharp(input)\n * .toFormat('png')\n * .toBuffer();\n *\n * @param {(string|Object)} format - as a string or an Object with an 'id' attribute\n * @param {Object} options - output options\n * @returns {Sharp}\n * @throws {Error} unsupported format or options\n */\nfunction toFormat (format, options) {\n const actualFormat = formats.get((is.object(format) && is.string(format.id) ? format.id : format).toLowerCase());\n if (!actualFormat) {\n throw is.invalidParameterError('format', `one of: ${[...formats.keys()].join(', ')}`, format);\n }\n return this[actualFormat](options);\n}\n\n/**\n * Use these JPEG options for output image.\n *\n * @example\n * // Convert any input to very high quality JPEG output\n * const data = await sharp(input)\n * .jpeg({\n * quality: 100,\n * chromaSubsampling: '4:4:4'\n * })\n * .toBuffer();\n *\n * @example\n * // Use mozjpeg to reduce output JPEG file size (slower)\n * const data = await sharp(input)\n * .jpeg({ mozjpeg: true })\n * .toBuffer();\n *\n * @param {Object} [options] - output options\n * @param {number} [options.quality=80] - quality, integer 1-100\n * @param {boolean} [options.progressive=false] - use progressive (interlace) scan\n * @param {string} [options.chromaSubsampling='4:2:0'] - set to '4:4:4' to prevent chroma subsampling otherwise defaults to '4:2:0' chroma subsampling\n * @param {boolean} [options.optimiseCoding=true] - optimise Huffman coding tables\n * @param {boolean} [options.optimizeCoding=true] - alternative spelling of optimiseCoding\n * @param {boolean} [options.mozjpeg=false] - use mozjpeg defaults, equivalent to `{ trellisQuantisation: true, overshootDeringing: true, optimiseScans: true, quantisationTable: 3 }`\n * @param {boolean} [options.trellisQuantisation=false] - apply trellis quantisation\n * @param {boolean} [options.overshootDeringing=false] - apply overshoot deringing\n * @param {boolean} [options.optimiseScans=false] - optimise progressive scans, forces progressive\n * @param {boolean} [options.optimizeScans=false] - alternative spelling of optimiseScans\n * @param {number} [options.quantisationTable=0] - quantization table to use, integer 0-8\n * @param {number} [options.quantizationTable=0] - alternative spelling of quantisationTable\n * @param {boolean} [options.force=true] - force JPEG output, otherwise attempt to use input format\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction jpeg (options) {\n if (is.object(options)) {\n if (is.defined(options.quality)) {\n if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n this.options.jpegQuality = options.quality;\n } else {\n throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n }\n }\n if (is.defined(options.progressive)) {\n this._setBooleanOption('jpegProgressive', options.progressive);\n }\n if (is.defined(options.chromaSubsampling)) {\n if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {\n this.options.jpegChromaSubsampling = options.chromaSubsampling;\n } else {\n throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);\n }\n }\n const optimiseCoding = is.bool(options.optimizeCoding) ? options.optimizeCoding : options.optimiseCoding;\n if (is.defined(optimiseCoding)) {\n this._setBooleanOption('jpegOptimiseCoding', optimiseCoding);\n }\n if (is.defined(options.mozjpeg)) {\n if (is.bool(options.mozjpeg)) {\n if (options.mozjpeg) {\n this.options.jpegTrellisQuantisation = true;\n this.options.jpegOvershootDeringing = true;\n this.options.jpegOptimiseScans = true;\n this.options.jpegProgressive = true;\n this.options.jpegQuantisationTable = 3;\n }\n } else {\n throw is.invalidParameterError('mozjpeg', 'boolean', options.mozjpeg);\n }\n }\n const trellisQuantisation = is.bool(options.trellisQuantization) ? options.trellisQuantization : options.trellisQuantisation;\n if (is.defined(trellisQuantisation)) {\n this._setBooleanOption('jpegTrellisQuantisation', trellisQuantisation);\n }\n if (is.defined(options.overshootDeringing)) {\n this._setBooleanOption('jpegOvershootDeringing', options.overshootDeringing);\n }\n const optimiseScans = is.bool(options.optimizeScans) ? options.optimizeScans : options.optimiseScans;\n if (is.defined(optimiseScans)) {\n this._setBooleanOption('jpegOptimiseScans', optimiseScans);\n if (optimiseScans) {\n this.options.jpegProgressive = true;\n }\n }\n const quantisationTable = is.number(options.quantizationTable) ? options.quantizationTable : options.quantisationTable;\n if (is.defined(quantisationTable)) {\n if (is.integer(quantisationTable) && is.inRange(quantisationTable, 0, 8)) {\n this.options.jpegQuantisationTable = quantisationTable;\n } else {\n throw is.invalidParameterError('quantisationTable', 'integer between 0 and 8', quantisationTable);\n }\n }\n }\n return this._updateFormatOut('jpeg', options);\n}\n\n/**\n * Use these PNG options for output image.\n *\n * By default, PNG output is full colour at 8 bits per pixel.\n *\n * Indexed PNG input at 1, 2 or 4 bits per pixel is converted to 8 bits per pixel.\n * Set `palette` to `true` for slower, indexed PNG output.\n *\n * For 16 bits per pixel output, convert to `rgb16` via\n * {@link /api-colour/#tocolourspace toColourspace}.\n *\n * @example\n * // Convert any input to full colour PNG output\n * const data = await sharp(input)\n * .png()\n * .toBuffer();\n *\n * @example\n * // Convert any input to indexed PNG output (slower)\n * const data = await sharp(input)\n * .png({ palette: true })\n * .toBuffer();\n *\n * @example\n * // Output 16 bits per pixel RGB(A)\n * const data = await sharp(input)\n * .toColourspace('rgb16')\n * .png()\n * .toBuffer();\n *\n * @param {Object} [options]\n * @param {boolean} [options.progressive=false] - use progressive (interlace) scan\n * @param {number} [options.compressionLevel=6] - zlib compression level, 0 (fastest, largest) to 9 (slowest, smallest)\n * @param {boolean} [options.adaptiveFiltering=false] - use adaptive row filtering\n * @param {boolean} [options.palette=false] - quantise to a palette-based image with alpha transparency support\n * @param {number} [options.quality=100] - use the lowest number of colours needed to achieve given quality, sets `palette` to `true`\n * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest), sets `palette` to `true`\n * @param {number} [options.colours=256] - maximum number of palette entries, sets `palette` to `true`\n * @param {number} [options.colors=256] - alternative spelling of `options.colours`, sets `palette` to `true`\n * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, sets `palette` to `true`\n * @param {boolean} [options.force=true] - force PNG output, otherwise attempt to use input format\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction png (options) {\n if (is.object(options)) {\n if (is.defined(options.progressive)) {\n this._setBooleanOption('pngProgressive', options.progressive);\n }\n if (is.defined(options.compressionLevel)) {\n if (is.integer(options.compressionLevel) && is.inRange(options.compressionLevel, 0, 9)) {\n this.options.pngCompressionLevel = options.compressionLevel;\n } else {\n throw is.invalidParameterError('compressionLevel', 'integer between 0 and 9', options.compressionLevel);\n }\n }\n if (is.defined(options.adaptiveFiltering)) {\n this._setBooleanOption('pngAdaptiveFiltering', options.adaptiveFiltering);\n }\n const colours = options.colours || options.colors;\n if (is.defined(colours)) {\n if (is.integer(colours) && is.inRange(colours, 2, 256)) {\n this.options.pngBitdepth = bitdepthFromColourCount(colours);\n } else {\n throw is.invalidParameterError('colours', 'integer between 2 and 256', colours);\n }\n }\n if (is.defined(options.palette)) {\n this._setBooleanOption('pngPalette', options.palette);\n } else if ([options.quality, options.effort, options.colours, options.colors, options.dither].some(is.defined)) {\n this._setBooleanOption('pngPalette', true);\n }\n if (this.options.pngPalette) {\n if (is.defined(options.quality)) {\n if (is.integer(options.quality) && is.inRange(options.quality, 0, 100)) {\n this.options.pngQuality = options.quality;\n } else {\n throw is.invalidParameterError('quality', 'integer between 0 and 100', options.quality);\n }\n }\n if (is.defined(options.effort)) {\n if (is.integer(options.effort) && is.inRange(options.effort, 1, 10)) {\n this.options.pngEffort = options.effort;\n } else {\n throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort);\n }\n }\n if (is.defined(options.dither)) {\n if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) {\n this.options.pngDither = options.dither;\n } else {\n throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither);\n }\n }\n }\n }\n return this._updateFormatOut('png', options);\n}\n\n/**\n * Use these WebP options for output image.\n *\n * @example\n * // Convert any input to lossless WebP output\n * const data = await sharp(input)\n * .webp({ lossless: true })\n * .toBuffer();\n *\n * @example\n * // Optimise the file size of an animated WebP\n * const outputWebp = await sharp(inputWebp, { animated: true })\n * .webp({ effort: 6 })\n * .toBuffer();\n *\n * @param {Object} [options] - output options\n * @param {number} [options.quality=80] - quality, integer 1-100\n * @param {number} [options.alphaQuality=100] - quality of alpha layer, integer 0-100\n * @param {boolean} [options.lossless=false] - use lossless compression mode\n * @param {boolean} [options.nearLossless=false] - use near_lossless compression mode\n * @param {boolean} [options.smartSubsample=false] - use high quality chroma subsampling\n * @param {boolean} [options.smartDeblock=false] - auto-adjust the deblocking filter, can improve low contrast edges (slow)\n * @param {string} [options.preset='default'] - named preset for preprocessing/filtering, one of: default, photo, picture, drawing, icon, text\n * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 6 (slowest)\n * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation\n * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)\n * @param {boolean} [options.minSize=false] - prevent use of animation key frames to minimise file size (slow)\n * @param {boolean} [options.mixed=false] - allow mixture of lossy and lossless animation frames (slow)\n * @param {boolean} [options.exact=false] - preserve the colour data in transparent pixels\n * @param {boolean} [options.force=true] - force WebP output, otherwise attempt to use input format\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction webp (options) {\n if (is.object(options)) {\n if (is.defined(options.quality)) {\n if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n this.options.webpQuality = options.quality;\n } else {\n throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n }\n }\n if (is.defined(options.alphaQuality)) {\n if (is.integer(options.alphaQuality) && is.inRange(options.alphaQuality, 0, 100)) {\n this.options.webpAlphaQuality = options.alphaQuality;\n } else {\n throw is.invalidParameterError('alphaQuality', 'integer between 0 and 100', options.alphaQuality);\n }\n }\n if (is.defined(options.lossless)) {\n this._setBooleanOption('webpLossless', options.lossless);\n }\n if (is.defined(options.nearLossless)) {\n this._setBooleanOption('webpNearLossless', options.nearLossless);\n }\n if (is.defined(options.smartSubsample)) {\n this._setBooleanOption('webpSmartSubsample', options.smartSubsample);\n }\n if (is.defined(options.smartDeblock)) {\n this._setBooleanOption('webpSmartDeblock', options.smartDeblock);\n }\n if (is.defined(options.preset)) {\n if (is.string(options.preset) && is.inArray(options.preset, ['default', 'photo', 'picture', 'drawing', 'icon', 'text'])) {\n this.options.webpPreset = options.preset;\n } else {\n throw is.invalidParameterError('preset', 'one of: default, photo, picture, drawing, icon, text', options.preset);\n }\n }\n if (is.defined(options.effort)) {\n if (is.integer(options.effort) && is.inRange(options.effort, 0, 6)) {\n this.options.webpEffort = options.effort;\n } else {\n throw is.invalidParameterError('effort', 'integer between 0 and 6', options.effort);\n }\n }\n if (is.defined(options.minSize)) {\n this._setBooleanOption('webpMinSize', options.minSize);\n }\n if (is.defined(options.mixed)) {\n this._setBooleanOption('webpMixed', options.mixed);\n }\n if (is.defined(options.exact)) {\n this._setBooleanOption('webpExact', options.exact);\n }\n }\n trySetAnimationOptions(options, this.options);\n return this._updateFormatOut('webp', options);\n}\n\n/**\n * Use these GIF options for the output image.\n *\n * The first entry in the palette is reserved for transparency.\n *\n * The palette of the input image will be re-used if possible.\n *\n * @since 0.30.0\n *\n * @example\n * // Convert PNG to GIF\n * await sharp(pngBuffer)\n * .gif()\n * .toBuffer();\n *\n * @example\n * // Convert animated WebP to animated GIF\n * await sharp('animated.webp', { animated: true })\n * .toFile('animated.gif');\n *\n * @example\n * // Create a 128x128, cropped, non-dithered, animated thumbnail of an animated GIF\n * const out = await sharp('in.gif', { animated: true })\n * .resize({ width: 128, height: 128 })\n * .gif({ dither: 0 })\n * .toBuffer();\n *\n * @example\n * // Lossy file size reduction of animated GIF\n * await sharp('in.gif', { animated: true })\n * .gif({ interFrameMaxError: 8 })\n * .toFile('optim.gif');\n *\n * @param {Object} [options] - output options\n * @param {boolean} [options.reuse=true] - re-use existing palette, otherwise generate new (slow)\n * @param {boolean} [options.progressive=false] - use progressive (interlace) scan\n * @param {number} [options.colours=256] - maximum number of palette entries, including transparency, between 2 and 256\n * @param {number} [options.colors=256] - alternative spelling of `options.colours`\n * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest)\n * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, between 0 (least) and 1 (most)\n * @param {number} [options.interFrameMaxError=0] - maximum inter-frame error for transparency, between 0 (lossless) and 32\n * @param {number} [options.interPaletteMaxError=3] - maximum inter-palette error for palette reuse, between 0 and 256\n * @param {boolean} [options.keepDuplicateFrames=false] - keep duplicate frames in the output instead of combining them\n * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation\n * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)\n * @param {boolean} [options.force=true] - force GIF output, otherwise attempt to use input format\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction gif (options) {\n if (is.object(options)) {\n if (is.defined(options.reuse)) {\n this._setBooleanOption('gifReuse', options.reuse);\n }\n if (is.defined(options.progressive)) {\n this._setBooleanOption('gifProgressive', options.progressive);\n }\n const colours = options.colours || options.colors;\n if (is.defined(colours)) {\n if (is.integer(colours) && is.inRange(colours, 2, 256)) {\n this.options.gifBitdepth = bitdepthFromColourCount(colours);\n } else {\n throw is.invalidParameterError('colours', 'integer between 2 and 256', colours);\n }\n }\n if (is.defined(options.effort)) {\n if (is.integer(options.effort) && is.inRange(options.effort, 1, 10)) {\n this.options.gifEffort = options.effort;\n } else {\n throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort);\n }\n }\n if (is.defined(options.dither)) {\n if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) {\n this.options.gifDither = options.dither;\n } else {\n throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither);\n }\n }\n if (is.defined(options.interFrameMaxError)) {\n if (is.number(options.interFrameMaxError) && is.inRange(options.interFrameMaxError, 0, 32)) {\n this.options.gifInterFrameMaxError = options.interFrameMaxError;\n } else {\n throw is.invalidParameterError('interFrameMaxError', 'number between 0.0 and 32.0', options.interFrameMaxError);\n }\n }\n if (is.defined(options.interPaletteMaxError)) {\n if (is.number(options.interPaletteMaxError) && is.inRange(options.interPaletteMaxError, 0, 256)) {\n this.options.gifInterPaletteMaxError = options.interPaletteMaxError;\n } else {\n throw is.invalidParameterError('interPaletteMaxError', 'number between 0.0 and 256.0', options.interPaletteMaxError);\n }\n }\n if (is.defined(options.keepDuplicateFrames)) {\n if (is.bool(options.keepDuplicateFrames)) {\n this._setBooleanOption('gifKeepDuplicateFrames', options.keepDuplicateFrames);\n } else {\n throw is.invalidParameterError('keepDuplicateFrames', 'boolean', options.keepDuplicateFrames);\n }\n }\n }\n trySetAnimationOptions(options, this.options);\n return this._updateFormatOut('gif', options);\n}\n\n/**\n * Use these JP2 options for output image.\n *\n * Requires libvips compiled with support for OpenJPEG.\n * The prebuilt binaries do not include this - see\n * {@link /install#custom-libvips installing a custom libvips}.\n *\n * @example\n * // Convert any input to lossless JP2 output\n * const data = await sharp(input)\n * .jp2({ lossless: true })\n * .toBuffer();\n *\n * @example\n * // Convert any input to very high quality JP2 output\n * const data = await sharp(input)\n * .jp2({\n * quality: 100,\n * chromaSubsampling: '4:4:4'\n * })\n * .toBuffer();\n *\n * @since 0.29.1\n *\n * @param {Object} [options] - output options\n * @param {number} [options.quality=80] - quality, integer 1-100\n * @param {boolean} [options.lossless=false] - use lossless compression mode\n * @param {number} [options.tileWidth=512] - horizontal tile size\n * @param {number} [options.tileHeight=512] - vertical tile size\n * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction jp2 (options) {\n /* node:coverage ignore next 41 */\n if (!this.constructor.format.jp2.output.buffer) {\n throw errJp2Save();\n }\n if (is.object(options)) {\n if (is.defined(options.quality)) {\n if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n this.options.jp2Quality = options.quality;\n } else {\n throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n }\n }\n if (is.defined(options.lossless)) {\n if (is.bool(options.lossless)) {\n this.options.jp2Lossless = options.lossless;\n } else {\n throw is.invalidParameterError('lossless', 'boolean', options.lossless);\n }\n }\n if (is.defined(options.tileWidth)) {\n if (is.integer(options.tileWidth) && is.inRange(options.tileWidth, 1, 32768)) {\n this.options.jp2TileWidth = options.tileWidth;\n } else {\n throw is.invalidParameterError('tileWidth', 'integer between 1 and 32768', options.tileWidth);\n }\n }\n if (is.defined(options.tileHeight)) {\n if (is.integer(options.tileHeight) && is.inRange(options.tileHeight, 1, 32768)) {\n this.options.jp2TileHeight = options.tileHeight;\n } else {\n throw is.invalidParameterError('tileHeight', 'integer between 1 and 32768', options.tileHeight);\n }\n }\n if (is.defined(options.chromaSubsampling)) {\n if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {\n this.options.jp2ChromaSubsampling = options.chromaSubsampling;\n } else {\n throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);\n }\n }\n }\n return this._updateFormatOut('jp2', options);\n}\n\n/**\n * Set animation options if available.\n * @private\n *\n * @param {Object} [source] - output options\n * @param {number} [source.loop=0] - number of animation iterations, use 0 for infinite animation\n * @param {number[]} [source.delay] - list of delays between animation frames (in milliseconds)\n * @param {Object} [target] - target object for valid options\n * @throws {Error} Invalid options\n */\nfunction trySetAnimationOptions (source, target) {\n if (is.object(source) && is.defined(source.loop)) {\n if (is.integer(source.loop) && is.inRange(source.loop, 0, 65535)) {\n target.loop = source.loop;\n } else {\n throw is.invalidParameterError('loop', 'integer between 0 and 65535', source.loop);\n }\n }\n if (is.object(source) && is.defined(source.delay)) {\n // We allow singular values as well\n if (is.integer(source.delay) && is.inRange(source.delay, 0, 65535)) {\n target.delay = [source.delay];\n } else if (\n Array.isArray(source.delay) &&\n is.inRange(source.delay.length, 1, 1000000) &&\n source.delay.every(is.integer) &&\n source.delay.every(v => is.inRange(v, 0, 65535))) {\n target.delay = source.delay;\n } else {\n throw is.invalidParameterError('delay', 'integer or an array of integers between 0 and 65535', source.delay);\n }\n }\n}\n\n/**\n * Use these TIFF options for output image.\n *\n * The `density` can be set in pixels/inch via {@link #withmetadata withMetadata}\n * instead of providing `xres` and `yres` in pixels/mm.\n *\n * @example\n * // Convert SVG input to LZW-compressed, 1 bit per pixel TIFF output\n * sharp('input.svg')\n * .tiff({\n * compression: 'lzw',\n * bitdepth: 1\n * })\n * .toFile('1-bpp-output.tiff')\n * .then(info => { ... });\n *\n * @param {Object} [options] - output options\n * @param {number} [options.quality=80] - quality, integer 1-100\n * @param {boolean} [options.force=true] - force TIFF output, otherwise attempt to use input format\n * @param {string} [options.compression='jpeg'] - compression options: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k\n * @param {boolean} [options.bigtiff=false] - use BigTIFF variant (has no effect when compression is none)\n * @param {string} [options.predictor='horizontal'] - compression predictor options: none, horizontal, float\n * @param {boolean} [options.pyramid=false] - write an image pyramid\n * @param {boolean} [options.tile=false] - write a tiled tiff\n * @param {number} [options.tileWidth=256] - horizontal tile size, valid values are integers in the range 1-32768\n * @param {number} [options.tileHeight=256] - vertical tile size, valid values are integers in the range 1-32768\n * @param {number} [options.xres=1.0] - horizontal resolution in pixels/mm, valid values are numbers in the range 0.001-1000000\n * @param {number} [options.yres=1.0] - vertical resolution in pixels/mm, valid values are numbers in the range 0.001-1000000\n * @param {string} [options.resolutionUnit='inch'] - resolution unit options: inch, cm\n * @param {number} [options.bitdepth=0] - reduce bitdepth to 1, 2 or 4 bit\n * @param {boolean} [options.miniswhite=false] - write 1-bit images as miniswhite\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction tiff (options) {\n if (is.object(options)) {\n if (is.defined(options.quality)) {\n if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n this.options.tiffQuality = options.quality;\n } else {\n throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n }\n }\n if (is.defined(options.bitdepth)) {\n if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [1, 2, 4])) {\n this.options.tiffBitdepth = options.bitdepth;\n } else {\n throw is.invalidParameterError('bitdepth', '1, 2 or 4', options.bitdepth);\n }\n }\n // tiling\n if (is.defined(options.tile)) {\n this._setBooleanOption('tiffTile', options.tile);\n }\n if (is.defined(options.tileWidth)) {\n if (is.integer(options.tileWidth) && is.inRange(options.tileWidth, 1, 32768)) {\n this.options.tiffTileWidth = options.tileWidth;\n } else {\n throw is.invalidParameterError('tileWidth', 'integer between 1 and 32768', options.tileWidth);\n }\n }\n if (is.defined(options.tileHeight)) {\n if (is.integer(options.tileHeight) && is.inRange(options.tileHeight, 1, 32768)) {\n this.options.tiffTileHeight = options.tileHeight;\n } else {\n throw is.invalidParameterError('tileHeight', 'integer between 1 and 32768', options.tileHeight);\n }\n }\n // miniswhite\n if (is.defined(options.miniswhite)) {\n this._setBooleanOption('tiffMiniswhite', options.miniswhite);\n }\n // pyramid\n if (is.defined(options.pyramid)) {\n this._setBooleanOption('tiffPyramid', options.pyramid);\n }\n // resolution\n if (is.defined(options.xres)) {\n if (is.number(options.xres) && is.inRange(options.xres, 0.001, 1000000)) {\n this.options.tiffXres = options.xres;\n } else {\n throw is.invalidParameterError('xres', 'number between 0.001 and 1000000', options.xres);\n }\n }\n if (is.defined(options.yres)) {\n if (is.number(options.yres) && is.inRange(options.yres, 0.001, 1000000)) {\n this.options.tiffYres = options.yres;\n } else {\n throw is.invalidParameterError('yres', 'number between 0.001 and 1000000', options.yres);\n }\n }\n // compression\n if (is.defined(options.compression)) {\n if (is.string(options.compression) && is.inArray(options.compression, ['none', 'jpeg', 'deflate', 'packbits', 'ccittfax4', 'lzw', 'webp', 'zstd', 'jp2k'])) {\n this.options.tiffCompression = options.compression;\n } else {\n throw is.invalidParameterError('compression', 'one of: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k', options.compression);\n }\n }\n // bigtiff\n if (is.defined(options.bigtiff)) {\n this._setBooleanOption('tiffBigtiff', options.bigtiff);\n }\n // predictor\n if (is.defined(options.predictor)) {\n if (is.string(options.predictor) && is.inArray(options.predictor, ['none', 'horizontal', 'float'])) {\n this.options.tiffPredictor = options.predictor;\n } else {\n throw is.invalidParameterError('predictor', 'one of: none, horizontal, float', options.predictor);\n }\n }\n // resolutionUnit\n if (is.defined(options.resolutionUnit)) {\n if (is.string(options.resolutionUnit) && is.inArray(options.resolutionUnit, ['inch', 'cm'])) {\n this.options.tiffResolutionUnit = options.resolutionUnit;\n } else {\n throw is.invalidParameterError('resolutionUnit', 'one of: inch, cm', options.resolutionUnit);\n }\n }\n }\n return this._updateFormatOut('tiff', options);\n}\n\n/**\n * Use these AVIF options for output image.\n *\n * AVIF image sequences are not supported.\n *\n * @example\n * const data = await sharp(input)\n * .avif({ effort: 2 })\n * .toBuffer();\n *\n * @example\n * const data = await sharp(input)\n * .avif({ lossless: true })\n * .toBuffer();\n *\n * @since 0.27.0\n *\n * @param {Object} [options] - output options\n * @param {number} [options.quality=50] - quality, integer 1-100\n * @param {boolean} [options.lossless=false] - use lossless compression\n * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)\n * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling\n * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit\n * @param {string} [options.tune='auto'] - tune output for a quality metric, one of 'auto' (default), 'iq', 'psnr' or 'ssim'\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction avif (options) {\n return this.heif({ ...options, compression: 'av1' });\n}\n\n/**\n * Use these HEIF options for output image.\n *\n * Support for patent-encumbered HEIC images using `hevc` compression requires the use of a\n * globally-installed libvips compiled with support for libheif, libde265 and x265.\n *\n * @example\n * const data = await sharp(input)\n * .heif({ compression: 'hevc' })\n * .toBuffer();\n *\n * @since 0.23.0\n *\n * @param {Object} options - output options\n * @param {string} options.compression - compression format: av1, hevc\n * @param {number} [options.quality=50] - quality, integer 1-100\n * @param {boolean} [options.lossless=false] - use lossless compression\n * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)\n * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling\n * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit\n * @param {string} [options.tune='auto'] - tune output for a quality metric, one of 'auto' (default), 'iq', 'psnr' or 'ssim'\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction heif (options) {\n if (is.object(options)) {\n if (is.string(options.compression) && is.inArray(options.compression, ['av1', 'hevc'])) {\n this.options.heifCompression = options.compression;\n } else {\n throw is.invalidParameterError('compression', 'one of: av1, hevc', options.compression);\n }\n if (is.defined(options.quality)) {\n if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n this.options.heifQuality = options.quality;\n } else {\n throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n }\n }\n if (is.defined(options.lossless)) {\n if (is.bool(options.lossless)) {\n this.options.heifLossless = options.lossless;\n } else {\n throw is.invalidParameterError('lossless', 'boolean', options.lossless);\n }\n }\n if (is.defined(options.effort)) {\n if (is.integer(options.effort) && is.inRange(options.effort, 0, 9)) {\n this.options.heifEffort = options.effort;\n } else {\n throw is.invalidParameterError('effort', 'integer between 0 and 9', options.effort);\n }\n }\n if (is.defined(options.chromaSubsampling)) {\n if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {\n this.options.heifChromaSubsampling = options.chromaSubsampling;\n } else {\n throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);\n }\n }\n if (is.defined(options.bitdepth)) {\n if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [8, 10, 12])) {\n this.options.heifBitdepth = options.bitdepth;\n } else {\n throw is.invalidParameterError('bitdepth', '8, 10 or 12', options.bitdepth);\n }\n }\n if (is.defined(options.tune)) {\n if (is.string(options.tune) && is.inArray(options.tune, ['auto', 'iq', 'psnr', 'ssim'])) {\n if (this.options.heifLossless && options.tune === 'iq') {\n this.options.heifTune = 'ssim';\n } else {\n this.options.heifTune = options.tune;\n }\n } else {\n throw is.invalidParameterError('tune', 'one of: auto, iq, psnr, ssim', options.tune);\n }\n }\n } else {\n throw is.invalidParameterError('options', 'Object', options);\n }\n return this._updateFormatOut('heif', options);\n}\n\n/**\n * Use these JPEG-XL (JXL) options for output image.\n *\n * This feature is experimental, please do not use in production systems.\n *\n * Requires libvips compiled with support for libjxl.\n * The prebuilt binaries do not include this - see\n * {@link /install/#custom-libvips installing a custom libvips}.\n *\n * @since 0.31.3\n *\n * @param {Object} [options] - output options\n * @param {number} [options.distance=1.0] - maximum encoding error, between 0 (highest quality) and 15 (lowest quality)\n * @param {number} [options.quality] - calculate `distance` based on JPEG-like quality, between 1 and 100, overrides distance if specified\n * @param {number} [options.decodingTier=0] - target decode speed tier, between 0 (highest quality) and 4 (lowest quality)\n * @param {boolean} [options.lossless=false] - use lossless compression\n * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 9 (slowest)\n * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation\n * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction jxl (options) {\n if (is.object(options)) {\n if (is.defined(options.quality)) {\n if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {\n // https://github.com/libjxl/libjxl/blob/0aeea7f180bafd6893c1db8072dcb67d2aa5b03d/tools/cjxl_main.cc#L640-L644\n this.options.jxlDistance = options.quality >= 30\n ? 0.1 + (100 - options.quality) * 0.09\n : 53 / 3000 * options.quality * options.quality - 23 / 20 * options.quality + 25;\n } else {\n throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);\n }\n } else if (is.defined(options.distance)) {\n if (is.number(options.distance) && is.inRange(options.distance, 0, 15)) {\n this.options.jxlDistance = options.distance;\n } else {\n throw is.invalidParameterError('distance', 'number between 0.0 and 15.0', options.distance);\n }\n }\n if (is.defined(options.decodingTier)) {\n if (is.integer(options.decodingTier) && is.inRange(options.decodingTier, 0, 4)) {\n this.options.jxlDecodingTier = options.decodingTier;\n } else {\n throw is.invalidParameterError('decodingTier', 'integer between 0 and 4', options.decodingTier);\n }\n }\n if (is.defined(options.lossless)) {\n if (is.bool(options.lossless)) {\n this.options.jxlLossless = options.lossless;\n } else {\n throw is.invalidParameterError('lossless', 'boolean', options.lossless);\n }\n }\n if (is.defined(options.effort)) {\n if (is.integer(options.effort) && is.inRange(options.effort, 1, 9)) {\n this.options.jxlEffort = options.effort;\n } else {\n throw is.invalidParameterError('effort', 'integer between 1 and 9', options.effort);\n }\n }\n }\n trySetAnimationOptions(options, this.options);\n return this._updateFormatOut('jxl', options);\n}\n\n/**\n * Force output to be raw, uncompressed pixel data.\n * Pixel ordering is left-to-right, top-to-bottom, without padding.\n * Channel ordering will be RGB or RGBA for non-greyscale colourspaces.\n *\n * @example\n * // Extract raw, unsigned 8-bit RGB pixel data from JPEG input\n * const { data, info } = await sharp('input.jpg')\n * .raw()\n * .toBuffer({ resolveWithObject: true });\n *\n * @example\n * // Extract alpha channel as raw, unsigned 16-bit pixel data from PNG input\n * const data = await sharp('input.png')\n * .ensureAlpha()\n * .extractChannel(3)\n * .toColourspace('b-w')\n * .raw({ depth: 'ushort' })\n * .toBuffer();\n *\n * @param {Object} [options] - output options\n * @param {string} [options.depth='uchar'] - bit depth, one of: char, uchar (default), short, ushort, int, uint, float, complex, double, dpcomplex\n * @returns {Sharp}\n * @throws {Error} Invalid options\n */\nfunction raw (options) {\n if (is.object(options)) {\n if (is.defined(options.depth)) {\n if (is.string(options.depth) && is.inArray(options.depth,\n ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'float', 'complex', 'double', 'dpcomplex']\n )) {\n this.options.rawDepth = options.depth;\n } else {\n throw is.invalidParameterError('depth', 'one of: char, uchar, short, ushort, int, uint, float, complex, double, dpcomplex', options.depth);\n }\n }\n }\n return this._updateFormatOut('raw');\n}\n\n/**\n * Use tile-based deep zoom (image pyramid) output.\n *\n * Set the format and options for tile images via the `toFormat`, `jpeg`, `png` or `webp` functions.\n * Use a `.zip` or `.szi` file extension with `toFile` to write to a compressed archive file format.\n *\n * The container will be set to `zip` when the output is a Buffer or Stream, otherwise it will default to `fs`.\n *\n * @example\n * sharp('input.tiff')\n * .png()\n * .tile({\n * size: 512\n * })\n * .toFile('output.dz', function(err, info) {\n * // output.dzi is the Deep Zoom XML definition\n * // output_files contains 512x512 tiles grouped by zoom level\n * });\n *\n * @example\n * const zipFileWithTiles = await sharp(input)\n * .tile({ basename: \"tiles\" })\n * .toBuffer();\n *\n * @example\n * const iiififier = sharp().tile({ layout: \"iiif\" });\n * readableStream\n * .pipe(iiififier)\n * .pipe(writeableStream);\n *\n * @param {Object} [options]\n * @param {number} [options.size=256] tile size in pixels, a value between 1 and 8192.\n * @param {number} [options.overlap=0] tile overlap in pixels, a value between 0 and 8192.\n * @param {number} [options.angle=0] tile angle of rotation, must be a multiple of 90.\n * @param {string|Object} [options.background={r: 255, g: 255, b: 255, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to white without transparency.\n * @param {string} [options.depth] how deep to make the pyramid, possible values are `onepixel`, `onetile` or `one`, default based on layout.\n * @param {number} [options.skipBlanks=-1] Threshold to skip tile generation. Range is 0-255 for 8-bit images, 0-65535 for 16-bit images. Default is 5 for `google` layout, -1 (no skip) otherwise.\n * @param {string} [options.container='fs'] tile container, with value `fs` (filesystem) or `zip` (compressed file).\n * @param {string} [options.layout='dz'] filesystem layout, possible values are `dz`, `iiif`, `iiif3`, `zoomify` or `google`.\n * @param {boolean} [options.centre=false] centre image in tile.\n * @param {boolean} [options.center=false] alternative spelling of centre.\n * @param {string} [options.id='https://example.com/iiif'] when `layout` is `iiif`/`iiif3`, sets the `@id`/`id` attribute of `info.json`\n * @param {string} [options.basename] the name of the directory within the zip file when container is `zip`.\n * @returns {Sharp}\n * @throws {Error} Invalid parameters\n */\nfunction tile (options) {\n if (is.object(options)) {\n // Size of square tiles, in pixels\n if (is.defined(options.size)) {\n if (is.integer(options.size) && is.inRange(options.size, 1, 8192)) {\n this.options.tileSize = options.size;\n } else {\n throw is.invalidParameterError('size', 'integer between 1 and 8192', options.size);\n }\n }\n // Overlap of tiles, in pixels\n if (is.defined(options.overlap)) {\n if (is.integer(options.overlap) && is.inRange(options.overlap, 0, 8192)) {\n if (options.overlap > this.options.tileSize) {\n throw is.invalidParameterError('overlap', `<= size (${this.options.tileSize})`, options.overlap);\n }\n this.options.tileOverlap = options.overlap;\n } else {\n throw is.invalidParameterError('overlap', 'integer between 0 and 8192', options.overlap);\n }\n }\n // Container\n if (is.defined(options.container)) {\n if (is.string(options.container) && is.inArray(options.container, ['fs', 'zip'])) {\n this.options.tileContainer = options.container;\n } else {\n throw is.invalidParameterError('container', 'one of: fs, zip', options.container);\n }\n }\n // Layout\n if (is.defined(options.layout)) {\n if (is.string(options.layout) && is.inArray(options.layout, ['dz', 'google', 'iiif', 'iiif3', 'zoomify'])) {\n this.options.tileLayout = options.layout;\n } else {\n throw is.invalidParameterError('layout', 'one of: dz, google, iiif, iiif3, zoomify', options.layout);\n }\n }\n // Angle of rotation,\n if (is.defined(options.angle)) {\n if (is.integer(options.angle) && !(options.angle % 90)) {\n this.options.tileAngle = options.angle;\n } else {\n throw is.invalidParameterError('angle', 'positive/negative multiple of 90', options.angle);\n }\n }\n // Background colour\n this._setBackgroundColourOption('tileBackground', options.background);\n // Depth of tiles\n if (is.defined(options.depth)) {\n if (is.string(options.depth) && is.inArray(options.depth, ['onepixel', 'onetile', 'one'])) {\n this.options.tileDepth = options.depth;\n } else {\n throw is.invalidParameterError('depth', 'one of: onepixel, onetile, one', options.depth);\n }\n }\n // Threshold to skip blank tiles\n if (is.defined(options.skipBlanks)) {\n if (is.integer(options.skipBlanks) && is.inRange(options.skipBlanks, -1, 65535)) {\n this.options.tileSkipBlanks = options.skipBlanks;\n } else {\n throw is.invalidParameterError('skipBlanks', 'integer between -1 and 255/65535', options.skipBlanks);\n }\n } else if (is.defined(options.layout) && options.layout === 'google') {\n this.options.tileSkipBlanks = 5;\n }\n // Center image in tile\n const centre = is.bool(options.center) ? options.center : options.centre;\n if (is.defined(centre)) {\n this._setBooleanOption('tileCentre', centre);\n }\n // @id attribute for IIIF layout\n if (is.defined(options.id)) {\n if (is.string(options.id)) {\n this.options.tileId = options.id;\n } else {\n throw is.invalidParameterError('id', 'string', options.id);\n }\n }\n // Basename for zip container\n if (is.defined(options.basename)) {\n if (is.string(options.basename)) {\n this.options.tileBasename = options.basename;\n } else {\n throw is.invalidParameterError('basename', 'string', options.basename);\n }\n }\n }\n // Format\n if (is.inArray(this.options.formatOut, ['jpeg', 'png', 'webp'])) {\n this.options.tileFormat = this.options.formatOut;\n } else if (this.options.formatOut !== 'input') {\n throw is.invalidParameterError('format', 'one of: jpeg, png, webp', this.options.formatOut);\n }\n return this._updateFormatOut('dz');\n}\n\n/**\n * Set a timeout for processing, in seconds.\n * Use a value of zero to continue processing indefinitely, the default behaviour.\n *\n * The clock starts when libvips opens an input image for processing.\n * Time spent waiting for a libuv thread to become available is not included.\n *\n * @example\n * // Ensure processing takes no longer than 3 seconds\n * try {\n * const data = await sharp(input)\n * .blur(1000)\n * .timeout({ seconds: 3 })\n * .toBuffer();\n * } catch (err) {\n * if (err.message.includes('timeout')) { ... }\n * }\n *\n * @since 0.29.2\n *\n * @param {Object} options\n * @param {number} options.seconds - Number of seconds after which processing will be stopped\n * @returns {Sharp}\n */\nfunction timeout (options) {\n if (!is.plainObject(options)) {\n throw is.invalidParameterError('options', 'object', options);\n }\n if (is.integer(options.seconds) && is.inRange(options.seconds, 0, 3600)) {\n this.options.timeoutSeconds = options.seconds;\n } else {\n throw is.invalidParameterError('seconds', 'integer between 0 and 3600', options.seconds);\n }\n return this;\n}\n\n/**\n * Update the output format unless options.force is false,\n * in which case revert to input format.\n * @private\n * @param {string} formatOut\n * @param {Object} [options]\n * @param {boolean} [options.force=true] - force output format, otherwise attempt to use input format\n * @returns {Sharp}\n */\nfunction _updateFormatOut (formatOut, options) {\n if (!(is.object(options) && options.force === false)) {\n this.options.formatOut = formatOut;\n }\n return this;\n}\n\n/**\n * Update a boolean attribute of the this.options Object.\n * @private\n * @param {string} key\n * @param {boolean} val\n * @throws {Error} Invalid key\n */\nfunction _setBooleanOption (key, val) {\n if (is.bool(val)) {\n this.options[key] = val;\n } else {\n throw is.invalidParameterError(key, 'boolean', val);\n }\n}\n\n/**\n * Called by a WriteableStream to notify us it is ready for data.\n * @private\n */\nfunction _read () {\n if (!this.options.streamOut) {\n this.options.streamOut = true;\n const stack = Error();\n this._pipeline(undefined, stack);\n }\n}\n\n/**\n * Invoke the C++ image processing pipeline\n * Supports callback, stream and promise variants\n * @private\n */\nfunction _pipeline (callback, stack) {\n if (typeof callback === 'function') {\n // output=file/buffer\n if (this._isStreamInput()) {\n // output=file/buffer, input=stream\n this._whenStreamInFinished(() => {\n this._flattenBufferIn();\n sharp.pipeline(this.options, (err, data, info) => {\n if (err) {\n callback(is.nativeError(err, stack));\n } else {\n callback(null, data, info);\n }\n });\n });\n } else {\n // output=file/buffer, input=file/buffer\n sharp.pipeline(this.options, (err, data, info) => {\n if (err) {\n callback(is.nativeError(err, stack));\n } else {\n callback(null, data, info);\n }\n });\n }\n return this;\n } else if (this.options.streamOut) {\n // output=stream\n if (this._isStreamInput()) {\n // output=stream, input=stream\n this._whenStreamInFinished(() => {\n this._flattenBufferIn();\n sharp.pipeline(this.options, (err, data, info) => {\n if (err) {\n this.emit('error', is.nativeError(err, stack));\n } else {\n this.emit('info', info);\n this.push(data);\n }\n this.push(null);\n this.on('end', () => this.emit('close'));\n });\n });\n } else {\n // output=stream, input=file/buffer\n sharp.pipeline(this.options, (err, data, info) => {\n if (err) {\n this.emit('error', is.nativeError(err, stack));\n } else {\n this.emit('info', info);\n this.push(data);\n }\n this.push(null);\n this.on('end', () => this.emit('close'));\n });\n }\n return this;\n } else {\n // output=promise\n if (this._isStreamInput()) {\n // output=promise, input=stream\n return new Promise((resolve, reject) => {\n this._whenStreamInFinished(() => {\n this._flattenBufferIn();\n sharp.pipeline(this.options, (err, data, info) => {\n if (err) {\n reject(is.nativeError(err, stack));\n } else {\n if (this.options.resolveWithObject) {\n resolve({ data, info });\n } else {\n resolve(data);\n }\n }\n });\n });\n });\n } else {\n // output=promise, input=file/buffer\n return new Promise((resolve, reject) => {\n sharp.pipeline(this.options, (err, data, info) => {\n if (err) {\n reject(is.nativeError(err, stack));\n } else {\n if (this.options.resolveWithObject) {\n resolve({ data, info });\n } else {\n resolve(data);\n }\n }\n });\n });\n }\n }\n}\n\n/**\n * Decorate the Sharp prototype with output-related functions.\n * @module Sharp\n * @private\n */\nexport default (Sharp) => {\n Object.assign(Sharp.prototype, {\n // Public\n toFile,\n toBuffer,\n toUint8Array,\n withDensity,\n keepExif,\n withExif,\n withExifMerge,\n keepIccProfile,\n withIccProfile,\n keepGainMap,\n withGainMap,\n keepXmp,\n withXmp,\n keepMetadata,\n withMetadata,\n toFormat,\n jpeg,\n jp2,\n png,\n webp,\n tiff,\n avif,\n heif,\n jxl,\n gif,\n raw,\n tile,\n timeout,\n // Private\n _updateFormatOut,\n _setBooleanOption,\n _read,\n _pipeline\n });\n};\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport events from 'node:events';\nimport { createRequire } from \"node:module\";\nimport { availableParallelism } from \"node:os\";\nimport detectLibc from 'detect-libc';\n\nimport is from './is.mjs';\nimport libvips from './libvips.mjs';\nimport sharp from './sharp.mjs';\nimport pkg from \"../package.json\" with { type: \"json\" };\n\nconst require = createRequire(import.meta.url);\nconst runtimePlatform = libvips.runtimePlatformArch();\nconst libvipsVersion = sharp.libvipsVersion();\n\n/**\n * An Object containing nested boolean values representing the available input and output formats/methods.\n * @member\n * @example\n * console.log(sharp.format);\n * @returns {Object}\n */\nconst format = sharp.format();\nformat.heif.output.alias = ['avif', 'heic'];\nformat.jpeg.output.alias = ['jpe', 'jpg'];\nformat.tiff.output.alias = ['tif'];\nformat.jp2.output.alias = ['j2c', 'j2k', 'jp2', 'jpx'];\n\n/**\n * An Object containing the available interpolators and their proper values\n * @readonly\n * @enum {string}\n */\nconst interpolators = {\n /** [Nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation). Suitable for image enlargement only. */\n nearest: 'nearest',\n /** [Bilinear interpolation](http://en.wikipedia.org/wiki/Bilinear_interpolation). Faster than bicubic but with less smooth results. */\n bilinear: 'bilinear',\n /** [Bicubic interpolation](http://en.wikipedia.org/wiki/Bicubic_interpolation) (the default). */\n bicubic: 'bicubic',\n /** [LBB interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/lbb.cpp#L100). Prevents some \"[acutance](http://en.wikipedia.org/wiki/Acutance)\" but typically reduces performance by a factor of 2. */\n locallyBoundedBicubic: 'lbb',\n /** [Nohalo interpolation](http://eprints.soton.ac.uk/268086/). Prevents acutance but typically reduces performance by a factor of 3. */\n nohalo: 'nohalo',\n /** [VSQBS interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/vsqbs.cpp#L48). Prevents \"staircasing\" when enlarging. */\n vertexSplitQuadraticBasisSpline: 'vsqbs'\n};\n\n/**\n * An Object containing the version numbers of sharp, libvips\n * and (when using prebuilt binaries) its dependencies.\n *\n * @member\n * @example\n * console.log(sharp.versions);\n */\nlet versions = {\n vips: libvipsVersion.semver\n};\n/* node:coverage ignore next 15 */\nif (!libvipsVersion.isGlobal) {\n if (!libvipsVersion.isWasm) {\n try {\n versions = require(`@img/sharp-${runtimePlatform}/versions`);\n } catch (_) {\n try {\n versions = require(`@img/sharp-libvips-${runtimePlatform}/versions`);\n } catch (_) {}\n }\n } else {\n try {\n versions = require('@img/sharp-wasm32/versions');\n } catch (_) {}\n }\n}\nversions.sharp = pkg.version;\n\n/* node:coverage ignore next 5 */\nif (versions.heif && format.heif) {\n // Prebuilt binaries provide AV1\n format.heif.input.fileSuffix = ['.avif'];\n format.heif.output.alias = ['avif'];\n}\n\n/**\n * Gets or, when options are provided, sets the limits of _libvips'_ operation cache.\n * Existing entries in the cache will be trimmed after any change in limits.\n * This method always returns cache statistics,\n * useful for determining how much working memory is required for a particular task.\n *\n * @example\n * const stats = sharp.cache();\n * @example\n * sharp.cache( { items: 200 } );\n * sharp.cache( { files: 0 } );\n * sharp.cache(false);\n *\n * @param {Object|boolean} [options=true] - Object with the following attributes, or boolean where true uses default cache settings and false removes all caching\n * @param {number} [options.memory=50] - is the maximum memory in MB to use for this cache\n * @param {number} [options.files=20] - is the maximum number of files to hold open\n * @param {number} [options.items=100] - is the maximum number of operations to cache\n * @returns {Object}\n */\nfunction cache (options) {\n if (is.bool(options)) {\n if (options) {\n // Default cache settings of 50MB, 20 files, 100 items\n return sharp.cache(50, 20, 100);\n } else {\n return sharp.cache(0, 0, 0);\n }\n } else if (is.object(options)) {\n for (const property of ['memory', 'files', 'items']) {\n const value = options[property];\n if (is.defined(value) && !(is.integer(value) && value >= 0)) {\n throw is.invalidParameterError(property, 'a positive integer', value);\n }\n }\n return sharp.cache(options.memory, options.files, options.items);\n } else {\n return sharp.cache();\n }\n}\ncache(true);\n\n/**\n * Gets or, when a concurrency is provided, sets\n * the maximum number of threads _libvips_ should use to process _each image_.\n * These are from a thread pool managed by glib,\n * which helps avoid the overhead of creating new threads.\n *\n * This method always returns the current concurrency.\n *\n * The default value is the number of CPU cores,\n * except when using glibc-based Linux without jemalloc,\n * where the default is `1` to help reduce memory fragmentation.\n *\n * A value of `0` will reset this to the number of CPU cores.\n *\n * Some image format libraries spawn additional threads,\n * e.g. libaom manages its own 4 threads when encoding AVIF images,\n * and these are independent of the value set here.\n *\n * :::note\n * Further {@link /performance/ control over performance} is available.\n * :::\n *\n * @example\n * const threads = sharp.concurrency(); // 4\n * sharp.concurrency(2); // 2\n * sharp.concurrency(0); // 4\n *\n * @param {number} [concurrency]\n * @returns {number} concurrency\n */\nfunction concurrency (concurrency) {\n return sharp.concurrency(is.integer(concurrency) ? concurrency : null);\n}\n/* node:coverage ignore next 7 */\nif (!process.env.MALLOC_ARENA_MAX && detectLibc.familySync() === detectLibc.GLIBC && !sharp._isUsingJemalloc()) {\n // Reduce default concurrency to 1 when using glibc memory allocator\n sharp.concurrency(1);\n} else if (detectLibc.familySync() === detectLibc.MUSL && sharp.concurrency() === 1024) {\n // Reduce default concurrency when musl thread over-subscription detected\n sharp.concurrency(availableParallelism());\n}\n\n/**\n * An EventEmitter that emits a `change` event when a task is either:\n * - queued, waiting for _libuv_ to provide a worker thread\n * - complete\n * @member\n * @example\n * sharp.queue.on('change', function(queueLength) {\n * console.log('Queue contains ' + queueLength + ' task(s)');\n * });\n */\nconst queue = new events.EventEmitter();\n\n/**\n * Provides access to internal task counters.\n * - queue is the number of tasks this module has queued waiting for _libuv_ to provide a worker thread from its pool.\n * - process is the number of resize tasks currently being processed.\n *\n * @example\n * const counters = sharp.counters(); // { queue: 2, process: 4 }\n *\n * @returns {Object}\n */\nfunction counters () {\n return sharp.counters();\n}\n\n/**\n * Get and set use of SIMD vector unit instructions.\n * Requires libvips to have been compiled with highway support.\n *\n * Improves the performance of `resize`, `blur` and `sharpen` operations\n * by taking advantage of the SIMD vector unit of the CPU, e.g. Intel SSE and ARM NEON.\n *\n * @example\n * const simd = sharp.simd();\n * // simd is `true` if the runtime use of highway is currently enabled\n * @example\n * const simd = sharp.simd(false);\n * // prevent libvips from using highway at runtime\n *\n * @param {boolean} [simd=true]\n * @returns {boolean}\n */\nfunction simd (simd) {\n return sharp.simd(is.bool(simd) ? simd : null);\n}\n\n/**\n * Block libvips operations at runtime.\n *\n * This is in addition to the `VIPS_BLOCK_UNTRUSTED` environment variable,\n * which when set will block all \"untrusted\" operations.\n *\n * @since 0.32.4\n *\n * @example <caption>Block all TIFF input.</caption>\n * sharp.block({\n * operation: ['VipsForeignLoadTiff']\n * });\n *\n * @param {Object} options\n * @param {Array<string>} options.operation - List of libvips low-level operation names to block.\n */\nfunction block (options) {\n if (is.object(options)) {\n if (Array.isArray(options.operation) && options.operation.every(is.string)) {\n sharp.block(options.operation, true);\n } else {\n throw is.invalidParameterError('operation', 'Array<string>', options.operation);\n }\n } else {\n throw is.invalidParameterError('options', 'object', options);\n }\n}\n\n/**\n * Unblock libvips operations at runtime.\n *\n * This is useful for defining a list of allowed operations.\n *\n * @since 0.32.4\n *\n * @example <caption>Block all input except WebP from the filesystem.</caption>\n * sharp.block({\n * operation: ['VipsForeignLoad']\n * });\n * sharp.unblock({\n * operation: ['VipsForeignLoadWebpFile']\n * });\n *\n * @example <caption>Block all input except JPEG and PNG from a Buffer or Stream.</caption>\n * sharp.block({\n * operation: ['VipsForeignLoad']\n * });\n * sharp.unblock({\n * operation: ['VipsForeignLoadJpegBuffer', 'VipsForeignLoadPngBuffer']\n * });\n *\n * @param {Object} options\n * @param {Array<string>} options.operation - List of libvips low-level operation names to unblock.\n */\nfunction unblock (options) {\n if (is.object(options)) {\n if (Array.isArray(options.operation) && options.operation.every(is.string)) {\n sharp.block(options.operation, false);\n } else {\n throw is.invalidParameterError('operation', 'Array<string>', options.operation);\n }\n } else {\n throw is.invalidParameterError('options', 'object', options);\n }\n}\n\n/**\n * Decorate the Sharp class with utility-related functions.\n * @module Sharp\n * @private\n */\nexport default (Sharp) => {\n Sharp.cache = cache;\n Sharp.concurrency = concurrency;\n Sharp.counters = counters;\n Sharp.simd = simd;\n Sharp.format = format;\n Sharp.interpolators = interpolators;\n Sharp.versions = versions;\n Sharp.queue = queue;\n Sharp.block = block;\n Sharp.unblock = unblock;\n};\n", "/*!\n Copyright 2013 Lovell Fuller and others.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nimport Sharp from './constructor.mjs';\nimport input from './input.mjs';\nimport resize from './resize.mjs';\nimport composite from './composite.mjs';\nimport operation from './operation.mjs';\nimport colour from './colour.mjs';\nimport channel from './channel.mjs';\nimport output from './output.mjs';\nimport utility from './utility.mjs';\n\ninput(Sharp);\nresize(Sharp);\ncomposite(Sharp);\noperation(Sharp);\ncolour(Sharp);\nchannel(Sharp);\noutput(Sharp);\nutility(Sharp);\n\nexport default Sharp;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/**\n * Initializes a WASM factory that reports readiness through a callback, a thenable, or both.\n * @param initialize - Starts initialization and forwards any available ready/error callbacks.\n * @param extractExports - Initializes the module and returns a plain, non-thenable export object.\n * @returns Extracted exports, or a rejection with the original initialization/setup error.\n * @remarks Never resolve with the raw Emscripten module: its thenable can recurse during assimilation.\n * Dependencies must expose a rejection or abort hook for asynchronous failures to be observable.\n */\nexport function initializeWasmModule<Module, ModuleExports>(\n initialize: (\n onInitialized: (module: Module) => void,\n onError: (error: unknown) => void\n ) => PromiseLike<Module> | void,\n extractExports: (module: Module) => ModuleExports\n): Promise<ModuleExports> {\n return new Promise((resolve, reject) => {\n let isSettled = false;\n\n /** Rejects once and prevents a late ready callback from running module setup. */\n function rejectInitialization(error: unknown): void {\n if (!isSettled) {\n isSettled = true;\n reject(error);\n }\n }\n\n /** Extracts safe exports once, even when the factory uses both completion mechanisms. */\n function resolveInitialization(module: Module): void {\n if (isSettled) {\n return;\n }\n isSettled = true;\n try {\n resolve(extractExports(module));\n } catch (error) {\n reject(error);\n }\n }\n\n try {\n const modulePromise = initialize(resolveInitialization, rejectInitialization);\n modulePromise?.then(resolveInitialization, rejectInitialization);\n } catch (error) {\n rejectInitialization(error);\n }\n });\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {NPM_TAG} from '../npm-tag';\n\ndeclare let __VERSION__: string;\n\n/** Return this package's injected version, independent of other loaded versions. */\nfunction getVersion(): string {\n const version = typeof __VERSION__ === 'undefined' ? NPM_TAG : __VERSION__;\n globalThis._loadersgl_ = globalThis._loadersgl_ || {};\n globalThis._loadersgl_.version ||= version;\n return version;\n}\n\n/** Version of this worker-utils build, or the branch's npm fallback tag. */\nexport const VERSION = getVersion();\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\n\n/** Throws an `Error` with the optional `message` if `condition` is falsy */\nexport function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(message || 'loaders.gl assertion failed.');\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_: {[key: string]: any} = globals.self || globals.window || globals.global || {};\nconst window_: {[key: string]: any} = globals.window || globals.self || globals.global || {};\nconst global_: {[key: string]: any} = globals.global || globals.self || globals.window || {};\nconst document_: {[key: string]: any} = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\n/** true if running in the browser, false if running in Node.js */\nexport const isBrowser: boolean =\n // @ts-ignore process.browser\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\n/** true if running on a worker thread */\nexport const isWorker: boolean = typeof importScripts === 'function';\n\n/** true if running on a mobile device */\nexport const isMobile: boolean =\n typeof window !== 'undefined' && typeof window.orientation !== 'undefined';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n\n/** Version of Node.js if running under Node, otherwise 0 */\nexport const nodeVersion: number = (matches && parseFloat(matches[1])) || 0;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nimport {Worker, parentPort as nodeParentPort} from 'worker_threads';\n\n/** The runtime surface used by the worker farm, without Node-only public types. */\nexport type NodeWorkerType = {\n postMessage(value: unknown, transferList?: any[]): void;\n terminate(): unknown;\n on(event: string, listener: (...args: any[]) => void): unknown;\n ref(): unknown;\n unref(): unknown;\n};\nexport type ParentPort = {\n postMessage(value: unknown, transferList?: any[]): void;\n on(event: string, listener: (...args: any[]) => void): unknown;\n off(event: string, listener: (...args: any[]) => void): unknown;\n};\nexport const parentPort: ParentPort | null = nodeParentPort as ParentPort | null;\nexport const NodeWorker: new (filename: string | URL, options?: any) => NodeWorkerType = Worker;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\n// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils, just this one.\n\n/**\n * Returns an array of transferable objects that can be used with postMessage.\n * Recursive discovery includes both ports of a MessageChannel, but not the channel itself.\n * https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage\n * @param object data to be sent via postMessage\n * @param recursive - not for application use\n * @param transfers - not for application use\n * @returns a transfer list that can be passed to postMessage\n */\nexport function getTransferList(\n object: any,\n recursive: boolean = true,\n transfers?: Set<any>\n): Transferable[] {\n // Make sure that items in the transfer list is unique\n const transfersSet = transfers || new Set();\n\n const seen = new Set<object>();\n function visit(value: any): void {\n if (!value || typeof value !== 'object' || seen.has(value)) return;\n seen.add(value);\n if (isTransferable(value)) transfersSet.add(value);\n else if (ArrayBuffer.isView(value)) {\n if (isTransferable(value.buffer)) transfersSet.add(value.buffer);\n } else if (\n recursive &&\n typeof MessageChannel !== 'undefined' &&\n value instanceof MessageChannel\n ) {\n // Browser channel ports are prototype accessors, not own enumerable properties.\n visit(value.port1);\n visit(value.port2);\n } else if (recursive && value instanceof Map) {\n for (const [key, item] of value) {\n visit(key);\n visit(item);\n }\n } else if (recursive && value instanceof Set) {\n for (const item of value) visit(item);\n } else if (recursive) {\n for (const key of Object.keys(value)) visit(value[key]);\n }\n }\n visit(object);\n\n // If transfers is defined, is internal recursive call\n // Otherwise it's called by the user\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\nfunction isTransferable(object: unknown) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n // @ts-ignore\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n\n/**\n * Recursively drop non serializable values like functions and regexps.\n * @param object\n */\nexport function getTransferListForWriter(object: object | null): object {\n const seen = new Map<object, any>();\n function clone(value: any): any {\n if (typeof value === 'function' || value instanceof RegExp) return {};\n if (!value || typeof value !== 'object') return value;\n if (seen.has(value)) return seen.get(value);\n // Preserve structured-clone built-ins and backing-buffer identity.\n if (\n ArrayBuffer.isView(value) ||\n value instanceof ArrayBuffer ||\n (typeof SharedArrayBuffer !== 'undefined' && value instanceof SharedArrayBuffer) ||\n value instanceof Date ||\n (typeof WebAssembly !== 'undefined' && value instanceof WebAssembly.Module) ||\n isTransferable(value)\n )\n return value;\n const result: any =\n value instanceof Map\n ? new Map()\n : value instanceof Set\n ? new Set()\n : Array.isArray(value)\n ? []\n : {};\n seen.set(value, result);\n if (value instanceof Map) {\n for (const [key, item] of value) result.set(clone(key), clone(item));\n } else if (value instanceof Set) {\n for (const item of value) result.add(clone(item));\n } else {\n for (const key of Object.keys(value)) {\n Object.defineProperty(result, key, {\n value: clone(value[key]),\n enumerable: true,\n writable: true,\n configurable: true\n });\n }\n }\n return result;\n }\n return object === null ? {} : clone(object);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nimport type {WorkerMessageData, WorkerMessageType, WorkerMessagePayload} from '../../types';\nimport {getTransferList} from '../worker-utils/get-transfer-list';\n// import type {TransferListItem} from '../node/worker_threads';\nimport {parentPort} from '../node/worker_threads';\n\ntype TransferListItem = any;\ntype WorkerMessageEvent = MessageEvent<WorkerMessageData> | WorkerMessageData;\ntype WorkerMessageListener = (type: WorkerMessageType, payload: WorkerMessagePayload) => any;\n\n/** Vile hack to defeat over-zealous bundlers from stripping out the require */\nasync function getParentPort() {\n // const isNode = globalThis.process;\n // let parentPort;\n // try {\n // // biome-ignore format: preserve intentional fixture layout\n // eval('globalThis.parentPort = require(\\'worker_threads\\').parentPort'); // eslint-disable-line no-eval\n // parentPort = globalThis.parentPort;\n // } catch {\n // try {\n // // biome-ignore format: preserve intentional fixture layout\n // eval('globalThis.workerThreadsPromise = import(\\'worker_threads\\')'); // eslint-disable-line no-eval\n // const workerThreads = await globalThis.workerThreadsPromise;\n // parentPort = workerThreads.parentPort;\n // } catch (error) {\n // console.error((error as Error).message); // eslint-disable-line no-console\n // }\n // }\n return parentPort;\n}\n\nconst onMessageWrapperMap = new Map<WorkerMessageListener, (message: WorkerMessageEvent) => void>();\n\n/**\n * Type safe wrapper for worker code\n */\nexport default class WorkerBody {\n /** Check that we are actually in a worker thread */\n static async inWorkerThread(): Promise<boolean> {\n const workerGlobalScope = (globalThis as any).WorkerGlobalScope;\n return (\n (typeof workerGlobalScope === 'function' && globalThis instanceof workerGlobalScope) ||\n Boolean(await getParentPort())\n );\n }\n\n /*\n * (type: WorkerMessageType, payload: WorkerMessagePayload) => any\n */\n static set onmessage(onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any) {\n async function handleMessage(message) {\n const parentPort = await getParentPort();\n // Confusingly the message itself also has a 'type' field which is always set to 'message'\n const {type, payload} = parentPort ? message : message.data;\n // if (!isKnownMessage(message)) {\n // return;\n // }\n onMessage(type, payload);\n }\n\n getParentPort().then(parentPort => {\n if (parentPort) {\n parentPort.on('message', message => {\n handleMessage(message);\n });\n // if (message == 'exit') { parentPort.unref(); }\n // eslint-disable-next-line\n // biome-ignore lint/suspicious/noConsole: Preserve upstream worker diagnostics.\n parentPort.on('exit', () => console.debug('Node worker closing'));\n } else {\n // eslint-disable-next-line no-restricted-globals\n globalThis.onmessage = handleMessage;\n }\n });\n }\n\n static async addEventListener(onMessage: WorkerMessageListener) {\n let onMessageWrapper = onMessageWrapperMap.get(onMessage);\n\n if (!onMessageWrapper) {\n onMessageWrapper = (message: WorkerMessageEvent) => {\n const messageData = getWorkerMessageData(message);\n if (!messageData) {\n return;\n }\n onMessage(messageData.type, messageData.payload);\n };\n onMessageWrapperMap.set(onMessage, onMessageWrapper);\n }\n\n const parentPort = await getParentPort();\n if (parentPort) {\n parentPort.on('message', onMessageWrapper);\n } else {\n globalThis.addEventListener('message', onMessageWrapper);\n }\n }\n\n static async removeEventListener(onMessage: WorkerMessageListener) {\n const onMessageWrapper = onMessageWrapperMap.get(onMessage);\n onMessageWrapperMap.delete(onMessage);\n if (!onMessageWrapper) {\n return;\n }\n const parentPort = await getParentPort();\n if (parentPort) {\n parentPort.off('message', onMessageWrapper);\n } else {\n globalThis.removeEventListener('message', onMessageWrapper);\n }\n }\n\n /**\n * Send a message from a worker to creating thread (main thread)\n * @param type\n * @param payload\n */\n static async postMessage(\n type: WorkerMessageType,\n payload: WorkerMessagePayload,\n copy = false\n ): Promise<void> {\n const data: WorkerMessageData = {source: 'loaders.gl', type, payload};\n // console.log('posting message', data);\n\n // Cast to Node compatible transfer list\n const transferList = copy ? [] : (getTransferList(payload) as TransferListItem[]);\n\n const parentPort = await getParentPort();\n if (parentPort) {\n parentPort.postMessage(data, transferList);\n // console.log('posted message', data);\n } else {\n // @ts-expect-error Outside of worker scopes this call has a third parameter\n globalThis.postMessage(data, transferList);\n }\n }\n}\n\n// Filter out noise messages sent to workers\nfunction getWorkerMessageData(message: WorkerMessageEvent): WorkerMessageData | null {\n if (!message || typeof message !== 'object') {\n return null;\n }\n const messageData = 'data' in message && message.type === 'message' ? message.data : message;\n return messageData &&\n typeof messageData.source === 'string' &&\n messageData.source.startsWith('loaders.gl')\n ? messageData\n : null;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\n// From https://github.com/rauschma/async-iter-demo/tree/master/src under MIT license\n// http://2ality.com/2016/10/asynchronous-iteration.html\n\n/**\n * Async Queue\n * - AsyncIterable: An async iterator can be\n * - Values can be pushed onto the queue\n * @example\n * const asyncQueue = new AsyncQueue();\n * setTimeout(() => asyncQueue.enqueue('tick'), 1000);\n * setTimeout(() => asyncQueue.enqueue(new Error('done')), 10000);\n * for await (const value of asyncQueue) {\n * console.log(value); // tick\n * }\n */\nexport default class AsyncQueue<T> {\n private _values: any[];\n private _settlers: any[];\n private _closed: boolean;\n\n constructor() {\n this._values = []; // enqueues > dequeues\n this._settlers = []; // dequeues > enqueues\n this._closed = false;\n }\n\n /** Return an async iterator for this queue */\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this;\n }\n\n /** Push a new value - the async iterator will yield a promise resolved to this value */\n push(value: T): void {\n return this.enqueue(value);\n }\n\n /**\n * Push a new value - the async iterator will yield a promise resolved to this value\n * Add an error - the async iterator will yield a promise rejected with this value\n */\n enqueue(value: T | Error): void {\n if (this._closed) {\n throw new Error('Closed');\n }\n\n if (this._settlers.length > 0) {\n if (this._values.length > 0) {\n throw new Error('Illegal internal state');\n }\n const settler = this._settlers.shift();\n if (value instanceof Error) {\n settler.reject(value);\n } else {\n settler.resolve({value});\n }\n } else {\n this._values.push(value);\n }\n }\n\n /** Indicate that we not waiting for more values - The async iterator will be done */\n close(): void {\n while (this._settlers.length > 0) {\n const settler = this._settlers.shift();\n settler.resolve({done: true});\n }\n this._closed = true;\n }\n\n // ITERATOR IMPLEMENTATION\n\n /** @returns a Promise for an IteratorResult */\n next(): Promise<IteratorResult<T, any>> {\n // If values in queue, yield the first value\n if (this._values.length > 0) {\n const value = this._values.shift();\n if (value instanceof Error) {\n return Promise.reject(value);\n }\n return Promise.resolve({done: false, value});\n }\n\n // If queue is closed, the iterator is done\n if (this._closed) {\n if (this._settlers.length > 0) {\n throw new Error('Illegal internal state');\n }\n return Promise.resolve({done: true, value: undefined});\n }\n\n // Yield a promise that waits for new values to be enqueued\n return new Promise((resolve, reject) => {\n this._settlers.push({resolve, reject});\n });\n }\n}\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nimport WorkerThread from '../worker-farm/worker-thread';\nimport {isBrowser} from '../env-utils/globals';\n\nexport type WorkerCapabilities = {\n workers: boolean;\n sharedMemory: boolean;\n crossOriginIsolated: boolean | undefined;\n sharedMemoryUnavailableReason?: 'cross-origin-isolation' | 'unsupported' | 'blocked';\n};\n\n/** Probe the actual realm; browser sharing requires COOP/COEP isolation (Node does not). */\nexport function getWorkerCapabilities(): WorkerCapabilities {\n const isolated =\n typeof globalThis.crossOriginIsolated === 'boolean'\n ? globalThis.crossOriginIsolated\n : undefined;\n const capabilities: WorkerCapabilities = {\n workers: WorkerThread.isSupported(),\n sharedMemory: false,\n crossOriginIsolated: isolated\n };\n if (isBrowser && isolated !== true) {\n capabilities.sharedMemoryUnavailableReason = 'cross-origin-isolation';\n } else if (\n typeof SharedArrayBuffer === 'undefined' ||\n typeof Atomics === 'undefined' ||\n typeof structuredClone !== 'function'\n ) {\n capabilities.sharedMemoryUnavailableReason = 'unsupported';\n } else {\n try {\n const buffer = new SharedArrayBuffer(4);\n const cloned = structuredClone(buffer);\n Atomics.store(new Int32Array(buffer), 0, 17);\n capabilities.sharedMemory = Atomics.load(new Int32Array(cloned), 0) === 17;\n if (!capabilities.sharedMemory) capabilities.sharedMemoryUnavailableReason = 'blocked';\n } catch {\n capabilities.sharedMemoryUnavailableReason = 'blocked';\n }\n }\n return capabilities;\n}\n\nexport type SharedWorkerSnapshot = {\n cancelled: boolean;\n completed: number;\n /** -1 means unknown. */\n total: number;\n revision: number;\n};\n\n/** Same-version, single-job atomic control state. Each field is atomic; snapshots are not transactions. */\nexport class SharedWorkerState {\n readonly buffer: SharedArrayBuffer;\n private values: Int32Array;\n\n constructor(buffer: SharedArrayBuffer) {\n if (\n typeof SharedArrayBuffer === 'undefined' ||\n !(buffer instanceof SharedArrayBuffer) ||\n buffer.byteLength !== 16\n )\n throw new Error('Expected a 16-byte shared worker control buffer');\n this.buffer = buffer;\n this.values = new Int32Array(buffer);\n }\n\n get snapshot(): SharedWorkerSnapshot {\n return {\n cancelled: Atomics.load(this.values, 0) !== 0,\n completed: Atomics.load(this.values, 1),\n total: Atomics.load(this.values, 2),\n revision: Atomics.load(this.values, 3)\n };\n }\n\n cancel(): void {\n Atomics.store(this.values, 0, 1);\n Atomics.add(this.values, 3, 1);\n Atomics.notify(this.values, 0);\n }\n\n throwIfCancelled(): void {\n if (Atomics.load(this.values, 0) !== 0) {\n const error = new Error('Shared worker task was cancelled');\n error.name = 'AbortError';\n throw error;\n }\n }\n\n /** Integer counters for application-defined work; messages still carry phase names and units. */\n setProgress(completed: number, total = -1): void {\n if (\n !Number.isInteger(completed) ||\n completed < 0 ||\n completed > 0x7fffffff ||\n !Number.isInteger(total) ||\n total < -1 ||\n total > 0x7fffffff\n ) {\n throw new RangeError('Shared progress requires nonnegative int32 counts (or total -1)');\n }\n Atomics.store(this.values, 1, completed);\n Atomics.store(this.values, 2, total);\n Atomics.add(this.values, 3, 1);\n }\n}\n\n/** Returns null when unavailable, leaving message-based cancellation/progress usable. */\nexport function createSharedWorkerState(): SharedWorkerState | null {\n if (!getWorkerCapabilities().sharedMemory) return null;\n const state = new SharedWorkerState(new SharedArrayBuffer(16));\n state.setProgress(0);\n return state;\n}\n\n/** Caller-side setup: opt into shared control automatically for cooperative jobs when available. */\nexport function prepareSharedState<\n T extends {cancellationMode?: string; sharedState?: SharedArrayBuffer | false}\n>(options: T): T {\n if (options.sharedState === undefined && options.cancellationMode === 'cooperative') {\n const state = createSharedWorkerState();\n return state ? {...options, sharedState: state.buffer} : options;\n }\n if (options.sharedState) {\n if (!getWorkerCapabilities().sharedMemory)\n throw new Error('Shared worker memory is unavailable');\n new SharedWorkerState(options.sharedState).throwIfCancelled();\n }\n return options;\n}\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\n/** Reject unknown output ownership modes before dispatch or processing. */\nexport function validateOutputOwnership(ownership: unknown): void {\n if (ownership !== undefined && ownership !== 'copy' && ownership !== 'transfer') {\n throw new Error('Invalid worker output ownership');\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nimport type {\n WorkerProgress,\n WorkerMessageType,\n WorkerMessagePayload,\n WorkerContext,\n WorkerJobContext,\n Process,\n ProcessInBatches\n} from '../../types';\nimport {SharedWorkerState} from './shared-state';\nimport AsyncQueue from '../async-queue/async-queue';\nimport WorkerBody from '../worker-farm/worker-body';\nimport {validateOutputOwnership} from './validate-output-ownership';\n// import {validateWorkerVersion} from './validate-worker-version';\n\n/** Counter for jobs */\nlet requestId = 0;\nlet activeController: AbortController | null = null;\nlet activeInputBatches: AsyncQueue<any> | null = null;\nlet activeOutputAcknowledgements: AsyncQueue<void> | null = null;\n\nexport type ProcessOnMainThread = (\n data: any,\n options?: {[key: string]: any},\n jobContext?: WorkerJobContext\n) => any;\n\n/**\n * Set up a WebWorkerGlobalScope to talk with the main thread\n */\nexport async function createWorker(\n process: Process,\n processInBatches?: ProcessInBatches,\n preload?: () => Promise<void>\n): Promise<void> {\n if (!(await WorkerBody.inWorkerThread())) {\n return;\n }\n\n const context: WorkerContext = {\n process: processOnMainThread\n };\n\n // eslint-disable-next-line complexity\n WorkerBody.onmessage = async (type: WorkerMessageType, payload: WorkerMessagePayload) => {\n if (type === 'cancel') {\n activeController?.abort();\n activeInputBatches?.close();\n activeOutputAcknowledgements?.close();\n return;\n }\n const controller =\n type === 'process' || type === 'process-in-batches' ? new AbortController() : undefined;\n if (controller) activeController = controller;\n const startedAt = performance.now();\n const reporter =\n type === 'process' || type === 'process-in-batches' ? createProgressReporter() : undefined;\n let sharedState: SharedWorkerState | undefined;\n const throwIfAborted = () => {\n controller?.signal.throwIfAborted();\n sharedState?.throwIfCancelled();\n };\n const jobContext = {\n ...context,\n signal: controller?.signal,\n sharedState,\n throwIfAborted,\n reportProgress: (progress: WorkerProgress) => {\n if (!controller?.signal.aborted && !sharedState?.snapshot.cancelled)\n reporter?.report(progress);\n }\n };\n try {\n if (controller && payload.options?.['sharedState']) {\n sharedState = new SharedWorkerState(payload.options['sharedState']);\n jobContext.sharedState = sharedState;\n }\n switch (type) {\n case 'preload':\n await preload?.();\n WorkerBody.postMessage('done', {});\n break;\n\n case 'process':\n throwIfAborted();\n validateOutputOwnership(payload.options?.['outputOwnership']);\n if (!process) {\n throw new Error('Worker does not support atomic processing');\n }\n const result = await process(\n payload.input,\n payload.options || {},\n jobContext,\n payload.context || {}\n );\n throwIfAborted();\n reporter?.finish();\n await WorkerBody.postMessage(\n 'done',\n {\n result,\n executionMs: performance.now() - startedAt\n },\n payload.options?.['outputOwnership'] === 'copy'\n );\n break;\n\n case 'process-in-batches':\n throwIfAborted();\n validateOutputOwnership(payload.options?.['outputOwnership']);\n if (!processInBatches) {\n throw new Error('Worker does not support batched processing');\n }\n const inputBatches = new AsyncQueue<any>();\n const outputAcknowledgements = new AsyncQueue<void>();\n activeInputBatches = inputBatches;\n activeOutputAcknowledgements = outputAcknowledgements;\n try {\n const resultIterator = processInBatches(\n createDemandDrivenIterator(inputBatches),\n payload.options || {},\n jobContext,\n payload.context || {}\n );\n for await (const batch of resultIterator) {\n throwIfAborted();\n await WorkerBody.postMessage(\n 'output-batch',\n {result: batch},\n payload.options?.['outputOwnership'] === 'copy'\n );\n await outputAcknowledgements.next();\n }\n throwIfAborted();\n reporter?.finish();\n await WorkerBody.postMessage('done', {executionMs: performance.now() - startedAt});\n } finally {\n activeInputBatches = null;\n activeOutputAcknowledgements = null;\n }\n break;\n\n case 'input-batch':\n if (!activeInputBatches) {\n throw new Error('Worker has no active batched processing session');\n }\n activeInputBatches.push(payload.input);\n break;\n\n case 'input-done':\n if (!activeInputBatches) {\n throw new Error('Worker has no active batched processing session');\n }\n activeInputBatches.close();\n break;\n\n case 'output-ack':\n if (!activeOutputAcknowledgements) {\n throw new Error('Worker has no active batched processing session');\n }\n activeOutputAcknowledgements.push(undefined);\n break;\n\n default:\n }\n } catch (error) {\n reporter?.finish(controller?.signal.aborted || sharedState?.snapshot.cancelled);\n const message = error instanceof Error ? error.message : '';\n await WorkerBody.postMessage('error', {\n error: message,\n errorName: error instanceof Error ? error.name : 'Error'\n });\n } finally {\n if (controller && activeController === controller) activeController = null;\n }\n };\n await WorkerBody.postMessage('ready', {});\n}\n\n/** Requests exactly one input batch whenever the worker-side processor advances its iterator. */\nasync function* createDemandDrivenIterator(inputBatches: AsyncQueue<any>): AsyncIterable<any> {\n while (true) {\n await WorkerBody.postMessage('input-request', {});\n const nextBatch = await inputBatches.next();\n if (nextBatch.done) {\n return;\n }\n yield nextBatch.value;\n }\n}\n\nfunction processOnMainThread(arrayBuffer: ArrayBuffer, options = {}, jobContext = {}) {\n const signal = activeController?.signal;\n signal?.throwIfAborted();\n return new Promise((resolve, reject) => {\n const id = requestId++;\n const cleanup = () => {\n signal?.removeEventListener('abort', abort);\n void WorkerBody.removeEventListener(onMessage);\n };\n const abort = () => {\n cleanup();\n reject(signal?.reason);\n };\n const onMessage = (type: string, payload: WorkerMessagePayload) => {\n if (payload.id !== id) return;\n if (type === 'done') {\n cleanup();\n resolve(payload.result);\n } else if (type === 'error') {\n cleanup();\n reject(payload.error);\n }\n };\n void WorkerBody.addEventListener(onMessage)\n .then(async () => {\n if (signal?.aborted) {\n abort();\n return;\n }\n signal?.addEventListener('abort', abort, {once: true});\n await WorkerBody.postMessage('process', {\n id,\n input: arrayBuffer,\n options,\n context: jobContext\n });\n })\n .catch(error => {\n cleanup();\n reject(error);\n });\n });\n}\n\n/** Coalesces same-phase reports per event-loop turn and flushes before settlement. */\nfunction createProgressReporter() {\n let pending: WorkerProgress | undefined;\n let finished = false;\n let scheduled = false;\n /** Posts the latest pending measurement. */\n const flush = (): void => {\n scheduled = false;\n if (pending) {\n WorkerBody.postMessage('progress', {progress: pending});\n pending = undefined;\n }\n };\n return {\n /** Records progress while retaining phase transitions. */\n report(progress: WorkerProgress): void {\n if (finished) return;\n if (pending && pending.phase !== progress.phase) flush();\n pending = {...progress};\n if (!scheduled) {\n scheduled = true;\n setTimeout(flush, 0);\n }\n },\n /** Flushes final progress and suppresses reports from stale callbacks. */\n finish(discard = false): void {\n if (discard) pending = undefined;\n flush();\n finished = true;\n }\n };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nimport type {WorkerObject} from './types';\nimport {VERSION} from './lib/env-utils/version';\ndeclare const __filename: string;\n\n// TYPES\nexport type {\n LoadWorker,\n WorkerObject,\n WorkerOptions,\n WorkerProgress,\n WorkerJobMetrics,\n WorkerPoolStats,\n WorkerContext,\n WorkerJobContext,\n Process,\n ProcessInBatches,\n // Protocol\n WorkerMessage,\n WorkerMessageType,\n WorkerMessageData,\n WorkerMessagePayload\n} from './types';\n\n// GENERAL UTILS\nexport {assert} from './lib/env-utils/assert';\nexport {isBrowser, isWorker} from './lib/env-utils/globals';\n\n// WORKER UTILS - TYPES\nexport {default as WorkerJob} from './lib/worker-farm/worker-job';\nexport {default as WorkerThread} from './lib/worker-farm/worker-thread';\n\n// WORKER FARMS\nexport {default as WorkerFarm} from './lib/worker-farm/worker-farm';\nexport {default as WorkerPool} from './lib/worker-farm/worker-pool';\nexport {default as WorkerBody} from './lib/worker-farm/worker-body';\n\n// PROCESS ON WORKER\nexport type {ProcessOnWorkerOptions} from './lib/worker-api/process-on-worker';\nexport type {PreloadWorkerOptions} from './lib/worker-api/process-on-worker';\nexport {\n processOnWorker,\n processOnWorkerInBatches,\n preloadWorker,\n canProcessOnWorker,\n canProcessOnWorkerInBatches\n} from './lib/worker-api/process-on-worker';\nexport {createWorker} from './lib/worker-api/create-worker';\n\n// WORKER UTILS - EXPORTS\nexport {getWorkerURL} from './lib/worker-api/get-worker-url';\nexport {validateWorkerVersion} from './lib/worker-api/validate-worker-version';\nexport {getTransferList, getTransferListForWriter} from './lib/worker-utils/get-transfer-list';\n\n// LIBRARY UTILS\nexport {\n extractLoadLibraryOptions,\n getLibraryUrl,\n loadLibrary,\n type LoadLibraryOptions\n} from './lib/library-utils/library-utils';\n\n// PARSER UTILS\nexport {default as AsyncQueue} from './lib/async-queue/async-queue';\n\n// WORKER OBJECTS\n\n/** A null worker to test that worker processing is functional */\nconst path = typeof __filename === 'string' ? __filename.replace(/\\\\/g, '/') : '';\nconst moduleUrl = path\n ? `file://${path.startsWith('/') ? '' : '/'}${encodeURI(path).replace(/#/g, '%23').replace(/\\?/g, '%3F')}`\n : import.meta.url;\nexport const NullWorker: WorkerObject = {\n id: 'null',\n name: 'null',\n module: 'core',\n packageName: '@math.gl/core',\n // Drop the entire URL expression when classic bundles do not use this descriptor.\n worker: /* @__PURE__ */ (() => new URL('./workers/null-worker.js', moduleUrl).href)(),\n loadWorker: () =>\n new Worker(new URL('./workers/null-worker.js', import.meta.url), {type: 'module'}),\n version: VERSION,\n options: {\n null: {}\n }\n};\n\nexport type {WorkerAdmission, WorkerPoolProps} from './lib/worker-farm/worker-pool';\nexport {createWorkerResource, createResourceWorker} from './lib/worker-api/worker-resource';\nexport type {\n WorkerResource,\n WorkerResourceRunOptions,\n WorkerResourceObject,\n ResourceRequest\n} from './lib/worker-api/worker-resource';\n\nexport {\n getWorkerCapabilities,\n createSharedWorkerState,\n SharedWorkerState\n} from './lib/worker-api/shared-state';\nexport type {WorkerCapabilities, SharedWorkerSnapshot} from './lib/worker-api/shared-state';\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nimport {WorkerPool, preloadWorker, type WorkerObject} from '../worker-utils/index';\nimport type {AnyTask, TaskPreloadOptions} from './task';\n\nconst pending = new WeakMap<AnyTask, Promise<void>>();\nconst loaded = new WeakSet<AnyTask>();\n\n/** @internal One code-loading hook per definition in this JavaScript environment. */\nexport function preloadTaskCode(task: AnyTask, signal?: AbortSignal): Promise<void> {\n if (!task.preload) return Promise.resolve();\n let promise = pending.get(task);\n if (!promise) {\n promise = Promise.resolve()\n .then(() => task.preload!())\n .then(() => {\n loaded.add(task);\n });\n pending.set(task, promise);\n void promise.catch(() => pending.delete(task));\n }\n return withSignal(promise, signal);\n}\n\n/** @internal Synchronous calls cannot start or await module loading. */\nexport function isTaskCodeLoaded(task: AnyTask): boolean {\n return !task.preload || loaded.has(task);\n}\n\n/**\n * Load code ahead of execution, without task state or a runner-owned worker pool.\n * Worker targets use a temporary worker to load their actual bundled dependency\n * graph, await preload/readiness, then terminate. Later workers use browser caches\n * where cache headers permit; worker startup and state initialization still occur.\n */\nexport async function preloadTasks(\n tasks: readonly AnyTask[],\n options: TaskPreloadOptions = {}\n): Promise<void> {\n const execution = options.execution ?? 'auto';\n if (!['auto', 'main-thread', 'worker'].includes(execution))\n throw new TypeError('Invalid execution mode');\n options.signal?.throwIfAborted();\n // Sequential loading bounds temporary workers to one per invocation.\n for (const task of new Set(tasks)) {\n options.signal?.throwIfAborted();\n if (execution === 'worker' && !task.worker) throw new Error('Task has no worker');\n if (execution === 'main-thread' || !task.worker) {\n await preloadTaskCode(task, options.signal);\n continue;\n }\n const target = task.worker;\n if (Boolean(target.url) === Boolean(target.create))\n throw new Error('Supply exactly one worker URL or factory');\n const pool = new WorkerPool({\n name: task.id,\n url: target.url?.toString(),\n loadWorker: target.create,\n workerType: 'module',\n maxConcurrency: 1,\n maxMobileConcurrency: 1\n });\n const descriptor: WorkerObject = {\n id: task.id,\n name: task.id,\n module: 'core',\n version: 'prototype',\n options: {},\n worker: target.url?.toString() ?? true,\n loadWorker: target.create,\n workerInBatches: target.capabilities.streaming\n };\n try {\n await preloadWorker(\n descriptor,\n {workerPool: pool, workerType: 'module', signal: options.signal},\n {count: 1}\n );\n } finally {\n await pool.destroy();\n }\n }\n}\n\nfunction withSignal<T>(operation: Promise<T>, signal?: AbortSignal): Promise<T> {\n if (!signal) return operation;\n return new Promise((resolve, reject) => {\n const abort = () => {\n signal.removeEventListener('abort', abort);\n reject(signal.reason);\n };\n signal.addEventListener('abort', abort, {once: true});\n if (signal.aborted) abort();\n operation.then(\n value => {\n signal.removeEventListener('abort', abort);\n resolve(value);\n },\n error => {\n signal.removeEventListener('abort', abort);\n reject(error);\n }\n );\n });\n}\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nimport {createWorker, WorkerBody, getTransferList, type WorkerContext} from '../worker-utils/index';\nimport {preloadTaskCode} from './task-preload';\nimport type {AnyTask, TaskContext, TaskRunControls} from './task';\n\n/** Validate the record boundary for JavaScript callers as well as TypeScript. */\nexport function assertPayload(value: unknown): asserts value is Record<string, unknown> {\n if (!value || typeof value !== 'object' || Object.getPrototypeOf(value) !== Object.prototype) {\n throw new TypeError('Task payloads must be plain objects with named fields');\n }\n}\n\nexport function clonePayload(value: any, ownership: 'copy' | 'transfer' | 'share' = 'copy'): any {\n assertPayload(value);\n if (!['copy', 'transfer', 'share'].includes(ownership))\n throw new TypeError('Invalid input ownership');\n const transfer = getTransferList(value);\n if (ownership === 'share' && transfer.length)\n throw new TypeError('Share requires shared storage');\n return structuredClone(value, {\n transfer: ownership === 'transfer' ? transfer : []\n });\n}\n\nexport function taskContext(state: any, context: WorkerContext = {}): TaskContext<any> {\n const signal = context.signal ?? new AbortController().signal;\n return {\n state,\n signal,\n throwIfAborted: () => {\n signal.throwIfAborted();\n context.throwIfAborted?.();\n },\n reportProgress: progress =>\n context.reportProgress?.({\n ...progress,\n phase: progress.phase ?? 'process',\n unit: progress.unit ?? 'items'\n })\n };\n}\n\n/** Shared lifecycle implementation used by both local and worker execution. */\nexport class TaskRuntime {\n private state: any;\n private initialized = false;\n constructor(private task: AnyTask) {}\n\n async initialize(input: object, context: WorkerContext = {}): Promise<object> {\n if (this.initialized) throw new Error('Task is already initialized');\n assertPayload(input);\n await preloadTaskCode(this.task, context.signal);\n context.signal?.throwIfAborted();\n this.state = await this.task.initialize?.(input, taskContext(undefined, context));\n this.initialized = true;\n return {};\n }\n\n async destroy(): Promise<object> {\n if (this.initialized) {\n this.initialized = false;\n const state = this.state;\n this.state = undefined;\n if (this.task.initialize) await this.task.destroy?.(state);\n }\n return {};\n }\n\n async process(input: object, options: object, context: WorkerContext = {}): Promise<object> {\n if (!this.initialized) throw new Error('Task is not initialized');\n if (!this.task.process) throw new Error('Task has no atomic processor');\n assertPayload(input);\n const result = await this.task.process(input, options, taskContext(this.state, context));\n assertPayload(result);\n return result;\n }\n\n async *stream(\n inputs: AsyncIterable<object>,\n options: object,\n context: WorkerContext = {}\n ): AsyncIterable<object> {\n if (!this.initialized) throw new Error('Task is not initialized');\n if (!this.task.processInBatches) throw new Error('Task has no streaming processor');\n for await (const output of this.task.processInBatches(\n inputs,\n options,\n taskContext(this.state, context)\n )) {\n assertPayload(output);\n yield output;\n }\n }\n}\n\n/**\n * Install one task's protocol inside an existing worker and announce readiness.\n * Does not create a Worker, register an ID, or invoke the task's initialize hook.\n */\nexport async function initializeTaskWorker(task: AnyTask): Promise<void> {\n if (!(await WorkerBody.inWorkerThread()))\n throw new Error('initializeTaskWorker must run inside a worker');\n if (installed) throw new Error('A task is already installed in this worker');\n installed = true;\n const runtime = new TaskRuntime(task);\n let streamOptions: object = {};\n return createWorker(\n async (request, _options, context) => {\n switch (request.operation) {\n case 'initialize':\n return runtime.initialize(request.input, context);\n case 'destroy':\n return runtime.destroy();\n case 'stream-options':\n streamOptions = request.options;\n return {};\n case 'process':\n return runtime.process(request.input, request.options, context);\n default:\n throw new Error('Unknown task operation');\n }\n },\n async function* (inputs, _options, context) {\n async function* batches() {\n for await (const input of inputs) {\n assertPayload(input);\n yield input;\n }\n }\n try {\n yield* runtime.stream(batches(), streamOptions, context);\n } finally {\n streamOptions = {};\n }\n },\n () => preloadTaskCode(task)\n );\n}\nlet installed = false;\n\nexport function localContext(controls: TaskRunControls): WorkerContext {\n return {\n signal: controls.signal,\n reportProgress: progress => controls.onProgress?.(progress)\n };\n}\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\n/** Public task execution API. Worker transport is an internal implementation detail. */\nexport {TaskRunner} from './task-runner';\nexport {preloadTasks} from './task-preload';\nexport type {InitializedTask} from './task-runner';\nexport {initializeTaskWorker} from './task-runtime';\nexport type {\n Task,\n TaskTypes,\n TaskContext,\n TaskInitializationContext,\n TaskProgress,\n TaskWorker,\n TaskRunControls,\n TaskInitializationControls,\n TaskRunOptions,\n TaskSyncRunOptions,\n TaskPreloadOptions,\n TaskBatchRunOptions,\n TaskRunsOptions,\n TaskRunnerOptions\n} from './task';\nexport {createTypedTaskDispatcher} from './typed-task-dispatch';\nexport type {\n TaskOperation,\n TaskOperationRequest,\n TaskOperationResult,\n TypedTaskDispatcher\n} from './typed-task-dispatch';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport * as WorkerThreads from 'worker_threads';\nexport {\n markAsUntransferable,\n isMarkedAsUntransferable,\n markAsUncloneable,\n moveMessagePortToContext,\n receiveMessageOnPort,\n getEnvironmentData,\n setEnvironmentData,\n postMessageToThread,\n isMainThread,\n resourceLimits,\n SHARE_ENV,\n threadId,\n workerData,\n Worker,\n BroadcastChannel,\n MessageChannel,\n MessagePort\n} from 'worker_threads';\nexport type {\n WorkerPerformance,\n TransferListItem,\n WorkerOptions,\n ResourceLimits,\n WorkerEventMap,\n Serializable,\n LockMode,\n Transferable,\n LockGrantedCallback,\n LockInfo,\n LockManagerSnapshot,\n LockOptions,\n StructuredSerializeOptions,\n BroadcastChannelEventMap,\n Lock,\n LockManager,\n MessagePortEventMap\n} from 'worker_threads';\nexport const parentPort = WorkerThreads?.parentPort;\nexport const NodeWorker = WorkerThreads.Worker;\nexport type NodeWorkerType = WorkerThreads.Worker;\n\n/** Optional Node.js worker API, available on runtimes that provide it. */\nexport const isInternalThread = WorkerThreads.isInternalThread;\n\n/** Optional Node.js worker API, available on runtimes that provide it. */\nexport const threadName = WorkerThreads.threadName;\n\n/** Optional Node.js worker API, available on runtimes that provide it. */\nexport const locks = WorkerThreads.locks;\n\n/** Optional Node.js worker API, available on runtimes that provide it. */\nexport const structuredClone = WorkerThreads.structuredClone;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {\n initializeTaskWorker as initializeMathTaskWorker,\n type Task,\n type TaskContext\n} from '@math.gl/core/tasks';\nimport type {WorkerJobContext, WorkerProgress} from '../../types';\n\n/** Named wire payload; TaskRunner requires plain object boundaries. */\nexport type WorkerTaskPayload = {\n /** Loader input or decoded output. */\n value: any;\n};\n\n/** State pinned to one initialized task handle. */\nexport type WorkerTaskState = {\n /** Serializable loader context. */\n context: WorkerJobContext;\n /** Optional calling-thread request channel. */\n port?: MessagePort;\n};\n\n/** Payloads shared by the loader task descriptor and its worker implementation. */\nexport type WorkerTaskTypes = {\n /** Atomic input. */\n input: WorkerTaskPayload;\n /** Atomic output. */\n output: WorkerTaskPayload;\n /** Parser options. */\n options: Record<string, any>;\n /** Per-handle setup. */\n initialization: WorkerTaskState;\n /** Per-handle state. */\n state: WorkerTaskState;\n};\n\n/** Public math.gl task shape used by loader adapters. */\nexport type WorkerTask = Task<WorkerTaskTypes>;\n\n/** Normalizes optional task labels for loader progress consumers. */\nexport function normalizeTaskProgress(\n progress: Parameters<TaskContext['reportProgress']>[0]\n): WorkerProgress {\n return {...progress, phase: progress.phase ?? 'process', unit: progress.unit ?? 'items'};\n}\n\n/** Detects worker execution without importing Node APIs into browser bundles. */\nexport async function isWorkerThread(): Promise<boolean> {\n if (\n typeof self !== 'undefined' &&\n typeof document === 'undefined' &&\n typeof self.postMessage === 'function'\n )\n return true;\n if (typeof process !== 'undefined' && process.versions?.node) {\n const {isMainThread} = await import('../node/worker_threads');\n return !isMainThread;\n }\n return false;\n}\n\n/** Installs the upstream runtime, including its Node CommonJS worker support. */\nexport const initializeTaskWorker = initializeMathTaskWorker;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils, just this one.\n\n/**\n * Returns an array of Transferrable objects that can be used with postMessage\n * https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage\n * @param object data to be sent via postMessage\n * @param recursive - not for application use\n * @param transfers - not for application use\n * @returns a transfer list that can be passed to postMessage\n */\nexport function getTransferList(\n object: any,\n recursive: boolean = true,\n transfers?: Set<any>\n): Transferable[] {\n // Make sure that items in the transfer list is unique\n const transfersSet = transfers || new Set();\n\n if (!object) {\n // ignore\n } else if (isTransferable(object)) {\n transfersSet.add(object);\n } else if (isTransferable(object.buffer)) {\n // Typed array\n transfersSet.add(object.buffer);\n } else if (ArrayBuffer.isView(object)) {\n // object is a TypeArray viewing into a SharedArrayBuffer (not transferable)\n // Do not iterate through the content in this case\n } else if (recursive && typeof object === 'object') {\n for (const key in object) {\n // Avoid perf hit - only go one level deep\n getTransferList(object[key], recursive, transfersSet);\n }\n }\n\n // If transfers is defined, is internal recursive call\n // Otherwise it's called by the user\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\nfunction isTransferable(object: unknown) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n // @ts-ignore\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n\n/**\n * Recursively drop non serializable values like functions and regexps.\n * Preserve nested null values; a null top-level options argument normalizes to an empty object.\n * @param object\n */\nexport function getTransferListForWriter(object: object | null): object {\n if (object === null) {\n return {};\n }\n const clone = Object.assign({}, object);\n\n Object.keys(clone).forEach(key => {\n // Typed Arrays and Arrays are passed with no change\n if (\n object[key] !== null &&\n typeof object[key] === 'object' &&\n !ArrayBuffer.isView(object[key]) &&\n !(object[key] instanceof Array)\n ) {\n clone[key] = getTransferListForWriter(object[key]);\n } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {\n clone[key] = {};\n } else {\n clone[key] = object[key];\n }\n });\n\n return clone;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {TaskContext} from '@math.gl/core/tasks';\nimport type {Process, ProcessInBatches, WorkerContext} from '../../types';\nimport {\n initializeTaskWorker,\n isWorkerThread,\n normalizeTaskProgress,\n type WorkerTask,\n type WorkerTaskState\n} from './task-runtime';\nimport {getTransferList} from '../worker-utils/get-transfer-list';\n\n/** Installs a loader processor using math.gl's public task worker protocol. */\nexport async function createWorker(\n process: Process,\n processInBatches?: ProcessInBatches\n): Promise<void> {\n if (!(await isWorkerThread())) return;\n await initializeTaskWorker(createWorkerTask(process, processInBatches));\n}\n\n/** @internal Builds the loader adapter independently of worker installation. */\nexport function createWorkerTask(\n process: Process,\n processInBatches?: ProcessInBatches\n): WorkerTask {\n return {\n id: 'loaders.gl',\n initialize: state => state,\n destroy: state => state.port?.close(),\n process: async ({value}, options, context) => {\n if (!process) throw new Error('Worker does not support atomic processing');\n return {value: await process(value, options, createContext(context), context.state.context)};\n },\n ...(processInBatches\n ? ({\n processInBatches: async function* (inputs, options, context) {\n /** Unwraps task records while preserving upstream demand and backpressure. */\n async function* values() {\n for await (const input of inputs) yield input.value;\n }\n for await (const value of processInBatches(\n values(),\n options,\n createContext(context),\n context.state.context\n )) {\n yield {value};\n }\n }\n } satisfies Partial<WorkerTask>)\n : {})\n };\n}\n\n/** Adds loader labels and optional calling-thread requests to the task context. */\nfunction createContext(context: TaskContext<WorkerTaskState>): WorkerContext {\n let requestIdentifier = 0;\n const port = context.state.port;\n return {\n signal: context.signal,\n throwIfAborted: () => context.throwIfAborted(),\n reportProgress: progress => context.reportProgress(normalizeTaskProgress(progress)),\n process: port\n ? (input, options = {}, jobContext = {}) => {\n context.throwIfAborted();\n const identifier = ++requestIdentifier;\n return new Promise((resolve, reject) => {\n /** Settles only the matching response on this handle's private channel. */\n const onMessage = (event: MessageEvent) => {\n if (event.data.identifier !== identifier) return;\n cleanup();\n if (event.data.error) {\n const error = new Error(event.data.error.message);\n error.name = event.data.error.name;\n reject(error);\n } else resolve(event.data.value);\n };\n /** Stops waiting if this task is cancelled. */\n const onAbort = () => {\n cleanup();\n reject(context.signal.reason);\n };\n /** Removes per-request listeners on completion or cancellation. */\n const cleanup = () => {\n port.removeEventListener('message', onMessage);\n context.signal.removeEventListener('abort', onAbort);\n };\n port.addEventListener('message', onMessage);\n context.signal.addEventListener('abort', onAbort, {once: true});\n port.start();\n try {\n const request = {identifier, input, options, context: jobContext};\n port.postMessage(request, getTransferList(request));\n } catch (error) {\n cleanup();\n reject(error);\n }\n });\n }\n : undefined\n };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global importScripts */\nimport {isBrowser, isWorker} from '../env-utils/globals';\nimport {assert} from '../env-utils/assert';\nimport {VERSION} from '../env-utils/version';\n\nexport type LoadLibraryOptions<ModulesT extends Record<string, any> = Record<string, any>> = {\n useLocalLibraries?: boolean;\n CDN?: string | null;\n modules?: ModulesT;\n // Core must not be supplied\n core?: never;\n};\n\ntype ExtractableLoadLibraryOptions<ModulesT extends Record<string, any> = Record<string, any>> = {\n useLocalLibraries?: boolean;\n CDN?: string | null;\n modules?: ModulesT;\n core?: {\n useLocalLibraries?: boolean;\n CDN?: string | null;\n } | null;\n};\n\nconst loadLibraryPromises: Record<string, Promise<any>> = {}; // promises\n\nexport function extractLoadLibraryOptions<\n ModulesT extends Record<string, any> = Record<string, any>\n>(options: ExtractableLoadLibraryOptions<ModulesT> = {}): LoadLibraryOptions<ModulesT> {\n const useLocalLibraries = options.useLocalLibraries ?? options.core?.useLocalLibraries;\n const CDN = getCDNOption(options.CDN, options.core?.CDN);\n const modules = options.modules;\n\n return {\n ...(useLocalLibraries !== undefined ? {useLocalLibraries} : {}),\n ...(CDN !== undefined ? {CDN} : {}),\n ...(modules !== undefined ? {modules} : {})\n };\n}\n\n/**\n * Extracts a valid CDN option from normalized or legacy loader options.\n * @param cdn Deprecated top-level CDN option.\n * @param coreCDN Nested core CDN option.\n * @returns CDN option if it is a string or null.\n */\nfunction getCDNOption(cdn: unknown, coreCDN: unknown): string | null | undefined {\n if (typeof cdn === 'string' || cdn === null) {\n return cdn;\n }\n if (typeof coreCDN === 'string' || coreCDN === null) {\n return coreCDN;\n }\n return undefined;\n}\n\n/**\n * Dynamically loads a library (\"module\")\n *\n * - wasm library: Array buffer is returned\n * - js library: Parse JS is returned\n *\n * Method depends on environment\n * - browser - script element is created and installed on document\n * - classic worker - importScripts loads a classic wrapper\n * - module worker - native import loads an ESM wrapper and returns its exports\n * - node - file is required\n *\n * @param libraryUrl\n * @param moduleName\n * @param options\n * @param libraryName Classic asset name used for URL resolution and overrides.\n * @param moduleLibraryName ESM asset name used by module workers unless the classic URL is overridden.\n */\nexport async function loadLibrary(\n libraryUrl: string,\n moduleName: string | null = null,\n options: LoadLibraryOptions = {},\n libraryName: string | null = null,\n moduleLibraryName: string | null = null\n): Promise<any> {\n let moduleLibraryUrl = libraryUrl;\n if (moduleName) {\n const requestedLibraryName = libraryName || libraryUrl;\n const injectedLibrary = options.modules?.[requestedLibraryName];\n if (injectedLibrary !== undefined && typeof injectedLibrary !== 'string') {\n return injectedLibrary;\n }\n libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);\n const hasLibraryOverride = typeof injectedLibrary === 'string';\n moduleLibraryUrl =\n moduleLibraryName &&\n (!hasLibraryOverride || typeof options.modules?.[moduleLibraryName] === 'string')\n ? getLibraryUrl(moduleLibraryName, moduleName, options, moduleLibraryName)\n : libraryUrl;\n }\n // Workers may select different ESM adapters for the same classic asset.\n const cacheKey = getLibraryCacheKey(libraryUrl, moduleLibraryUrl, isWorker);\n\n loadLibraryPromises[cacheKey] =\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n loadLibraryPromises[cacheKey] || loadLibraryFromFile(libraryUrl, moduleLibraryUrl);\n return await loadLibraryPromises[cacheKey];\n}\n\n/** Identifies a library load, including the alternate adapter available in workers. */\nexport function getLibraryCacheKey(\n libraryUrl: string,\n moduleLibraryUrl: string,\n worker: boolean\n): string {\n return worker ? JSON.stringify([libraryUrl, moduleLibraryUrl]) : libraryUrl;\n}\n\n// TODO - sort out how to resolve paths for main/worker and dev/prod\nexport function getLibraryUrl(\n library: string,\n moduleName?: string,\n options: LoadLibraryOptions = {},\n libraryName: string | null = null\n): string {\n if (options?.core) {\n throw new Error('loadLibrary: options.core must be pre-normalized');\n }\n libraryName = libraryName || library;\n\n // Allow application to import and supply libraries through `options.modules`\n // TODO - See js-module-utils in loader-utils\n const modules = options.modules || {};\n if (typeof modules[libraryName] === 'string') {\n return modules[libraryName];\n }\n\n // Check if already a URL after checking overrides so callers can replace\n // default CDN URLs with locally bundled assets.\n if (!options.useLocalLibraries && library.startsWith('http')) {\n return library;\n }\n\n // Load from local files, not from CDN scripts in Node.js\n // TODO - needs to locate the modules directory when installed!\n if (!isBrowser) {\n return `modules/${moduleName}/dist/libs/${libraryName}`;\n }\n\n // In browser, load from external scripts\n if (options.CDN) {\n if (typeof options.CDN !== 'string') {\n throw new Error('loadLibrary: options.CDN must be a string or null');\n }\n assert(options.CDN.startsWith('http'));\n return `${options.CDN}/${moduleName}@${VERSION}/dist/libs/${libraryName}`;\n }\n\n // TODO - loading inside workers requires paths relative to worker script location...\n if (isWorker) {\n return libraryName.endsWith('.mjs') ? `./libs/${libraryName}` : `../src/libs/${libraryName}`;\n }\n\n return `modules/${moduleName}/src/libs/${libraryName}`;\n}\n\nasync function loadLibraryFromFile(libraryUrl: string, moduleLibraryUrl: string): Promise<any> {\n if (libraryUrl.endsWith('wasm')) {\n return await loadAsArrayBuffer(libraryUrl);\n }\n\n if (!isBrowser) {\n // TODO - Node doesn't yet support dynamic import from https URLs\n // try {\n // return await import(libraryUrl);\n // } catch (error) {\n // console.error(error);\n // }\n const {requireFromFile} = globalThis.loaders || {};\n try {\n const result = await requireFromFile?.(libraryUrl);\n if (result || !libraryUrl.includes('/dist/libs/')) {\n return result;\n }\n return await requireFromFile?.(libraryUrl.replace('/dist/libs/', '/src/libs/'));\n } catch (error) {\n if (libraryUrl.includes('/dist/libs/')) {\n try {\n return await requireFromFile?.(libraryUrl.replace('/dist/libs/', '/src/libs/'));\n } catch {\n // ignore\n }\n }\n console.error(error); // eslint-disable-line no-console\n return null;\n }\n }\n if (isWorker) {\n return loadLibraryInWorker(libraryUrl, moduleLibraryUrl);\n }\n // TODO - fix - should be more secure than string parsing since observes CORS\n // if (isBrowser) {\n // return await loadScriptFromFile(libraryUrl);\n // }\n\n const scriptSource = await loadAsText(libraryUrl);\n return loadLibraryFromString(scriptSource, libraryUrl);\n}\n\n/** Loads classic scripts or native ESM exports without evaluating fetched source or masking failures. */\nexport async function loadLibraryInWorker(\n libraryUrl: string,\n moduleLibraryUrl: string = libraryUrl\n): Promise<unknown> {\n try {\n // A zero-argument probe rejects in module workers without loading any script.\n importScripts();\n } catch {\n // Resolve local asset paths against the same worker location used by importScripts.\n const moduleUrl = new URL(moduleLibraryUrl, globalThis.location.href).href;\n const library = await import(/* @vite-ignore */ moduleUrl);\n return library.default ?? library;\n }\n return importScripts(libraryUrl);\n}\n\n/** Installs fetched library source on the browser main thread. Workers use script or module loading. */\nfunction loadLibraryFromString(scriptSource: string, id: string): null | any {\n const script = document.createElement('script');\n script.id = id;\n // most browsers like a separate text node but some throw an error. The second method covers those.\n try {\n script.appendChild(document.createTextNode(scriptSource));\n } catch (_e) {\n script.text = scriptSource;\n }\n document.body.appendChild(script);\n return null;\n}\n\nasync function loadAsArrayBuffer(url: string): Promise<ArrayBuffer> {\n const {readFileAsArrayBuffer} = globalThis.loaders || {};\n if (isBrowser || !readFileAsArrayBuffer || url.startsWith('http')) {\n const response = await fetch(url);\n return await response.arrayBuffer();\n }\n try {\n return await readFileAsArrayBuffer(url);\n } catch {\n if (url.includes('/dist/libs/')) {\n return await readFileAsArrayBuffer(url.replace('/dist/libs/', '/src/libs/'));\n }\n throw new Error(`Failed to load ArrayBuffer from ${url}`);\n }\n}\n\n/**\n * Load a file from local file system\n * @param filename\n * @returns\n */\nasync function loadAsText(url: string): Promise<string> {\n const {readFileAsText} = globalThis.loaders || {};\n if (isBrowser || !readFileAsText || url.startsWith('http')) {\n const response = await fetch(url);\n return await response.text();\n }\n try {\n return await readFileAsText(url);\n } catch {\n if (url.includes('/dist/libs/')) {\n return await readFileAsText(url.replace('/dist/libs/', '/src/libs/'));\n }\n throw new Error(`Failed to load text from ${url}`);\n }\n}\n\n/*\nasync function loadScriptFromFile(libraryUrl) {\n const script = document.createElement('script');\n script.src = libraryUrl;\n return await new Promise((resolve, reject) => {\n script.onload = data => {\n resolve(data);\n };\n script.onerror = reject;\n });\n}\n*/\n\n// TODO - technique for module injection into worker, from THREE.DracoLoader...\n/*\nfunction combineWorkerWithLibrary(worker, jsContent) {\n var fn = wWorker.toString();\n var body = [\n '// injected',\n jsContent,\n '',\n '// worker',\n fn.substring(fn.indexOf('{') + 1, fn.lastIndexOf('}'))\n ].join('\\n');\n this.workerSourceURL = URL.createObjectURL(new Blob([body]));\n}\n*/\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {WorkerObject} from './types';\nimport {VERSION} from './lib/env-utils/version';\n\n// TYPES\nexport type {\n LoadWorker,\n WorkerObject,\n WorkerOptions,\n WorkerProgress,\n WorkerContext,\n WorkerJobContext,\n Process,\n ProcessInBatches\n} from './types';\n\n// GENERAL UTILS\nexport {assert} from './lib/env-utils/assert';\nexport {isBrowser, isWorker} from './lib/env-utils/globals';\n\n// Public task lifecycle and typed task definitions.\nexport {TaskRunner, preloadTasks, createTypedTaskDispatcher} from '@math.gl/core/tasks';\nexport {initializeTaskWorker} from './lib/worker-api/task-runtime';\nexport type {\n Task,\n TaskTypes,\n TaskContext,\n TaskRunControls,\n TaskInitializationControls,\n TaskOperation,\n TaskOperationRequest,\n TaskOperationResult,\n TypedTaskDispatcher,\n TaskRunnerOptions\n} from '@math.gl/core/tasks';\n\n// PROCESS ON WORKER\nexport type {ProcessOnWorkerOptions} from './lib/worker-api/process-on-worker';\nexport type {PreloadWorkerOptions} from './lib/worker-api/process-on-worker';\nexport {\n processOnWorker,\n processOnWorkerInBatches,\n preloadWorker,\n destroyWorkerTasks,\n canProcessOnWorker,\n canProcessOnWorkerInBatches\n} from './lib/worker-api/process-on-worker';\nexport {createWorker} from './lib/worker-api/create-worker';\n\n// WORKER UTILS - EXPORTS\nexport {getWorkerURL} from './lib/worker-api/get-worker-url';\nexport {validateWorkerVersion} from './lib/worker-api/validate-worker-version';\nexport {getTransferList, getTransferListForWriter} from './lib/worker-utils/get-transfer-list';\n\n// LIBRARY UTILS\nexport {\n extractLoadLibraryOptions,\n getLibraryUrl,\n loadLibrary,\n type LoadLibraryOptions\n} from './lib/library-utils/library-utils';\n\n// PROCESS UTILS\nexport {default as ChildProcessProxy} from './lib/process-utils/child-process-proxy';\n\n// WORKER OBJECTS\n\n/** A null worker to test that worker processing is functional */\nexport const NullWorker: WorkerObject = {\n id: 'null',\n name: 'null',\n module: 'core',\n workerFile: 'worker-utils/null-worker.js',\n workerNode: 'worker-utils/null-worker-node.js',\n version: VERSION,\n options: {\n null: {}\n }\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable no-restricted-globals */\nimport type {CoreAPI} from '../sources/data-source';\nimport type {\n LoaderWithParser,\n LoaderOptions,\n StrictLoaderOptions,\n LoaderContext,\n Loader\n} from '../../loader-types';\nimport type {WorkerContext} from '@loaders.gl/core/worker-utils';\nimport {createWorker} from '@loaders.gl/core/worker-utils';\n// import {validateLoaderVersion} from './validate-loader-version';\n\n/**\n * Set up a WebWorkerGlobalScope to talk with the main thread\n * @param loader\n * @param selectLoader Selects the parser used for each worker request.\n */\nexport async function createLoaderWorker(\n loader: LoaderWithParser,\n selectLoader: (options: {[key: string]: any}) => LoaderWithParser = () => loader\n) {\n await createWorker(\n (input, options, workerContext, loaderContext) =>\n processLoaderWorkerData(\n selectLoader(options || {}),\n input,\n options,\n workerContext,\n loaderContext\n ),\n (inputIterator, options, workerContext, loaderContext) =>\n processLoaderWorkerBatches(\n selectLoader(options || {}),\n inputIterator,\n options,\n workerContext,\n loaderContext\n )\n );\n}\n\n/** Processes one loader request using the same context installed inside a worker. */\nexport async function processLoaderWorkerData(\n loader: LoaderWithParser,\n input: ArrayBuffer,\n options: {[key: string]: any} = {},\n workerContext?: {\n reportProgress?: WorkerContext['reportProgress'];\n process?: (data: any, options?: LoaderOptions, context?: Record<string, any>) => any;\n },\n loaderContext: Record<string, any> = {}\n) {\n const result = await parseData({\n loader,\n arrayBuffer: input,\n options,\n context: {\n ...loaderContext,\n reportProgress: workerContext?.reportProgress,\n coreApi: createWorkerCoreApi(),\n _parse: createParseOnMainThread(workerContext?.process)\n } as LoaderContext\n });\n\n return loader.serializeWorkerResult\n ? loader.serializeWorkerResult(result, options, loaderContext as LoaderContext)\n : result;\n}\n\n/** Processes a complete input stream using the loader's stateful batch parser. */\nexport async function* processLoaderWorkerBatches(\n loader: LoaderWithParser,\n inputIterator:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options: {[key: string]: any} = {},\n workerContext?: {\n reportProgress?: WorkerContext['reportProgress'];\n process?: (data: any, options?: LoaderOptions, context?: Record<string, any>) => any;\n },\n loaderContext: Record<string, any> = {}\n): AsyncIterable<unknown> {\n if (!loader.parseInBatches) {\n throw new Error(`${loader.id} loader does not support batched parsing`);\n }\n\n const parserOptions = getWorkerLoaderOptions(loader, options);\n const resultIterator = loader.parseInBatches(inputIterator, parserOptions, {\n ...loaderContext,\n reportProgress: workerContext?.reportProgress,\n coreApi: createWorkerCoreApi(),\n _parse: createParseOnMainThread(workerContext?.process)\n } as LoaderContext);\n\n for await (const batch of resultIterator) {\n yield loader.serializeWorkerBatch\n ? loader.serializeWorkerBatch(batch, options, loaderContext as LoaderContext)\n : batch;\n }\n}\n\n/**\n * Create a minimal core API implementation available inside worker loaders.\n */\nfunction createWorkerCoreApi(): CoreAPI {\n const unavailable = (methodName: keyof CoreAPI) => () => {\n throw new Error(`context.coreApi.${methodName} is unavailable inside worker loaders.`);\n };\n\n return {\n fetchFile: async (urlOrData, fetchOptions) =>\n await fetch(urlOrData as RequestInfo | URL, fetchOptions),\n parseSync: unavailable('parseSync'),\n parse: unavailable('parse'),\n parseFile: unavailable('parseFile'),\n parseInBatches: unavailable('parseInBatches'),\n load: unavailable('load'),\n loadInBatches: unavailable('loadInBatches')\n };\n}\n\n/**\n * Create a loader context parse callback that redirects subloader parsing to the main thread.\n * @param processOnMainThread\n */\nfunction createParseOnMainThread(\n processOnMainThread?: (data: any, options?: LoaderOptions, context?: Record<string, any>) => any\n) {\n return (\n arrayBuffer: ArrayBuffer,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n ) => {\n if (!processOnMainThread) {\n throw new Error('Worker not set up to parse on main thread');\n }\n\n const parseArguments = getMainThreadParseArguments(loaders, options, context);\n return processOnMainThread(arrayBuffer, parseArguments.options, {\n ...parseArguments.context,\n ...(Array.isArray(loaders) || (loaders && isLoaderObject(loaders))\n ? {\n _loaderIsArray: Array.isArray(loaders),\n _loaderIds: (Array.isArray(loaders) ? loaders : [loaders]).map(loader => loader.id)\n }\n : {})\n });\n };\n}\n\n/**\n * Extract parse options and context from the overloaded loader context parse signature.\n * @param loaders\n * @param options\n * @param context\n */\nfunction getMainThreadParseArguments(\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): {options?: LoaderOptions; context?: Record<string, any>} {\n if (options) {\n return {options, context: getSerializableLoaderContext(context)};\n }\n if (Array.isArray(loaders) || (loaders && isLoaderObject(loaders))) {\n return {options: undefined, context: getSerializableLoaderContext(context)};\n }\n if (loaders && !Array.isArray(loaders)) {\n return {options: loaders};\n }\n return {options: undefined, context: getSerializableLoaderContext(context)};\n}\n\n/**\n * Checks whether a value is a loader object.\n * @param value\n */\nfunction isLoaderObject(value: Loader | LoaderOptions): value is Loader {\n return 'id' in value && 'extensions' in value;\n}\n\n/**\n * Create a serializable loader context for a main-thread parse request.\n * @param context\n */\nfunction getSerializableLoaderContext(context?: LoaderContext) {\n if (!context) {\n return undefined;\n }\n const {\n fetch,\n loaders,\n coreApi,\n signal,\n reportProgress,\n _parse,\n _parseSync,\n _parseInBatches,\n ...serializableContext\n } = context;\n return JSON.parse(JSON.stringify(serializableContext));\n}\n\n// TODO - Support byteOffset and byteLength (enabling parsing of embedded binaries without copies)\n// TODO - Why not support async loader.parse* funcs here?\n// TODO - Why not reuse a common function instead of reimplementing loader.parse* selection logic? Keeping loader small?\n// TODO - Lack of appropriate parser functions can be detected when we create worker, no need to wait until parse\nasync function parseData({\n loader,\n arrayBuffer,\n options,\n context\n}: {\n loader: LoaderWithParser;\n arrayBuffer: ArrayBuffer;\n options: LoaderOptions;\n context: LoaderContext;\n}) {\n let data;\n let parser;\n if (loader.parse || loader.parseSync) {\n data = arrayBuffer;\n parser = loader.parse || loader.parseSync;\n } else if (loader.parseTextSync) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(arrayBuffer);\n parser = loader.parseTextSync;\n } else {\n throw new Error(`Could not load data with ${loader.name} loader`);\n }\n\n // Preserve worker-supplied module overrides (for example a caller-provided\n // Draco URL) while still applying the loader's defaults. Functions cannot be\n // structured-cloned, but URL strings and other serializable options can.\n options = getWorkerLoaderOptions(loader, options);\n\n return await parser(data, {...options}, context, loader);\n}\n\n/** Applies loader module defaults and prevents recursive worker dispatch inside a worker parser. */\nfunction getWorkerLoaderOptions(\n loader: LoaderWithParser,\n options: LoaderOptions\n): StrictLoaderOptions {\n return {\n ...options,\n modules: {...loader.options?.modules, ...options.modules},\n core: {...options.core, worker: false}\n } as StrictLoaderOptions;\n}\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n// SPDX-FileComment: Original compatibility helpers for Cesium-derived tests.\n\n// NOTE: Added to make Cesium-derived test cases work\n// TODO: Determine if/how to keep\nexport const EPSILON1 = 1e-1;\nexport const EPSILON2 = 1e-2;\nexport const EPSILON3 = 1e-3;\nexport const EPSILON4 = 1e-4;\nexport const EPSILON5 = 1e-5;\nexport const EPSILON6 = 1e-6;\nexport const EPSILON7 = 1e-7;\nexport const EPSILON8 = 1e-8;\nexport const EPSILON9 = 1e-9;\nexport const EPSILON10 = 1e-10;\nexport const EPSILON11 = 1e-11;\nexport const EPSILON12 = 1e-12;\nexport const EPSILON13 = 1e-13;\nexport const EPSILON14 = 1e-14;\nexport const EPSILON15 = 1e-15;\nexport const EPSILON16 = 1e-16;\nexport const EPSILON17 = 1e-17;\nexport const EPSILON18 = 1e-18;\nexport const EPSILON19 = 1e-19;\nexport const EPSILON20 = 1e-20;\n\nexport const PI_OVER_TWO = Math.PI / 2;\nexport const PI_OVER_FOUR = Math.PI / 4;\nexport const PI_OVER_SIX = Math.PI / 6;\n\nexport const PI = Math.PI;\nexport const TWO_PI = Math.PI * 2;\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n// SPDX-FileCopyrightText: Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. (gl-matrix)\n// SPDX-FileComment: Adapted from gl-matrix. See the repository LICENSE for upstream attribution and terms.\n// @eslint-disable\n// @ts-nocheck\n\nimport type {NumericArray} from '../types';\nimport * as glMatrix from './common.js';\n\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns a new 2D vector\n */\nexport function create(): NumericArray {\n const out = new glMatrix.ARRAY_TYPE(2);\n if (glMatrix.ARRAY_TYPE !== Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n return out;\n}\n\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param a vector to clone\n * @returns a new 2D vector\n */\nexport function clone(a: Readonly<NumericArray>): NumericArray {\n const out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param x X component\n * @param y Y component\n * @returns a new 2D vector\n */\nexport function fromValues(x: number, y: number): NumericArray {\n const out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n\n/**\n * Copy the values from one vec2 to another\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the source vector\n * @returns {NumericArray} out\n */\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {NumericArray} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {NumericArray} out\n */\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n\n/**\n * Adds two vec2's\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @returns {NumericArray} out\n */\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n\n/**\n * Subtracts vector b from vector a\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @returns {NumericArray} out\n */\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n\n/**\n * Multiplies two vec2's\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @returns {NumericArray} out\n */\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n\n/**\n * Divides two vec2's\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @returns {NumericArray} out\n */\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n\n/**\n * Math.ceil the components of a vec2\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a vector to ceil\n * @returns {NumericArray} out\n */\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n\n/**\n * Math.floor the components of a vec2\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a vector to floor\n * @returns {NumericArray} out\n */\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n\n/**\n * Returns the minimum of two vec2's\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @returns {NumericArray} out\n */\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n\n/**\n * Returns the maximum of two vec2's\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @returns {NumericArray} out\n */\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n\n/**\n * symmetric round the components of a vec2\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a vector to round\n * @returns {NumericArray} out\n */\nexport function round(out, a) {\n out[0] = glMatrix.round(a[0]);\n out[1] = glMatrix.round(a[1]);\n return out;\n}\n\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {NumericArray} out\n */\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {NumericArray} out\n */\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @returns {Number} distance between a and b\n */\nexport function distance(a, b) {\n const x = b[0] - a[0];\n const y = b[1] - a[1];\n return Math.sqrt(x * x + y * y);\n}\n\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @returns {Number} squared distance between a and b\n */\nexport function squaredDistance(a, b) {\n const x = b[0] - a[0];\n const y = b[1] - a[1];\n return x * x + y * y;\n}\n\n/**\n * Calculates the length of a vec2\n *\n * @param {Readonly<NumericArray>} a vector to calculate length of\n * @returns {Number} length of a\n */\nexport function length(a) {\n const x = a[0];\n const y = a[1];\n return Math.sqrt(x * x + y * y);\n}\n\n/**\n * Calculates the squared length of a vec2\n *\n * @param {Readonly<NumericArray>} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nexport function squaredLength(a) {\n const x = a[0];\n const y = a[1];\n return x * x + y * y;\n}\n\n/**\n * Negates the components of a vec2\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a vector to negate\n * @returns {NumericArray} out\n */\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a vector to invert\n * @returns {NumericArray} out\n */\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n\n/**\n * Normalize a vec2\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a vector to normalize\n * @returns {NumericArray} out\n */\nexport function normalize(out, a) {\n const x = a[0];\n const y = a[1];\n let len = x * x + y * y;\n if (len > 0) {\n // TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @returns {Number} dot product of a and b\n */\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @returns {vec3} out\n */\nexport function cross(out, a, b) {\n const z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the first operand\n * @param {Readonly<NumericArray>} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {NumericArray} out\n */\nexport function lerp(out, a, b, t) {\n const ax = a[0];\n const ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n\n/**\n * Generates a random vector with the given scale\n *\n * @param {NumericArray} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If omitted, a unit vector will be returned\n * @returns {NumericArray} out\n */\nexport function random(out, scale) {\n scale = scale === undefined ? 1.0 : scale;\n const r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {NumericArray} out\n */\nexport function transformMat2(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {NumericArray} out\n */\nexport function transformMat2d(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {NumericArray} out\n */\nexport function transformMat3(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {NumericArray} out the receiving vector\n * @param {Readonly<NumericArray>} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {NumericArray} out\n */\nexport function transformMat4(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n\n/**\n * Rotate a 2D vector\n * @param {NumericArray} out The receiving vec2\n * @param {Readonly<NumericArray>} a The vec2 point to rotate\n * @param {Readonly<NumericArray>} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {NumericArray} out\n */\nexport function rotate(out, a, b, rad) {\n // Translate point to the origin\n const p0 = a[0] - b[0];\n const p1 = a[1] - b[1];\n const sinC = Math.sin(rad);\n const cosC = Math.cos(rad);\n\n // perform rotation and translate to correct position\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n\n return out;\n}\n\n/**\n * Get the angle between two 2D vectors\n * @param {Readonly<NumericArray>} a The first operand\n * @param {Readonly<NumericArray>} b The second operand\n * @returns {Number} The angle in radians\n */\nexport function angle(a, b) {\n const x1 = a[0];\n const y1 = a[1];\n const x2 = b[0];\n const y2 = b[1];\n // mag is the product of the magnitudes of a and b\n const mag = Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2));\n // mag &&.. short circuits if mag == 0\n const cosine = mag && (x1 * x2 + y1 * y2) / mag;\n // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n\n/**\n * Set the components of a vec2 to zero\n *\n * @param {NumericArray} out the receiving vector\n * @returns {NumericArray} out\n */\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n\n/**\n * Returns a string representation of a vector\n *\n * @param {Readonly<NumericArray>} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\nexport function str(a) {\n return `vec2(${a[0]}, ${a[1]})`;\n}\n\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {Readonly<NumericArray>} a The first vector.\n * @param {Readonly<NumericArray>} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {Readonly<NumericArray>} a The first vector.\n * @param {Readonly<NumericArray>} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nexport function equals(a, b) {\n const a0 = a[0];\n const a1 = a[1];\n const b0 = b[0];\n const b1 = b[1];\n return (\n Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1))\n );\n}\n\n/**\n * Alias for {@link vec2.length}\n * @function\n */\nexport const len = length;\n\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\nexport const sub = subtract;\n\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\nexport const mul = multiply;\n\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\nexport const div = divide;\n\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\nexport const dist = distance;\n\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\nexport const sqrDist = squaredDistance;\n\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\nexport const sqrLen = squaredLength;\n\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nexport const forEach = /* @__PURE__ */ (function () {\n const vec = create();\n\n return function (a, stride, offset, count, fn, arg) {\n let i;\n let l;\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n})();\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n// SPDX-FileCopyrightText: Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. (gl-matrix)\n// SPDX-FileComment: Adapted from gl-matrix. See the repository LICENSE for upstream attribution and terms.\n// @eslint-disable\n// @ts-nocheck\n\nimport * as glMatrix from './common.js';\n\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\nexport function create() {\n const out = new glMatrix.ARRAY_TYPE(3);\n if (glMatrix.ARRAY_TYPE !== Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n return out;\n}\n\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\nexport function clone(a) {\n const out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\nexport function length(a) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n return Math.sqrt(x * x + y * y + z * z);\n}\n\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\nexport function fromValues(x, y, z) {\n const out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n\n/**\n * symmetric round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\nexport function round(out, a) {\n out[0] = glMatrix.round(a[0]);\n out[1] = glMatrix.round(a[1]);\n out[2] = glMatrix.round(a[2]);\n return out;\n}\n\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\nexport function distance(a, b) {\n const x = b[0] - a[0];\n const y = b[1] - a[1];\n const z = b[2] - a[2];\n return Math.sqrt(x * x + y * y + z * z);\n}\n\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\nexport function squaredDistance(a, b) {\n const x = b[0] - a[0];\n const y = b[1] - a[1];\n const z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nexport function squaredLength(a) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n return x * x + y * y + z * z;\n}\n\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\nexport function normalize(out, a) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n let len = x * x + y * y + z * z;\n if (len > 0) {\n // TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\nexport function cross(out, a, b) {\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const bx = b[0];\n const by = b[1];\n const bz = b[2];\n\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\nexport function lerp(out, a, b, t) {\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n\n/**\n * Performs a spherical linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\nexport function slerp(out, a, b, t) {\n const angle = Math.acos(Math.min(Math.max(dot(a, b), -1), 1));\n const sinTotal = Math.sin(angle);\n\n const ratioA = Math.sin((1 - t) * angle) / sinTotal;\n const ratioB = Math.sin(t * angle) / sinTotal;\n out[0] = ratioA * a[0] + ratioB * b[0];\n out[1] = ratioA * a[1] + ratioB * b[1];\n out[2] = ratioA * a[2] + ratioB * b[2];\n\n return out;\n}\n\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\nexport function hermite(out, a, b, c, d, t) {\n const factorTimes2 = t * t;\n const factor1 = factorTimes2 * (2 * t - 3) + 1;\n const factor2 = factorTimes2 * (t - 2) + t;\n const factor3 = factorTimes2 * (t - 1);\n const factor4 = factorTimes2 * (3 - 2 * t);\n\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n\n return out;\n}\n\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\nexport function bezier(out, a, b, c, d, t) {\n const inverseFactor = 1 - t;\n const inverseFactorTimesTwo = inverseFactor * inverseFactor;\n const factorTimes2 = t * t;\n const factor1 = inverseFactorTimesTwo * inverseFactor;\n const factor2 = 3 * t * inverseFactorTimesTwo;\n const factor3 = 3 * factorTimes2 * inverseFactor;\n const factor4 = factorTimes2 * t;\n\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n\n return out;\n}\n\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If omitted, a unit vector will be returned\n * @returns {vec3} out\n */\nexport function random(out, scale) {\n scale = scale === undefined ? 1.0 : scale;\n\n const r = glMatrix.RANDOM() * 2.0 * Math.PI;\n const z = glMatrix.RANDOM() * 2.0 - 1.0;\n const zScale = Math.sqrt(1.0 - z * z) * scale;\n\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\nexport function transformMat4(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n let w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\nexport function transformMat3(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n const qx = q[0];\n const qy = q[1];\n const qz = q[2];\n const qw = q[3];\n const x = a[0];\n const y = a[1];\n const z = a[2];\n // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n let uvx = qy * z - qz * y;\n let uvy = qz * x - qx * z;\n let uvz = qx * y - qy * x;\n // var uuv = vec3.cross([], qvec, uv);\n let uuvx = qy * uvz - qz * uvy;\n let uuvy = qz * uvx - qx * uvz;\n let uuvz = qx * uvy - qy * uvx;\n // vec3.scale(uv, uv, 2 * w);\n const w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2;\n // vec3.scale(uuv, uuv, 2);\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2;\n // return vec3.add(out, a, vec3.add(out, uv, uuv));\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\nexport function rotateX(out, a, b, rad) {\n const p = [];\n const r = [];\n // Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n // perform rotation\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad);\n\n // translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n\n return out;\n}\n\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\nexport function rotateY(out, a, b, rad) {\n const p = [];\n const r = [];\n // Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n // perform rotation\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad);\n\n // translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n\n return out;\n}\n\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\nexport function rotateZ(out, a, b, rad) {\n const p = [];\n const r = [];\n // Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n // perform rotation\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2];\n\n // translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n\n return out;\n}\n\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\nexport function angle(a, b) {\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const bx = b[0];\n const by = b[1];\n const bz = b[2];\n const mag = Math.sqrt((ax * ax + ay * ay + az * az) * (bx * bx + by * by + bz * bz));\n const cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\nexport function str(a) {\n return `vec3(${a[0]}, ${a[1]}, ${a[2]})`;\n}\n\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nexport function equals(a, b) {\n const a0 = a[0];\n const a1 = a[1];\n const a2 = a[2];\n const b0 = b[0];\n const b1 = b[1];\n const b2 = b[2];\n return (\n Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2))\n );\n}\n\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\nexport const sub = subtract;\n\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\nexport const mul = multiply;\n\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\nexport const div = divide;\n\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\nexport const dist = distance;\n\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\nexport const sqrDist = squaredDistance;\n\n/**\n * Alias for {@link vec3.length}\n * @function\n */\nexport const len = length;\n\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\nexport const sqrLen = squaredLength;\n\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nexport const forEach = /* @__PURE__ */ (function () {\n const vec = create();\n\n return function (a, stride, offset, count, fn, arg) {\n let i;\n let l;\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n})();\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n// SPDX-FileCopyrightText: Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. (gl-matrix)\n// SPDX-FileComment: Adapted from gl-matrix. See the repository LICENSE for upstream attribution and terms.\nimport * as glMatrix from './common.js';\n\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\nexport function create() {\n const out = new glMatrix.ARRAY_TYPE(9);\n if (glMatrix.ARRAY_TYPE !== Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\nexport function clone(a) {\n const out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n const out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n const a01 = a[1];\n const a02 = a[2];\n const a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\nexport function invert(out, a) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n\n const b01 = a22 * a11 - a12 * a21;\n const b11 = -a22 * a10 + a12 * a20;\n const b21 = a21 * a10 - a11 * a20;\n\n // Calculate the determinant\n let det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\nexport function adjoint(out, a) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\nexport function determinant(a) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n\n return (\n a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20)\n );\n}\n\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\nexport function multiply(out, a, b) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n\n const b00 = b[0];\n const b01 = b[1];\n const b02 = b[2];\n const b10 = b[3];\n const b11 = b[4];\n const b12 = b[5];\n const b20 = b[6];\n const b21 = b[7];\n const b22 = b[8];\n\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\nexport function translate(out, a, v) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n const x = v[0];\n const y = v[1];\n\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\nexport function rotate(out, a, rad) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\nexport function scale(out, a, v) {\n const x = v[0];\n const y = v[1];\n\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\nexport function fromRotation(out, rad) {\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\nexport function fromQuat(out, q) {\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n\n const xx = x * x2;\n const yx = y * x2;\n const yy = y * y2;\n const zx = z * x2;\n const zy = z * y2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n\n return out;\n}\n\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\nexport function normalFromMat4(out, a) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n // Calculate the determinant\n let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n\n return out;\n}\n\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nexport function str(a) {\n return `mat3(${a[0]}, ${a[1]}, ${a[2]}, ${a[3]}, ${a[4]}, ${a[5]}, ${a[6]}, ${a[7]}, ${a[8]})`;\n}\n\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nexport function frob(a) {\n return Math.sqrt(\n a[0] * a[0] +\n a[1] * a[1] +\n a[2] * a[2] +\n a[3] * a[3] +\n a[4] * a[4] +\n a[5] * a[5] +\n a[6] * a[6] +\n a[7] * a[7] +\n a[8] * a[8]\n );\n}\n\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nexport function exactEquals(a, b) {\n return (\n a[0] === b[0] &&\n a[1] === b[1] &&\n a[2] === b[2] &&\n a[3] === b[3] &&\n a[4] === b[4] &&\n a[5] === b[5] &&\n a[6] === b[6] &&\n a[7] === b[7] &&\n a[8] === b[8]\n );\n}\n\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nexport function equals(a, b) {\n const a0 = a[0];\n const a1 = a[1];\n const a2 = a[2];\n const a3 = a[3];\n const a4 = a[4];\n const a5 = a[5];\n const a6 = a[6];\n const a7 = a[7];\n const a8 = a[8];\n const b0 = b[0];\n const b1 = b[1];\n const b2 = b[2];\n const b3 = b[3];\n const b4 = b[4];\n const b5 = b[5];\n const b6 = b[6];\n const b7 = b[7];\n const b8 = b[8];\n return (\n Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\n Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&\n Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&\n Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) &&\n Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) &&\n Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) &&\n Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8))\n );\n}\n\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\nexport const mul = multiply;\n\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\nexport const sub = subtract;\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n// SPDX-FileCopyrightText: Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. (gl-matrix)\n// SPDX-FileComment: Adapted from gl-matrix. See the repository LICENSE for upstream attribution and terms.\n// @eslint-disable\n// @ts-nocheck\n\nimport * as glMatrix from './common.js';\n\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns a new 4x4 matrix\n */\nexport function create() {\n const out = new glMatrix.ARRAY_TYPE(16);\n if (glMatrix.ARRAY_TYPE !== Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\nexport function clone(a) {\n const out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\nexport function fromValues(\n m00,\n m01,\n m02,\n m03,\n m10,\n m11,\n m12,\n m13,\n m20,\n m21,\n m22,\n m23,\n m30,\n m31,\n m32,\n m33\n) {\n const out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\nexport function set(\n out,\n m00,\n m01,\n m02,\n m03,\n m10,\n m11,\n m12,\n m13,\n m20,\n m21,\n m22,\n m23,\n m30,\n m31,\n m32,\n m33\n) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a12 = a[6];\n const a13 = a[7];\n const a23 = a[11];\n\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\nexport function invert(out, a) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n // Calculate the determinant\n let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n\n return out;\n}\n\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\nexport function adjoint(out, a) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n out[0] = a11 * b11 - a12 * b10 + a13 * b09;\n out[1] = a02 * b10 - a01 * b11 - a03 * b09;\n out[2] = a31 * b05 - a32 * b04 + a33 * b03;\n out[3] = a22 * b04 - a21 * b05 - a23 * b03;\n out[4] = a12 * b08 - a10 * b11 - a13 * b07;\n out[5] = a00 * b11 - a02 * b08 + a03 * b07;\n out[6] = a32 * b02 - a30 * b05 - a33 * b01;\n out[7] = a20 * b05 - a22 * b02 + a23 * b01;\n out[8] = a10 * b10 - a11 * b08 + a13 * b06;\n out[9] = a01 * b08 - a00 * b10 - a03 * b06;\n out[10] = a30 * b04 - a31 * b02 + a33 * b00;\n out[11] = a21 * b02 - a20 * b04 - a23 * b00;\n out[12] = a11 * b07 - a10 * b09 - a12 * b06;\n out[13] = a00 * b09 - a01 * b07 + a02 * b06;\n out[14] = a31 * b01 - a30 * b03 - a32 * b00;\n out[15] = a20 * b03 - a21 * b01 + a22 * b00;\n return out;\n}\n\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\nexport function determinant(a) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n\n const b0 = a00 * a11 - a01 * a10;\n const b1 = a00 * a12 - a02 * a10;\n const b2 = a01 * a12 - a02 * a11;\n const b3 = a20 * a31 - a21 * a30;\n const b4 = a20 * a32 - a22 * a30;\n const b5 = a21 * a32 - a22 * a31;\n const b6 = a00 * b5 - a01 * b4 + a02 * b3;\n const b7 = a10 * b5 - a11 * b4 + a12 * b3;\n const b8 = a20 * b2 - a21 * b1 + a22 * b0;\n const b9 = a30 * b2 - a31 * b1 + a32 * b0;\n\n // Calculate the determinant\n return a13 * b6 - a03 * b7 + a33 * b8 - a23 * b9;\n}\n\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\nexport function multiply(out, a, b) {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n\n // Cache only the current line of the second matrix\n let b0 = b[0];\n let b1 = b[1];\n let b2 = b[2];\n let b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\nexport function translate(out, a, v) {\n const x = v[0];\n const y = v[1];\n const z = v[2];\n let a00;\n let a01;\n let a02;\n let a03;\n let a10;\n let a11;\n let a12;\n let a13;\n let a20;\n let a21;\n let a22;\n let a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\nexport function scale(out, a, v) {\n const x = v[0];\n const y = v[1];\n const z = v[2];\n\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nexport function rotate(out, a, rad, axis) {\n let x = axis[0];\n let y = axis[1];\n let z = axis[2];\n let len = Math.sqrt(x * x + y * y + z * z);\n let c;\n let s;\n let t;\n let a00;\n let a01;\n let a02;\n let a03;\n let a10;\n let a11;\n let a12;\n let a13;\n let a20;\n let a21;\n let a22;\n let a23;\n let b00;\n let b01;\n let b02;\n let b10;\n let b11;\n let b12;\n let b20;\n let b21;\n let b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n\n // Construct the elements of the rotation matrix\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c;\n\n // Perform rotation-specific matrix multiplication\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n return out;\n}\n\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function rotateX(out, a, rad) {\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function rotateY(out, a, rad) {\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function rotateZ(out, a, rad) {\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nexport function fromRotation(out, rad, axis) {\n let x = axis[0];\n let y = axis[1];\n let z = axis[2];\n let len = Math.sqrt(x * x + y * y + z * z);\n let c;\n let s;\n let t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n\n // Perform rotation-specific matrix multiplication\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function fromXRotation(out, rad) {\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n\n // Perform axis-specific matrix multiplication\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function fromYRotation(out, rad) {\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n\n // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nexport function fromZRotation(out, rad) {\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n\n // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n\n return out;\n}\n\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\nexport function fromQuat2(out, a) {\n const translation = new glMatrix.ARRAY_TYPE(3);\n const bx = -a[0];\n const by = -a[1];\n const bz = -a[2];\n const bw = a[3];\n const ax = a[4];\n const ay = a[5];\n const az = a[6];\n const aw = a[7];\n\n const magnitude = bx * bx + by * by + bz * bz + bw * bw;\n // Only scale if it makes sense\n if (magnitude > 0) {\n translation[0] = ((ax * bw + aw * bx + ay * bz - az * by) * 2) / magnitude;\n translation[1] = ((ay * bw + aw * by + az * bx - ax * bz) * 2) / magnitude;\n translation[2] = ((az * bw + aw * bz + ax * by - ay * bx) * 2) / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n fromRotationTranslation(out, a, translation);\n return out;\n}\n\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n\n return out;\n}\n\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\nexport function getScaling(out, mat) {\n const m11 = mat[0];\n const m12 = mat[1];\n const m13 = mat[2];\n const m21 = mat[4];\n const m22 = mat[5];\n const m23 = mat[6];\n const m31 = mat[8];\n const m32 = mat[9];\n const m33 = mat[10];\n\n out[0] = Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13);\n out[1] = Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23);\n out[2] = Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33);\n\n return out;\n}\n\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\nexport function getRotation(out, mat) {\n const scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n\n const is1 = 1 / scaling[0];\n const is2 = 1 / scaling[1];\n const is3 = 1 / scaling[2];\n\n const sm11 = mat[0] * is1;\n const sm12 = mat[1] * is2;\n const sm13 = mat[2] * is3;\n const sm21 = mat[4] * is1;\n const sm22 = mat[5] * is2;\n const sm23 = mat[6] * is3;\n const sm31 = mat[8] * is1;\n const sm32 = mat[9] * is2;\n const sm33 = mat[10] * is3;\n\n const trace = sm11 + sm22 + sm33;\n let S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n\n/**\n * Decomposes a transformation matrix into its rotation, translation\n * and scale components. Returns only the rotation component\n * @param {quat} out_r Quaternion to receive the rotation component\n * @param {vec3} out_t Vector to receive the translation vector\n * @param {vec3} out_s Vector to receive the scaling factor\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @returns {quat} out_r\n */\nexport function decompose(out_r, out_t, out_s, mat) {\n out_t[0] = mat[12];\n out_t[1] = mat[13];\n out_t[2] = mat[14];\n\n const m11 = mat[0];\n const m12 = mat[1];\n const m13 = mat[2];\n const m21 = mat[4];\n const m22 = mat[5];\n const m23 = mat[6];\n const m31 = mat[8];\n const m32 = mat[9];\n const m33 = mat[10];\n\n out_s[0] = Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13);\n out_s[1] = Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23);\n out_s[2] = Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33);\n\n const is1 = 1 / out_s[0];\n const is2 = 1 / out_s[1];\n const is3 = 1 / out_s[2];\n\n const sm11 = m11 * is1;\n const sm12 = m12 * is2;\n const sm13 = m13 * is3;\n const sm21 = m21 * is1;\n const sm22 = m22 * is2;\n const sm23 = m23 * is3;\n const sm31 = m31 * is1;\n const sm32 = m32 * is2;\n const sm33 = m33 * is3;\n\n const trace = sm11 + sm22 + sm33;\n let S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out_r[3] = 0.25 * S;\n out_r[0] = (sm23 - sm32) / S;\n out_r[1] = (sm31 - sm13) / S;\n out_r[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out_r[3] = (sm23 - sm32) / S;\n out_r[0] = 0.25 * S;\n out_r[1] = (sm12 + sm21) / S;\n out_r[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out_r[3] = (sm31 - sm13) / S;\n out_r[0] = (sm12 + sm21) / S;\n out_r[1] = 0.25 * S;\n out_r[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out_r[3] = (sm12 - sm21) / S;\n out_r[0] = (sm31 + sm13) / S;\n out_r[1] = (sm23 + sm32) / S;\n out_r[2] = 0.25 * S;\n }\n\n return out_r;\n}\n\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n const sx = s[0];\n const sy = s[1];\n const sz = s[2];\n\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n\n return out;\n}\n\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n const sx = s[0];\n const sy = s[1];\n const sz = s[2];\n\n const ox = o[0];\n const oy = o[1];\n const oz = o[2];\n\n const out0 = (1 - (yy + zz)) * sx;\n const out1 = (xy + wz) * sx;\n const out2 = (xz - wy) * sx;\n const out4 = (xy - wz) * sy;\n const out5 = (1 - (xx + zz)) * sy;\n const out6 = (yz + wx) * sy;\n const out8 = (xz + wy) * sz;\n const out9 = (yz - wx) * sz;\n const out10 = (1 - (xx + yy)) * sz;\n\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n\n return out;\n}\n\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\nexport function fromQuat(out, q) {\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n\n const xx = x * x2;\n const yx = y * x2;\n const yy = y * y2;\n const zx = z * x2;\n const zy = z * y2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n\n return out;\n}\n\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\nexport function frustum(out, left, right, bottom, top, near, far) {\n const rl = 1 / (right - left);\n const tb = 1 / (top - bottom);\n const nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n const f = 1.0 / Math.tan(fovy / 2);\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n if (far != null && far !== Infinity) {\n const nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n return out;\n}\n\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\nexport const perspective = perspectiveNO;\n\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n const f = 1.0 / Math.tan(fovy / 2);\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n if (far != null && far !== Infinity) {\n const nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n return out;\n}\n\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n const upTan = Math.tan((fov.upDegrees * Math.PI) / 180.0);\n const downTan = Math.tan((fov.downDegrees * Math.PI) / 180.0);\n const leftTan = Math.tan((fov.leftDegrees * Math.PI) / 180.0);\n const rightTan = Math.tan((fov.rightDegrees * Math.PI) / 180.0);\n const xScale = 2.0 / (leftTan + rightTan);\n const yScale = 2.0 / (upTan + downTan);\n\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = (far * near) / (near - far);\n out[15] = 0.0;\n return out;\n}\n\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n const lr = 1 / (left - right);\n const bt = 1 / (bottom - top);\n const nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\nexport const ortho = orthoNO;\n\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n const lr = 1 / (left - right);\n const bt = 1 / (bottom - top);\n const nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\nexport function lookAt(out, eye, center, up) {\n let len;\n let x0;\n let x1;\n let x2;\n let y0;\n let y1;\n let y2;\n let z0;\n let z1;\n let z2;\n const eyex = eye[0];\n const eyey = eye[1];\n const eyez = eye[2];\n const upx = up[0];\n const upy = up[1];\n const upz = up[2];\n const centerx = center[0];\n const centery = center[1];\n const centerz = center[2];\n\n if (\n Math.abs(eyex - centerx) < glMatrix.EPSILON &&\n Math.abs(eyey - centery) < glMatrix.EPSILON &&\n Math.abs(eyez - centerz) < glMatrix.EPSILON\n ) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n\n return out;\n}\n\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\nexport function targetTo(out, eye, target, up) {\n const eyex = eye[0];\n const eyey = eye[1];\n const eyez = eye[2];\n const upx = up[0];\n const upy = up[1];\n const upz = up[2];\n\n let z0 = eyex - target[0];\n let z1 = eyey - target[1];\n let z2 = eyez - target[2];\n\n let len = z0 * z0 + z1 * z1 + z2 * z2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n let x0 = upy * z2 - upz * z1;\n let x1 = upz * z0 - upx * z2;\n let x2 = upx * z1 - upy * z0;\n\n len = x0 * x0 + x1 * x1 + x2 * x2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nexport function str(a) {\n return `mat4(${a[0]}, ${a[1]}, ${a[2]}, ${a[3]}, ${a[4]}, ${a[5]}, ${a[6]}, ${a[7]}, ${a[8]}, ${a[9]}, ${a[10]}, ${a[11]}, ${a[12]}, ${a[13]}, ${a[14]}, ${a[15]})`;\n}\n\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nexport function frob(a) {\n return Math.sqrt(\n a[0] * a[0] +\n a[1] * a[1] +\n a[2] * a[2] +\n a[3] * a[3] +\n a[4] * a[4] +\n a[5] * a[5] +\n a[6] * a[6] +\n a[7] * a[7] +\n a[8] * a[8] +\n a[9] * a[9] +\n a[10] * a[10] +\n a[11] * a[11] +\n a[12] * a[12] +\n a[13] * a[13] +\n a[14] * a[14] +\n a[15] * a[15]\n );\n}\n\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nexport function exactEquals(a, b) {\n return (\n a[0] === b[0] &&\n a[1] === b[1] &&\n a[2] === b[2] &&\n a[3] === b[3] &&\n a[4] === b[4] &&\n a[5] === b[5] &&\n a[6] === b[6] &&\n a[7] === b[7] &&\n a[8] === b[8] &&\n a[9] === b[9] &&\n a[10] === b[10] &&\n a[11] === b[11] &&\n a[12] === b[12] &&\n a[13] === b[13] &&\n a[14] === b[14] &&\n a[15] === b[15]\n );\n}\n\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nexport function equals(a, b) {\n const a0 = a[0];\n const a1 = a[1];\n const a2 = a[2];\n const a3 = a[3];\n const a4 = a[4];\n const a5 = a[5];\n const a6 = a[6];\n const a7 = a[7];\n const a8 = a[8];\n const a9 = a[9];\n const a10 = a[10];\n const a11 = a[11];\n const a12 = a[12];\n const a13 = a[13];\n const a14 = a[14];\n const a15 = a[15];\n\n const b0 = b[0];\n const b1 = b[1];\n const b2 = b[2];\n const b3 = b[3];\n const b4 = b[4];\n const b5 = b[5];\n const b6 = b[6];\n const b7 = b[7];\n const b8 = b[8];\n const b9 = b[9];\n const b10 = b[10];\n const b11 = b[11];\n const b12 = b[12];\n const b13 = b[13];\n const b14 = b[14];\n const b15 = b[15];\n\n return (\n Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\n Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&\n Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&\n Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) &&\n Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) &&\n Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) &&\n Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) &&\n Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) &&\n Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) &&\n Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) &&\n Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) &&\n Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) &&\n Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) &&\n Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15))\n );\n}\n\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\nexport const mul = multiply;\n\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\nexport const sub = subtract;\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n// SPDX-FileCopyrightText: Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. (gl-matrix)\n// SPDX-FileComment: Adapted from gl-matrix. See the repository LICENSE for upstream attribution and terms.\n// @eslint-disable\n// @ts-nocheck\n\nimport * as glMatrix from './common.js';\n\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\nexport function create() {\n const out = new glMatrix.ARRAY_TYPE(4);\n if (glMatrix.ARRAY_TYPE !== Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n return out;\n}\n\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\nexport function clone(a) {\n const out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\nexport function fromValues(x, y, z, w) {\n const out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n\n/**\n * symmetric round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\nexport function round(out, a) {\n out[0] = glMatrix.round(a[0]);\n out[1] = glMatrix.round(a[1]);\n out[2] = glMatrix.round(a[2]);\n out[3] = glMatrix.round(a[3]);\n return out;\n}\n\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\nexport function distance(a, b) {\n const x = b[0] - a[0];\n const y = b[1] - a[1];\n const z = b[2] - a[2];\n const w = b[3] - a[3];\n return Math.sqrt(x * x + y * y + z * z + w * w);\n}\n\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\nexport function squaredDistance(a, b) {\n const x = b[0] - a[0];\n const y = b[1] - a[1];\n const z = b[2] - a[2];\n const w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\nexport function length(a) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = a[3];\n return Math.sqrt(x * x + y * y + z * z + w * w);\n}\n\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nexport function squaredLength(a) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\nexport function normalize(out, a) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = a[3];\n let len = x * x + y * y + z * z + w * w;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\nexport function cross(out, u, v, w) {\n const A = v[0] * w[1] - v[1] * w[0];\n const B = v[0] * w[2] - v[2] * w[0];\n const C = v[0] * w[3] - v[3] * w[0];\n const D = v[1] * w[2] - v[2] * w[1];\n const E = v[1] * w[3] - v[3] * w[1];\n const F = v[2] * w[3] - v[3] * w[2];\n const G = u[0];\n const H = u[1];\n const I = u[2];\n const J = u[3];\n\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n\n return out;\n}\n\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\nexport function lerp(out, a, b, t) {\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If omitted, a unit vector will be returned\n * @returns {vec4} out\n */\nexport function random(out, scale) {\n scale = scale === undefined ? 1.0 : scale;\n\n // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n let v1;\n let v2;\n let v3;\n let v4;\n let s1;\n let s2;\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n const d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\nexport function transformMat4(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\nexport function transformQuat(out, a, q) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const qx = q[0];\n const qy = q[1];\n const qz = q[2];\n const qw = q[3];\n\n // calculate quat * vec\n const ix = qw * x + qy * z - qz * y;\n const iy = qw * y + qz * x - qx * z;\n const iz = qw * z + qx * y - qy * x;\n const iw = -qx * x - qy * y - qz * z;\n\n // calculate result * inverse quat\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\nexport function str(a) {\n return `vec4(${a[0]}, ${a[1]}, ${a[2]}, ${a[3]})`;\n}\n\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nexport function equals(a, b) {\n const a0 = a[0];\n const a1 = a[1];\n const a2 = a[2];\n const a3 = a[3];\n const b0 = b[0];\n const b1 = b[1];\n const b2 = b[2];\n const b3 = b[3];\n return (\n Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&\n Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&\n Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3))\n );\n}\n\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\nexport const sub = subtract;\n\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\nexport const mul = multiply;\n\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\nexport const div = divide;\n\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\nexport const dist = distance;\n\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\nexport const sqrDist = squaredDistance;\n\n/**\n * Alias for {@link vec4.length}\n * @function\n */\nexport const len = length;\n\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\nexport const sqrLen = squaredLength;\n\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nexport const forEach = /* @__PURE__ */ (function () {\n const vec = create();\n\n return function (a, stride, offset, count, fn, arg) {\n let i;\n let l;\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n})();\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n// SPDX-FileCopyrightText: Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. (gl-matrix)\n// SPDX-FileComment: Adapted from gl-matrix. See the repository LICENSE for upstream attribution and terms.\n// @eslint-disable\n// @ts-nocheck\n\nimport * as glMatrix from './common.js';\nimport * as mat3 from './mat3.js';\nimport * as vec3 from './vec3.js';\nimport * as vec4 from './vec4.js';\n\n// const glMatrix: {EPSILON = 0.000001};\n\n/**\n * Quaternion in the format XYZW\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\nexport function create() {\n const out = new glMatrix.ARRAY_TYPE(4);\n if (glMatrix.ARRAY_TYPE !== Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n out[3] = 1;\n return out;\n}\n\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\nexport function setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n const s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\nexport function getAxisAngle(out_axis, q) {\n const rad = Math.acos(q[3]) * 2.0;\n const s = Math.sin(rad / 2.0);\n if (s > glMatrix.EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n return rad;\n}\n\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\nexport function getAngle(a, b) {\n const dotproduct = dot(a, b);\n\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\nexport function multiply(out, a, b) {\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n const bx = b[0];\n const by = b[1];\n const bz = b[2];\n const bw = b[3];\n\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nexport function rotateX(out, a, rad) {\n rad *= 0.5;\n\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n const bx = Math.sin(rad);\n const bw = Math.cos(rad);\n\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nexport function rotateY(out, a, rad) {\n rad *= 0.5;\n\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n const by = Math.sin(rad);\n const bw = Math.cos(rad);\n\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nexport function rotateZ(out, a, rad) {\n rad *= 0.5;\n\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n const bz = Math.sin(rad);\n const bw = Math.cos(rad);\n\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\nexport function calculateW(out, a) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\nexport function exp(out, a) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = a[3];\n\n const r = Math.sqrt(x * x + y * y + z * z);\n const et = Math.exp(w);\n const s = r > 0 ? (et * Math.sin(r)) / r : 0;\n\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n\n return out;\n}\n\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\nexport function ln(out, a) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = a[3];\n\n const r = Math.sqrt(x * x + y * y + z * z);\n const t = r > 0 ? Math.atan2(r, w) / r : 0;\n\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n\n return out;\n}\n\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\nexport function pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\nexport function slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n let bx = b[0];\n let by = b[1];\n let bz = b[2];\n let bw = b[3];\n\n let cosom;\n let omega;\n let scale0;\n let scale1;\n let sinom;\n\n // calc cosine\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n // adjust signs (if necessary)\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n // calculate coefficients\n if (1.0 - cosom > glMatrix.EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n }\n // calculate final values\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n\n return out;\n}\n\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n// export function random(out) {\n// // Implementation of http://planning.cs.uiuc.edu/node198.html\n// // TODO: Calling random 3 times is probably not the fastest solution\n// let u1 = glMatrix.RANDOM();\n// let u2 = glMatrix.RANDOM();\n// let u3 = glMatrix.RANDOM();\n\n// let sqrt1MinusU1 = Math.sqrt(1 - u1);\n// let sqrtU1 = Math.sqrt(u1);\n\n// out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n// out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n// out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n// out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n// return out;\n// }\n\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\nexport function invert(out, a) {\n const a0 = a[0];\n const a1 = a[1];\n const a2 = a[2];\n const a3 = a[3];\n const dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n const invDot = dot ? 1.0 / dot : 0;\n\n // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\nexport function fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n const fTrace = m[0] + m[4] + m[8];\n let fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n let i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n const j = (i + 1) % 3;\n const k = (i + 2) % 3;\n\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n\n/**\n * Creates a quaternion from the given euler angle x, y, z using the provided intrinsic order for the conversion.\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x Angle to rotate around X axis in degrees.\n * @param {Number} y Angle to rotate around Y axis in degrees.\n * @param {Number} z Angle to rotate around Z axis in degrees.\n * @param {'zyx'|'xyz'|'yxz'|'yzx'|'zxy'|'zyx'} order Intrinsic order for conversion, default is zyx.\n * @returns {quat} out\n * @function\n */\n// export function fromEuler(out, x, y, z, order = glMatrix.ANGLE_ORDER) {\n// let halfToRad = Math.PI / 360;\n// x *= halfToRad;\n// z *= halfToRad;\n// y *= halfToRad;\n\n// let sx = Math.sin(x);\n// let cx = Math.cos(x);\n// let sy = Math.sin(y);\n// let cy = Math.cos(y);\n// let sz = Math.sin(z);\n// let cz = Math.cos(z);\n\n// switch (order) {\n// case \"xyz\":\n// out[0] = sx * cy * cz + cx * sy * sz;\n// out[1] = cx * sy * cz - sx * cy * sz;\n// out[2] = cx * cy * sz + sx * sy * cz;\n// out[3] = cx * cy * cz - sx * sy * sz;\n// break;\n\n// case \"xzy\":\n// out[0] = sx * cy * cz - cx * sy * sz;\n// out[1] = cx * sy * cz - sx * cy * sz;\n// out[2] = cx * cy * sz + sx * sy * cz;\n// out[3] = cx * cy * cz + sx * sy * sz;\n// break;\n\n// case \"yxz\":\n// out[0] = sx * cy * cz + cx * sy * sz;\n// out[1] = cx * sy * cz - sx * cy * sz;\n// out[2] = cx * cy * sz - sx * sy * cz;\n// out[3] = cx * cy * cz + sx * sy * sz;\n// break;\n\n// case \"yzx\":\n// out[0] = sx * cy * cz + cx * sy * sz;\n// out[1] = cx * sy * cz + sx * cy * sz;\n// out[2] = cx * cy * sz - sx * sy * cz;\n// out[3] = cx * cy * cz - sx * sy * sz;\n// break;\n\n// case \"zxy\":\n// out[0] = sx * cy * cz - cx * sy * sz;\n// out[1] = cx * sy * cz + sx * cy * sz;\n// out[2] = cx * cy * sz + sx * sy * cz;\n// out[3] = cx * cy * cz - sx * sy * sz;\n// break;\n\n// case \"zyx\":\n// out[0] = sx * cy * cz - cx * sy * sz;\n// out[1] = cx * sy * cz + sx * cy * sz;\n// out[2] = cx * cy * sz - sx * sy * cz;\n// out[3] = cx * cy * cz + sx * sy * sz;\n// break;\n\n// default:\n// throw new Error('Unknown angle order ' + order);\n// }\n\n// return out;\n// }\n\n/**\n * Returns a string representation of a quaternion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\nexport function str(a) {\n return `quat(${a[0]}, ${a[1]}, ${a[2]}, ${a[3]})`;\n}\n\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\nexport const clone = vec4.clone;\n\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\nexport const fromValues = vec4.fromValues;\n\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\nexport const copy = vec4.copy;\n\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\nexport const set = vec4.set;\n\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\nexport const add = vec4.add;\n\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\nexport const mul = multiply;\n\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\nexport const scale = vec4.scale;\n\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\nexport const dot = vec4.dot;\n\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\nexport const lerp = vec4.lerp;\n\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\nexport const length = vec4.length;\n\n/**\n * Alias for {@link quat.length}\n * @function\n */\nexport const len = length;\n\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\nexport const squaredLength = vec4.squaredLength;\n\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\nexport const sqrLen = squaredLength;\n\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\nexport const normalize = vec4.normalize;\n\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nexport const exactEquals = vec4.exactEquals;\n\n/**\n * Returns whether or not the quaternions point approximately to the same direction.\n *\n * Both quaternions are assumed to be unit length.\n *\n * @param {ReadonlyQuat} a The first unit quaternion.\n * @param {ReadonlyQuat} b The second unit quaternion.\n * @returns {Boolean} True if the quaternions are equal, false otherwise.\n */\nexport function equals(a, b) {\n return Math.abs(vec4.dot(a, b)) >= 1 - glMatrix.EPSILON;\n}\n\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\nexport const rotationTo = /* @__PURE__ */ (function () {\n const tmpvec3 = vec3.create();\n const xUnitVec3 = vec3.fromValues(1, 0, 0);\n const yUnitVec3 = vec3.fromValues(0, 1, 0);\n\n return function (out, a, b) {\n const dot = vec3.dot(a, b);\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n }\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n };\n})();\n\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\nexport const sqlerp = /* @__PURE__ */ (function () {\n const temp1 = create();\n const temp2 = create();\n\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n\n return out;\n };\n})();\n\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\nexport const setAxes = /* @__PURE__ */ (function () {\n const matr = mat3.create();\n\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n\n return normalize(out, fromMat3(out, matr));\n };\n})();\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nimport type {TypedArrayConstructor} from './array-types';\nimport {getTypedArrayName} from './typed-array-brand';\n\n/**\n * Checks for native Float16Array values, including arrays from other realms.\n * Does not identify Uint16Array binary16 storage as a decoded Float16Array.\n * Does not require a Float16Array constructor in the current realm.\n */\nexport function isFloat16Array(value: unknown): value is Float16Array {\n return getTypedArrayName(value) === 'Float16Array';\n}\n\n/**\n * The native `Float16Array` constructor exposed by the current JavaScript runtime.\n *\n * @remarks This is `undefined` when the runtime does not provide `Float16Array`. The value is\n * captured when this module is evaluated, so a polyfill must be installed before importing\n * `@math.gl/core`.\n */\nexport const NativeFloat16ArrayConstructor: TypedArrayConstructor | undefined =\n globalThis.Float16Array;\n\n/**\n * Returns the typed array constructor used for half-precision storage.\n *\n * @returns The native `Float16Array` constructor when available, otherwise `Uint16Array`.\n * @remarks The `Uint16Array` fallback stores encoded IEEE 754 binary16 bit patterns. Unlike a\n * native `Float16Array`, it does not encode numeric assignments or decode values when read.\n */\nexport function getFloat16ArrayConstructor(): TypedArrayConstructor {\n return NativeFloat16ArrayConstructor ?? Uint16Array;\n}\n\n/**\n * Checks whether a value is the native `Float16Array` constructor for the current runtime.\n *\n * @param value The value to test.\n * @returns `true` when `value` matches `NativeFloat16ArrayConstructor`. Returns `false` for the\n * `Uint16Array` fallback.\n */\nexport function isFloat16ArrayConstructor(value: unknown): boolean {\n return Boolean(NativeFloat16ArrayConstructor && value === NativeFloat16ArrayConstructor);\n}\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nexport type {\n // typed arrays\n TypedArray,\n TypedArrayConstructor,\n BigTypedArray,\n BigTypedArrayConstructor,\n // numeric arrays (sized number arrays)\n NumberArray,\n NumberArray1,\n NumberArray2,\n NumberArray3,\n NumberArray4,\n NumberArray6,\n NumberArray8,\n NumberArray9,\n NumberArray12,\n NumberArray16,\n // numeric arrays (sized number arrays or typed arrays)\n NumericArray,\n NumericArray1,\n NumericArray2,\n NumericArray3,\n NumericArray4,\n NumericArray6,\n NumericArray8,\n NumericArray9,\n NumericArray12,\n NumericArray16\n} from './array-types';\n\nexport {isTypedArray, isUint16Array, isNumberArray, isNumericArray} from './is-array';\nexport {\n NativeFloat16ArrayConstructor,\n getFloat16ArrayConstructor,\n isFloat16ArrayConstructor,\n isFloat16Array\n} from './float16';\n\nexport type {Bounds, Bounds2D, Bounds3D} from './bounds-types';\n\nexport type {SpheroidParameters} from './spheroid';\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nexport * from './types/index';\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nexport * from './gl-matrix/mat3';\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nexport * from './gl-matrix/mat4';\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nexport * from './gl-matrix/quat';\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nexport * from './gl-matrix/vec2';\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nexport * from './gl-matrix/vec3';\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\nexport * from './gl-matrix/vec4';\n", "// math.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\n// types\nexport type {\n TypedArray,\n TypedArrayConstructor,\n NumericArray,\n NumberArray,\n NumberArray2,\n NumberArray3,\n NumberArray4,\n NumberArray6,\n NumberArray8,\n NumberArray9,\n NumberArray12,\n NumberArray16\n} from './types';\n\nexport type {isTypedArray, isNumberArray, isNumericArray} from './types';\n\n// classes\nexport {MathArray as _MathArray} from './classes/base/math-array';\nexport {Matrix as _Matrix} from './classes/base/matrix';\nexport {Vector as _Vector} from './classes/base/vector';\nexport {Vector2} from './classes/vector2';\nexport {Vector3} from './classes/vector3';\nexport {Vector4} from './classes/vector4';\nexport {Matrix3} from './classes/matrix3';\nexport {Matrix4} from './classes/matrix4';\nexport {Quaternion} from './classes/quaternion';\n\nexport type {Vector2Like} from './classes/vector2';\nexport type {Vector3Like} from './classes/vector3';\nexport type {Vector4Like} from './classes/vector4';\nexport type {Matrix3Like} from './classes/matrix3';\nexport type {Matrix4Like} from './classes/matrix4';\n\n// experimental\nexport {SphericalCoordinates} from './classes/spherical-coordinates';\nexport {Pose} from './classes/pose';\nexport {Euler} from './classes/euler';\nexport type {EulerLike, EulerRotationOrder} from './classes/euler-types';\n\nexport * as _MathUtils from './lib/math-utils';\n\n// lib\nexport {assert} from './lib/assert';\n\nexport {\n // math.gl global utility methods\n config,\n configure,\n safeMod,\n normalizeAngle,\n formatValue,\n isArray,\n clone,\n equals,\n exactEquals,\n toRadians,\n toDegrees,\n // math.gl \"GLSL\"-style functions\n radians,\n degrees,\n clamp,\n lerp,\n withEpsilon\n} from './lib/common';\n\nexport type {SpheroidParameters} from './types';\n\n// Public named exports. Implementations remain in independently tree-shakable files.\nexport {\n createLocalFrameBasis,\n eastNorthUpBasis,\n eastNorthUpBasisFromDirections,\n localToFixed,\n fixedToLocal,\n localFrameToMatrix\n} from './local-frame';\nexport type {LocalFramePoint, LocalFrameAxis, LocalFrameBasis} from './local-frame';\nexport {spheroidToCartesian, cartesianToSpheroid} from './spheroid';\nexport type {SpheroidGeometry, SpheroidPoint} from './spheroid';\nexport {\n isUint16Array,\n NativeFloat16ArrayConstructor,\n getFloat16ArrayConstructor,\n isFloat16ArrayConstructor,\n isFloat16Array\n} from './types';\nexport type {\n BigTypedArray,\n BigTypedArrayConstructor,\n NumberArray1,\n NumericArray1,\n NumericArray2,\n NumericArray3,\n NumericArray4,\n NumericArray6,\n NumericArray8,\n NumericArray9,\n NumericArray12,\n NumericArray16,\n Bounds,\n Bounds2D,\n Bounds3D\n} from './types';\nexport {\n ExpressionFunctionRegistry,\n addBinaryOp,\n addUnaryOp,\n compile,\n compileAsync,\n evaluate,\n evaluateAsync,\n parse,\n BASIC_MATH_FUNCTION_LIBRARY,\n mergeFunctionLibraries,\n parseExpressionString\n} from './expressions/index';\nexport type {\n ExpressionEvaluationOptions,\n ExpressionFunction,\n ExpressionFunctionLibrary,\n FunctionRegistrationOptions,\n BinaryOperator,\n Expression,\n ExpressionContext,\n UnaryOperator,\n AccessorFunction\n} from './expressions/index';\n\nexport * as mat3 from './mat3';\nexport * as mat4 from './mat4';\nexport * as quat from './quat';\nexport * as vec2 from './vec2';\nexport * as vec3 from './vec3';\nexport * as vec4 from './vec4';\n\n// Individual operations avoid retaining a whole namespace in selective bundles.\nexport {\n create as mat3Create,\n fromMat4 as mat3FromMat4,\n clone as mat3Clone,\n copy as mat3Copy,\n fromValues as mat3FromValues,\n set as mat3Set,\n identity as mat3Identity,\n transpose as mat3Transpose,\n invert as mat3Invert,\n adjoint as mat3Adjoint,\n determinant as mat3Determinant,\n multiply as mat3Multiply,\n translate as mat3Translate,\n rotate as mat3Rotate,\n scale as mat3Scale,\n fromTranslation as mat3FromTranslation,\n fromRotation as mat3FromRotation,\n fromScaling as mat3FromScaling,\n fromMat2d as mat3FromMat2d,\n fromQuat as mat3FromQuat,\n normalFromMat4 as mat3NormalFromMat4,\n projection as mat3Projection,\n str as mat3Str,\n frob as mat3Frob,\n add as mat3Add,\n subtract as mat3Subtract,\n multiplyScalar as mat3MultiplyScalar,\n multiplyScalarAndAdd as mat3MultiplyScalarAndAdd,\n exactEquals as mat3ExactEquals,\n equals as mat3Equals,\n mul as mat3Mul,\n sub as mat3Sub\n} from './mat3';\nexport {\n create as mat4Create,\n clone as mat4Clone,\n copy as mat4Copy,\n fromValues as mat4FromValues,\n set as mat4Set,\n identity as mat4Identity,\n transpose as mat4Transpose,\n invert as mat4Invert,\n adjoint as mat4Adjoint,\n determinant as mat4Determinant,\n multiply as mat4Multiply,\n translate as mat4Translate,\n scale as mat4Scale,\n rotate as mat4Rotate,\n rotateX as mat4RotateX,\n rotateY as mat4RotateY,\n rotateZ as mat4RotateZ,\n fromTranslation as mat4FromTranslation,\n fromScaling as mat4FromScaling,\n fromRotation as mat4FromRotation,\n fromXRotation as mat4FromXRotation,\n fromYRotation as mat4FromYRotation,\n fromZRotation as mat4FromZRotation,\n fromRotationTranslation as mat4FromRotationTranslation,\n fromQuat2 as mat4FromQuat2,\n getTranslation as mat4GetTranslation,\n getScaling as mat4GetScaling,\n getRotation as mat4GetRotation,\n decompose as mat4Decompose,\n fromRotationTranslationScale as mat4FromRotationTranslationScale,\n fromRotationTranslationScaleOrigin as mat4FromRotationTranslationScaleOrigin,\n fromQuat as mat4FromQuat,\n frustum as mat4Frustum,\n perspectiveNO as mat4PerspectiveNO,\n perspectiveZO as mat4PerspectiveZO,\n perspectiveFromFieldOfView as mat4PerspectiveFromFieldOfView,\n orthoNO as mat4OrthoNO,\n orthoZO as mat4OrthoZO,\n lookAt as mat4LookAt,\n targetTo as mat4TargetTo,\n str as mat4Str,\n frob as mat4Frob,\n add as mat4Add,\n subtract as mat4Subtract,\n multiplyScalar as mat4MultiplyScalar,\n multiplyScalarAndAdd as mat4MultiplyScalarAndAdd,\n exactEquals as mat4ExactEquals,\n equals as mat4Equals,\n perspective as mat4Perspective,\n ortho as mat4Ortho,\n mul as mat4Mul,\n sub as mat4Sub\n} from './mat4';\nexport {\n create as quatCreate,\n identity as quatIdentity,\n setAxisAngle as quatSetAxisAngle,\n getAxisAngle as quatGetAxisAngle,\n getAngle as quatGetAngle,\n multiply as quatMultiply,\n rotateX as quatRotateX,\n rotateY as quatRotateY,\n rotateZ as quatRotateZ,\n calculateW as quatCalculateW,\n exp as quatExp,\n ln as quatLn,\n pow as quatPow,\n slerp as quatSlerp,\n invert as quatInvert,\n conjugate as quatConjugate,\n fromMat3 as quatFromMat3,\n str as quatStr,\n equals as quatEquals,\n clone as quatClone,\n fromValues as quatFromValues,\n copy as quatCopy,\n set as quatSet,\n add as quatAdd,\n mul as quatMul,\n scale as quatScale,\n dot as quatDot,\n lerp as quatLerp,\n length as quatLength,\n len as quatLen,\n squaredLength as quatSquaredLength,\n sqrLen as quatSqrLen,\n normalize as quatNormalize,\n exactEquals as quatExactEquals,\n rotationTo as quatRotationTo,\n sqlerp as quatSqlerp,\n setAxes as quatSetAxes\n} from './quat';\nexport {\n create as vec2Create,\n clone as vec2Clone,\n fromValues as vec2FromValues,\n copy as vec2Copy,\n set as vec2Set,\n add as vec2Add,\n subtract as vec2Subtract,\n multiply as vec2Multiply,\n divide as vec2Divide,\n ceil as vec2Ceil,\n floor as vec2Floor,\n min as vec2Min,\n max as vec2Max,\n round as vec2Round,\n scale as vec2Scale,\n scaleAndAdd as vec2ScaleAndAdd,\n distance as vec2Distance,\n squaredDistance as vec2SquaredDistance,\n length as vec2Length,\n squaredLength as vec2SquaredLength,\n negate as vec2Negate,\n inverse as vec2Inverse,\n normalize as vec2Normalize,\n dot as vec2Dot,\n cross as vec2Cross,\n lerp as vec2Lerp,\n random as vec2Random,\n transformMat2 as vec2TransformMat2,\n transformMat2d as vec2TransformMat2d,\n transformMat3 as vec2TransformMat3,\n transformMat4 as vec2TransformMat4,\n rotate as vec2Rotate,\n angle as vec2Angle,\n zero as vec2Zero,\n str as vec2Str,\n exactEquals as vec2ExactEquals,\n equals as vec2Equals,\n len as vec2Len,\n sub as vec2Sub,\n mul as vec2Mul,\n div as vec2Div,\n dist as vec2Dist,\n sqrDist as vec2SqrDist,\n sqrLen as vec2SqrLen,\n forEach as vec2ForEach\n} from './vec2';\nexport {\n create as vec3Create,\n clone as vec3Clone,\n length as vec3Length,\n fromValues as vec3FromValues,\n copy as vec3Copy,\n set as vec3Set,\n add as vec3Add,\n subtract as vec3Subtract,\n multiply as vec3Multiply,\n divide as vec3Divide,\n ceil as vec3Ceil,\n floor as vec3Floor,\n min as vec3Min,\n max as vec3Max,\n round as vec3Round,\n scale as vec3Scale,\n scaleAndAdd as vec3ScaleAndAdd,\n distance as vec3Distance,\n squaredDistance as vec3SquaredDistance,\n squaredLength as vec3SquaredLength,\n negate as vec3Negate,\n inverse as vec3Inverse,\n normalize as vec3Normalize,\n dot as vec3Dot,\n cross as vec3Cross,\n lerp as vec3Lerp,\n slerp as vec3Slerp,\n hermite as vec3Hermite,\n bezier as vec3Bezier,\n random as vec3Random,\n transformMat4 as vec3TransformMat4,\n transformMat3 as vec3TransformMat3,\n transformQuat as vec3TransformQuat,\n rotateX as vec3RotateX,\n rotateY as vec3RotateY,\n rotateZ as vec3RotateZ,\n angle as vec3Angle,\n zero as vec3Zero,\n str as vec3Str,\n exactEquals as vec3ExactEquals,\n equals as vec3Equals,\n sub as vec3Sub,\n mul as vec3Mul,\n div as vec3Div,\n dist as vec3Dist,\n sqrDist as vec3SqrDist,\n len as vec3Len,\n sqrLen as vec3SqrLen,\n forEach as vec3ForEach\n} from './vec3';\nexport {\n create as vec4Create,\n clone as vec4Clone,\n fromValues as vec4FromValues,\n copy as vec4Copy,\n set as vec4Set,\n add as vec4Add,\n subtract as vec4Subtract,\n multiply as vec4Multiply,\n divide as vec4Divide,\n ceil as vec4Ceil,\n floor as vec4Floor,\n min as vec4Min,\n max as vec4Max,\n round as vec4Round,\n scale as vec4Scale,\n scaleAndAdd as vec4ScaleAndAdd,\n distance as vec4Distance,\n squaredDistance as vec4SquaredDistance,\n length as vec4Length,\n squaredLength as vec4SquaredLength,\n negate as vec4Negate,\n inverse as vec4Inverse,\n normalize as vec4Normalize,\n dot as vec4Dot,\n cross as vec4Cross,\n lerp as vec4Lerp,\n random as vec4Random,\n transformMat4 as vec4TransformMat4,\n transformQuat as vec4TransformQuat,\n zero as vec4Zero,\n str as vec4Str,\n exactEquals as vec4ExactEquals,\n equals as vec4Equals,\n sub as vec4Sub,\n mul as vec4Mul,\n div as vec4Div,\n dist as vec4Dist,\n sqrDist as vec4SqrDist,\n len as vec4Len,\n sqrLen as vec4SqrLen,\n forEach as vec4ForEach\n} from './vec4';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors\n\n// TYPES\n\nexport type {\n // misc\n DataType,\n SyncDataType,\n BatchableDataType,\n TransformBatches,\n // numeric array types\n TypedArray,\n BigTypedArray,\n TypedArrayConstructor,\n BigTypedArrayConstructor,\n NumberArray,\n NumericArray,\n // fetch\n FetchLike\n} from './types';\n\n// formats\n\nexport type {Format, FormatEncoding} from './format-types';\n\n// loaders\n\nexport type {\n Loader,\n LoaderWithParser,\n LoaderContext,\n StrictLoaderOptions,\n LoaderOptions,\n LoaderShapeType,\n LoaderOptionsWithShape,\n LoaderOptionsType,\n LoaderReturnType,\n LoaderBatchType,\n LoaderArrayOptionsType,\n LoaderArrayReturnType,\n LoaderArrayBatchType\n} from './loader-types';\nexport type {SearchParams} from './loader-types';\n\nexport type {ExperimentalScanOptions} from './lib/scan-utils/experimental-scan-options';\n\nexport {parseFromContext, parseSyncFromContext, parseInBatchesFromContext} from './loader-types';\n\n// writers\n\nexport type {\n Writer,\n WriterWithEncoder,\n WriterOptions,\n WriterOptionsType,\n WriterDataType,\n WriterBatchType\n} from './writer-types';\n\n// GENERAL UTILS\nexport {assert} from './lib/env-utils/assert';\nexport {\n isBrowser,\n isWorker,\n nodeVersion,\n self,\n window,\n global,\n document\n} from './lib/env-utils/globals';\n\nexport {log} from './lib/log-utils/log';\n\nexport type {ReadableStreamType} from './lib/javascript-utils/is-type';\nexport {\n isObject,\n isPureObject,\n isArrayBuffer,\n isArrayBufferLike,\n isPromise,\n isIterable,\n isAsyncIterable,\n isIterator,\n isResponse,\n isFile,\n isBlob,\n isWritableDOMStream,\n isReadableDOMStream,\n isWritableNodeStream,\n isReadableNodeStream,\n isReadableStream,\n isWritableStream\n} from './lib/javascript-utils/is-type';\n\n// Options and modules\nexport type {RequiredOptions} from './lib/option-utils/merge-options';\nexport {mergeOptions, getRequiredOptions} from './lib/option-utils/merge-options';\n\n// Modules (external libraries)\nexport {initializeWasmModule} from './lib/module-utils/initialize-wasm-module';\nexport {registerJSModules} from './lib/module-utils/js-module-utils';\nexport {checkJSModule, getJSModule, getJSModuleOrNull} from './lib/module-utils/js-module-utils';\n\n// LOADERS.GL-SPECIFIC WORKER UTILS\nexport {\n createLoaderWorker,\n processLoaderWorkerBatches\n} from './lib/worker-loader-utils/create-loader-worker';\nexport {\n parseWithWorker,\n parseWithWorkerInBatches,\n canParseWithWorker,\n canParseWithWorkerInBatches,\n shouldParseWithWorker\n} from './lib/worker-loader-utils/parse-with-worker';\nexport {canEncodeWithWorker} from './lib/worker-loader-utils/encode-with-worker';\n\n// PARSER UTILS\nexport {parseJSON} from './lib/parser-utils/parse-json';\n\n// MEMORY COPY UTILS\nexport {\n sliceArrayBuffer,\n concatenateArrayBuffers,\n concatenateArrayBuffersFromArray,\n concatenateTypedArrays,\n compareArrayBuffers\n} from './lib/binary-utils/array-buffer-utils';\nexport {BinaryChunkReader} from './lib/binary-utils/binary-chunk-reader';\nexport type {\n BinaryChunkReaderCheckpoint,\n BinaryChunkReaderOptions\n} from './lib/binary-utils/binary-chunk-reader';\nexport {padToNBytes, copyToArray, copyArrayBuffer} from './lib/binary-utils/memory-copy-utils';\nexport {\n padStringToByteAlignment,\n copyStringToDataView,\n copyBinaryToDataView,\n copyPaddedArrayBufferToDataView,\n copyPaddedStringToDataView\n} from './lib/binary-utils/dataview-copy-utils';\nexport {getFirstCharacters, getMagicString} from './lib/binary-utils/get-first-characters';\nexport {encodeArrayBufferToBase64} from './lib/binary-utils/encode-array-buffer-to-base64';\n\n// ITERATOR UTILS\nexport {\n makeTextEncoderIterator,\n makeTextDecoderIterator,\n makeLineIterator,\n makeNumberedLineIterator\n} from './lib/iterators/text-iterators';\nexport {\n forEach,\n concatenateArrayBuffersAsync,\n toArrayBufferIterator\n} from './lib/iterators/async-iteration';\n\n// REQUEST UTILS\nexport {default as RequestScheduler} from './lib/request-utils/request-scheduler';\nexport {\n resolveCredentials,\n resolveAuthenticationOptions,\n resolveLoaderAuthenticationOptions\n} from './lib/request-utils/authentication';\nexport type {\n Authentication,\n AuthenticationConstructor,\n AuthenticationRequest,\n AuthenticatedRequest,\n AuthenticateRequest,\n RequestAuthentication,\n Credential,\n CredentialOptions\n} from './lib/request-utils/authentication';\nexport {RequestCache} from './lib/request-utils/request-cache';\nexport type {\n RequestCacheProps,\n RequestCacheRemovalReason\n} from './lib/request-utils/request-cache';\nexport {parseContentType} from './lib/request-utils/parse-content-type';\nexport {\n createAuthenticatedFetch,\n TokenAuthentication,\n QueryParameterAuthentication,\n BearerTokenAuthentication,\n createBearerTokenCredential,\n createQueryParameterCredential,\n getAuthenticatedFetch,\n redactCredentialURL\n} from './lib/request-utils/request-credentials';\nexport type {\n AuthenticatedFetchOptions,\n BearerTokenCredentialOptions,\n QueryParameterCredentialOptions,\n RequestCredential,\n TokenProvider,\n TokenProviderContext,\n TokenProviderReason,\n TokenProviderResponse,\n TokenValue\n} from './lib/request-utils/request-credentials';\nexport {\n RangeRequestScheduler,\n createRangeStats,\n fetchHttpRange,\n getRangeStats\n} from './lib/request-utils/range-request-scheduler';\nexport type {\n RangeFetchRequest,\n RangeRequest,\n RangeRequestEvent,\n RangeRequestSchedulerProps,\n RangeRequestTransportResult,\n RangeStats\n} from './lib/request-utils/range-request-scheduler';\nexport {RangeRequestCache} from './lib/request-utils/range-request-cache';\nexport type {\n CachedRangeRequest,\n RangeRequestCacheEvent,\n RangeRequestCacheProps\n} from './lib/request-utils/range-request-cache';\n\n// LAZ DECODER UTILS\nexport {\n NeedsMoreData,\n createLAZChunkDecoder,\n createLAZChunkDecoderCursor,\n decodeLAZChunkTable,\n decodeLAZChunk,\n decodeLAZChunkInBatches,\n getLAZChunkByteLength,\n getLAZChunkDeclaredByteLength,\n getLAZChunkHeaderByteLength\n} from './lib/laz/laz-chunk-decoder';\nexport type {\n FeedableLAZChunkDecoder,\n LAZChunkDecoderCursor,\n LAZChunkDecoderOptions,\n LAZChunkMetadata,\n LAZChunkTableEntry,\n LAZPointDataTarget\n} from './lib/laz/laz-chunk-decoder';\nexport {\n createLAZChunkEncoder,\n encodeLASzipVLR,\n encodeLAZChunk,\n encodeLAZChunkTable\n} from './lib/laz/laz-chunk-encoder';\nexport type {FeedableLAZChunkEncoder} from './lib/laz/laz-chunk-encoder';\n\n// PATH HELPERS\nexport {setPathPrefix, getPathPrefix, resolvePath} from './lib/path-utils/file-aliases';\nexport {CachedUriResolver} from './lib/path-utils/cached-uri-resolver';\nexport {addAliases as _addAliases} from './lib/path-utils/file-aliases';\n\n// MICRO LOADERS\nexport {JSONLoader} from './json-loader';\n\n// NODE support\n\n// Node.js emulation (can be used in browser)\n\n// Avoid direct use of `Buffer` which pulls in 50KB polyfill\nexport {\n isBuffer,\n toBuffer,\n toArrayBuffer,\n toArrayBufferView,\n copyToArrayBuffer,\n ensureArrayBuffer\n} from './lib/binary-utils/memory-conversion-utils';\n\n// Note.js wrappers (can be safely imported, but not used in browser)\n\n// Use instead of importing 'util' to avoid node dependencies\nexport {promisify1, promisify2} from './lib/node/promisify';\n\n// `path` replacement (avoids bundling big path polyfill)\nimport * as path from './lib/path-utils/path';\nexport {path};\n\n// Use instead of importing 'stream' to avoid node dependencies`\nimport * as stream from './lib/node/stream';\nexport {stream};\n\n// EXPERIMENTAL: FILE SYSTEMS\n\nexport type {ReadableFile, WritableFile, Stat} from './lib/files/file';\nexport {ArrayBufferFile} from './lib/files/array-buffer-file';\nexport {BlobFile} from './lib/files/blob-file';\nexport {HttpFile} from './lib/files/http-file';\nexport type {\n HttpFileConsistency,\n HttpFileFetch,\n HttpFileIdentity,\n HttpFileOptions,\n HttpFileTelemetry\n} from './lib/files/http-file';\nexport {NodeFileFacade as NodeFile} from './lib/files/node-file-facade';\n\nexport type {FileSystem, RandomAccessFileSystem} from './lib/filesystems/filesystem';\nexport {NodeFileSystemFacade as NodeFilesystem} from './lib/filesystems/node-filesystem-facade';\n\n// EXPERIMENTAL: DATA SOURCES\nexport type {\n SourceLoader,\n SourcePropsType,\n SourceArrayOptionsType,\n SourceArrayDataSourceType\n} from './source-types';\nexport {isSourceLoader} from './source-types';\n\nexport type {CoreAPI, DataSourceOptions} from './lib/sources/data-source';\nexport {getSourceLoaderOptions} from './lib/sources/data-source';\nexport {DataSource} from './lib/sources/data-source';\nexport type {\n ManageableDataSource,\n DataSourceManagerEntryInfo,\n DataSourceManagerEntryStatus,\n DataSourceManagerDiscoveryInfo,\n DataSourceManagerDiscoveryOptions,\n DataSourceManagerAddParameters,\n DataSourceManagerGetOrCreateParameters,\n DataSourceManagerSubscribeParameters,\n DataSourceSubscriber\n} from './lib/sources/data-source-manager';\nexport {DataSourceManager} from './lib/sources/data-source-manager';\nexport {\n bindColumnarPredicateParameters,\n copyColumnarPredicate,\n filterColumnarRowIndices,\n gatherColumnarColumns,\n getColumnarPredicateColumns,\n getColumnarPredicateParameterNames,\n getColumnarPredicatePath,\n getColumnarPredicatePaths,\n isColumnarPredicateParameter,\n isColumnarPredicateValue,\n validateColumnarPredicate\n} from './lib/scan-utils/columnar-predicate';\nexport {executeScanTasks} from './lib/scan-utils/scan-executor';\nexport {\n executeTableScanBatches,\n filterTableBatch,\n makeTableScanBatch,\n projectTableBatch,\n projectTableSchema,\n truncateTableBatch\n} from './lib/scan-utils/table-scan-batch';\nexport type {\n TableScanBatchReader,\n TableScanBatchOperators\n} from './lib/scan-utils/table-scan-batch';\nexport {validateRasterQueryOptions} from './lib/scan-utils/raster-query';\nexport type {RasterQueryOptions, RasterQueryCapabilities} from './lib/scan-utils/raster-query';\nexport {planRelationalQuery} from './lib/scan-utils/relational-query';\nexport type {\n RelationalAggregate,\n RelationalChildQuery,\n RelationalExpression,\n RelationalOrderKey,\n RelationalPlanStep,\n RelationalQueryOptions\n} from './lib/scan-utils/relational-query';\nexport {\n createScanQueryMetadata,\n emitScanExecutionTelemetry\n} from './lib/scan-utils/scan-query-metadata';\nexport {\n intersectPointCloudBounds,\n selectPointCloudScanTiles,\n validatePointCloudQueryOptions\n} from './lib/scan-utils/point-cloud-query';\nexport {\n planTableQuery,\n validateTableQueryLimit,\n validateTableQueryOptions\n} from './lib/scan-utils/table-query';\nexport {explainTableQuery} from './lib/scan-utils/table-query-explain';\nexport type {ScanExecutorOptions, ScanTask} from './lib/scan-utils/scan-executor';\nexport type {ScanFragment, ScanFragmentProvider} from './lib/scan-utils/scan-fragments';\nexport type {\n CreateScanQueryMetadataOptions,\n ScanBounds,\n ScanColumnMetadata,\n ScanColumnRole,\n ScanExecutionMethod,\n ScanExecutionSupport,\n ScanQueryCapabilities,\n ScanQueryMetadata,\n ScanQueryMetadataOptions,\n ScanQueryMetadataProvider,\n ScanExecutionTelemetry,\n ScanExecutionTelemetryCallback,\n ScanExecutionTelemetryStatus,\n ScanSourceExecutionTelemetry,\n PointCloudScanReadOptions,\n PointCloudScanSource,\n TableScanReadOptions,\n TableScanSource,\n ScanRasterLevel,\n ScanSourceStatistics,\n ScanSpatialMetadata\n} from './lib/scan-utils/scan-query-metadata';\nexport type {\n PointCloudQueryBounds,\n PointCloudQueryCapabilities,\n PointCloudQueryOptions,\n PointCloudScanChildrenLoader,\n PointCloudScanTile\n} from './lib/scan-utils/point-cloud-query';\nexport type {\n ColumnarComparisonPredicate,\n ColumnarInPredicate,\n ColumnarLogicalPredicate,\n ColumnarNotPredicate,\n ColumnarNullPredicate,\n ColumnarPredicate,\n ColumnarPredicateInputValue,\n ColumnarPredicateParameter,\n ColumnarPredicateParameterValues,\n ColumnarPredicateProperty,\n ColumnarPredicateValue,\n ParameterizedColumnarPredicate\n} from './lib/scan-utils/columnar-predicate';\nexport type {\n TableQueryCapabilities,\n TableQueryFilterStep,\n TableQueryLimitStep,\n TableQueryOperatorSupport,\n TableQueryOptions,\n TableQueryPlan,\n TableQueryPlanStep,\n TableQueryProjectStep,\n TableQueryScanStep\n} from './lib/scan-utils/table-query';\nexport type {\n TableQueryExplain,\n TableQueryExplainOperator\n} from './lib/scan-utils/table-query-explain';\n\nexport type {CatalogSource, CatalogSourceCapabilities} from './lib/sources/catalog-source';\nexport type {GeoServiceType, ServiceCapabilities} from './lib/sources/service-capabilities';\n\nexport type {ImageSource} from './lib/sources/image-source';\nexport type {ImageType} from './lib/sources/utils/image-type';\nexport type {ImageSourceMetadata} from './lib/sources/image-source';\nexport type {GetImageParameters} from './lib/sources/image-source';\n\nexport type {\n GetFeaturesParameters,\n VectorSource,\n VectorSourceData,\n VectorSourceLayer,\n VectorSourceMetadata\n} from './lib/sources/vector-source';\nexport {CRSReprojectionError} from './lib/crs/crs-reprojection';\nexport type {\n CRSReprojectionOptions,\n CRSReprojectionErrorCode\n} from './lib/crs/crs-reprojection';\n\nexport type {TileSource, TileGrid, TileGridMatrix, TileGridLimits} from './lib/sources/tile-source';\nexport type {TileSourceMetadata, GetTileParameters} from './lib/sources/tile-source';\nexport type {GetTileDataBatchResult, GetTileDataParameters} from './lib/sources/tile-source';\nexport {getTileDataBatch} from './lib/sources/tile-source-utils';\nexport {TileSourceAdapter} from './lib/sources/tile-source-adapter';\n\nexport type {ImageTileSource} from './lib/sources/image-tile-source';\n\nexport type {VectorTileSource} from './lib/sources/vector-tile-source';\nexport type {VectorTile} from './lib/sources/vector-tile-source';\n\nexport {getRasterViewportBoundingBox} from './lib/sources/raster-source';\nexport type {\n RasterSource,\n RasterChannelDataType,\n RasterBoundingBox,\n RasterViewport,\n RasterData,\n RasterSelection,\n GetRasterParameters,\n RasterOverview,\n RasterSourceMetadata\n} from './lib/sources/raster-source';\n\nexport type {\n RasterAffineTransform,\n RasterBandMetadata,\n RasterValidityMask,\n RasterBandStatistics,\n RasterDeclaredBandStatistics,\n RasterRegionParameters,\n RasterRegionSource\n} from './lib/sources/raster-source';\nexport {\n sampleRaster,\n rasterCoordinateToPixel,\n computeRasterStatistics,\n isRasterSampleValid\n} from './lib/sources/raster-sampling';\nexport type {RasterSample, RasterSampleOptions} from './lib/sources/raster-sampling';\nexport {canReuseRasterCoverage} from './lib/sources/raster-coverage';\nexport type {RasterCoverageIdentity} from './lib/sources/raster-coverage';\n\nexport type {RasterMixedData, NumericRasterData} from './lib/sources/raster-source';\nexport {waitForPromiseWithSignal, waitForPromiseWithSignals} from './lib/request-utils/abort-utils';\n\nexport {validateRasterRegion} from './lib/sources/raster-region';\nexport {encodeHex, decodeHex} from './lib/binary-utils/hex-transcoder';\n\n// Shared tile-grid normalization and addressing.\nexport {\n createTileGrid,\n createTileGridMatrix,\n getRequestedTileMatrix,\n getTileGridMatrixId,\n getTileGridValidation,\n validateTileGrid,\n validateTileGridLimits,\n resolveTileGridTile\n} from './lib/sources/tile-grid';\nexport type {\n TileMatrixFields,\n TileGridValidation,\n TileGridValidationIssue,\n TileGridValidationInput\n} from './lib/sources/tile-grid';\n\nexport {createWebMercatorTileGrid, resolveXYZTileParameters} from './lib/sources/xyz-grid';\nexport {getXYZTileGridOptions} from './lib/sources/xyz-grid-options';\nexport type {XYZTileGridAssessment, XYZTileGridOptions} from './lib/sources/xyz-grid-options';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {\n DataType,\n BigTypedArray,\n TypedArray,\n TypedArrayConstructor,\n ArrayType\n} from '@loaders.gl/core/schema';\nimport {getFloat16ArrayConstructor} from '@math.gl/core';\n\n/** Deduce column types from values */\nexport function getDataTypeFromValue(\n value: unknown,\n defaultNumberType: 'float32' = 'float32'\n): DataType {\n if (value instanceof Date) {\n return 'date-millisecond';\n }\n if (typeof value === 'number') {\n return defaultNumberType;\n }\n if (typeof value === 'boolean') {\n return 'bool';\n }\n if (typeof value === 'string') {\n return 'utf8';\n }\n if (value === null || value === 'undefined') {\n return 'null';\n }\n return 'null';\n}\n\n/**\n * Deduces a simple data type \"descriptor from a typed array instance\n */\nexport function getDataTypeFromArray(array: ArrayType): {type: DataType; nullable: boolean} {\n let type = getDataTypeFromTypedArray(array as TypedArray);\n if (type !== 'null') {\n return {type, nullable: false};\n }\n if (array.length > 0) {\n type = getDataTypeFromValue(array[0]);\n return {type, nullable: true};\n }\n\n return {type: 'null', nullable: true};\n}\n\n/**\n * Deduces a simple data type \"descriptor from a typed array instance\n */\nexport function getDataTypeFromTypedArray(array: BigTypedArray): DataType {\n if (typeof Float16Array !== 'undefined' && array instanceof Float16Array) {\n return 'float16';\n }\n switch (array.constructor) {\n case Int8Array:\n return 'int8';\n case Uint8Array:\n case Uint8ClampedArray:\n return 'uint8';\n case Int16Array:\n return 'int16';\n case Uint16Array:\n return 'uint16';\n case Int32Array:\n return 'int32';\n case Uint32Array:\n return 'uint32';\n case BigInt64Array:\n return 'int64';\n case BigUint64Array:\n return 'uint64';\n case Float32Array:\n return 'float32';\n case Float64Array:\n return 'float64';\n default:\n return 'null';\n }\n}\n\nexport function getArrayTypeFromDataType(\n type: DataType,\n nullable: boolean | undefined\n): TypedArrayConstructor | ArrayConstructor {\n if (!nullable) {\n switch (type) {\n case 'int8':\n return Int8Array;\n case 'uint8':\n return Uint8Array;\n case 'int16':\n return Int16Array;\n case 'uint16':\n return Uint16Array;\n case 'int32':\n return Int32Array;\n case 'uint32':\n return Uint32Array;\n case 'float32':\n return Float32Array;\n case 'float64':\n return Float64Array;\n case 'float16':\n return getFloat16ArrayConstructor() as TypedArrayConstructor;\n default:\n break;\n }\n }\n\n // if (typeof BigInt64Array !== 'undefined') {\n // TYPED_ARRAY_TO_TYPE.BigInt64Array = new Int64();\n // TYPED_ARRAY_TO_TYPE.BigUint64Array = new Uint64();\n // }\n\n return Array;\n}\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n", null, null, null, null, null, null, null, null, null, null, "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SIZE_PREFIX_LENGTH = exports.FILE_IDENTIFIER_LENGTH = exports.SIZEOF_INT = exports.SIZEOF_SHORT = void 0;\nexports.SIZEOF_SHORT = 2;\nexports.SIZEOF_INT = 4;\nexports.FILE_IDENTIFIER_LENGTH = 4;\nexports.SIZE_PREFIX_LENGTH = 4;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isLittleEndian = exports.float64 = exports.float32 = exports.int32 = void 0;\nexports.int32 = new Int32Array(2);\nexports.float32 = new Float32Array(exports.int32.buffer);\nexports.float64 = new Float64Array(exports.int32.buffer);\nexports.isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Encoding = void 0;\nvar Encoding;\n(function (Encoding) {\n Encoding[Encoding[\"UTF8_BYTES\"] = 1] = \"UTF8_BYTES\";\n Encoding[Encoding[\"UTF16_STRING\"] = 2] = \"UTF16_STRING\";\n})(Encoding || (exports.Encoding = Encoding = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ByteBuffer = void 0;\nconst constants_js_1 = require(\"./constants.js\");\nconst encoding_js_1 = require(\"./encoding.js\");\nconst utils_js_1 = require(\"./utils.js\");\nclass ByteBuffer {\n /**\n * Create a new ByteBuffer with a given array of bytes (`Uint8Array`)\n */\n constructor(bytes_) {\n this.bytes_ = bytes_;\n this.position_ = 0;\n this.text_decoder_ = new TextDecoder();\n }\n /**\n * Create and allocate a new ByteBuffer with a given size.\n */\n static allocate(byte_size) {\n return new ByteBuffer(new Uint8Array(byte_size));\n }\n clear() {\n this.position_ = 0;\n }\n /**\n * Get the underlying `Uint8Array`.\n */\n bytes() {\n return this.bytes_;\n }\n /**\n * Get the buffer's position.\n */\n position() {\n return this.position_;\n }\n /**\n * Set the buffer's position.\n */\n setPosition(position) {\n this.position_ = position;\n }\n /**\n * Get the buffer's capacity.\n */\n capacity() {\n return this.bytes_.length;\n }\n readInt8(offset) {\n return (this.readUint8(offset) << 24) >> 24;\n }\n readUint8(offset) {\n return this.bytes_[offset];\n }\n readInt16(offset) {\n return (this.readUint16(offset) << 16) >> 16;\n }\n readUint16(offset) {\n return this.bytes_[offset] | (this.bytes_[offset + 1] << 8);\n }\n readInt32(offset) {\n return (this.bytes_[offset] |\n (this.bytes_[offset + 1] << 8) |\n (this.bytes_[offset + 2] << 16) |\n (this.bytes_[offset + 3] << 24));\n }\n readUint32(offset) {\n return this.readInt32(offset) >>> 0;\n }\n readInt64(offset) {\n return BigInt.asIntN(64, BigInt(this.readUint32(offset)) +\n (BigInt(this.readUint32(offset + 4)) << BigInt(32)));\n }\n readUint64(offset) {\n return BigInt.asUintN(64, BigInt(this.readUint32(offset)) +\n (BigInt(this.readUint32(offset + 4)) << BigInt(32)));\n }\n readFloat32(offset) {\n utils_js_1.int32[0] = this.readInt32(offset);\n return utils_js_1.float32[0];\n }\n readFloat64(offset) {\n utils_js_1.int32[utils_js_1.isLittleEndian ? 0 : 1] = this.readInt32(offset);\n utils_js_1.int32[utils_js_1.isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);\n return utils_js_1.float64[0];\n }\n writeInt8(offset, value) {\n this.bytes_[offset] = value;\n }\n writeUint8(offset, value) {\n this.bytes_[offset] = value;\n }\n writeInt16(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n }\n writeUint16(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n }\n writeInt32(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n this.bytes_[offset + 2] = value >> 16;\n this.bytes_[offset + 3] = value >> 24;\n }\n writeUint32(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n this.bytes_[offset + 2] = value >> 16;\n this.bytes_[offset + 3] = value >> 24;\n }\n writeInt64(offset, value) {\n this.writeInt32(offset, Number(BigInt.asIntN(32, value)));\n this.writeInt32(offset + 4, Number(BigInt.asIntN(32, value >> BigInt(32))));\n }\n writeUint64(offset, value) {\n this.writeUint32(offset, Number(BigInt.asUintN(32, value)));\n this.writeUint32(offset + 4, Number(BigInt.asUintN(32, value >> BigInt(32))));\n }\n writeFloat32(offset, value) {\n utils_js_1.float32[0] = value;\n this.writeInt32(offset, utils_js_1.int32[0]);\n }\n writeFloat64(offset, value) {\n utils_js_1.float64[0] = value;\n this.writeInt32(offset, utils_js_1.int32[utils_js_1.isLittleEndian ? 0 : 1]);\n this.writeInt32(offset + 4, utils_js_1.int32[utils_js_1.isLittleEndian ? 1 : 0]);\n }\n /**\n * Return the file identifier. Behavior is undefined for FlatBuffers whose\n * schema does not include a file_identifier (likely points at padding or the\n * start of a the root vtable).\n */\n getBufferIdentifier() {\n if (this.bytes_.length <\n this.position_ + constants_js_1.SIZEOF_INT + constants_js_1.FILE_IDENTIFIER_LENGTH) {\n throw new Error('FlatBuffers: ByteBuffer is too short to contain an identifier.');\n }\n let result = '';\n for (let i = 0; i < constants_js_1.FILE_IDENTIFIER_LENGTH; i++) {\n result += String.fromCharCode(this.readInt8(this.position_ + constants_js_1.SIZEOF_INT + i));\n }\n return result;\n }\n /**\n * Look up a field in the vtable, return an offset into the object, or 0 if the\n * field is not present.\n */\n __offset(bb_pos, vtable_offset) {\n const vtable = bb_pos - this.readInt32(bb_pos);\n return vtable_offset < this.readInt16(vtable)\n ? this.readInt16(vtable + vtable_offset)\n : 0;\n }\n /**\n * Initialize any Table-derived type to point to the union at the given offset.\n */\n __union(t, offset) {\n t.bb_pos = offset + this.readInt32(offset);\n t.bb = this;\n return t;\n }\n /**\n * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.\n * This allocates a new string and converts to wide chars upon each access.\n *\n * To avoid the conversion to string, pass Encoding.UTF8_BYTES as the\n * \"optionalEncoding\" argument. This is useful for avoiding conversion when\n * the data will just be packaged back up in another FlatBuffer later on.\n *\n * @param offset\n * @param opt_encoding Defaults to UTF16_STRING\n */\n __string(offset, opt_encoding) {\n offset += this.readInt32(offset);\n const length = this.readInt32(offset);\n offset += constants_js_1.SIZEOF_INT;\n const utf8bytes = this.bytes_.subarray(offset, offset + length);\n if (opt_encoding === encoding_js_1.Encoding.UTF8_BYTES)\n return utf8bytes;\n else\n return this.text_decoder_.decode(utf8bytes);\n }\n /**\n * Handle unions that can contain string as its member, if a Table-derived type then initialize it,\n * if a string then return a new one\n *\n * WARNING: strings are immutable in JS so we can't change the string that the user gave us, this\n * makes the behaviour of __union_with_string different compared to __union\n */\n __union_with_string(o, offset) {\n if (typeof o === 'string') {\n return this.__string(offset);\n }\n return this.__union(o, offset);\n }\n /**\n * Retrieve the relative offset stored at \"offset\"\n */\n __indirect(offset) {\n return offset + this.readInt32(offset);\n }\n /**\n * Get the start of data of a vector whose offset is stored at \"offset\" in this object.\n */\n __vector(offset) {\n return offset + this.readInt32(offset) + constants_js_1.SIZEOF_INT; // data starts after the length\n }\n /**\n * Get the length of a vector whose offset is stored at \"offset\" in this object.\n */\n __vector_len(offset) {\n return this.readInt32(offset + this.readInt32(offset));\n }\n __has_identifier(ident) {\n if (ident.length != constants_js_1.FILE_IDENTIFIER_LENGTH) {\n throw new Error('FlatBuffers: file identifier must be length ' + constants_js_1.FILE_IDENTIFIER_LENGTH);\n }\n for (let i = 0; i < constants_js_1.FILE_IDENTIFIER_LENGTH; i++) {\n if (ident.charCodeAt(i) != this.readInt8(this.position() + constants_js_1.SIZEOF_INT + i)) {\n return false;\n }\n }\n return true;\n }\n /**\n * A helper function for generating list for obj api\n */\n createScalarList(listAccessor, listLength) {\n const ret = [];\n for (let i = 0; i < listLength; ++i) {\n const val = listAccessor(i);\n if (val !== null) {\n ret.push(val);\n }\n }\n return ret;\n }\n /**\n * A helper function for generating list for obj api\n * @param listAccessor function that accepts an index and return data at that index\n * @param listLength listLength\n * @param res result list\n */\n createObjList(listAccessor, listLength) {\n const ret = [];\n for (let i = 0; i < listLength; ++i) {\n const val = listAccessor(i);\n if (val !== null) {\n ret.push(val.unpack());\n }\n }\n return ret;\n }\n}\nexports.ByteBuffer = ByteBuffer;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Builder = void 0;\nconst byte_buffer_js_1 = require(\"./byte-buffer.js\");\nconst constants_js_1 = require(\"./constants.js\");\nclass Builder {\n /**\n * Create a FlatBufferBuilder.\n */\n constructor(opt_initial_size) {\n /** Minimum alignment encountered so far. */\n this.minalign = 1;\n /** The vtable for the current table. */\n this.vtable = null;\n /** The amount of fields we're actually using. */\n this.vtable_in_use = 0;\n /** Whether we are currently serializing a table. */\n this.isNested = false;\n /** Starting offset of the current struct/table. */\n this.object_start = 0;\n /** List of offsets of all vtables. */\n this.vtables = [];\n /** For the current vector being built. */\n this.vector_num_elems = 0;\n /** False omits default values from the serialized data */\n this.force_defaults = false;\n this.string_maps = null;\n this.text_encoder = new TextEncoder();\n let initial_size;\n if (!opt_initial_size) {\n initial_size = 1024;\n }\n else {\n initial_size = opt_initial_size;\n }\n /**\n * @type {ByteBuffer}\n * @private\n */\n this.bb = byte_buffer_js_1.ByteBuffer.allocate(initial_size);\n this.space = initial_size;\n }\n clear() {\n this.bb.clear();\n this.space = this.bb.capacity();\n this.minalign = 1;\n this.vtable = null;\n this.vtable_in_use = 0;\n this.isNested = false;\n this.object_start = 0;\n this.vtables = [];\n this.vector_num_elems = 0;\n this.force_defaults = false;\n this.string_maps = null;\n }\n /**\n * In order to save space, fields that are set to their default value\n * don't get serialized into the buffer. Forcing defaults provides a\n * way to manually disable this optimization.\n *\n * @param forceDefaults true always serializes default values\n */\n forceDefaults(forceDefaults) {\n this.force_defaults = forceDefaults;\n }\n /**\n * Get the ByteBuffer representing the FlatBuffer. Only call this after you've\n * called finish(). The actual data starts at the ByteBuffer's current position,\n * not necessarily at 0.\n */\n dataBuffer() {\n return this.bb;\n }\n /**\n * Get the bytes representing the FlatBuffer. Only call this after you've\n * called finish().\n */\n asUint8Array() {\n return this.bb\n .bytes()\n .subarray(this.bb.position(), this.bb.position() + this.offset());\n }\n /**\n * Prepare to write an element of `size` after `additional_bytes` have been\n * written, e.g. if you write a string, you need to align such the int length\n * field is aligned to 4 bytes, and the string data follows it directly. If all\n * you need to do is alignment, `additional_bytes` will be 0.\n *\n * @param size This is the of the new element to write\n * @param additional_bytes The padding size\n */\n prep(size, additional_bytes) {\n // Track the biggest thing we've ever aligned to.\n if (size > this.minalign) {\n this.minalign = size;\n }\n // Find the amount of alignment needed such that `size` is properly\n // aligned after `additional_bytes`\n const align_size = (~(this.bb.capacity() - this.space + additional_bytes) + 1) & (size - 1);\n // Reallocate the buffer if needed.\n while (this.space < align_size + size + additional_bytes) {\n const old_buf_size = this.bb.capacity();\n this.bb = Builder.growByteBuffer(this.bb);\n this.space += this.bb.capacity() - old_buf_size;\n }\n this.pad(align_size);\n }\n pad(byte_size) {\n for (let i = 0; i < byte_size; i++) {\n this.bb.writeInt8(--this.space, 0);\n }\n }\n writeInt8(value) {\n this.bb.writeInt8((this.space -= 1), value);\n }\n writeInt16(value) {\n this.bb.writeInt16((this.space -= 2), value);\n }\n writeInt32(value) {\n this.bb.writeInt32((this.space -= 4), value);\n }\n writeInt64(value) {\n this.bb.writeInt64((this.space -= 8), value);\n }\n writeFloat32(value) {\n this.bb.writeFloat32((this.space -= 4), value);\n }\n writeFloat64(value) {\n this.bb.writeFloat64((this.space -= 8), value);\n }\n /**\n * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int8` to add the buffer.\n */\n addInt8(value) {\n this.prep(1, 0);\n this.writeInt8(value);\n }\n /**\n * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int16` to add the buffer.\n */\n addInt16(value) {\n this.prep(2, 0);\n this.writeInt16(value);\n }\n /**\n * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int32` to add the buffer.\n */\n addInt32(value) {\n this.prep(4, 0);\n this.writeInt32(value);\n }\n /**\n * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int64` to add the buffer.\n */\n addInt64(value) {\n this.prep(8, 0);\n this.writeInt64(value);\n }\n /**\n * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `float32` to add the buffer.\n */\n addFloat32(value) {\n this.prep(4, 0);\n this.writeFloat32(value);\n }\n /**\n * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `float64` to add the buffer.\n */\n addFloat64(value) {\n this.prep(8, 0);\n this.writeFloat64(value);\n }\n addFieldInt8(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt8(value);\n this.slot(voffset);\n }\n }\n addFieldInt16(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt16(value);\n this.slot(voffset);\n }\n }\n addFieldInt32(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt32(value);\n this.slot(voffset);\n }\n }\n addFieldInt64(voffset, value, defaultValue) {\n if (this.force_defaults || value !== defaultValue) {\n this.addInt64(value);\n this.slot(voffset);\n }\n }\n addFieldFloat32(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat32(value);\n this.slot(voffset);\n }\n }\n addFieldFloat64(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat64(value);\n this.slot(voffset);\n }\n }\n addFieldOffset(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addOffset(value);\n this.slot(voffset);\n }\n }\n /**\n * Structs are stored inline, so nothing additional is being added. `d` is always 0.\n */\n addFieldStruct(voffset, value, defaultValue) {\n if (value != defaultValue) {\n this.nested(value);\n this.slot(voffset);\n }\n }\n /**\n * Structures are always stored inline, they need to be created right\n * where they're used. You'll get this assertion failure if you\n * created it elsewhere.\n */\n nested(obj) {\n if (obj != this.offset()) {\n throw new TypeError('FlatBuffers: struct must be serialized inline.');\n }\n }\n /**\n * Should not be creating any other object, string or vector\n * while an object is being constructed\n */\n notNested() {\n if (this.isNested) {\n throw new TypeError('FlatBuffers: object serialization must not be nested.');\n }\n }\n /**\n * Set the current vtable at `voffset` to the current location in the buffer.\n */\n slot(voffset) {\n if (this.vtable !== null)\n this.vtable[voffset] = this.offset();\n }\n /**\n * @returns Offset relative to the end of the buffer.\n */\n offset() {\n return this.bb.capacity() - this.space;\n }\n /**\n * Doubles the size of the backing ByteBuffer and copies the old data towards\n * the end of the new buffer (since we build the buffer backwards).\n *\n * @param bb The current buffer with the existing data\n * @returns A new byte buffer with the old data copied\n * to it. The data is located at the end of the buffer.\n *\n * uint8Array.set() formally takes {Array<number>|ArrayBufferView}, so to pass\n * it a uint8Array we need to suppress the type check:\n * @suppress {checkTypes}\n */\n static growByteBuffer(bb) {\n const old_buf_size = bb.capacity();\n // Ensure we don't grow beyond what fits in an int.\n if (old_buf_size & 0xc0000000) {\n throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');\n }\n const new_buf_size = old_buf_size << 1;\n const nbb = byte_buffer_js_1.ByteBuffer.allocate(new_buf_size);\n nbb.setPosition(new_buf_size - old_buf_size);\n nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);\n return nbb;\n }\n /**\n * Adds on offset, relative to where it will be written.\n *\n * @param offset The offset to add.\n */\n addOffset(offset) {\n this.prep(constants_js_1.SIZEOF_INT, 0); // Ensure alignment is already done.\n this.writeInt32(this.offset() - offset + constants_js_1.SIZEOF_INT);\n }\n /**\n * Start encoding a new object in the buffer. Users will not usually need to\n * call this directly. The FlatBuffers compiler will generate helper methods\n * that call this method internally.\n */\n startObject(numfields) {\n this.notNested();\n if (this.vtable == null) {\n this.vtable = [];\n }\n this.vtable_in_use = numfields;\n for (let i = 0; i < numfields; i++) {\n this.vtable[i] = 0; // This will push additional elements as needed\n }\n this.isNested = true;\n this.object_start = this.offset();\n }\n /**\n * Finish off writing the object that is under construction.\n *\n * @returns The offset to the object inside `dataBuffer`\n */\n endObject() {\n if (this.vtable == null || !this.isNested) {\n throw new Error('FlatBuffers: endObject called without startObject');\n }\n this.addInt32(0);\n const vtableloc = this.offset();\n // Trim trailing zeroes.\n let i = this.vtable_in_use - 1;\n // eslint-disable-next-line no-empty\n for (; i >= 0 && this.vtable[i] == 0; i--) { }\n const trimmed_size = i + 1;\n // Write out the current vtable.\n for (; i >= 0; i--) {\n // Offset relative to the start of the table.\n this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);\n }\n const standard_fields = 2; // The fields below:\n this.addInt16(vtableloc - this.object_start);\n const len = (trimmed_size + standard_fields) * constants_js_1.SIZEOF_SHORT;\n this.addInt16(len);\n // Search for an existing vtable that matches the current one.\n let existing_vtable = 0;\n const vt1 = this.space;\n outer_loop: for (i = 0; i < this.vtables.length; i++) {\n const vt2 = this.bb.capacity() - this.vtables[i];\n if (len == this.bb.readInt16(vt2)) {\n for (let j = constants_js_1.SIZEOF_SHORT; j < len; j += constants_js_1.SIZEOF_SHORT) {\n if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {\n continue outer_loop;\n }\n }\n existing_vtable = this.vtables[i];\n break;\n }\n }\n if (existing_vtable) {\n // Found a match:\n // Remove the current vtable.\n this.space = this.bb.capacity() - vtableloc;\n // Point table to existing vtable.\n this.bb.writeInt32(this.space, existing_vtable - vtableloc);\n }\n else {\n // No match:\n // Add the location of the current vtable to the list of vtables.\n this.vtables.push(this.offset());\n // Point table to current vtable.\n this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);\n }\n this.isNested = false;\n return vtableloc;\n }\n /**\n * Finalize a buffer, poiting to the given `root_table`.\n */\n finish(root_table, opt_file_identifier, opt_size_prefix) {\n const size_prefix = opt_size_prefix ? constants_js_1.SIZE_PREFIX_LENGTH : 0;\n if (opt_file_identifier) {\n const file_identifier = opt_file_identifier;\n this.prep(this.minalign, constants_js_1.SIZEOF_INT + constants_js_1.FILE_IDENTIFIER_LENGTH + size_prefix);\n if (file_identifier.length != constants_js_1.FILE_IDENTIFIER_LENGTH) {\n throw new TypeError('FlatBuffers: file identifier must be length ' +\n constants_js_1.FILE_IDENTIFIER_LENGTH);\n }\n for (let i = constants_js_1.FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {\n this.writeInt8(file_identifier.charCodeAt(i));\n }\n }\n this.prep(this.minalign, constants_js_1.SIZEOF_INT + size_prefix);\n this.addOffset(root_table);\n if (size_prefix) {\n this.addInt32(this.bb.capacity() - this.space);\n }\n this.bb.setPosition(this.space);\n }\n /**\n * Finalize a size prefixed buffer, pointing to the given `root_table`.\n */\n finishSizePrefixed(root_table, opt_file_identifier) {\n this.finish(root_table, opt_file_identifier, true);\n }\n /**\n * This checks a required field has been set in a given table that has\n * just been constructed.\n */\n requiredField(table, field) {\n const table_start = this.bb.capacity() - table;\n const vtable_start = table_start - this.bb.readInt32(table_start);\n const ok = field < this.bb.readInt16(vtable_start) &&\n this.bb.readInt16(vtable_start + field) != 0;\n // If this fails, the caller will show what field needs to be set.\n if (!ok) {\n throw new TypeError('FlatBuffers: field ' + field + ' must be set');\n }\n }\n /**\n * Start a new array/vector of objects. Users usually will not call\n * this directly. The FlatBuffers compiler will create a start/end\n * method for vector types in generated code.\n *\n * @param elem_size The size of each element in the array\n * @param num_elems The number of elements in the array\n * @param alignment The alignment of the array\n */\n startVector(elem_size, num_elems, alignment) {\n this.notNested();\n this.vector_num_elems = num_elems;\n this.prep(constants_js_1.SIZEOF_INT, elem_size * num_elems);\n this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.\n }\n /**\n * Finish off the creation of an array and all its elements. The array must be\n * created with `startVector`.\n *\n * @returns The offset at which the newly created array\n * starts.\n */\n endVector() {\n this.writeInt32(this.vector_num_elems);\n return this.offset();\n }\n /**\n * Encode the string `s` in the buffer using UTF-8. If the string passed has\n * already been seen, we return the offset of the already written string\n *\n * @param s The string to encode\n * @return The offset in the buffer where the encoded string starts\n */\n createSharedString(s) {\n if (!s) {\n return 0;\n }\n if (!this.string_maps) {\n this.string_maps = new Map();\n }\n if (this.string_maps.has(s)) {\n return this.string_maps.get(s);\n }\n const offset = this.createString(s);\n this.string_maps.set(s, offset);\n return offset;\n }\n /**\n * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed\n * instead of a string, it is assumed to contain valid UTF-8 encoded data.\n *\n * @param s The string to encode\n * @return The offset in the buffer where the encoded string starts\n */\n createString(s) {\n if (s === null || s === undefined) {\n return 0;\n }\n let utf8;\n if (s instanceof Uint8Array) {\n utf8 = s;\n }\n else {\n utf8 = this.text_encoder.encode(s);\n }\n this.addInt8(0);\n this.startVector(1, utf8.length, 1);\n this.bb.setPosition((this.space -= utf8.length));\n this.bb.bytes().set(utf8, this.space);\n return this.endVector();\n }\n /**\n * Create a byte vector.\n *\n * @param v The bytes to add\n * @returns The offset in the buffer where the byte vector starts\n */\n createByteVector(v) {\n if (v === null || v === undefined) {\n return 0;\n }\n this.startVector(1, v.length, 1);\n this.bb.setPosition((this.space -= v.length));\n this.bb.bytes().set(v, this.space);\n return this.endVector();\n }\n /**\n * A helper function to pack an object\n *\n * @returns offset of obj\n */\n createObjectOffset(obj) {\n if (obj === null) {\n return 0;\n }\n if (typeof obj === 'string') {\n return this.createString(obj);\n }\n else {\n return obj.pack(this);\n }\n }\n /**\n * A helper function to pack a list of object\n *\n * @returns list of offsets of each non null object\n */\n createObjectOffsetList(list) {\n const ret = [];\n for (let i = 0; i < list.length; ++i) {\n const val = list[i];\n if (val !== null) {\n ret.push(this.createObjectOffset(val));\n }\n else {\n throw new TypeError('FlatBuffers: Argument for createObjectOffsetList cannot contain null.');\n }\n }\n return ret;\n }\n createStructOffsetList(list, startFunc) {\n startFunc(this, list.length);\n this.createObjectOffsetList(list.slice().reverse());\n return this.endVector();\n }\n}\nexports.Builder = Builder;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Encoding = exports.ByteBuffer = exports.Builder = exports.isLittleEndian = exports.int32 = exports.float64 = exports.float32 = exports.SIZE_PREFIX_LENGTH = exports.SIZEOF_SHORT = exports.SIZEOF_INT = exports.FILE_IDENTIFIER_LENGTH = void 0;\nvar constants_js_1 = require(\"./constants.js\");\nObject.defineProperty(exports, \"FILE_IDENTIFIER_LENGTH\", { enumerable: true, get: function () { return constants_js_1.FILE_IDENTIFIER_LENGTH; } });\nObject.defineProperty(exports, \"SIZEOF_INT\", { enumerable: true, get: function () { return constants_js_1.SIZEOF_INT; } });\nObject.defineProperty(exports, \"SIZEOF_SHORT\", { enumerable: true, get: function () { return constants_js_1.SIZEOF_SHORT; } });\nObject.defineProperty(exports, \"SIZE_PREFIX_LENGTH\", { enumerable: true, get: function () { return constants_js_1.SIZE_PREFIX_LENGTH; } });\nvar utils_js_1 = require(\"./utils.js\");\nObject.defineProperty(exports, \"float32\", { enumerable: true, get: function () { return utils_js_1.float32; } });\nObject.defineProperty(exports, \"float64\", { enumerable: true, get: function () { return utils_js_1.float64; } });\nObject.defineProperty(exports, \"int32\", { enumerable: true, get: function () { return utils_js_1.int32; } });\nObject.defineProperty(exports, \"isLittleEndian\", { enumerable: true, get: function () { return utils_js_1.isLittleEndian; } });\nvar builder_js_1 = require(\"./builder.js\");\nObject.defineProperty(exports, \"Builder\", { enumerable: true, get: function () { return builder_js_1.Builder; } });\nvar byte_buffer_js_1 = require(\"./byte-buffer.js\");\nObject.defineProperty(exports, \"ByteBuffer\", { enumerable: true, get: function () { return byte_buffer_js_1.ByteBuffer; } });\nvar encoding_js_1 = require(\"./encoding.js\");\nObject.defineProperty(exports, \"Encoding\", { enumerable: true, get: function () { return encoding_js_1.Encoding; } });\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nexport { MetadataVersion } from './fb/metadata-version.js';\nexport { UnionMode } from './fb/union-mode.js';\nexport { Precision } from './fb/precision.js';\nexport { DateUnit } from './fb/date-unit.js';\nexport { TimeUnit } from './fb/time-unit.js';\nexport { IntervalUnit } from './fb/interval-unit.js';\nexport { MessageHeader } from './fb/message-header.js';\n\n/**\n * Main data type enumeration.\n *\n * Data types in this library are all *logical*. They can be expressed as\n * either a primitive physical type (bytes or bits of some fixed size), a\n * nested type consisting of other data types, or another data type (e.g. a\n * timestamp encoded as an int64).\n *\n * **Note**: Only non-negative enum values are written to an Arrow IPC payload.\n *\n * The rest of the values are specified here so TypeScript can narrow the type\n * signatures further beyond the base Arrow Types. The Arrow DataTypes include\n * metadata like `bitWidth` that impact the type signatures of the values we\n * accept and return.\n *\n * For example, the `Int8Vector` reads 1-byte numbers from an `Int8Array`, an\n * `Int32Vector` reads a 4-byte number from an `Int32Array`, and an `Int64Vector`\n * reads a pair of 4-byte lo, hi 32-bit integers as a zero-copy slice from the\n * underlying `Int32Array`.\n *\n * Library consumers benefit by knowing the narrowest type, since we can ensure\n * the types across all public methods are propagated, and never bail to `any`.\n * These values are _never_ used at runtime, and they will _never_ be written\n * to the flatbuffers metadata of serialized Arrow IPC payloads.\n */\nexport enum Type {\n NONE = 0, /** The default placeholder type */\n Null = 1, /** A NULL type having no physical storage */\n Int = 2, /** Signed or unsigned 8, 16, 32, or 64-bit little-endian integer */\n Float = 3, /** 2, 4, or 8-byte floating point value */\n Binary = 4, /** Variable-length bytes (no guarantee of UTF8-ness) */\n Utf8 = 5, /** UTF8 variable-length string as List<Char> */\n Bool = 6, /** Boolean as 1 bit, LSB bit-packed ordering */\n Decimal = 7, /** Precision-and-scale-based decimal type. Storage type depends on the parameters. */\n Date = 8, /** int32_t days or int64_t milliseconds since the UNIX epoch */\n Time = 9, /** Time as signed 32 or 64-bit integer, representing either seconds, milliseconds, microseconds, or nanoseconds since midnight since midnight */\n Timestamp = 10, /** Exact timestamp encoded with int64 since UNIX epoch (Default unit millisecond) */\n Interval = 11, /** YEAR_MONTH or DAY_TIME or MONTH_DAY_NANO interval */\n List = 12, /** A list of some logical data type */\n Struct = 13, /** Struct of logical types */\n Union = 14, /** Union of logical types */\n FixedSizeBinary = 15, /** Fixed-size binary. Each value occupies the same number of bytes */\n FixedSizeList = 16, /** Fixed-size list. Each value occupies the same number of bytes */\n Map = 17, /** Map of named logical types */\n Duration = 18, /** Measure of elapsed time in either seconds, milliseconds, microseconds or nanoseconds */\n LargeBinary = 19, /** Large variable-length bytes (no guarantee of UTF8-ness) */\n LargeUtf8 = 20, /** Large variable-length string as List<Char> */\n LargeList = 21, /** A list of some logical data type with 64-bit offsets */\n BinaryView = 23, /** Variable-length binary values backed by inline-or-referenced views */\n Utf8View = 24, /** Variable-length UTF8 string values backed by inline-or-referenced views */\n\n Dictionary = -1, /** Dictionary aka Category type */\n Int8 = -2,\n Int16 = -3,\n Int32 = -4,\n Int64 = -5,\n Uint8 = -6,\n Uint16 = -7,\n Uint32 = -8,\n Uint64 = -9,\n Float16 = -10,\n Float32 = -11,\n Float64 = -12,\n DateDay = -13,\n DateMillisecond = -14,\n TimestampSecond = -15,\n TimestampMillisecond = -16,\n TimestampMicrosecond = -17,\n TimestampNanosecond = -18,\n TimeSecond = -19,\n TimeMillisecond = -20,\n TimeMicrosecond = -21,\n TimeNanosecond = -22,\n DenseUnion = -23,\n SparseUnion = -24,\n IntervalDayTime = -25,\n IntervalYearMonth = -26,\n DurationSecond = -27,\n DurationMillisecond = -28,\n DurationMicrosecond = -29,\n DurationNanosecond = -30,\n IntervalMonthDayNano = -31,\n}\n\nexport enum BufferType {\n /**\n * used in List type, Dense Union and variable length primitive types (String, Binary)\n */\n OFFSET = 0,\n\n /**\n * actual data, either fixed width primitive types in slots or variable width delimited by an OFFSET vector\n */\n DATA = 1,\n\n /**\n * Bit vector indicating if each value is null\n */\n VALIDITY = 2,\n\n /**\n * Type vector used in Union type\n */\n TYPE = 3\n}\n", null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Field } from './schema.js';\nimport { Vector } from './vector.js';\nimport { MapRow } from './row/map.js';\nimport { StructRow, StructRowProxy } from './row/struct.js';\nimport { ArrayCtor, BigIntArrayConstructor, TypedArrayConstructor } from './interfaces.js';\nimport { bigIntToNumber } from './util/bigint.js';\n\nimport {\n Type,\n Precision, UnionMode,\n DateUnit, TimeUnit, IntervalUnit\n} from './enum.js';\n\n/** @ignore */\nexport type TimeBitWidth = 32 | 64;\n/** @ignore */\nexport type IntBitWidth = 8 | 16 | 32 | 64;\n/** @ignore */\nexport type IsSigned = { 'true': true; 'false': false };\n\n/** @ignore */\nconst kDataTypeSymbol = Symbol.for('apache-arrow/DataType');\n\nexport interface DataType<TType extends Type = Type, TChildren extends TypeMap = any> {\n readonly TType: TType;\n readonly TArray: any;\n readonly TOffsetArray: any;\n readonly TValue: any;\n readonly TChildren: TChildren;\n readonly ArrayType: any;\n readonly OffsetArrayType: ArrayCtor<Int32Array | BigInt64Array>;\n readonly children: Field<TChildren[keyof TChildren]>[];\n}\n\n/**\n * An abstract base class for classes that encapsulate metadata about each of\n * the logical types that Arrow can represent.\n */\nexport abstract class DataType<TType extends Type = Type, TChildren extends TypeMap = any> {\n\n /**\n * Check if an object is an instance of DataType.\n * This works across different instances of the Arrow library.\n * \n * Note: We intentionally do NOT implement Symbol.hasInstance here because\n * it would break instanceof checks for subclasses like Struct, Dictionary, etc.\n * Use DataType.isDataType() for cross-library type checking instead.\n * @nocollapse\n */\n static isDataType(x: any): x is DataType {\n return x?.[kDataTypeSymbol] === true;\n }\n\n /** @internal */\n declare public readonly [kDataTypeSymbol]: true;\n\n declare public [Symbol.toStringTag]: string;\n\n /** @nocollapse */ static isNull(x: any): x is Null { return x?.typeId === Type.Null; }\n /** @nocollapse */ static isInt(x: any): x is Int_ { return x?.typeId === Type.Int; }\n /** @nocollapse */ static isFloat(x: any): x is Float { return x?.typeId === Type.Float; }\n /** @nocollapse */ static isBinary(x: any): x is Binary { return x?.typeId === Type.Binary; }\n /** @nocollapse */ static isBinaryView(x: any): x is BinaryView { return x?.typeId === Type.BinaryView; }\n /** @nocollapse */ static isLargeBinary(x: any): x is LargeBinary { return x?.typeId === Type.LargeBinary; }\n /** @nocollapse */ static isUtf8(x: any): x is Utf8 { return x?.typeId === Type.Utf8; }\n /** @nocollapse */ static isUtf8View(x: any): x is Utf8View { return x?.typeId === Type.Utf8View; }\n /** @nocollapse */ static isLargeUtf8(x: any): x is LargeUtf8 { return x?.typeId === Type.LargeUtf8; }\n /** @nocollapse */ static isBool(x: any): x is Bool { return x?.typeId === Type.Bool; }\n /** @nocollapse */ static isDecimal(x: any): x is Decimal { return x?.typeId === Type.Decimal; }\n /** @nocollapse */ static isDate(x: any): x is Date_ { return x?.typeId === Type.Date; }\n /** @nocollapse */ static isTime(x: any): x is Time_ { return x?.typeId === Type.Time; }\n /** @nocollapse */ static isTimestamp(x: any): x is Timestamp_ { return x?.typeId === Type.Timestamp; }\n /** @nocollapse */ static isInterval(x: any): x is Interval_ { return x?.typeId === Type.Interval; }\n /** @nocollapse */ static isDuration(x: any): x is Duration { return x?.typeId === Type.Duration; }\n /** @nocollapse */ static isList(x: any): x is List { return x?.typeId === Type.List; }\n /** @nocollapse */ static isLargeList(x: any): x is LargeList { return x?.typeId === Type.LargeList; }\n // TODO: Implement ListView type\n // /** @nocollapse */ static isListView(x: any): x is ListView { return x?.typeId === Type.ListView; }\n /** @nocollapse */ static isStruct(x: any): x is Struct { return x?.typeId === Type.Struct; }\n /** @nocollapse */ static isUnion(x: any): x is Union_ { return x?.typeId === Type.Union; }\n /** @nocollapse */ static isFixedSizeBinary(x: any): x is FixedSizeBinary { return x?.typeId === Type.FixedSizeBinary; }\n /** @nocollapse */ static isFixedSizeList(x: any): x is FixedSizeList { return x?.typeId === Type.FixedSizeList; }\n /** @nocollapse */ static isMap(x: any): x is Map_ { return x?.typeId === Type.Map; }\n /** @nocollapse */ static isDictionary(x: any): x is Dictionary { return x?.typeId === Type.Dictionary; }\n\n /** @nocollapse */ static isDenseUnion(x: any): x is DenseUnion { return DataType.isUnion(x) && x.mode === UnionMode.Dense; }\n /** @nocollapse */ static isSparseUnion(x: any): x is SparseUnion { return DataType.isUnion(x) && x.mode === UnionMode.Sparse; }\n\n declare public readonly typeId: TType;\n\n constructor(typeId: TType) {\n this.typeId = typeId;\n }\n\n protected static [Symbol.toStringTag] = ((proto: DataType) => {\n (<any>proto).children = null;\n (<any>proto).ArrayType = Array;\n (<any>proto).OffsetArrayType = Int32Array;\n (<any>proto)[kDataTypeSymbol] = true;\n return proto[Symbol.toStringTag] = 'DataType';\n })(DataType.prototype);\n}\n\n/** @ignore */\nexport interface Null extends DataType<Type.Null> { TArray: void; TValue: null }\n/** @ignore */\nexport class Null extends DataType<Type.Null> {\n constructor() {\n super(Type.Null);\n }\n public toString() { return `Null`; }\n protected static [Symbol.toStringTag] = ((proto: Null) => proto[Symbol.toStringTag] = 'Null')(Null.prototype);\n}\n\n/** @ignore */\ntype Ints = Type.Int | Type.Int8 | Type.Int16 | Type.Int32 | Type.Int64 | Type.Uint8 | Type.Uint16 | Type.Uint32 | Type.Uint64;\n/** @ignore */\ntype IType = {\n [Type.Int]: { bitWidth: IntBitWidth; isSigned: true | false; TArray: IntArray; TValue: number | bigint };\n [Type.Int8]: { bitWidth: 8; isSigned: true; TArray: Int8Array; TValue: number };\n [Type.Int16]: { bitWidth: 16; isSigned: true; TArray: Int16Array; TValue: number };\n [Type.Int32]: { bitWidth: 32; isSigned: true; TArray: Int32Array; TValue: number };\n [Type.Int64]: { bitWidth: 64; isSigned: true; TArray: BigInt64Array; TValue: bigint };\n [Type.Uint8]: { bitWidth: 8; isSigned: false; TArray: Uint8Array; TValue: number };\n [Type.Uint16]: { bitWidth: 16; isSigned: false; TArray: Uint16Array; TValue: number };\n [Type.Uint32]: { bitWidth: 32; isSigned: false; TArray: Uint32Array; TValue: number };\n [Type.Uint64]: { bitWidth: 64; isSigned: false; TArray: BigUint64Array; TValue: bigint };\n};\n\n/** @ignore */\ninterface Int_<T extends Ints = Ints> extends DataType<T> { TArray: IType[T]['TArray']; TValue: IType[T]['TValue'] }\n/** @ignore */\nclass Int_<T extends Ints = Ints> extends DataType<T> {\n constructor(public readonly isSigned: IType[T]['isSigned'],\n public readonly bitWidth: IType[T]['bitWidth']) {\n super(Type.Int as T);\n }\n public get ArrayType() {\n switch (this.bitWidth) {\n case 8: return this.isSigned ? Int8Array : Uint8Array;\n case 16: return this.isSigned ? Int16Array : Uint16Array;\n case 32: return this.isSigned ? Int32Array : Uint32Array;\n case 64: return this.isSigned ? BigInt64Array : BigUint64Array;\n }\n throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n }\n public toString() { return `${this.isSigned ? `I` : `Ui`}nt${this.bitWidth}`; }\n protected static [Symbol.toStringTag] = ((proto: Int_) => {\n (<any>proto).isSigned = null;\n (<any>proto).bitWidth = null;\n return proto[Symbol.toStringTag] = 'Int';\n })(Int_.prototype);\n}\n\nexport { Int_ as Int };\n\n/** @ignore */\nexport class Int8 extends Int_<Type.Int8> {\n constructor() { super(true, 8); }\n public get ArrayType() { return Int8Array; }\n}\n/** @ignore */\nexport class Int16 extends Int_<Type.Int16> {\n constructor() { super(true, 16); }\n public get ArrayType() { return Int16Array; }\n}\n/** @ignore */\nexport class Int32 extends Int_<Type.Int32> {\n constructor() { super(true, 32); }\n public get ArrayType() { return Int32Array; }\n}\n/** @ignore */\nexport class Int64 extends Int_<Type.Int64> {\n constructor() { super(true, 64); }\n public get ArrayType() { return BigInt64Array; }\n}\n/** @ignore */\nexport class Uint8 extends Int_<Type.Uint8> {\n constructor() { super(false, 8); }\n public get ArrayType() { return Uint8Array; }\n}\n/** @ignore */\nexport class Uint16 extends Int_<Type.Uint16> {\n constructor() { super(false, 16); }\n public get ArrayType() { return Uint16Array; }\n}\n/** @ignore */\nexport class Uint32 extends Int_<Type.Uint32> {\n constructor() { super(false, 32); }\n public get ArrayType() { return Uint32Array; }\n}\n/** @ignore */\nexport class Uint64 extends Int_<Type.Uint64> {\n constructor() { super(false, 64); }\n public get ArrayType() { return BigUint64Array; }\n}\n\nObject.defineProperty(Int8.prototype, 'ArrayType', { value: Int8Array });\nObject.defineProperty(Int16.prototype, 'ArrayType', { value: Int16Array });\nObject.defineProperty(Int32.prototype, 'ArrayType', { value: Int32Array });\nObject.defineProperty(Int64.prototype, 'ArrayType', { value: BigInt64Array });\nObject.defineProperty(Uint8.prototype, 'ArrayType', { value: Uint8Array });\nObject.defineProperty(Uint16.prototype, 'ArrayType', { value: Uint16Array });\nObject.defineProperty(Uint32.prototype, 'ArrayType', { value: Uint32Array });\nObject.defineProperty(Uint64.prototype, 'ArrayType', { value: BigUint64Array });\n\n/** @ignore */\ntype Floats = Type.Float | Type.Float16 | Type.Float32 | Type.Float64;\n/** @ignore */\ntype FType = {\n [Type.Float]: { precision: Precision; TArray: FloatArray; TValue: number };\n [Type.Float16]: { precision: Precision.HALF; TArray: Uint16Array; TValue: number };\n [Type.Float32]: { precision: Precision.SINGLE; TArray: Float32Array; TValue: number };\n [Type.Float64]: { precision: Precision.DOUBLE; TArray: Float64Array; TValue: number };\n};\n\n/** @ignore */\nexport interface Float<T extends Floats = Floats> extends DataType<T> { TArray: FType[T]['TArray']; TValue: number }\n/** @ignore */\nexport class Float<T extends Floats = Floats> extends DataType<T> {\n constructor(public readonly precision: Precision) {\n super(Type.Float as T);\n }\n public get ArrayType(): TypedArrayConstructor<FType[T]['TArray']> {\n switch (this.precision) {\n case Precision.HALF: return Uint16Array;\n case Precision.SINGLE: return Float32Array;\n case Precision.DOUBLE: return Float64Array;\n }\n // @ts-ignore\n throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n }\n public toString() { return `Float${(this.precision << 5) || 16}`; }\n protected static [Symbol.toStringTag] = ((proto: Float) => {\n (<any>proto).precision = null;\n return proto[Symbol.toStringTag] = 'Float';\n })(Float.prototype);\n}\n\n/** @ignore */\nexport class Float16 extends Float<Type.Float16> { constructor() { super(Precision.HALF); } }\n/** @ignore */\nexport class Float32 extends Float<Type.Float32> { constructor() { super(Precision.SINGLE); } }\n/** @ignore */\nexport class Float64 extends Float<Type.Float64> { constructor() { super(Precision.DOUBLE); } }\n\nObject.defineProperty(Float16.prototype, 'ArrayType', { value: Uint16Array });\nObject.defineProperty(Float32.prototype, 'ArrayType', { value: Float32Array });\nObject.defineProperty(Float64.prototype, 'ArrayType', { value: Float64Array });\n\n/** @ignore */\nexport interface Binary extends DataType<Type.Binary> { TArray: Uint8Array; TOffsetArray: Int32Array; TValue: Uint8Array; ArrayType: TypedArrayConstructor<Uint8Array>; OffsetArrayType: TypedArrayConstructor<Int32Array> }\n/** @ignore */\nexport class Binary extends DataType<Type.Binary> {\n constructor() {\n super(Type.Binary);\n }\n public toString() { return `Binary`; }\n protected static [Symbol.toStringTag] = ((proto: Binary) => {\n (<any>proto).ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Binary';\n })(Binary.prototype);\n}\n\n/** @ignore */\nexport interface BinaryView extends DataType<Type.BinaryView> {\n TArray: Uint8Array;\n TValue: Uint8Array;\n ArrayType: TypedArrayConstructor<Uint8Array>;\n}\n/** @ignore */\nexport class BinaryView extends DataType<Type.BinaryView> {\n public static readonly ELEMENT_WIDTH = 16;\n public static readonly INLINE_CAPACITY = 12;\n public static readonly LENGTH_OFFSET = 0;\n public static readonly INLINE_OFFSET = 4;\n public static readonly BUFFER_INDEX_OFFSET = 8;\n public static readonly BUFFER_OFFSET_OFFSET = 12;\n constructor() {\n super(Type.BinaryView);\n }\n public toString() { return `BinaryView`; }\n protected static [Symbol.toStringTag] = ((proto: BinaryView) => {\n (<any>proto).ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'BinaryView';\n })(BinaryView.prototype);\n}\n\n/** @ignore */\nexport interface LargeBinary extends DataType<Type.LargeBinary> { TArray: Uint8Array; TOffsetArray: BigInt64Array; TValue: Uint8Array; ArrayType: TypedArrayConstructor<Uint8Array>; OffsetArrayType: BigIntArrayConstructor<BigInt64Array> }\n/** @ignore */\nexport class LargeBinary extends DataType<Type.LargeBinary> {\n constructor() {\n super(Type.LargeBinary);\n }\n public toString() { return `LargeBinary`; }\n protected static [Symbol.toStringTag] = ((proto: LargeBinary) => {\n (<any>proto).ArrayType = Uint8Array;\n (<any>proto).OffsetArrayType = BigInt64Array;\n return proto[Symbol.toStringTag] = 'LargeBinary';\n })(LargeBinary.prototype);\n}\n\n/** @ignore */\n/** @ignore */\nexport interface Utf8 extends DataType<Type.Utf8> { TArray: Uint8Array; TOffsetArray: Int32Array; TValue: string; ArrayType: TypedArrayConstructor<Uint8Array>; OffsetArrayType: TypedArrayConstructor<Int32Array> }\n/** @ignore */\nexport class Utf8 extends DataType<Type.Utf8> {\n constructor() {\n super(Type.Utf8);\n }\n public toString() { return `Utf8`; }\n protected static [Symbol.toStringTag] = ((proto: Utf8) => {\n (<any>proto).ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Utf8';\n })(Utf8.prototype);\n}\n\n/** @ignore */\nexport interface Utf8View extends DataType<Type.Utf8View> {\n TArray: Uint8Array;\n TValue: string;\n ArrayType: TypedArrayConstructor<Uint8Array>;\n}\n/** @ignore */\nexport class Utf8View extends DataType<Type.Utf8View> {\n public static readonly ELEMENT_WIDTH = BinaryView.ELEMENT_WIDTH;\n public static readonly INLINE_CAPACITY = BinaryView.INLINE_CAPACITY;\n constructor() {\n super(Type.Utf8View);\n }\n public toString() { return `Utf8View`; }\n protected static [Symbol.toStringTag] = ((proto: Utf8View) => {\n (<any>proto).ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Utf8View';\n })(Utf8View.prototype);\n}\n\n/** @ignore */\nexport interface LargeUtf8 extends DataType<Type.LargeUtf8> { TArray: Uint8Array; TOffsetArray: BigInt64Array; TValue: string; ArrayType: TypedArrayConstructor<Uint8Array>; OffsetArrayType: BigIntArrayConstructor<BigInt64Array> }\n/** @ignore */\nexport class LargeUtf8 extends DataType<Type.LargeUtf8> {\n constructor() {\n super(Type.LargeUtf8);\n }\n public toString() { return `LargeUtf8`; }\n protected static [Symbol.toStringTag] = ((proto: LargeUtf8) => {\n (<any>proto).ArrayType = Uint8Array;\n (<any>proto).OffsetArrayType = BigInt64Array;\n return proto[Symbol.toStringTag] = 'LargeUtf8';\n })(LargeUtf8.prototype);\n}\n\n/** @ignore */\n/** @ignore */\nexport interface Bool extends DataType<Type.Bool> { TArray: Uint8Array; TValue: boolean; ArrayType: TypedArrayConstructor<Uint8Array> }\n/** @ignore */\nexport class Bool extends DataType<Type.Bool> {\n constructor() {\n super(Type.Bool);\n }\n public toString() { return `Bool`; }\n protected static [Symbol.toStringTag] = ((proto: Bool) => {\n (<any>proto).ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Bool';\n })(Bool.prototype);\n}\n\n/** @ignore */\nexport interface Decimal extends DataType<Type.Decimal> { TArray: Uint32Array; TValue: Uint32Array; ArrayType: TypedArrayConstructor<Uint32Array> }\n/** @ignore */\nexport class Decimal extends DataType<Type.Decimal> {\n constructor(public readonly scale: number,\n public readonly precision: number,\n public readonly bitWidth: number = 128) {\n super(Type.Decimal);\n }\n public toString() { return `Decimal[${this.precision}e${this.scale > 0 ? `+` : ``}${this.scale}]`; }\n protected static [Symbol.toStringTag] = ((proto: Decimal) => {\n (<any>proto).scale = null;\n (<any>proto).precision = null;\n (<any>proto).ArrayType = Uint32Array;\n return proto[Symbol.toStringTag] = 'Decimal';\n })(Decimal.prototype);\n}\n\n/** @ignore */\nexport type Dates = Type.Date | Type.DateDay | Type.DateMillisecond;\n/** @ignore */\ntype DateType = {\n [Type.Date]: { TArray: Int32Array | BigInt64Array };\n [Type.DateDay]: { TArray: Int32Array };\n [Type.DateMillisecond]: { TArray: BigInt64Array };\n};\n/** @ignore */\nexport interface Date_<T extends Dates = Dates> extends DataType<T> {\n TArray: DateType[T]['TArray'];\n TValue: number;\n}\n/** @ignore */\nexport class Date_<T extends Dates = Dates> extends DataType<T> {\n constructor(public readonly unit: DateUnit) {\n super(Type.Date as T);\n }\n public toString() { return `Date${(this.unit + 1) * 32}<${DateUnit[this.unit]}>`; }\n\n public get ArrayType() {\n return this.unit === DateUnit.DAY ? Int32Array : BigInt64Array;\n }\n protected static [Symbol.toStringTag] = ((proto: Date_) => {\n (<any>proto).unit = null;\n return proto[Symbol.toStringTag] = 'Date';\n })(Date_.prototype);\n}\n\n/** @ignore */\nexport class DateDay extends Date_<Type.DateDay> { constructor() { super(DateUnit.DAY); } }\n/**\n * A signed 64-bit date representing the elapsed time since UNIX epoch (1970-01-01) in milliseconds.\n * According to the specification, this should be treated as the number of days, in milliseconds, since the UNIX epoch.\n * Therefore, values must be evenly divisible by `86_400_000` (the number of milliseconds in a standard day).\n *\n * Practically, validation that values of this type are evenly divisible by `86_400_000` is not enforced by this library\n * for performance and usability reasons.\n *\n * Users should prefer to use {@link DateDay} to cleanly represent the number of days. For JS dates,\n * {@link TimestampMillisecond} is the preferred type.\n *\n * @ignore\n */\nexport class DateMillisecond extends Date_<Type.DateMillisecond> { constructor() { super(DateUnit.MILLISECOND); } }\n\n/** @ignore */\ntype Times = Type.Time | Type.TimeSecond | Type.TimeMillisecond | Type.TimeMicrosecond | Type.TimeNanosecond;\n/** @ignore */\ntype TimesType = {\n [Type.Time]: { unit: TimeUnit; TValue: number | bigint; TArray: Int32Array | BigInt64Array };\n [Type.TimeSecond]: { unit: TimeUnit.SECOND; TValue: number; TArray: Int32Array };\n [Type.TimeMillisecond]: { unit: TimeUnit.MILLISECOND; TValue: number; TArray: Int32Array };\n [Type.TimeMicrosecond]: { unit: TimeUnit.MICROSECOND; TValue: bigint; TArray: BigInt64Array };\n [Type.TimeNanosecond]: { unit: TimeUnit.NANOSECOND; TValue: bigint; TArray: BigInt64Array };\n};\n\n/** @ignore */\ninterface Time_<T extends Times = Times> extends DataType<T> {\n TArray: TimesType[T]['TArray'];\n TValue: TimesType[T]['TValue'];\n}\n/** @ignore */\nclass Time_<T extends Times = Times> extends DataType<T> {\n constructor(public readonly unit: TimesType[T]['unit'],\n public readonly bitWidth: TimeBitWidth) {\n super(Type.Time as T);\n }\n public toString() { return `Time${this.bitWidth}<${TimeUnit[this.unit]}>`; }\n public get ArrayType() {\n switch (this.bitWidth) {\n case 32: return Int32Array;\n case 64: return BigInt64Array;\n }\n // @ts-ignore\n throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n }\n protected static [Symbol.toStringTag] = ((proto: Time_) => {\n (<any>proto).unit = null;\n (<any>proto).bitWidth = null;\n return proto[Symbol.toStringTag] = 'Time';\n })(Time_.prototype);\n}\n\nexport { Time_ as Time };\n\n/** @ignore */\nexport class TimeSecond extends Time_<Type.TimeSecond> { constructor() { super(TimeUnit.SECOND, 32); } }\n/** @ignore */\nexport class TimeMillisecond extends Time_<Type.TimeMillisecond> { constructor() { super(TimeUnit.MILLISECOND, 32); } }\n/** @ignore */\nexport class TimeMicrosecond extends Time_<Type.TimeMicrosecond> { constructor() { super(TimeUnit.MICROSECOND, 64); } }\n/** @ignore */\nexport class TimeNanosecond extends Time_<Type.TimeNanosecond> { constructor() { super(TimeUnit.NANOSECOND, 64); } }\n\n/** @ignore */\ntype Timestamps = Type.Timestamp | Type.TimestampSecond | Type.TimestampMillisecond | Type.TimestampMicrosecond | Type.TimestampNanosecond;\n/** @ignore */\ninterface Timestamp_<T extends Timestamps = Timestamps> extends DataType<T> {\n TArray: BigInt64Array;\n TValue: number;\n ArrayType: BigIntArrayConstructor<BigInt64Array>;\n}\n\n/** @ignore */\nclass Timestamp_<T extends Timestamps = Timestamps> extends DataType<T> {\n constructor(public readonly unit: TimeUnit,\n public readonly timezone?: string | null) {\n super(Type.Timestamp as T);\n }\n public toString() { return `Timestamp<${TimeUnit[this.unit]}${this.timezone ? `, ${this.timezone}` : ``}>`; }\n protected static [Symbol.toStringTag] = ((proto: Timestamp_) => {\n (<any>proto).unit = null;\n (<any>proto).timezone = null;\n (<any>proto).ArrayType = BigInt64Array;\n return proto[Symbol.toStringTag] = 'Timestamp';\n })(Timestamp_.prototype);\n}\n\nexport { Timestamp_ as Timestamp };\n\n/** @ignore */\nexport class TimestampSecond extends Timestamp_<Type.TimestampSecond> { constructor(timezone?: string | null) { super(TimeUnit.SECOND, timezone); } }\n/** @ignore */\nexport class TimestampMillisecond extends Timestamp_<Type.TimestampMillisecond> { constructor(timezone?: string | null) { super(TimeUnit.MILLISECOND, timezone); } }\n/** @ignore */\nexport class TimestampMicrosecond extends Timestamp_<Type.TimestampMicrosecond> { constructor(timezone?: string | null) { super(TimeUnit.MICROSECOND, timezone); } }\n/** @ignore */\nexport class TimestampNanosecond extends Timestamp_<Type.TimestampNanosecond> { constructor(timezone?: string | null) { super(TimeUnit.NANOSECOND, timezone); } }\n\n/** @ignore */\ntype Intervals = Type.Interval | Type.IntervalDayTime | Type.IntervalYearMonth | Type.IntervalMonthDayNano;\n/** @ignore */\ninterface Interval_<T extends Intervals = Intervals> extends DataType<T> {\n TArray: Int32Array;\n TValue: Int32Array;\n ArrayType: TypedArrayConstructor<Int32Array>;\n}\n\n/** @ignore */\nclass Interval_<T extends Intervals = Intervals> extends DataType<T> {\n constructor(public readonly unit: IntervalUnit) {\n super(Type.Interval as T);\n }\n public toString() { return `Interval<${IntervalUnit[this.unit]}>`; }\n protected static [Symbol.toStringTag] = ((proto: Interval_) => {\n (<any>proto).unit = null;\n (<any>proto).ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Interval';\n })(Interval_.prototype);\n}\n\nexport { Interval_ as Interval };\n\n/** @ignore */\nexport class IntervalDayTime extends Interval_<Type.IntervalDayTime> { constructor() { super(IntervalUnit.DAY_TIME); } }\n/** @ignore */\nexport class IntervalYearMonth extends Interval_<Type.IntervalYearMonth> { constructor() { super(IntervalUnit.YEAR_MONTH); } }\n/** @ignore */\nexport class IntervalMonthDayNano extends Interval_<Type.IntervalMonthDayNano> { constructor() { super(IntervalUnit.MONTH_DAY_NANO); } }\n\n/** @ignore */\ntype Durations = Type.Duration | Type.DurationSecond | Type.DurationMillisecond | Type.DurationMicrosecond | Type.DurationNanosecond;\n/** @ignore */\nexport interface Duration<T extends Durations = Durations> extends DataType<T> {\n TArray: BigInt64Array;\n TValue: bigint;\n ArrayType: BigIntArrayConstructor<BigInt64Array>;\n}\n\n/** @ignore */\nexport class Duration<T extends Durations = Durations> extends DataType<T> {\n constructor(public readonly unit: TimeUnit) {\n super(Type.Duration as T);\n }\n public toString() { return `Duration<${TimeUnit[this.unit]}>`; }\n protected static [Symbol.toStringTag] = ((proto: Duration) => {\n (<any>proto).unit = null;\n (<any>proto).ArrayType = BigInt64Array;\n return proto[Symbol.toStringTag] = 'Duration';\n })(Duration.prototype);\n}\n\n/** @ignore */\nexport class DurationSecond extends Duration<Type.DurationSecond> { constructor() { super(TimeUnit.SECOND); } }\n/** @ignore */\nexport class DurationMillisecond extends Duration<Type.DurationMillisecond> { constructor() { super(TimeUnit.MILLISECOND); } }\n/** @ignore */\nexport class DurationMicrosecond extends Duration<Type.DurationMicrosecond> { constructor() { super(TimeUnit.MICROSECOND); } }\n/** @ignore */\nexport class DurationNanosecond extends Duration<Type.DurationNanosecond> { constructor() { super(TimeUnit.NANOSECOND); } }\n\n\n/** @ignore */\nexport interface List<T extends DataType = any> extends DataType<Type.List, { [0]: T }> {\n TArray: Array<T>;\n TValue: Vector<T>;\n}\n\n/** @ignore */\nexport class List<T extends DataType = any> extends DataType<Type.List, { [0]: T }> {\n constructor(child: Field<T>) {\n super(Type.List);\n this.children = [child];\n }\n public declare readonly children: Field<T>[];\n public toString() { return `List<${this.valueType}>`; }\n public get valueType(): T { return this.children[0].type as T; }\n public get valueField(): Field<T> { return this.children[0] as Field<T>; }\n public get ArrayType(): T['ArrayType'] { return this.valueType.ArrayType; }\n protected static [Symbol.toStringTag] = ((proto: List) => {\n (<any>proto).children = null;\n return proto[Symbol.toStringTag] = 'List';\n })(List.prototype);\n}\n\n/** @ignore */\nexport interface LargeList<T extends DataType = any> extends DataType<Type.LargeList, { [0]: T }> {\n TArray: Array<T>;\n TValue: Vector<T>;\n TOffsetArray: BigInt64Array;\n OffsetArrayType: BigIntArrayConstructor<BigInt64Array>;\n}\n\n/**\n * Like `List`, but with 64-bit value offsets \u2014 use this when a list column's\n * cumulative child-element count would exceed `List`'s 32-bit offset ceiling\n * of `2^31 - 1`. Otherwise prefer `List`.\n *\n * Values round-trip losslessly through Arrow IPC at any 64-bit offset magnitude.\n * In-process JavaScript APIs (`.get(i)`, slicing, builders) narrow offsets to a\n * JS `number` and are therefore bounded by `Number.MAX_SAFE_INTEGER`\n * (`2^53 - 1`, about 9\u00D710^15) cumulative child elements per column. If an\n * operation would cross that ceiling, it throws a `TypeError` rather than\n * silently returning data at a truncated index. This matches the behavior of\n * `LargeUtf8` and `LargeBinary`.\n *\n * @ignore\n */\nexport class LargeList<T extends DataType = any> extends DataType<Type.LargeList, { [0]: T }> {\n constructor(child: Field<T>) {\n super(Type.LargeList);\n this.children = [child];\n }\n public declare readonly children: Field<T>[];\n public toString() { return `LargeList<${this.valueType}>`; }\n public get valueType(): T { return this.children[0].type as T; }\n public get valueField(): Field<T> { return this.children[0] as Field<T>; }\n public get ArrayType(): T['ArrayType'] { return this.valueType.ArrayType; }\n protected static [Symbol.toStringTag] = ((proto: LargeList) => {\n (<any>proto).children = null;\n (<any>proto).OffsetArrayType = BigInt64Array;\n return proto[Symbol.toStringTag] = 'LargeList';\n })(LargeList.prototype);\n}\n\n/** @ignore */\nexport interface Struct<T extends TypeMap = any> extends DataType<Type.Struct, T> {\n TArray: Array<StructRowProxy<T>>;\n TValue: StructRowProxy<T>;\n dataTypes: T;\n}\n\n/** @ignore */\nexport class Struct<T extends TypeMap = any> extends DataType<Type.Struct, T> {\n public declare _row: StructRow<T>;\n public declare readonly children: Field<T[keyof T]>[];\n constructor(children: Field<T[keyof T]>[]) {\n super(Type.Struct);\n this.children = children;\n }\n public toString() { return `Struct<{${this.children.map((f) => `${f.name}:${f.type}`).join(`, `)}}>`; }\n protected static [Symbol.toStringTag] = ((proto: Struct) => {\n (<any>proto).children = null;\n return proto[Symbol.toStringTag] = 'Struct';\n })(Struct.prototype);\n}\n\n/** @ignore */\ntype Unions = Type.Union | Type.DenseUnion | Type.SparseUnion;\n/** @ignore */\ninterface Union_<T extends Unions = Unions> extends DataType<T> { TArray: Int8Array; TValue: any; ArrayType: TypedArrayConstructor<Int8Array> }\n/** @ignore */\nclass Union_<T extends Unions = Unions> extends DataType<T> {\n public declare readonly mode: UnionMode;\n public declare readonly typeIds: Int32Array;\n public declare readonly children: Field<any>[];\n public declare readonly typeIdToChildIndex: { [key: number]: number };\n constructor(mode: UnionMode,\n typeIds: number[] | Int32Array,\n children: Field<any>[]) {\n super(Type.Union as T);\n this.mode = mode;\n this.children = children;\n this.typeIds = typeIds = Int32Array.from(typeIds);\n this.typeIdToChildIndex = typeIds.reduce((typeIdToChildIndex, typeId, idx) => (typeIdToChildIndex[typeId] = idx) && typeIdToChildIndex || typeIdToChildIndex, Object.create(null) as { [key: number]: number });\n }\n public toString() {\n return `${this[Symbol.toStringTag]}<${this.children.map((x) => `${x.type}`).join(` | `)\n }>`;\n }\n protected static [Symbol.toStringTag] = ((proto: Union_) => {\n (<any>proto).mode = null;\n (<any>proto).typeIds = null;\n (<any>proto).children = null;\n (<any>proto).typeIdToChildIndex = null;\n (<any>proto).ArrayType = Int8Array;\n return proto[Symbol.toStringTag] = 'Union';\n })(Union_.prototype);\n}\n\nexport { Union_ as Union };\n\n/** @ignore */\nexport class DenseUnion extends Union_<Type.DenseUnion> {\n constructor(typeIds: number[] | Int32Array, children: Field[]) {\n super(UnionMode.Dense, typeIds, children);\n }\n}\n\n/** @ignore */\nexport class SparseUnion extends Union_<Type.SparseUnion> {\n constructor(typeIds: number[] | Int32Array, children: Field[]) {\n super(UnionMode.Sparse, typeIds, children);\n }\n}\n\n/** @ignore */\nexport interface FixedSizeBinary extends DataType<Type.FixedSizeBinary> {\n TArray: Uint8Array;\n TValue: Uint8Array;\n ArrayType: TypedArrayConstructor<Uint8Array>;\n}\n\n/** @ignore */\nexport class FixedSizeBinary extends DataType<Type.FixedSizeBinary> {\n constructor(public readonly byteWidth: number) {\n super(Type.FixedSizeBinary);\n }\n public toString() { return `FixedSizeBinary[${this.byteWidth}]`; }\n protected static [Symbol.toStringTag] = ((proto: FixedSizeBinary) => {\n (<any>proto).byteWidth = null;\n (<any>proto).ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'FixedSizeBinary';\n })(FixedSizeBinary.prototype);\n}\n\n/** @ignore */\nexport interface FixedSizeList<T extends DataType = any> extends DataType<Type.FixedSizeList, { [0]: T }> {\n TArray: Array<T['TArray']>;\n TValue: Vector<T>;\n}\n\n/** @ignore */\nexport class FixedSizeList<T extends DataType = any> extends DataType<Type.FixedSizeList, { [0]: T }> {\n public declare readonly children: Field<T>[];\n constructor(public readonly listSize: number, child: Field<T>) {\n super(Type.FixedSizeList);\n this.children = [child];\n }\n public get valueType(): T { return this.children[0].type as T; }\n public get valueField(): Field<T> { return this.children[0] as Field<T>; }\n public get ArrayType(): T['ArrayType'] { return this.valueType.ArrayType; }\n public toString() { return `FixedSizeList[${this.listSize}]<${this.valueType}>`; }\n protected static [Symbol.toStringTag] = ((proto: FixedSizeList) => {\n (<any>proto).children = null;\n (<any>proto).listSize = null;\n return proto[Symbol.toStringTag] = 'FixedSizeList';\n })(FixedSizeList.prototype);\n}\n\n/** @ignore */\nexport interface Map_<TKey extends DataType = any, TValue extends DataType = any> extends DataType<Type.Map, { [0]: Struct<{ key: TKey; value: TValue }> }> {\n TArray: Array<Map<TKey['TValue'], TValue['TValue'] | null>>;\n TChild: Struct<{ key: TKey; value: TValue }>;\n TValue: MapRow<TKey, TValue>;\n}\n\n/** @ignore */\nexport class Map_<TKey extends DataType = any, TValue extends DataType = any> extends DataType<Type.Map, { [0]: Struct<{ key: TKey; value: TValue }> }> {\n constructor(entries: Field<Struct<{ key: TKey; value: TValue }>>, keysSorted = false) {\n super(Type.Map);\n this.children = [entries];\n this.keysSorted = keysSorted;\n // ARROW-8716\n // https://github.com/apache/arrow/issues/17168\n if (entries) {\n (entries as any)['name'] = 'entries';\n if ((entries as any)?.type?.children) {\n const key = (entries as any)?.type?.children[0];\n if (key) {\n key['name'] = 'key';\n }\n const val = (entries as any)?.type?.children[1];\n if (val) {\n val['name'] = 'value';\n }\n }\n }\n }\n public declare readonly keysSorted: boolean;\n public declare readonly children: Field<Struct<{ key: TKey; value: TValue }>>[];\n public get keyType(): TKey { return this.children[0].type.children[0].type as TKey; }\n public get valueType(): TValue { return this.children[0].type.children[1].type as TValue; }\n public get childType() { return this.children[0].type as Struct<{ key: TKey; value: TValue }>; }\n public toString() { return `Map<{${this.children[0].type.children.map((f) => `${f.name}:${f.type}`).join(`, `)}}>`; }\n protected static [Symbol.toStringTag] = ((proto: Map_) => {\n (<any>proto).children = null;\n (<any>proto).keysSorted = null;\n return proto[Symbol.toStringTag] = 'Map_';\n })(Map_.prototype);\n}\n\n/** @ignore */\nconst getId = ((atomicDictionaryId) => () => ++atomicDictionaryId)(-1);\n\n/** @ignore */\nexport type TKeys = Int8 | Int16 | Int32 | Uint8 | Uint16 | Uint32;\n\n/** @ignore */\nexport interface Dictionary<T extends DataType = any, TKey extends TKeys = TKeys> extends DataType<Type.Dictionary> {\n TArray: TKey['TArray'];\n TValue: T['TValue'];\n}\n\n/** @ignore */\nexport class Dictionary<T extends DataType = any, TKey extends TKeys = TKeys> extends DataType<Type.Dictionary> {\n public declare readonly id: number;\n public declare readonly indices: TKey;\n public declare readonly dictionary: T;\n public declare readonly isOrdered: boolean;\n constructor(dictionary: T, indices: TKey, id?: bigint | number | null, isOrdered?: boolean | null) {\n super(Type.Dictionary);\n this.indices = indices;\n this.dictionary = dictionary;\n this.isOrdered = isOrdered || false;\n this.id = id == null ? getId() : bigIntToNumber(id);\n }\n public get children() { return this.dictionary.children; }\n public get valueType(): T { return this.dictionary as T; }\n public get ArrayType(): T['ArrayType'] { return this.dictionary.ArrayType; }\n public toString() { return `Dictionary<${this.indices}, ${this.dictionary}>`; }\n protected static [Symbol.toStringTag] = ((proto: Dictionary) => {\n (<any>proto).id = null;\n (<any>proto).indices = null;\n (<any>proto).isOrdered = null;\n (<any>proto).dictionary = null;\n return proto[Symbol.toStringTag] = 'Dictionary';\n })(Dictionary.prototype);\n}\n\n/** @ignore */\nexport type FloatArray = Uint16Array | Float32Array | Float64Array;\n/** @ignore */\nexport type IntArray = Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array;\n\n/** @ignore */\nexport function strideForType(type: DataType) {\n const t: any = type;\n switch (type.typeId) {\n case Type.Decimal: return (type as Decimal).bitWidth / 32;\n case Type.Interval: {\n if ((t as Interval_).unit === IntervalUnit.MONTH_DAY_NANO) {\n return 4;\n }\n return 1 + (t as Interval_).unit;\n }\n // case Type.Int: return 1 + +((t as Int_).bitWidth > 32);\n // case Type.Time: return 1 + +((t as Time_).bitWidth > 32);\n case Type.BinaryView:\n case Type.Utf8View: return 16;\n case Type.FixedSizeList: return (t as FixedSizeList).listSize;\n case Type.FixedSizeBinary: return (t as FixedSizeBinary).byteWidth;\n default: return 1;\n }\n}\n\n/** @ignore */\nexport type TypeMap = Record<string | number | symbol, DataType>;\n", "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Type, Precision, DateUnit, TimeUnit, IntervalUnit, UnionMode } from './enum.js';\nimport { DataType, Float, Int, Date_, Interval, Time, Timestamp, Union, Duration } from './type.js';\n\nexport abstract class Visitor {\n public visitMany(nodes: any[], ...args: any[][]) {\n return nodes.map((node, i) => this.visit(node, ...args.map((x) => x[i])));\n }\n public visit(...args: any[]) {\n return this.getVisitFn(args[0], false).apply(this, args);\n }\n public getVisitFn(node: any, throwIfNotFound = true) {\n return getVisitFn(this, node, throwIfNotFound);\n }\n public getVisitFnByTypeId(typeId: Type, throwIfNotFound = true) {\n return getVisitFnByTypeId(this, typeId, throwIfNotFound);\n }\n public visitNull(_node: any, ..._args: any[]): any { return null; }\n public visitBool(_node: any, ..._args: any[]): any { return null; }\n public visitInt(_node: any, ..._args: any[]): any { return null; }\n public visitFloat(_node: any, ..._args: any[]): any { return null; }\n public visitUtf8(_node: any, ..._args: any[]): any { return null; }\n public visitLargeUtf8(_node: any, ..._args: any[]): any { return null; }\n public visitUtf8View(_node: any, ..._args: any[]): any { return null; }\n public visitBinary(_node: any, ..._args: any[]): any { return null; }\n public visitLargeBinary(_node: any, ..._args: any[]): any { return null; }\n public visitBinaryView(_node: any, ..._args: any[]): any { return null; }\n public visitFixedSizeBinary(_node: any, ..._args: any[]): any { return null; }\n public visitDate(_node: any, ..._args: any[]): any { return null; }\n public visitTimestamp(_node: any, ..._args: any[]): any { return null; }\n public visitTime(_node: any, ..._args: any[]): any { return null; }\n public visitDecimal(_node: any, ..._args: any[]): any { return null; }\n public visitList(_node: any, ..._args: any[]): any { return null; }\n public visitLargeList(_node: any, ..._args: any[]): any { return null; }\n public visitStruct(_node: any, ..._args: any[]): any { return null; }\n public visitUnion(_node: any, ..._args: any[]): any { return null; }\n public visitDictionary(_node: any, ..._args: any[]): any { return null; }\n public visitInterval(_node: any, ..._args: any[]): any { return null; }\n public visitDuration(_node: any, ..._args: any[]): any { return null; }\n public visitFixedSizeList(_node: any, ..._args: any[]): any { return null; }\n public visitMap(_node: any, ..._args: any[]): any { return null; }\n}\n\n/** @ignore */\nfunction getVisitFn<T extends DataType>(visitor: Visitor, node: any, throwIfNotFound = true) {\n if (typeof node === 'number') {\n return getVisitFnByTypeId(visitor, node, throwIfNotFound);\n }\n if (typeof node === 'string' && (node in Type)) {\n return getVisitFnByTypeId(visitor, Type[node as keyof typeof Type], throwIfNotFound);\n }\n if (node && (node instanceof DataType)) {\n return getVisitFnByTypeId(visitor, inferDType(node as T), throwIfNotFound);\n }\n if (node?.type && (node.type instanceof DataType)) {\n return getVisitFnByTypeId(visitor, inferDType(node.type as T), throwIfNotFound);\n }\n return getVisitFnByTypeId(visitor, Type.NONE, throwIfNotFound);\n}\n\n/** @ignore */\nfunction getVisitFnByTypeId(visitor: Visitor, dtype: Type, throwIfNotFound = true) {\n let fn: any = null;\n switch (dtype) {\n case Type.Null: fn = visitor.visitNull; break;\n case Type.Bool: fn = visitor.visitBool; break;\n case Type.Int: fn = visitor.visitInt; break;\n case Type.Int8: fn = visitor.visitInt8 || visitor.visitInt; break;\n case Type.Int16: fn = visitor.visitInt16 || visitor.visitInt; break;\n case Type.Int32: fn = visitor.visitInt32 || visitor.visitInt; break;\n case Type.Int64: fn = visitor.visitInt64 || visitor.visitInt; break;\n case Type.Uint8: fn = visitor.visitUint8 || visitor.visitInt; break;\n case Type.Uint16: fn = visitor.visitUint16 || visitor.visitInt; break;\n case Type.Uint32: fn = visitor.visitUint32 || visitor.visitInt; break;\n case Type.Uint64: fn = visitor.visitUint64 || visitor.visitInt; break;\n case Type.Float: fn = visitor.visitFloat; break;\n case Type.Float16: fn = visitor.visitFloat16 || visitor.visitFloat; break;\n case Type.Float32: fn = visitor.visitFloat32 || visitor.visitFloat; break;\n case Type.Float64: fn = visitor.visitFloat64 || visitor.visitFloat; break;\n case Type.Utf8: fn = visitor.visitUtf8; break;\n case Type.LargeUtf8: fn = visitor.visitLargeUtf8; break;\n case Type.Utf8View: fn = visitor.visitUtf8View || visitor.visitUtf8; break;\n case Type.Binary: fn = visitor.visitBinary; break;\n case Type.LargeBinary: fn = visitor.visitLargeBinary; break;\n case Type.BinaryView: fn = visitor.visitBinaryView || visitor.visitBinary; break;\n case Type.FixedSizeBinary: fn = visitor.visitFixedSizeBinary; break;\n case Type.Date: fn = visitor.visitDate; break;\n case Type.DateDay: fn = visitor.visitDateDay || visitor.visitDate; break;\n case Type.DateMillisecond: fn = visitor.visitDateMillisecond || visitor.visitDate; break;\n case Type.Timestamp: fn = visitor.visitTimestamp; break;\n case Type.TimestampSecond: fn = visitor.visitTimestampSecond || visitor.visitTimestamp; break;\n case Type.TimestampMillisecond: fn = visitor.visitTimestampMillisecond || visitor.visitTimestamp; break;\n case Type.TimestampMicrosecond: fn = visitor.visitTimestampMicrosecond || visitor.visitTimestamp; break;\n case Type.TimestampNanosecond: fn = visitor.visitTimestampNanosecond || visitor.visitTimestamp; break;\n case Type.Time: fn = visitor.visitTime; break;\n case Type.TimeSecond: fn = visitor.visitTimeSecond || visitor.visitTime; break;\n case Type.TimeMillisecond: fn = visitor.visitTimeMillisecond || visitor.visitTime; break;\n case Type.TimeMicrosecond: fn = visitor.visitTimeMicrosecond || visitor.visitTime; break;\n case Type.TimeNanosecond: fn = visitor.visitTimeNanosecond || visitor.visitTime; break;\n case Type.Decimal: fn = visitor.visitDecimal; break;\n case Type.List: fn = visitor.visitList; break;\n case Type.LargeList: fn = visitor.visitLargeList; break;\n case Type.Struct: fn = visitor.visitStruct; break;\n case Type.Union: fn = visitor.visitUnion; break;\n case Type.DenseUnion: fn = visitor.visitDenseUnion || visitor.visitUnion; break;\n case Type.SparseUnion: fn = visitor.visitSparseUnion || visitor.visitUnion; break;\n case Type.Dictionary: fn = visitor.visitDictionary; break;\n case Type.Interval: fn = visitor.visitInterval; break;\n case Type.IntervalDayTime: fn = visitor.visitIntervalDayTime || visitor.visitInterval; break;\n case Type.IntervalYearMonth: fn = visitor.visitIntervalYearMonth || visitor.visitInterval; break;\n case Type.IntervalMonthDayNano: fn = visitor.visitIntervalMonthDayNano || visitor.visitInterval; break;\n case Type.Duration: fn = visitor.visitDuration; break;\n case Type.DurationSecond: fn = visitor.visitDurationSecond || visitor.visitDuration; break;\n case Type.DurationMillisecond: fn = visitor.visitDurationMillisecond || visitor.visitDuration; break;\n case Type.DurationMicrosecond: fn = visitor.visitDurationMicrosecond || visitor.visitDuration; break;\n case Type.DurationNanosecond: fn = visitor.visitDurationNanosecond || visitor.visitDuration; break;\n case Type.FixedSizeList: fn = visitor.visitFixedSizeList; break;\n case Type.Map: fn = visitor.visitMap; break;\n }\n if (typeof fn === 'function') return fn;\n if (!throwIfNotFound) return () => null;\n throw new Error(`Unrecognized type '${Type[dtype]}'`);\n}\n\n/** @ignore */\nfunction inferDType<T extends DataType>(type: T): Type {\n switch (type.typeId) {\n case Type.Null: return Type.Null;\n case Type.Int: {\n const { bitWidth, isSigned } = (type as any as Int);\n switch (bitWidth) {\n case 8: return isSigned ? Type.Int8 : Type.Uint8;\n case 16: return isSigned ? Type.Int16 : Type.Uint16;\n case 32: return isSigned ? Type.Int32 : Type.Uint32;\n case 64: return isSigned ? Type.Int64 : Type.Uint64;\n }\n // @ts-ignore\n return Type.Int;\n }\n case Type.Float:\n switch ((type as any as Float).precision) {\n case Precision.HALF: return Type.Float16;\n case Precision.SINGLE: return Type.Float32;\n case Precision.DOUBLE: return Type.Float64;\n }\n // @ts-ignore\n return Type.Float;\n case Type.Binary: return Type.Binary;\n case Type.LargeBinary: return Type.LargeBinary;\n case Type.BinaryView: return Type.BinaryView;\n case Type.Utf8: return Type.Utf8;\n case Type.LargeUtf8: return Type.LargeUtf8;\n case Type.Utf8View: return Type.Utf8View;\n case Type.Bool: return Type.Bool;\n case Type.Decimal: return Type.Decimal;\n case Type.Time:\n switch ((type as any as Time).unit) {\n case TimeUnit.SECOND: return Type.TimeSecond;\n case TimeUnit.MILLISECOND: return Type.TimeMillisecond;\n case TimeUnit.MICROSECOND: return Type.TimeMicrosecond;\n case TimeUnit.NANOSECOND: return Type.TimeNanosecond;\n }\n // @ts-ignore\n return Type.Time;\n case Type.Timestamp:\n switch ((type as any as Timestamp).unit) {\n case TimeUnit.SECOND: return Type.TimestampSecond;\n case TimeUnit.MILLISECOND: return Type.TimestampMillisecond;\n case TimeUnit.MICROSECOND: return Type.TimestampMicrosecond;\n case TimeUnit.NANOSECOND: return Type.TimestampNanosecond;\n }\n // @ts-ignore\n return Type.Timestamp;\n case Type.Date:\n switch ((type as any as Date_).unit) {\n case DateUnit.DAY: return Type.DateDay;\n case DateUnit.MILLISECOND: return Type.DateMillisecond;\n }\n // @ts-ignore\n return Type.Date;\n case Type.Interval:\n switch ((type as any as Interval).unit) {\n case IntervalUnit.DAY_TIME: return Type.IntervalDayTime;\n case IntervalUnit.YEAR_MONTH: return Type.IntervalYearMonth;\n case IntervalUnit.MONTH_DAY_NANO: return Type.IntervalMonthDayNano;\n }\n // @ts-ignore\n return Type.Interval;\n case Type.Duration:\n switch ((type as any as Duration).unit) {\n case TimeUnit.SECOND: return Type.DurationSecond;\n case TimeUnit.MILLISECOND: return Type.DurationMillisecond;\n case TimeUnit.MICROSECOND: return Type.DurationMicrosecond;\n case TimeUnit.NANOSECOND: return Type.DurationNanosecond;\n }\n // @ts-ignore\n return Type.Duration;\n case Type.Map: return Type.Map;\n case Type.List: return Type.List;\n case Type.LargeList: return Type.LargeList;\n case Type.Struct: return Type.Struct;\n case Type.Union:\n switch ((type as any as Union).mode) {\n case UnionMode.Dense: return Type.DenseUnion;\n case UnionMode.Sparse: return Type.SparseUnion;\n }\n // @ts-ignore\n return Type.Union;\n case Type.FixedSizeBinary: return Type.FixedSizeBinary;\n case Type.FixedSizeList: return Type.FixedSizeList;\n case Type.Dictionary: return Type.Dictionary;\n }\n throw new Error(`Unrecognized type '${Type[type.typeId]}'`);\n}\n\nexport interface Visitor {\n visitNull(node: any, ...args: any[]): any;\n visitBool(node: any, ...args: any[]): any;\n visitInt(node: any, ...args: any[]): any;\n visitInt8?(node: any, ...args: any[]): any;\n visitInt16?(node: any, ...args: any[]): any;\n visitInt32?(node: any, ...args: any[]): any;\n visitInt64?(node: any, ...args: any[]): any;\n visitUint8?(node: any, ...args: any[]): any;\n visitUint16?(node: any, ...args: any[]): any;\n visitUint32?(node: any, ...args: any[]): any;\n visitUint64?(node: any, ...args: any[]): any;\n visitFloat(node: any, ...args: any[]): any;\n visitFloat16?(node: any, ...args: any[]): any;\n visitFloat32?(node: any, ...args: any[]): any;\n visitFloat64?(node: any, ...args: any[]): any;\n visitUtf8(node: any, ...args: any[]): any;\n visitLargeUtf8(node: any, ...args: any[]): any;\n visitBinary(node: any, ...args: any[]): any;\n visitLargeBinary(node: any, ...args: any[]): any;\n visitFixedSizeBinary(node: any, ...args: any[]): any;\n visitDate(node: any, ...args: any[]): any;\n visitDateDay?(node: any, ...args: any[]): any;\n visitDateMillisecond?(node: any, ...args: any[]): any;\n visitTimestamp(node: any, ...args: any[]): any;\n visitTimestampSecond?(node: any, ...args: any[]): any;\n visitTimestampMillisecond?(node: any, ...args: any[]): any;\n visitTimestampMicrosecond?(node: any, ...args: any[]): any;\n visitTimestampNanosecond?(node: any, ...args: any[]): any;\n visitTime(node: any, ...args: any[]): any;\n visitTimeSecond?(node: any, ...args: any[]): any;\n visitTimeMillisecond?(node: any, ...args: any[]): any;\n visitTimeMicrosecond?(node: any, ...args: any[]): any;\n visitTimeNanosecond?(node: any, ...args: any[]): any;\n visitDecimal(node: any, ...args: any[]): any;\n visitList(node: any, ...args: any[]): any;\n visitStruct(node: any, ...args: any[]): any;\n visitUnion(node: any, ...args: any[]): any;\n visitDenseUnion?(node: any, ...args: any[]): any;\n visitSparseUnion?(node: any, ...args: any[]): any;\n visitDictionary(node: any, ...args: any[]): any;\n visitInterval(node: any, ...args: any[]): any;\n visitIntervalDayTime?(node: any, ...args: any[]): any;\n visitIntervalYearMonth?(node: any, ...args: any[]): any;\n visitIntervalMonthDayNano?(node: any, ...args: any[]): any;\n visitDuration(node: any, ...args: any[]): any;\n visitDurationSecond(node: any, ...args: any[]): any;\n visitDurationMillisecond(node: any, ...args: any[]): any;\n visitDurationMicrosecond(node: any, ...args: any[]): any;\n visitDurationNanosecond(node: any, ...args: any[]): any;\n visitFixedSizeList(node: any, ...args: any[]): any;\n visitMap(node: any, ...args: any[]): any;\n}\n\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\n(Visitor.prototype as any).visitInt8 = null;\n(Visitor.prototype as any).visitInt16 = null;\n(Visitor.prototype as any).visitInt32 = null;\n(Visitor.prototype as any).visitInt64 = null;\n(Visitor.prototype as any).visitUint8 = null;\n(Visitor.prototype as any).visitUint16 = null;\n(Visitor.prototype as any).visitUint32 = null;\n(Visitor.prototype as any).visitUint64 = null;\n(Visitor.prototype as any).visitFloat16 = null;\n(Visitor.prototype as any).visitFloat32 = null;\n(Visitor.prototype as any).visitFloat64 = null;\n(Visitor.prototype as any).visitDateDay = null;\n(Visitor.prototype as any).visitDateMillisecond = null;\n(Visitor.prototype as any).visitTimestampSecond = null;\n(Visitor.prototype as any).visitTimestampMillisecond = null;\n(Visitor.prototype as any).visitTimestampMicrosecond = null;\n(Visitor.prototype as any).visitTimestampNanosecond = null;\n(Visitor.prototype as any).visitTimeSecond = null;\n(Visitor.prototype as any).visitTimeMillisecond = null;\n(Visitor.prototype as any).visitTimeMicrosecond = null;\n(Visitor.prototype as any).visitTimeNanosecond = null;\n(Visitor.prototype as any).visitDenseUnion = null;\n(Visitor.prototype as any).visitSparseUnion = null;\n(Visitor.prototype as any).visitIntervalDayTime = null;\n(Visitor.prototype as any).visitIntervalYearMonth = null;\n(Visitor.prototype as any).visitIntervalMonthDayNano = null;\n(Visitor.prototype as any).visitDuration = null;\n(Visitor.prototype as any).visitDurationSecond = null;\n(Visitor.prototype as any).visitDurationMillisecond = null;\n(Visitor.prototype as any).visitDurationMicrosecond = null;\n(Visitor.prototype as any).visitDurationNanosecond = null;\n", null, null, null, null, null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from './vector.js';\nimport { BufferType, Type, UnionMode } from './enum.js';\nimport { DataType, strideForType } from './type.js';\nimport { popcnt_bit_range, truncateBitmap } from './util/bit.js';\n\n// When slicing, we do not know the null count of the sliced range without\n// doing some computation. To avoid doing this eagerly, we set the null count\n// to -1 (any negative number will do). When Vector.nullCount is called the\n// first time, the null count will be computed. See ARROW-33\n/** @ignore */ export type kUnknownNullCount = -1;\n/** @ignore */ export const kUnknownNullCount = -1;\n\n/** @ignore */ export type NullBuffer = Uint8Array | null | undefined;\n/** @ignore */ export type TypeIdsBuffer = Int8Array | ArrayLike<number> | Iterable<number> | undefined;\n/** @ignore */ export type ValueOffsetsBuffer = Int32Array | ArrayLike<number> | Iterable<number> | undefined;\n/** @ignore */ export type LargeValueOffsetsBuffer = BigInt64Array | ArrayLike<bigint> | Iterable<bigint> | undefined;\n/** @ignore */ export type DataBuffer<T extends DataType> = T['TArray'] | ArrayLike<number> | Iterable<number> | undefined;\n\n/** @ignore */\nexport interface Buffers<T extends DataType> {\n [BufferType.OFFSET]: T['TOffsetArray'];\n [BufferType.DATA]: T['TArray'];\n [BufferType.VALIDITY]: Uint8Array;\n [BufferType.TYPE]: T['TArray'];\n}\n\n/** @ignore */\nconst kDataSymbol = Symbol.for('apache-arrow/Data');\n\n/** @ignore */\nexport interface Data<T extends DataType = DataType> {\n readonly TType: T['TType'];\n readonly TArray: T['TArray'];\n readonly TValue: T['TValue'];\n}\n\n/**\n * Data structure underlying {@link Vector}s. Use the convenience method {@link makeData}.\n */\nexport class Data<T extends DataType = DataType> {\n\n /**\n * Check if an object is an instance of Data.\n * This works across different instances of the Arrow library.\n */\n /** @nocollapse */ static isData(x: any): x is Data {\n return x?.[kDataSymbol] === true;\n }\n\n /** @internal */\n declare public readonly [kDataSymbol]: true;\n\n declare public readonly type: T;\n declare public readonly length: number;\n declare public readonly offset: number;\n declare public readonly stride: number;\n declare public readonly children: Data[];\n\n /**\n * The dictionary for this Vector, if any. Only used for Dictionary type.\n */\n declare public dictionary?: Vector;\n\n declare public readonly values: Buffers<T>[BufferType.DATA];\n declare public readonly typeIds: Buffers<T>[BufferType.TYPE];\n declare public readonly nullBitmap: Buffers<T>[BufferType.VALIDITY];\n declare public readonly valueOffsets: Buffers<T>[BufferType.OFFSET];\n declare public readonly variadicBuffers: ReadonlyArray<Uint8Array>;\n\n public get typeId(): T['TType'] { return this.type.typeId; }\n\n public get ArrayType(): T['ArrayType'] { return this.type.ArrayType; }\n\n public get buffers() {\n return [this.valueOffsets, this.values, this.nullBitmap, this.typeIds] as Buffers<T>;\n }\n\n public get nullable(): boolean {\n if (this._nullCount !== 0) {\n const { type } = this;\n if (DataType.isSparseUnion(type)) {\n return this.children.some((child) => child.nullable);\n } else if (DataType.isDenseUnion(type)) {\n return this.children.some((child) => child.nullable);\n }\n return this.nullBitmap && this.nullBitmap.byteLength > 0;\n }\n return true;\n }\n\n public get byteLength(): number {\n let byteLength = 0;\n const { valueOffsets, values, nullBitmap, typeIds } = this;\n valueOffsets && (byteLength += valueOffsets.byteLength);\n values && (byteLength += values.byteLength);\n nullBitmap && (byteLength += nullBitmap.byteLength);\n typeIds && (byteLength += typeIds.byteLength);\n byteLength += this.variadicBuffers.reduce((size, data) => size + (data?.byteLength ?? 0), 0);\n return this.children.reduce((byteLength, child) => byteLength + child.byteLength, byteLength);\n }\n\n protected _nullCount: number | kUnknownNullCount;\n\n public get nullCount(): number {\n if (DataType.isUnion(this.type)) {\n return this.children.reduce((nullCount, child) => nullCount + child.nullCount, 0);\n }\n let nullCount = this._nullCount;\n let nullBitmap: Uint8Array | undefined;\n if (nullCount <= kUnknownNullCount && (nullBitmap = this.nullBitmap)) {\n this._nullCount = nullCount = nullBitmap.length === 0 ?\n // no null bitmap, so all values are valid\n 0 :\n this.length - popcnt_bit_range(nullBitmap, this.offset, this.offset + this.length);\n }\n return nullCount;\n }\n\n constructor(\n type: T,\n offset: number,\n length: number,\n nullCount?: number,\n buffers?: Partial<Buffers<T>> | Data<T>,\n children: Data[] = [],\n dictionary?: Vector,\n variadicBuffers: ReadonlyArray<Uint8Array> = []\n ) {\n this.type = type;\n this.children = children;\n this.dictionary = dictionary;\n this.offset = Math.floor(Math.max(offset || 0, 0));\n this.length = Math.floor(Math.max(length || 0, 0));\n this._nullCount = Math.floor(Math.max(nullCount || 0, -1));\n let buffer: Buffers<T>[keyof Buffers<T>];\n if (buffers instanceof Data) {\n this.stride = buffers.stride;\n this.values = buffers.values;\n this.typeIds = buffers.typeIds;\n this.nullBitmap = buffers.nullBitmap;\n this.valueOffsets = buffers.valueOffsets;\n this.variadicBuffers = buffers.variadicBuffers;\n } else {\n this.stride = strideForType(type);\n if (buffers) {\n (buffer = (buffers as Buffers<T>)[0]) && (this.valueOffsets = buffer);\n (buffer = (buffers as Buffers<T>)[1]) && (this.values = buffer);\n (buffer = (buffers as Buffers<T>)[2]) && (this.nullBitmap = buffer);\n (buffer = (buffers as Buffers<T>)[3]) && (this.typeIds = buffer);\n }\n this.variadicBuffers = variadicBuffers;\n }\n this.variadicBuffers ??= [];\n }\n\n public getValid(index: number): boolean {\n const { type } = this;\n if (DataType.isUnion(type)) {\n const union = (<unknown>type as Union);\n const typeId = this.typeIds[index];\n const childIndex = union.typeIdToChildIndex[typeId];\n const child = this.children[childIndex];\n const valueOffsets = this.valueOffsets as Int32Array | BigInt64Array | undefined;\n const indexInChild = union.mode === UnionMode.Dense && valueOffsets\n ? Number(valueOffsets[index])\n : index;\n return child.getValid(indexInChild);\n }\n if (this.nullable && this.nullCount > 0) {\n const pos = this.offset + index;\n const val = this.nullBitmap[pos >> 3];\n return (val & (1 << (pos % 8))) !== 0;\n }\n return true;\n }\n\n public setValid(index: number, value: boolean): boolean {\n let prev: boolean;\n const { type } = this;\n if (DataType.isUnion(type)) {\n const union = (<unknown>type as Union);\n const typeId = this.typeIds[index];\n const childIndex = union.typeIdToChildIndex[typeId];\n const child = this.children[childIndex];\n const valueOffsets = this.valueOffsets as Int32Array | BigInt64Array | undefined;\n const indexInChild = union.mode === UnionMode.Dense && valueOffsets\n ? Number(valueOffsets[index])\n : index;\n prev = child.getValid(indexInChild);\n child.setValid(indexInChild, value);\n } else {\n let { nullBitmap } = this;\n const { offset, length } = this;\n const idx = offset + index;\n const mask = 1 << (idx % 8);\n const byteOffset = idx >> 3;\n\n // If no null bitmap, initialize one on the fly\n if (!nullBitmap || nullBitmap.byteLength <= byteOffset) {\n nullBitmap = new Uint8Array((((offset + length) + 63) & ~63) >> 3).fill(255);\n // if we have a nullBitmap, truncate + slice and set it over the pre-filled 1s\n if (this.nullCount > 0) {\n nullBitmap.set(truncateBitmap(offset, length, this.nullBitmap), 0);\n Object.assign(this, { nullBitmap });\n } else {\n Object.assign(this, { nullBitmap, _nullCount: 0 });\n }\n }\n\n const byte = nullBitmap[byteOffset];\n\n prev = (byte & mask) !== 0;\n nullBitmap[byteOffset] = value ? (byte | mask) : (byte & ~mask);\n }\n\n if (prev !== !!value) {\n // Update `_nullCount` if the new value is different from the old value.\n this._nullCount = this.nullCount + (value ? -1 : 1);\n }\n\n return value;\n }\n\n public clone<R extends DataType = T>(\n type: R = this.type as any,\n offset = this.offset,\n length = this.length,\n nullCount = this._nullCount,\n buffers: Buffers<R> = <any>this,\n children: Data[] = this.children,\n variadicBuffers: ReadonlyArray<Uint8Array> = this.variadicBuffers\n ) {\n return new Data(type, offset, length, nullCount, buffers, children, this.dictionary, variadicBuffers);\n }\n\n public slice(offset: number, length: number): Data<T> {\n const { stride, typeId, children } = this;\n // +true === 1, +false === 0, so this means\n // we keep nullCount at 0 if it's already 0,\n // otherwise set to the invalidated flag -1\n const nullCount = +(this._nullCount === 0) - 1;\n const childStride = typeId === 16 /* FixedSizeList */ ? stride : 1;\n const buffers = this._sliceBuffers(offset, length, stride, typeId);\n return this.clone<T>(this.type, this.offset + offset, length, nullCount, buffers,\n // Don't slice children if we have value offsets (the variable-width types)\n (children.length === 0 || this.valueOffsets) ? children : this._sliceChildren(children, childStride * offset, childStride * length),\n this.variadicBuffers);\n }\n\n public _changeLengthAndBackfillNullBitmap(newLength: number): Data<T> {\n if (this.typeId === Type.Null) {\n return this.clone(this.type, 0, newLength, 0, <any>this.buffers, this.children, this.variadicBuffers);\n }\n const { length, nullCount } = this;\n // start initialized with 0s (nulls), then fill from 0 to length with 1s (not null)\n const bitmap = new Uint8Array(((newLength + 63) & ~63) >> 3).fill(255, 0, length >> 3);\n // set all the bits in the last byte (up to bit `length - length % 8`) to 1 (not null)\n bitmap[length >> 3] = (1 << (length - (length & ~7))) - 1;\n // if we have a nullBitmap, truncate + slice and set it over the pre-filled 1s\n if (nullCount > 0) {\n bitmap.set(truncateBitmap(this.offset, length, this.nullBitmap), 0);\n }\n const buffers = this.buffers;\n buffers[BufferType.VALIDITY] = bitmap;\n return this.clone(this.type, 0, newLength, nullCount + (newLength - length), buffers, this.children, this.variadicBuffers);\n }\n\n protected _sliceBuffers(offset: number, length: number, stride: number, typeId: T['TType']): Buffers<T> {\n let arr: any;\n const { buffers } = this;\n // If typeIds exist, slice the typeIds buffer\n (arr = buffers[BufferType.TYPE]) && (buffers[BufferType.TYPE] = arr.subarray(offset, offset + length));\n if (DataType.isBinaryView(this.type) || DataType.isUtf8View(this.type)) {\n const width = BinaryView.ELEMENT_WIDTH;\n (arr = buffers[BufferType.DATA]) && (buffers[BufferType.DATA] = arr.subarray(offset * width, (offset + length) * width));\n } else {\n // If offsets exist, only slice the offsets buffer\n (arr = buffers[BufferType.OFFSET]) && (buffers[BufferType.OFFSET] = arr.subarray(offset, offset + length + 1)) ||\n // Otherwise if no offsets, slice the data buffer. Don't slice the data vector for Booleans, since the offset goes by bits not bytes\n (arr = buffers[BufferType.DATA]) && (buffers[BufferType.DATA] = typeId === 6 ? arr : arr.subarray(stride * offset, stride * (offset + length)));\n }\n return buffers;\n }\n\n protected _sliceChildren(children: Data[], offset: number, length: number): Data[] {\n return children.map((child) => child.slice(offset, length));\n }\n}\n\n(Data.prototype as any).children = Object.freeze([]);\n(Data.prototype as any)[kDataSymbol] = true;\n\nObject.defineProperty(Data, Symbol.hasInstance, {\n value: function isDataInstance(instance: any): instance is Data {\n return Function.prototype[Symbol.hasInstance].call(this, instance)\n || (this === Data && Data.isData(instance));\n },\n});\n\nimport {\n Dictionary,\n Bool, Null, Utf8, Utf8View, LargeUtf8, Binary, BinaryView, LargeBinary, Decimal, FixedSizeBinary, List, LargeList, FixedSizeList, Map_, Struct,\n Float,\n Int,\n Date_,\n Interval,\n Duration,\n Time,\n Timestamp,\n Union, DenseUnion, SparseUnion,\n} from './type.js';\n\nimport { Visitor } from './visitor.js';\nimport { toArrayBufferView, toBigInt64Array, toInt32Array, toUint8Array } from './util/buffer.js';\n\nclass MakeDataVisitor extends Visitor {\n public visit<T extends DataType>(props: any): Data<T> {\n return this.getVisitFn(props['type']).call(this, props);\n }\n public visitNull<T extends Null>(props: NullDataProps<T>) {\n const {\n ['type']: type,\n ['offset']: offset = 0,\n ['length']: length = 0,\n } = props;\n return new Data(type, offset, length, length);\n }\n public visitBool<T extends Bool>(props: BoolDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length >> 3, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n public visitInt<T extends Int>(props: IntDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n public visitFloat<T extends Float>(props: FloatDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n public visitUtf8<T extends Utf8>(props: Utf8DataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const data = toUint8Array(props['data']);\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toInt32Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, data, nullBitmap]);\n }\n public visitUtf8View<T extends Utf8View>(props: Utf8ViewDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const views = toArrayBufferView(type.ArrayType, props['views']);\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const variadicBuffers = (props['variadicBuffers'] || []).map((buffer) => toUint8Array(buffer));\n const length = props['length'] ?? Math.trunc(views.length / Utf8View.ELEMENT_WIDTH);\n const nullCount = props['nullBitmap'] ? -1 : 0;\n return new Data(type, offset, length, nullCount, [undefined, views, nullBitmap], [], undefined, variadicBuffers);\n }\n public visitLargeUtf8<T extends LargeUtf8>(props: LargeUtf8DataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const data = toUint8Array(props['data']);\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toBigInt64Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, data, nullBitmap]);\n }\n public visitBinary<T extends Binary>(props: BinaryDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const data = toUint8Array(props['data']);\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toInt32Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, data, nullBitmap]);\n }\n public visitBinaryView<T extends BinaryView>(props: BinaryViewDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const views = toArrayBufferView(type.ArrayType, props['views']);\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const variadicBuffers = (props['variadicBuffers'] || []).map((buffer) => toUint8Array(buffer));\n const length = props['length'] ?? Math.trunc(views.length / BinaryView.ELEMENT_WIDTH);\n const nullCount = props['nullBitmap'] ? -1 : 0;\n return new Data(type, offset, length, nullCount, [undefined, views, nullBitmap], [], undefined, variadicBuffers);\n }\n public visitLargeBinary<T extends LargeBinary>(props: LargeBinaryDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const data = toUint8Array(props['data']);\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toBigInt64Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, data, nullBitmap]);\n }\n public visitFixedSizeBinary<T extends FixedSizeBinary>(props: FixedSizeBinaryDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n public visitDate<T extends Date_>(props: Date_DataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n public visitTimestamp<T extends Timestamp>(props: TimestampDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n public visitTime<T extends Time>(props: TimeDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n public visitDecimal<T extends Decimal>(props: DecimalDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n public visitList<T extends List>(props: ListDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0, ['child']: child } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toInt32Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, undefined, nullBitmap], [child]);\n }\n public visitLargeList<T extends LargeList>(props: LargeListDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0, ['child']: child } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toBigInt64Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, undefined, nullBitmap], [child]);\n }\n public visitStruct<T extends Struct>(props: StructDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0, ['children']: children = [] } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const {\n length = children.reduce((len, { length }) => Math.max(len, length), 0),\n nullCount = props['nullBitmap'] ? -1 : 0\n } = props;\n return new Data(type, offset, length, nullCount, [undefined, undefined, nullBitmap], children);\n }\n public visitUnion<T extends Union>(props: UnionDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0, ['children']: children = [] } = props;\n const typeIds = toArrayBufferView(type.ArrayType, props['typeIds']);\n const { ['length']: length = typeIds.length, ['nullCount']: nullCount = -1, } = props;\n if (DataType.isSparseUnion(type)) {\n return new Data(type, offset, length, nullCount, [undefined, undefined, undefined, typeIds], children);\n }\n const valueOffsets = toInt32Array(props['valueOffsets']);\n return new Data(type, offset, length, nullCount, [valueOffsets, undefined, undefined, typeIds], children);\n }\n public visitDictionary<T extends Dictionary>(props: DictionaryDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.indices.ArrayType, props['data']);\n const { ['dictionary']: dictionary = new Vector([new MakeDataVisitor().visit({ type: type.dictionary })]) } = props;\n const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap], [], dictionary);\n }\n public visitInterval<T extends Interval>(props: IntervalDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n public visitDuration<T extends Duration>(props: DurationDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n public visitFixedSizeList<T extends FixedSizeList>(props: FixedSizeListDataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0, ['child']: child = new MakeDataVisitor().visit({ type: type.valueType }) } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const { ['length']: length = child.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [undefined, undefined, nullBitmap], [child]);\n }\n public visitMap<T extends Map_>(props: Map_DataProps<T>) {\n const { ['type']: type, ['offset']: offset = 0, ['child']: child = new MakeDataVisitor().visit({ type: type.childType }) } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toInt32Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, undefined, nullBitmap], [child]);\n }\n}\n\n/** @ignore */\ninterface DataProps_<T extends DataType> {\n type: T;\n offset?: number;\n length?: number;\n nullCount?: number;\n nullBitmap?: NullBuffer;\n}\n\ninterface NullDataProps<T extends Null> { type: T; offset?: number; length?: number }\ninterface IntDataProps<T extends Int> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface DictionaryDataProps<T extends Dictionary> extends DataProps_<T> { data?: DataBuffer<T>; dictionary?: Vector<T['dictionary']> }\ninterface FloatDataProps<T extends Float> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface BoolDataProps<T extends Bool> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface DecimalDataProps<T extends Decimal> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface Date_DataProps<T extends Date_> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface TimeDataProps<T extends Time> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface TimestampDataProps<T extends Timestamp> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface IntervalDataProps<T extends Interval> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface DurationDataProps<T extends Duration> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface FixedSizeBinaryDataProps<T extends FixedSizeBinary> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface BinaryDataProps<T extends Binary> extends DataProps_<T> { valueOffsets: ValueOffsetsBuffer; data?: DataBuffer<T> }\ninterface BinaryViewDataProps<T extends BinaryView> extends DataProps_<T> { views: DataBuffer<T>; variadicBuffers?: ReadonlyArray<ArrayLike<number> | Iterable<number> | Uint8Array>; data?: DataBuffer<T> }\ninterface LargeBinaryDataProps<T extends LargeBinary> extends DataProps_<T> { valueOffsets: LargeValueOffsetsBuffer | ValueOffsetsBuffer; data?: DataBuffer<T> }\ninterface Utf8DataProps<T extends Utf8> extends DataProps_<T> { valueOffsets: ValueOffsetsBuffer; data?: DataBuffer<T> }\ninterface Utf8ViewDataProps<T extends Utf8View> extends DataProps_<T> { views: DataBuffer<T>; variadicBuffers?: ReadonlyArray<ArrayLike<number> | Iterable<number> | Uint8Array>; data?: DataBuffer<T> }\ninterface LargeUtf8DataProps<T extends LargeUtf8> extends DataProps_<T> { valueOffsets: LargeValueOffsetsBuffer | ValueOffsetsBuffer; data?: DataBuffer<T> }\ninterface ListDataProps<T extends List> extends DataProps_<T> { valueOffsets: ValueOffsetsBuffer; child: Data<T['valueType']> }\ninterface LargeListDataProps<T extends LargeList> extends DataProps_<T> { valueOffsets: LargeValueOffsetsBuffer | ValueOffsetsBuffer; child: Data<T['valueType']> }\ninterface FixedSizeListDataProps<T extends FixedSizeList> extends DataProps_<T> { child: Data<T['valueType']> }\ninterface StructDataProps<T extends Struct> extends DataProps_<T> { children: Data[] }\ninterface Map_DataProps<T extends Map_> extends DataProps_<T> { valueOffsets: ValueOffsetsBuffer; child: Data }\ninterface SparseUnionDataProps<T extends SparseUnion> extends DataProps_<T> { nullBitmap: never; typeIds: TypeIdsBuffer; children: Data[] }\ninterface DenseUnionDataProps<T extends DenseUnion> extends DataProps_<T> { nullBitmap: never; typeIds: TypeIdsBuffer; children: Data[]; valueOffsets: ValueOffsetsBuffer }\ninterface UnionDataProps<T extends Union> extends DataProps_<T> { typeIds: TypeIdsBuffer; children: Data[]; valueOffsets?: ValueOffsetsBuffer }\n\nexport type DataProps<T extends DataType> = (\n T extends Null /* */ ? NullDataProps<T> :\n T extends Int /* */ ? IntDataProps<T> :\n T extends Dictionary /* */ ? DictionaryDataProps<T> :\n T extends Float /* */ ? FloatDataProps<T> :\n T extends Bool /* */ ? BoolDataProps<T> :\n T extends Decimal /* */ ? DecimalDataProps<T> :\n T extends Date_ /* */ ? Date_DataProps<T> :\n T extends Time /* */ ? TimeDataProps<T> :\n T extends Timestamp /* */ ? TimestampDataProps<T> :\n T extends Interval /* */ ? IntervalDataProps<T> :\n T extends Duration /* */ ? DurationDataProps<T> :\n T extends FixedSizeBinary /* */ ? FixedSizeBinaryDataProps<T> :\n T extends Binary /* */ ? BinaryDataProps<T> :\n T extends LargeBinary /* */ ? LargeBinaryDataProps<T> :\n T extends BinaryView /* */ ? BinaryViewDataProps<T> :\n T extends Utf8 /* */ ? Utf8DataProps<T> :\n T extends LargeUtf8 /* */ ? LargeUtf8DataProps<T> :\n T extends Utf8View /* */ ? Utf8ViewDataProps<T> :\n T extends List /* */ ? ListDataProps<T> :\n T extends LargeList /* */ ? LargeListDataProps<T> :\n T extends FixedSizeList /* */ ? FixedSizeListDataProps<T> :\n T extends Struct /* */ ? StructDataProps<T> :\n T extends Map_ /* */ ? Map_DataProps<T> :\n T extends SparseUnion /* */ ? SparseUnionDataProps<T> :\n T extends DenseUnion /* */ ? DenseUnionDataProps<T> :\n T extends Union /* */ ? UnionDataProps<T> :\n /* */ DataProps_<T>\n);\n\nconst makeDataVisitor = new MakeDataVisitor();\n\nexport function makeData<T extends Null>(props: NullDataProps<T>): Data<T>;\nexport function makeData<T extends Int>(props: IntDataProps<T>): Data<T>;\nexport function makeData<T extends Dictionary>(props: DictionaryDataProps<T>): Data<T>;\nexport function makeData<T extends Float>(props: FloatDataProps<T>): Data<T>;\nexport function makeData<T extends Bool>(props: BoolDataProps<T>): Data<T>;\nexport function makeData<T extends Decimal>(props: DecimalDataProps<T>): Data<T>;\nexport function makeData<T extends Date_>(props: Date_DataProps<T>): Data<T>;\nexport function makeData<T extends Time>(props: TimeDataProps<T>): Data<T>;\nexport function makeData<T extends Timestamp>(props: TimestampDataProps<T>): Data<T>;\nexport function makeData<T extends Interval>(props: IntervalDataProps<T>): Data<T>;\nexport function makeData<T extends Duration>(props: DurationDataProps<T>): Data<T>;\nexport function makeData<T extends FixedSizeBinary>(props: FixedSizeBinaryDataProps<T>): Data<T>;\nexport function makeData<T extends BinaryView>(props: BinaryViewDataProps<T>): Data<T>;\nexport function makeData<T extends Binary>(props: BinaryDataProps<T>): Data<T>;\nexport function makeData<T extends LargeBinary>(props: LargeBinaryDataProps<T>): Data<T>;\nexport function makeData<T extends Utf8>(props: Utf8DataProps<T>): Data<T>;\nexport function makeData<T extends LargeUtf8>(props: LargeUtf8DataProps<T>): Data<T>;\nexport function makeData<T extends Utf8View>(props: Utf8ViewDataProps<T>): Data<T>;\nexport function makeData<T extends List>(props: ListDataProps<T>): Data<T>;\nexport function makeData<T extends LargeList>(props: LargeListDataProps<T>): Data<T>;\nexport function makeData<T extends FixedSizeList>(props: FixedSizeListDataProps<T>): Data<T>;\nexport function makeData<T extends Struct>(props: StructDataProps<T>): Data<T>;\nexport function makeData<T extends Map_>(props: Map_DataProps<T>): Data<T>;\nexport function makeData<T extends SparseUnion>(props: SparseUnionDataProps<T>): Data<T>;\nexport function makeData<T extends DenseUnion>(props: DenseUnionDataProps<T>): Data<T>;\nexport function makeData<T extends Union>(props: UnionDataProps<T>): Data<T>;\nexport function makeData<T extends DataType>(props: DataProps_<T>): Data<T>;\nexport function makeData(props: any) {\n return makeDataVisitor.visit(props);\n}\n", null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Type } from './enum.js';\nimport { clampRange, wrapIndex } from './util/vector.js';\nimport { DataType, strideForType } from './type.js';\nimport { Data, makeData, DataProps } from './data.js';\nimport { BigIntArray, TypedArray, TypedArrayDataType } from './interfaces.js';\n\nimport {\n isChunkedValid,\n computeChunkOffsets,\n computeChunkNullable,\n computeChunkNullCounts,\n sliceChunks,\n wrapChunkedCall1,\n wrapChunkedCall2,\n wrapChunkedIndexOf,\n} from './util/chunk.js';\n\nimport { instance as getVisitor } from './visitor/get.js';\nimport { instance as setVisitor } from './visitor/set.js';\nimport { instance as indexOfVisitor } from './visitor/indexof.js';\nimport { instance as iteratorVisitor } from './visitor/iterator.js';\n\n// @ts-ignore\nimport type { vectorFromArray } from './factories.js';\n\n/** @ignore */\nconst kVectorSymbol = Symbol.for('apache-arrow/Vector');\n\nexport interface Vector<T extends DataType = any> {\n ///\n // Virtual properties for the TypeScript compiler.\n // These do not exist at runtime.\n ///\n readonly TType: T['TType'];\n readonly TArray: T['TArray'];\n readonly TValue: T['TValue'];\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable\n */\n [Symbol.isConcatSpreadable]: true;\n}\n\nconst visitorsByTypeId = {} as { [typeId: number]: { get: any; set: any; indexOf: any } };\nconst vectorPrototypesByTypeId = {} as { [typeId: number]: any };\n\n/**\n * Array-like data structure. Use the convenience method {@link makeVector} and {@link vectorFromArray} to create vectors.\n */\nexport class Vector<T extends DataType = any> {\n\n /**\n * Check if an object is an instance of Vector.\n * This works across different instances of the Arrow library.\n */\n /** @nocollapse */ static isVector(x: any): x is Vector {\n return x?.[kVectorSymbol] === true;\n }\n\n /** @internal */\n declare public readonly [kVectorSymbol]: true;\n\n constructor(input: readonly (Data<T> | Vector<T>)[]) {\n const data: Data<T>[] = input[0] instanceof Vector\n ? (input as Vector<T>[]).flatMap(x => x.data)\n : input as Data<T>[];\n if (data.length === 0 || data.some((x) => !(x instanceof Data))) {\n throw new TypeError('Vector constructor expects an Array of Data instances.');\n }\n const type = data[0]?.type;\n switch (data.length) {\n case 0: this._offsets = [0]; break;\n case 1: {\n // special case for unchunked vectors\n const { get, set, indexOf } = visitorsByTypeId[type.typeId];\n const unchunkedData = data[0];\n\n this.isValid = (index: number) => isChunkedValid(unchunkedData, index);\n this.get = (index: number) => get(unchunkedData, index);\n this.set = (index: number, value: T) => set(unchunkedData, index, value);\n this.indexOf = (index: number) => indexOf(unchunkedData, index);\n this._offsets = [0, unchunkedData.length];\n break;\n }\n default:\n Object.setPrototypeOf(this, vectorPrototypesByTypeId[type.typeId]);\n this._offsets = computeChunkOffsets(data);\n break;\n }\n this.data = data;\n this.type = type;\n this.stride = strideForType(type);\n this.numChildren = type.children?.length ?? 0;\n this.length = this._offsets.at(-1)!;\n }\n\n declare protected _offsets: number[] | Uint32Array;\n\n /**\n * The {@link DataType `DataType`} of this Vector.\n */\n public declare readonly type: T;\n\n /**\n * The primitive {@link Data `Data`} instances for this Vector's elements.\n */\n public declare readonly data: ReadonlyArray<Data<T>>;\n\n /**\n * The number of elements in this Vector.\n */\n public declare readonly length: number;\n\n /**\n * The number of primitive values per Vector element.\n */\n public declare readonly stride: number;\n\n /**\n * The number of child Vectors if this Vector is a nested dtype.\n */\n public declare readonly numChildren: number;\n\n /**\n * The aggregate size (in bytes) of this Vector's buffers and/or child Vectors.\n */\n public get byteLength() {\n return this.data.reduce((byteLength, data) => byteLength + data.byteLength, 0);\n }\n\n /**\n * Whether this Vector's elements can contain null values.\n */\n public get nullable() {\n return computeChunkNullable(this.data);\n }\n\n /**\n * The number of null elements in this Vector.\n */\n public get nullCount() {\n return computeChunkNullCounts(this.data);\n }\n\n /**\n * The Array or TypedArray constructor used for the JS representation\n * of the element's values in {@link Vector.prototype.toArray `toArray()`}.\n */\n public get ArrayType(): T['ArrayType'] { return this.type.ArrayType; }\n\n /**\n * The name that should be printed when the Vector is logged in a message.\n */\n public get [Symbol.toStringTag]() {\n return `${this.VectorName}<${this.type[Symbol.toStringTag]}>`;\n }\n\n /**\n * The name of this Vector.\n */\n public get VectorName() { return `${Type[this.type.typeId]}Vector`; }\n\n /**\n * Check whether an element is null.\n * @param index The index at which to read the validity bitmap.\n */\n // @ts-ignore\n public isValid(index: number): boolean { return false; }\n\n /**\n * Get an element value by position.\n * @param index The index of the element to read.\n */\n // @ts-ignore\n public get(index: number): T['TValue'] | null { return null; }\n\n /**\n * Get an element value by position.\n * @param index The index of the element to read. A negative index will count back from the last element.\n */\n public at(index: number): T['TValue'] | null {\n return this.get(wrapIndex(index, this.length));\n }\n\n /**\n * Set an element value by position.\n * @param index The index of the element to write.\n * @param value The value to set.\n */\n // @ts-ignore\n public set(index: number, value: T['TValue'] | null): void { return; }\n\n /**\n * Retrieve the index of the first occurrence of a value in an Vector.\n * @param element The value to locate in the Vector.\n * @param offset The index at which to begin the search. If offset is omitted, the search starts at index 0.\n */\n // @ts-ignore\n public indexOf(element: T['TValue'], offset?: number): number { return -1; }\n\n public includes(element: T['TValue'], offset?: number): boolean {\n // eslint-disable-next-line unicorn/prefer-includes\n return this.indexOf(element, offset) > -1;\n }\n\n /**\n * Iterator for the Vector's elements.\n */\n public [Symbol.iterator](): IterableIterator<T['TValue'] | null> {\n return iteratorVisitor.visit(this);\n }\n\n /**\n * Combines two or more Vectors of the same type.\n * @param others Additional Vectors to add to the end of this Vector.\n */\n public concat(...others: Vector<T>[]): Vector<T> {\n return new Vector(this.data.concat(others.flatMap((x) => x.data).flat(Number.POSITIVE_INFINITY)));\n }\n\n /**\n * Return a zero-copy sub-section of this Vector.\n * @param start The beginning of the specified portion of the Vector.\n * @param end The end of the specified portion of the Vector. This is exclusive of the element at the index 'end'.\n */\n public slice(begin?: number, end?: number): Vector<T> {\n return new Vector(clampRange(this, begin, end, ({ data, _offsets }, begin, end) =>\n sliceChunks(data, _offsets, begin, end)\n ));\n }\n\n public toJSON() { return [...this]; }\n\n /**\n * Return a JavaScript Array or TypedArray of the Vector's elements.\n *\n * @note If this Vector contains a single Data chunk and the Vector's type is a\n * primitive numeric type corresponding to one of the JavaScript TypedArrays, this\n * method returns a zero-copy slice of the underlying TypedArray values. If there's\n * more than one chunk, the resulting TypedArray will be a copy of the data from each\n * chunk's underlying TypedArray values.\n *\n * @returns An Array or TypedArray of the Vector's elements, based on the Vector's DataType.\n */\n public toArray(): T['TArray'] {\n const { type, data, length, stride, ArrayType } = this;\n // Fast case, return subarray if possible\n switch (type.typeId) {\n case Type.Int:\n case Type.Float:\n case Type.Decimal:\n case Type.Time:\n case Type.Timestamp:\n switch (data.length) {\n case 0: return new ArrayType();\n case 1: return data[0].values.subarray(0, length * stride);\n default: return data.reduce((memo, { values, length: chunk_length }) => {\n memo.array.set(values.subarray(0, chunk_length * stride), memo.offset);\n memo.offset += chunk_length * stride;\n return memo;\n }, { array: new ArrayType(length * stride), offset: 0 }).array;\n }\n }\n // Otherwise if not primitive, slow copy\n return [...this] as T['TArray'];\n }\n\n /**\n * Returns a string representation of the Vector.\n *\n * @returns A string representation of the Vector.\n */\n public toString() {\n return `[${[...this].join(',')}]`;\n }\n\n /**\n * Returns a child Vector by name, or null if this Vector has no child with the given name.\n * @param name The name of the child to retrieve.\n */\n public getChild<R extends keyof T['TChildren']>(name: R) {\n return this.getChildAt(this.type.children?.findIndex((f) => f.name === name));\n }\n\n /**\n * Returns a child Vector by index, or null if this Vector has no child at the supplied index.\n * @param index The index of the child to retrieve.\n */\n public getChildAt<R extends DataType = any>(index: number): Vector<R> | null {\n if (index > -1 && index < this.numChildren) {\n return new Vector(this.data.map(({ children }) => children[index] as Data<R>));\n }\n return null;\n }\n\n public get isMemoized(): boolean {\n if (DataType.isDictionary(this.type)) {\n return this.data[0].dictionary!.isMemoized;\n }\n return false;\n }\n\n /**\n * Adds memoization to the Vector's {@link get} method. For dictionary\n * vectors, this method return a vector that memoizes only the dictionary\n * values.\n *\n * Memoization is very useful when decoding a value is expensive such as\n * Utf8. The memoization creates a cache of the size of the Vector and\n * therefore increases memory usage.\n *\n * @returns A new vector that memoizes calls to {@link get}.\n */\n public memoize(): MemoizedVector<T> {\n if (DataType.isDictionary(this.type)) {\n const dictionary = new MemoizedVector(this.data[0].dictionary!);\n const newData = this.data.map((data) => {\n const cloned = data.clone();\n cloned.dictionary = dictionary;\n return cloned;\n });\n return new Vector(newData);\n }\n return new MemoizedVector(this);\n }\n\n /**\n * Returns a vector without memoization of the {@link get} method. If this\n * vector is not memoized, this method returns this vector.\n *\n * @returns A new vector without memoization.\n */\n public unmemoize(): Vector<T> {\n if (DataType.isDictionary(this.type) && this.isMemoized) {\n const dictionary = this.data[0].dictionary!.unmemoize();\n const newData = this.data.map((data) => {\n const newData = data.clone();\n newData.dictionary = dictionary;\n return newData;\n });\n return new Vector(newData);\n }\n return this;\n }\n\n // Initialize this static property via an IIFE so bundlers don't tree-shake\n // out this logic, but also so we're still compliant with `\"sideEffects\": false`\n protected static [Symbol.toStringTag] = ((proto: Vector) => {\n (proto as any).type = DataType.prototype;\n (proto as any).data = [];\n (proto as any).length = 0;\n (proto as any).stride = 1;\n (proto as any).numChildren = 0;\n (proto as any)._offsets = new Uint32Array([0]);\n (proto as any)[Symbol.isConcatSpreadable] = true;\n (proto as any)[kVectorSymbol] = true;\n\n const typeIds: Type[] = Object.keys(Type)\n .map((T: any) => Type[T] as any)\n .filter((T: any) => typeof T === 'number' && T !== Type.NONE);\n\n for (const typeId of typeIds) {\n const get = getVisitor.getVisitFnByTypeId(typeId);\n const set = setVisitor.getVisitFnByTypeId(typeId);\n const indexOf = indexOfVisitor.getVisitFnByTypeId(typeId);\n\n visitorsByTypeId[typeId] = { get, set, indexOf };\n vectorPrototypesByTypeId[typeId] = Object.create(proto, {\n ['isValid']: { value: wrapChunkedCall1(isChunkedValid) },\n ['get']: { value: wrapChunkedCall1(getVisitor.getVisitFnByTypeId(typeId)) },\n ['set']: { value: wrapChunkedCall2(setVisitor.getVisitFnByTypeId(typeId)) },\n ['indexOf']: { value: wrapChunkedIndexOf(indexOfVisitor.getVisitFnByTypeId(typeId)) },\n });\n }\n\n return 'Vector';\n })(Vector.prototype);\n}\n\nObject.defineProperty(Vector, Symbol.hasInstance, {\n value: function isVectorInstance(instance: any): instance is Vector {\n return Function.prototype[Symbol.hasInstance].call(this, instance)\n || (this === Vector && Vector.isVector(instance));\n },\n});\n\nclass MemoizedVector<T extends DataType = any> extends Vector<T> {\n\n public constructor(vector: Vector<T>) {\n super(vector.data);\n\n const get = this.get;\n const set = this.set;\n const slice = this.slice;\n\n const cache = new Array<T['TValue'] | null>(this.length);\n\n Object.defineProperty(this, 'get', {\n value(index: number) {\n const cachedValue = cache[index];\n if (cachedValue !== undefined) {\n return cachedValue;\n }\n const value = get.call(this, index);\n cache[index] = value;\n return value;\n }\n });\n\n Object.defineProperty(this, 'set', {\n value(index: number, value: T['TValue'] | null) {\n set.call(this, index, value);\n cache[index] = value;\n }\n });\n\n Object.defineProperty(this, 'slice', {\n value: (begin?: number, end?: number) => new MemoizedVector(slice.call(this, begin, end))\n });\n\n Object.defineProperty(this, 'isMemoized', { value: true });\n\n Object.defineProperty(this, 'unmemoize', {\n value: () => new Vector(this.data)\n });\n\n Object.defineProperty(this, 'memoize', {\n value: () => this\n });\n }\n}\n\nimport * as dtypes from './type.js';\n\n/**\n * Creates a Vector without data copies.\n *\n * @example\n * ```ts\n * const vector = makeVector(new Int32Array([1, 2, 3]));\n * ```\n */\nexport function makeVector<T extends TypedArray | BigIntArray>(data: T | readonly T[]): Vector<TypedArrayDataType<T>>;\nexport function makeVector<T extends DataView>(data: T | readonly T[]): Vector<dtypes.Int8>;\nexport function makeVector<T extends DataType>(data: Data<T> | readonly Data<T>[]): Vector<T>;\nexport function makeVector<T extends DataType>(data: Vector<T> | readonly Vector<T>[]): Vector<T>;\nexport function makeVector<T extends DataType>(data: DataProps<T> | readonly DataProps<T>[]): Vector<T>;\n\nexport function makeVector(init: any) {\n if (init) {\n if (init instanceof Data) { return new Vector([init]); }\n if (init instanceof Vector) { return new Vector(init.data); }\n if (init.type instanceof DataType) { return new Vector([makeData(init)]); }\n if (Array.isArray(init)) {\n return new Vector(init.flatMap(v => unwrapInputs(v)));\n }\n if (ArrayBuffer.isView(init)) {\n if (init instanceof DataView) {\n init = new Uint8Array(init.buffer);\n }\n const props = { offset: 0, length: init.length, nullCount: -1, data: init };\n if (init instanceof Int8Array) { return new Vector([makeData({ ...props, type: new dtypes.Int8 })]); }\n if (init instanceof Int16Array) { return new Vector([makeData({ ...props, type: new dtypes.Int16 })]); }\n if (init instanceof Int32Array) { return new Vector([makeData({ ...props, type: new dtypes.Int32 })]); }\n if (init instanceof BigInt64Array) { return new Vector([makeData({ ...props, type: new dtypes.Int64 })]); }\n if (init instanceof Uint8Array || init instanceof Uint8ClampedArray) { return new Vector([makeData({ ...props, type: new dtypes.Uint8 })]); }\n if (init instanceof Uint16Array) { return new Vector([makeData({ ...props, type: new dtypes.Uint16 })]); }\n if (init instanceof Uint32Array) { return new Vector([makeData({ ...props, type: new dtypes.Uint32 })]); }\n if (init instanceof BigUint64Array) { return new Vector([makeData({ ...props, type: new dtypes.Uint64 })]); }\n if (init instanceof Float32Array) { return new Vector([makeData({ ...props, type: new dtypes.Float32 })]); }\n if (init instanceof Float64Array) { return new Vector([makeData({ ...props, type: new dtypes.Float64 })]); }\n throw new Error('Unrecognized input');\n }\n }\n throw new Error('Unrecognized input');\n}\n\nfunction unwrapInputs(x: any) {\n return x instanceof Data ? [x] : (x instanceof Vector ? x.data : makeVector(x).data);\n}\n", null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from './vector.js';\nimport { Data, makeData } from './data.js';\nimport { MapRow, kKeys } from './row/map.js';\nimport {\n DataType, strideForType,\n Float, Int, Decimal, FixedSizeBinary,\n Date_, Time, Timestamp, Interval, Duration,\n Utf8, LargeUtf8, Binary, LargeBinary, List, LargeList, Map_,\n} from './type.js';\nimport { createIsValidFunction } from './builder/valid.js';\nimport { BufferBuilder, BitmapBufferBuilder, DataBufferBuilder, OffsetsBufferBuilder } from './builder/buffer.js';\n\nimport type { BuilderDuplexOptions } from './io/node/builder.js';\nimport type { BuilderTransform, BuilderTransformOptions } from './io/whatwg/builder.js';\n\nimport type { Duplex } from 'node:stream';\n\n/**\n * A set of options required to create a `Builder` instance for a given `DataType`.\n * @see {@link Builder}\n */\nexport interface BuilderOptions<T extends DataType = any, TNull = any> {\n type: T;\n nullValues?: TNull[] | ReadonlyArray<TNull> | null;\n children?: { [key: string]: BuilderOptions } | BuilderOptions[];\n}\n\n/**\n * An abstract base class for types that construct Arrow Vectors from arbitrary JavaScript values.\n *\n * A `Builder` is responsible for writing arbitrary JavaScript values\n * to ArrayBuffers and/or child Builders according to the Arrow specification\n * for each DataType, creating or resizing the underlying ArrayBuffers as necessary.\n *\n * The `Builder` for each Arrow `DataType` handles converting and appending\n * values for a given `DataType`. The high-level {@link makeBuilder `makeBuilder()`} convenience\n * method creates the specific `Builder` subclass for the supplied `DataType`.\n *\n * Once created, `Builder` instances support both appending values to the end\n * of the `Builder`, and random-access writes to specific indices\n * (`Builder.prototype.append(value)` is a convenience method for\n * `builder.set(builder.length, value)`). Appending or setting values beyond the\n * Builder's current length may cause the builder to grow its underlying buffers\n * or child Builders (if applicable) to accommodate the new values.\n *\n * After enough values have been written to a `Builder`, `Builder.prototype.flush()`\n * will commit the values to the underlying ArrayBuffers (or child Builders). The\n * internal Builder state will be reset, and an instance of `Data<T>` is returned.\n * Alternatively, `Builder.prototype.toVector()` will flush the `Builder` and return\n * an instance of `Vector<T>` instead.\n *\n * When there are no more values to write, use `Builder.prototype.finish()` to\n * finalize the `Builder`. This does not reset the internal state, so it is\n * necessary to call `Builder.prototype.flush()` or `toVector()` one last time\n * if there are still values queued to be flushed.\n *\n * Note: calling `Builder.prototype.finish()` is required when using a `DictionaryBuilder`,\n * because this is when it flushes the values that have been enqueued in its internal\n * dictionary's `Builder`, and creates the `dictionaryVector` for the `Dictionary` `DataType`.\n *\n * @example\n * ```ts\n * import { makeBuilder, Utf8 } from 'apache-arrow';\n *\n * const utf8Builder = makeBuilder({\n * type: new Utf8(),\n * nullValues: [null, 'n/a']\n * });\n *\n * utf8Builder\n * .append('hello')\n * .append('n/a')\n * .append('world')\n * .append(null);\n *\n * const utf8Vector = utf8Builder.finish().toVector();\n *\n * console.log(utf8Vector.toJSON());\n * // > [\"hello\", null, \"world\", null]\n * ```\n *\n * @typeparam T The `DataType` of this `Builder`.\n * @typeparam TNull The type(s) of values which will be considered null-value sentinels.\n */\nexport abstract class Builder<T extends DataType = any, TNull = any> {\n\n /** @nocollapse */\n // @ts-ignore\n public static throughNode<T extends DataType = any, TNull = any>(options: BuilderDuplexOptions<T, TNull>): Duplex {\n throw new Error(`\"throughNode\" not available in this environment`);\n }\n /** @nocollapse */\n // @ts-ignore\n public static throughDOM<T extends DataType = any, TNull = any>(options: BuilderTransformOptions<T, TNull>): BuilderTransform<T, TNull> {\n throw new Error(`\"throughDOM\" not available in this environment`);\n }\n\n /**\n * Construct a builder with the given Arrow DataType with optional null values,\n * which will be interpreted as \"null\" when set or appended to the `Builder`.\n * @param {{ type: T, nullValues?: any[] }} options A `BuilderOptions` object used to create this `Builder`.\n */\n constructor({ 'type': type, 'nullValues': nulls }: BuilderOptions<T, TNull>) {\n this.type = type;\n this.children = [];\n this.nullValues = nulls;\n this.stride = strideForType(type);\n this._nulls = new BitmapBufferBuilder();\n if (nulls && nulls.length > 0) {\n this._isValid = createIsValidFunction(nulls);\n }\n }\n\n /**\n * The Builder's `DataType` instance.\n * @readonly\n */\n public type: T;\n /**\n * The number of values written to the `Builder` that haven't been flushed yet.\n * @readonly\n */\n public length = 0;\n /**\n * A boolean indicating whether `Builder.prototype.finish()` has been called on this `Builder`.\n * @readonly\n */\n public finished = false;\n /**\n * The number of elements in the underlying values TypedArray that\n * represent a single logical element, determined by this Builder's\n * `DataType`. This is 1 for most types, but is larger when the `DataType`\n * is `Int64`, `Uint64`, `Decimal`, `DateMillisecond`, certain variants of\n * `Interval`, `Time`, or `Timestamp`, `FixedSizeBinary`, and `FixedSizeList`.\n * @readonly\n */\n public readonly stride: number;\n public readonly children: Builder[];\n /**\n * The list of null-value sentinels for this `Builder`. When one of these values\n * is written to the `Builder` (either via `Builder.prototype.set()` or `Builder.prototype.append()`),\n * a 1-bit is written to this Builder's underlying null BitmapBufferBuilder.\n * @readonly\n */\n public readonly nullValues?: TNull[] | ReadonlyArray<TNull> | null;\n\n /**\n * Flush the `Builder` and return a `Vector<T>`.\n * @returns {Vector<T>} A `Vector<T>` of the flushed values.\n */\n public toVector() { return new Vector([this.flush()]); }\n\n public get ArrayType() { return this.type.ArrayType; }\n public get nullCount() { return this._nulls.numInvalid; }\n public get numChildren() { return this.children.length; }\n\n /**\n * @returns The aggregate length (in bytes) of the values that have been written.\n */\n public get byteLength(): number {\n let size = 0;\n const { _offsets, _values, _nulls, _typeIds, children } = this;\n _offsets && (size += _offsets.byteLength);\n _values && (size += _values.byteLength);\n _nulls && (size += _nulls.byteLength);\n _typeIds && (size += _typeIds.byteLength);\n return children.reduce((size, child) => size + child.byteLength, size);\n }\n\n /**\n * @returns The aggregate number of rows that have been reserved to write new values.\n */\n public get reservedLength(): number {\n return this._nulls.reservedLength;\n }\n\n /**\n * @returns The aggregate length (in bytes) that has been reserved to write new values.\n */\n public get reservedByteLength(): number {\n let size = 0;\n this._offsets && (size += this._offsets.reservedByteLength);\n this._values && (size += this._values.reservedByteLength);\n this._nulls && (size += this._nulls.reservedByteLength);\n this._typeIds && (size += this._typeIds.reservedByteLength);\n return this.children.reduce((size, child) => size + child.reservedByteLength, size);\n }\n\n declare protected _offsets: DataBufferBuilder<T['TOffsetArray']>;\n public get valueOffsets() { return this._offsets ? this._offsets.buffer : null; }\n\n declare protected _values: BufferBuilder<T['TArray']>;\n public get values() { return this._values ? this._values.buffer : null; }\n\n declare protected _nulls: BitmapBufferBuilder;\n public get nullBitmap() { return this._nulls ? this._nulls.buffer : null; }\n\n declare protected _typeIds: DataBufferBuilder<Int8Array>;\n public get typeIds() { return this._typeIds ? this._typeIds.buffer : null; }\n\n declare protected _isValid: (value: T['TValue'] | TNull) => boolean;\n declare protected _setValue: (inst: Builder<T>, index: number, value: T['TValue']) => void;\n\n /**\n * Appends a value (or null) to this `Builder`.\n * This is equivalent to `builder.set(builder.length, value)`.\n * @param {T['TValue'] | TNull } value The value to append.\n */\n public append(value: T['TValue'] | TNull) { return this.set(this.length, value); }\n\n /**\n * Validates whether a value is valid (true), or null (false)\n * @param {T['TValue'] | TNull } value The value to compare against null the value representations\n */\n public isValid(value: T['TValue'] | TNull): boolean { return this._isValid(value); }\n\n /**\n * Write a value (or null-value sentinel) at the supplied index.\n * If the value matches one of the null-value representations, a 1-bit is\n * written to the null `BitmapBufferBuilder`. Otherwise, a 0 is written to\n * the null `BitmapBufferBuilder`, and the value is passed to\n * `Builder.prototype.setValue()`.\n * @param {number} index The index of the value to write.\n * @param {T['TValue'] | TNull } value The value to write at the supplied index.\n * @returns {this} The updated `Builder` instance.\n */\n public set(index: number, value: T['TValue'] | TNull) {\n if (this.setValid(index, this.isValid(value))) {\n this.setValue(index, value);\n }\n return this;\n }\n\n /**\n * Write a value to the underlying buffers at the supplied index, bypassing\n * the null-value check. This is a low-level method that\n * @param {number} index\n * @param {T['TValue'] | TNull } value\n */\n public setValue(index: number, value: T['TValue']) { this._setValue(this, index, value); }\n public setValid(index: number, valid: boolean) {\n this.length = this._nulls.set(index, +valid).length;\n return valid;\n }\n\n // @ts-ignore\n public addChild(child: Builder, name = `${this.numChildren}`) {\n throw new Error(`Cannot append children to non-nested type \"${this.type}\"`);\n }\n\n /**\n * Retrieve the child `Builder` at the supplied `index`, or null if no child\n * exists at that index.\n * @param {number} index The index of the child `Builder` to retrieve.\n * @returns {Builder | null} The child Builder at the supplied index or null.\n */\n public getChildAt<R extends DataType = any>(index: number): Builder<R> | null {\n return this.children[index] || null;\n }\n\n /**\n * Commit all the values that have been written to their underlying\n * ArrayBuffers, including any child Builders if applicable, and reset\n * the internal `Builder` state.\n * @returns A `Data<T>` of the buffers and children representing the values written.\n */\n public flush(): Data<T> {\n let data: BufferBuilder<T['TArray']> | undefined;\n let typeIds: Int8Array;\n let nullBitmap: Uint8Array | undefined;\n let valueOffsets: T['TOffsetArray'];\n const { type, length, nullCount, _typeIds, _offsets, _values, _nulls } = this;\n\n if (typeIds = _typeIds?.flush(length)) { // Unions, DenseUnions\n valueOffsets = _offsets?.flush(length);\n } else if (valueOffsets = _offsets?.flush(length)) { // Variable-width primitives (Binary, LargeBinary, Utf8, LargeUtf8), and Lists\n data = _values?.flush(_offsets.last());\n } else { // Fixed-width primitives (Int, Float, Decimal, Time, Timestamp, Duration and Interval)\n data = _values?.flush(length);\n }\n\n if (nullCount > 0) {\n nullBitmap = _nulls?.flush(length);\n }\n\n const children = this.children.map((child) => child.flush());\n\n this.clear();\n\n return makeData(<any>{\n type, length, nullCount,\n children, 'child': children[0],\n data, typeIds, nullBitmap, valueOffsets,\n }) as Data<T>;\n }\n\n /**\n * Finalize this `Builder`, and child builders if applicable.\n * @returns {this} The finalized `Builder` instance.\n */\n public finish() {\n this.finished = true;\n for (const child of this.children) child.finish();\n return this;\n }\n\n /**\n * Clear this Builder's internal state, including child Builders if applicable, and reset the length to 0.\n * @returns {this} The cleared `Builder` instance.\n */\n public clear() {\n this.length = 0;\n this._nulls?.clear();\n this._values?.clear();\n this._offsets?.clear();\n this._typeIds?.clear();\n for (const child of this.children) child.clear();\n return this;\n }\n}\n\n(Builder.prototype as any).length = 1;\n(Builder.prototype as any).stride = 1;\n(Builder.prototype as any).children = null;\n(Builder.prototype as any).finished = false;\n(Builder.prototype as any).nullValues = null;\n(Builder.prototype as any)._isValid = () => true;\n\n/** @ignore */\nexport abstract class FixedWidthBuilder<T extends Int | Float | FixedSizeBinary | Date_ | Timestamp | Time | Decimal | Interval | Duration = any, TNull = any> extends Builder<T, TNull> {\n constructor(opts: BuilderOptions<T, TNull>) {\n super(opts);\n this._values = new DataBufferBuilder(this.ArrayType, 0, this.stride);\n }\n public setValue(index: number, value: T['TValue']) {\n const values = this._values;\n values.reserve(index - values.length + 1);\n return super.setValue(index, value);\n }\n}\n\n/** @ignore */\nexport abstract class VariableWidthBuilder<T extends Binary | LargeBinary | Utf8 | LargeUtf8 | List | LargeList | Map_, TNull = any> extends Builder<T, TNull> {\n protected _pendingLength = 0;\n protected _offsets: OffsetsBufferBuilder<T>;\n protected _pending: Map<number, any> | undefined;\n constructor(opts: BuilderOptions<T, TNull>) {\n super(opts);\n this._offsets = new OffsetsBufferBuilder(opts.type);\n }\n public setValue(index: number, value: T['TValue']) {\n const pending = this._pending || (this._pending = new Map());\n const current = pending.get(index);\n current && (this._pendingLength -= current.length);\n this._pendingLength += (value instanceof MapRow) ? value[kKeys].length : value.length;\n pending.set(index, value);\n }\n public setValid(index: number, isValid: boolean) {\n if (!super.setValid(index, isValid)) {\n (this._pending || (this._pending = new Map())).set(index, undefined);\n return false;\n }\n return true;\n }\n public clear() {\n this._pendingLength = 0;\n this._pending = undefined;\n return super.clear();\n }\n public flush() {\n this._flush();\n return super.flush();\n }\n public finish() {\n this._flush();\n return super.finish();\n }\n protected _flush() {\n const pending = this._pending;\n const pendingLength = this._pendingLength;\n this._pendingLength = 0;\n this._pending = undefined;\n if (pending && pending.size > 0) {\n this._flushPending(pending, pendingLength);\n }\n return this;\n }\n protected abstract _flushPending(pending: Map<number, any>, pendingLength: number): void;\n}\n", null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { MetadataVersion } from './enum.js';\nimport { DataType, TypeMap } from './type.js';\n\n/** @ignore */\nconst kSchemaSymbol = Symbol.for('apache-arrow/Schema');\n/** @ignore */\nconst kFieldSymbol = Symbol.for('apache-arrow/Field');\n\nexport class Schema<T extends TypeMap = any> {\n\n /**\n * Check if an object is an instance of Schema.\n * This works across different instances of the Arrow library.\n */\n /** @nocollapse */ static isSchema(x: any): x is Schema {\n return x?.[kSchemaSymbol] === true;\n }\n\n /** @internal */\n declare public readonly [kSchemaSymbol]: true;\n\n public readonly fields: Field<T[keyof T]>[];\n public readonly metadata: Map<string, string>;\n public readonly dictionaries: Map<number, DataType>;\n public readonly metadataVersion: MetadataVersion;\n\n constructor(\n fields: Field<T[keyof T]>[] = [],\n metadata?: Map<string, string> | null,\n dictionaries?: Map<number, DataType> | null,\n metadataVersion = MetadataVersion.V5) {\n this.fields = (fields || []) as Field<T[keyof T]>[];\n this.metadata = metadata || new Map();\n if (!dictionaries) {\n dictionaries = generateDictionaryMap(this.fields);\n }\n this.dictionaries = dictionaries;\n this.metadataVersion = metadataVersion;\n }\n public get [Symbol.toStringTag]() { return 'Schema'; }\n\n public get names(): (keyof T)[] { return this.fields.map((f) => f.name); }\n\n public toString() {\n return `Schema<{ ${this.fields.map((f, i) => `${i}: ${f}`).join(', ')} }>`;\n }\n\n /**\n * Construct a new Schema containing only specified fields.\n *\n * @param fieldNames Names of fields to keep.\n * @returns A new Schema of fields matching the specified names.\n */\n public select<K extends keyof T = any>(fieldNames: K[]) {\n const names = new Set<string | K>(fieldNames);\n const fields = this.fields.filter((f) => names.has(f.name)) as Field<T[K]>[];\n return new Schema<{ [P in K]: T[P] }>(fields, this.metadata);\n }\n\n /**\n * Construct a new Schema containing only fields at the specified indices.\n *\n * @param fieldIndices Indices of fields to keep.\n * @returns A new Schema of fields at the specified indices.\n */\n public selectAt<K extends T = any>(fieldIndices: number[]) {\n const fields = fieldIndices.map((i) => this.fields[i]).filter(Boolean) as Field<K[keyof K]>[];\n return new Schema<K>(fields, this.metadata);\n }\n\n public assign<R extends TypeMap = any>(schema: Schema<R>): Schema<T & R>;\n public assign<R extends TypeMap = any>(...fields: (Field<R[keyof R]> | Field<R[keyof R]>[])[]): Schema<T & R>;\n public assign<R extends TypeMap = any>(...args: (Schema<R> | Field<R[keyof R]> | Field<R[keyof R]>[])[]) {\n\n const other = (args[0] instanceof Schema\n ? args[0] as Schema<R>\n : Array.isArray(args[0])\n ? new Schema<R>(<Field<R[keyof R]>[]>args[0])\n : new Schema<R>(<Field<R[keyof R]>[]>args));\n\n const curFields = [...this.fields] as Field[];\n const metadata = mergeMaps(mergeMaps(new Map(), this.metadata), other.metadata);\n const newFields = other.fields.filter((f2) => {\n const i = curFields.findIndex((f) => f.name === f2.name);\n return ~i ? (curFields[i] = f2.clone({\n metadata: mergeMaps(mergeMaps(new Map(), curFields[i].metadata), f2.metadata)\n })) && false : true;\n }) as Field[];\n\n const newDictionaries = generateDictionaryMap(newFields, new Map());\n\n return new Schema<T & R>(\n [...curFields, ...newFields], metadata,\n new Map([...this.dictionaries, ...newDictionaries])\n );\n }\n}\n\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\n(Schema.prototype as any).fields = <any>null;\n(Schema.prototype as any).metadata = <any>null;\n(Schema.prototype as any).dictionaries = <any>null;\n(Schema.prototype as any)[kSchemaSymbol] = true;\n\nObject.defineProperty(Schema, Symbol.hasInstance, {\n value: function isSchemaInstance(instance: any): instance is Schema {\n return Function.prototype[Symbol.hasInstance].call(this, instance)\n || (this === Schema && Schema.isSchema(instance));\n },\n});\n\nexport class Field<T extends DataType = any> {\n\n /**\n * Check if an object is an instance of Field.\n * This works across different instances of the Arrow library.\n */\n /** @nocollapse */ static isField(x: any): x is Field {\n return x?.[kFieldSymbol] === true;\n }\n\n /** @internal */\n declare public readonly [kFieldSymbol]: true;\n\n public static new<T extends DataType = any>(props: { name: string | number; type: T; nullable?: boolean; metadata?: Map<string, string> | null }): Field<T>;\n public static new<T extends DataType = any>(name: string | number | Field<T>, type: T, nullable?: boolean, metadata?: Map<string, string> | null): Field<T>;\n /** @nocollapse */\n public static new<T extends DataType = any>(...args: any[]) {\n let [name, type, nullable, metadata] = args;\n if (args[0] && typeof args[0] === 'object') {\n ({ name } = args[0]);\n (type === undefined) && (type = args[0].type);\n (nullable === undefined) && (nullable = args[0].nullable);\n (metadata === undefined) && (metadata = args[0].metadata);\n }\n return new Field<T>(`${name}`, type, nullable, metadata);\n }\n\n public readonly type: T;\n public readonly name: string;\n public readonly nullable: boolean;\n public readonly metadata: Map<string, string>;\n\n constructor(name: string, type: T, nullable = false, metadata?: Map<string, string> | null) {\n this.name = name;\n this.type = type;\n this.nullable = nullable;\n this.metadata = metadata || new Map();\n }\n\n public get typeId() { return this.type.typeId; }\n public get [Symbol.toStringTag]() { return 'Field'; }\n public toString() { return `${this.name}: ${this.type}`; }\n public clone<R extends DataType = T>(props: { name?: string | number; type?: R; nullable?: boolean; metadata?: Map<string, string> | null }): Field<R>;\n public clone<R extends DataType = T>(name?: string | number | Field<T>, type?: R, nullable?: boolean, metadata?: Map<string, string> | null): Field<R>;\n public clone<R extends DataType = T>(...args: any[]) {\n let [name, type, nullable, metadata] = args;\n (!args[0] || typeof args[0] !== 'object')\n ? ([name = this.name, type = this.type, nullable = this.nullable, metadata = this.metadata] = args)\n : ({ name = this.name, type = this.type, nullable = this.nullable, metadata = this.metadata } = args[0]);\n return Field.new<R>(name, type, nullable, metadata);\n }\n}\n\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\n(Field.prototype as any).type = null;\n(Field.prototype as any).name = null;\n(Field.prototype as any).nullable = null;\n(Field.prototype as any).metadata = null;\n(Field.prototype as any)[kFieldSymbol] = true;\n\nObject.defineProperty(Field, Symbol.hasInstance, {\n value: function isFieldInstance(instance: any): instance is Field {\n return Function.prototype[Symbol.hasInstance].call(this, instance)\n || (this === Field && Field.isField(instance));\n },\n});\n\n/** @ignore */\nfunction mergeMaps<TKey, TVal>(m1?: Map<TKey, TVal> | null, m2?: Map<TKey, TVal> | null): Map<TKey, TVal> {\n return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n\n/** @ignore */\nfunction generateDictionaryMap(fields: Field[], dictionaries = new Map<number, DataType>()): Map<number, DataType> {\n\n for (let i = -1, n = fields.length; ++i < n;) {\n const field = fields[i];\n const type = field.type;\n if (DataType.isDictionary(type)) {\n if (!dictionaries.has(type.id)) {\n dictionaries.set(type.id, type.dictionary);\n } else if (dictionaries.get(type.id) !== type.dictionary) {\n throw new Error(`Cannot create Schema containing two different dictionaries with the same Id`);\n }\n }\n if (type.children && type.children.length > 0) {\n generateDictionaryMap(type.children, dictionaries);\n }\n }\n\n return dictionaries;\n}\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Field, Schema } from './schema.js';\nimport * as dtypes from './type.js';\nimport { Data, DataProps } from './data.js';\nimport { BuilderType, JavaScriptDataType } from './interfaces.js';\nimport { Vector, makeVector } from './vector.js';\nimport { Builder, BuilderOptions } from './builder.js';\nimport { instance as getBuilderConstructor } from './visitor/builderctor.js';\nimport { ArrayDataType, BigIntArray, JavaScriptArrayDataType, TypedArray, TypedArrayDataType } from './interfaces.js';\nimport { Table } from './table.js';\nimport { RecordBatch } from './recordbatch.js';\nimport { compareTypes } from './visitor/typecomparator.js';\n\nexport function makeBuilder<T extends dtypes.DataType = any, TNull = any>(options: BuilderOptions<T, TNull>): BuilderType<T, TNull> {\n\n const type = options.type;\n const builder = new (getBuilderConstructor.getVisitFn<T>(type)())(options) as Builder<T, TNull>;\n\n if (type.children && type.children.length > 0) {\n\n const children = options['children'] || [] as BuilderOptions[];\n const defaultOptions = { 'nullValues': options['nullValues'] };\n const getChildOptions = Array.isArray(children)\n ? ((_: Field, i: number) => children[i] || defaultOptions)\n : (({ name }: Field) => children[name] || defaultOptions);\n\n for (const [index, field] of type.children.entries()) {\n const { type } = field;\n const opts = getChildOptions(field, index);\n builder.children.push(makeBuilder({ ...opts, type }));\n }\n }\n\n return builder as BuilderType<T, TNull>;\n}\n\n/**\n * Creates a Vector from a JavaScript array via a {@link Builder}.\n * Use {@link makeVector} if you only want to create a vector from a typed array.\n *\n * @example\n * ```ts\n * const vf64 = vectorFromArray([1, 2, 3]);\n * const vi8 = vectorFromArray([1, 2, 3], new Int8);\n * const vdict = vectorFromArray(['foo', 'bar']);\n * const vstruct = vectorFromArray([{a: 'foo', b: 42}, {a: 'bar', b: 12}]);\n * ```\n */\nexport function vectorFromArray(values: readonly (null | undefined)[], type?: dtypes.Null): Vector<dtypes.Null>;\nexport function vectorFromArray(values: readonly (null | undefined | boolean)[], type?: dtypes.Bool): Vector<dtypes.Bool>;\nexport function vectorFromArray<T extends dtypes.Utf8 | dtypes.Dictionary<dtypes.Utf8> = dtypes.Dictionary<dtypes.Utf8, dtypes.Int32>>(values: readonly (null | undefined | string)[], type?: T): Vector<T>;\nexport function vectorFromArray<T extends dtypes.TimestampMillisecond>(values: readonly (null | undefined | Date)[], type?: T): Vector<T>;\nexport function vectorFromArray<T extends dtypes.Int>(values: readonly (null | undefined | number)[], type: T): Vector<T>;\nexport function vectorFromArray<T extends dtypes.Int64 | dtypes.Uint64 = dtypes.Int64>(values: readonly (null | undefined | bigint)[], type?: T): Vector<T>;\nexport function vectorFromArray<T extends dtypes.Float = dtypes.Float64>(values: readonly (null | undefined | number)[], type?: T): Vector<T>;\nexport function vectorFromArray<T extends dtypes.DataType>(values: readonly (unknown)[], type: T): Vector<T>;\nexport function vectorFromArray<T extends readonly unknown[]>(values: T): Vector<JavaScriptArrayDataType<T>>;\n/** Creates a Vector from a typed array via {@link makeVector}. */\nexport function vectorFromArray<T extends TypedArray | BigIntArray>(data: T): Vector<TypedArrayDataType<T>>;\n\nexport function vectorFromArray<T extends dtypes.DataType>(data: Data<T>): Vector<T>;\nexport function vectorFromArray<T extends dtypes.DataType>(data: Vector<T>): Vector<T>;\nexport function vectorFromArray<T extends dtypes.DataType>(data: DataProps<T>): Vector<T>;\nexport function vectorFromArray<T extends TypedArray | BigIntArray | readonly unknown[]>(data: T): Vector<ArrayDataType<T>>;\n\nexport function vectorFromArray(init: any, type?: dtypes.DataType) {\n if (init instanceof Data || init instanceof Vector || init.type instanceof dtypes.DataType || ArrayBuffer.isView(init)) {\n return makeVector(init as any);\n }\n const options: IterableBuilderOptions = { type: type ?? inferType(init), nullValues: [null] };\n const chunks = [...builderThroughIterable(options)(init)];\n const vector = chunks.length === 1 ? chunks[0] : chunks.reduce((a, b) => a.concat(b));\n if (dtypes.DataType.isDictionary(vector.type)) {\n return vector.memoize();\n }\n return vector;\n}\n\n/**\n * Creates a {@link Table} from an array of objects.\n *\n * @param array A table of objects.\n */\nexport function tableFromJSON<T extends Record<string, unknown>>(array: T[]): Table<{ [P in keyof T]: JavaScriptDataType<T[P]> }> {\n const vector = vectorFromArray(array) as Vector<dtypes.Struct<any>>;\n const batch = new RecordBatch(new Schema(vector.type.children), vector.data[0]);\n return new Table(batch);\n}\n\n/** @ignore */\nfunction inferType<T extends readonly unknown[]>(values: T): JavaScriptArrayDataType<T>;\nfunction inferType(value: readonly unknown[]): dtypes.DataType {\n if (value.length === 0) { return new dtypes.Null; }\n let nullsCount = 0;\n let arraysCount = 0;\n let objectsCount = 0;\n let numbersCount = 0;\n let stringsCount = 0;\n let bigintsCount = 0;\n let booleansCount = 0;\n let datesCount = 0;\n\n for (const val of value) {\n if (val == null) { ++nullsCount; continue; }\n switch (typeof val) {\n case 'bigint': ++bigintsCount; continue;\n case 'boolean': ++booleansCount; continue;\n case 'number': ++numbersCount; continue;\n case 'string': ++stringsCount; continue;\n case 'object':\n if (Array.isArray(val)) {\n ++arraysCount;\n } else if (Object.prototype.toString.call(val) === '[object Date]') {\n ++datesCount;\n } else {\n ++objectsCount;\n }\n continue;\n }\n throw new TypeError('Unable to infer Vector type from input values, explicit type declaration expected.');\n }\n\n if (numbersCount + nullsCount === value.length) {\n return new dtypes.Float64;\n } else if (stringsCount + nullsCount === value.length) {\n return new dtypes.Dictionary(new dtypes.Utf8, new dtypes.Int32);\n } else if (bigintsCount + nullsCount === value.length) {\n return new dtypes.Int64;\n } else if (booleansCount + nullsCount === value.length) {\n return new dtypes.Bool;\n } else if (datesCount + nullsCount === value.length) {\n return new dtypes.TimestampMillisecond;\n } else if (arraysCount + nullsCount === value.length) {\n const array = value as Array<unknown>[];\n const childType = inferType(array[array.findIndex((ary) => ary != null)]);\n if (array.every((ary) => ary == null || compareTypes(childType, inferType(ary)))) {\n return new dtypes.List(new Field('', childType, true));\n }\n } else if (objectsCount + nullsCount === value.length) {\n const fields = new Map<string, Field>();\n for (const row of value as Record<string, unknown>[]) {\n for (const key of Object.keys(row)) {\n if (!fields.has(key) && row[key] != null) {\n // use the type inferred for the first instance of a found key\n fields.set(key, new Field(key, inferType([row[key]]), true));\n }\n }\n }\n return new dtypes.Struct([...fields.values()]);\n }\n\n throw new TypeError('Unable to infer Vector type from input values, explicit type declaration expected.');\n}\n\n/**\n * A set of options to create an Iterable or AsyncIterable `Builder` transform function.\n * @see {@link builderThroughIterable}\n * @see {@link builderThroughAsyncIterable}\n */\nexport interface IterableBuilderOptions<T extends dtypes.DataType = any, TNull = any> extends BuilderOptions<T, TNull> {\n highWaterMark?: number;\n queueingStrategy?: 'bytes' | 'count';\n dictionaryHashFunction?: (value: any) => string | number;\n valueToChildTypeId?: (builder: Builder<T, TNull>, value: any, offset: number) => number;\n}\n\n/** @ignore */\ntype ThroughIterable<T extends dtypes.DataType = any, TNull = any> = (source: Iterable<T['TValue'] | TNull>) => IterableIterator<Vector<T>>;\n\n/**\n * Transform a synchronous `Iterable` of arbitrary JavaScript values into a\n * sequence of Arrow Vector<T> following the chunking semantics defined in\n * the supplied `options` argument.\n *\n * This function returns a function that accepts an `Iterable` of values to\n * transform. When called, this function returns an Iterator of `Vector<T>`.\n *\n * The resulting `Iterator<Vector<T>>` yields Vectors based on the\n * `queueingStrategy` and `highWaterMark` specified in the `options` argument.\n *\n * * If `queueingStrategy` is `\"count\"` (or omitted), The `Iterator<Vector<T>>`\n * will flush the underlying `Builder` (and yield a new `Vector<T>`) once the\n * Builder's `length` reaches or exceeds the supplied `highWaterMark`.\n * * If `queueingStrategy` is `\"bytes\"`, the `Iterator<Vector<T>>` will flush\n * the underlying `Builder` (and yield a new `Vector<T>`) once its `byteLength`\n * reaches or exceeds the supplied `highWaterMark`.\n *\n * @param {IterableBuilderOptions<T, TNull>} options An object of properties which determine the `Builder` to create and the chunking semantics to use.\n * @returns A function which accepts a JavaScript `Iterable` of values to\n * write, and returns an `Iterator` that yields Vectors according\n * to the chunking semantics defined in the `options` argument.\n * @nocollapse\n */\nexport function builderThroughIterable<T extends dtypes.DataType = any, TNull = any>(options: IterableBuilderOptions<T, TNull>) {\n const { ['queueingStrategy']: queueingStrategy = 'count' } = options;\n const { ['highWaterMark']: highWaterMark = queueingStrategy !== 'bytes' ? Number.POSITIVE_INFINITY : 2 ** 14 } = options;\n const sizeProperty: 'length' | 'byteLength' = queueingStrategy !== 'bytes' ? 'length' : 'byteLength';\n return function* (source: Iterable<T['TValue'] | TNull>) {\n let numChunks = 0;\n const builder = makeBuilder(options);\n for (const value of source) {\n if (builder.append(value)[sizeProperty] >= highWaterMark) {\n ++numChunks && (yield builder.toVector());\n }\n }\n if (builder.finish().length > 0 || numChunks === 0) {\n yield builder.toVector();\n }\n } as ThroughIterable<T, TNull>;\n}\n\n/** @ignore */\ntype ThroughAsyncIterable<T extends dtypes.DataType = any, TNull = any> = (source: Iterable<T['TValue'] | TNull> | AsyncIterable<T['TValue'] | TNull>) => AsyncIterableIterator<Vector<T>>;\n\n/**\n * Transform an `AsyncIterable` of arbitrary JavaScript values into a\n * sequence of Arrow Vector<T> following the chunking semantics defined in\n * the supplied `options` argument.\n *\n * This function returns a function that accepts an `AsyncIterable` of values to\n * transform. When called, this function returns an AsyncIterator of `Vector<T>`.\n *\n * The resulting `AsyncIterator<Vector<T>>` yields Vectors based on the\n * `queueingStrategy` and `highWaterMark` specified in the `options` argument.\n *\n * * If `queueingStrategy` is `\"count\"` (or omitted), The `AsyncIterator<Vector<T>>`\n * will flush the underlying `Builder` (and yield a new `Vector<T>`) once the\n * Builder's `length` reaches or exceeds the supplied `highWaterMark`.\n * * If `queueingStrategy` is `\"bytes\"`, the `AsyncIterator<Vector<T>>` will flush\n * the underlying `Builder` (and yield a new `Vector<T>`) once its `byteLength`\n * reaches or exceeds the supplied `highWaterMark`.\n *\n * @param {IterableBuilderOptions<T, TNull>} options An object of properties which determine the `Builder` to create and the chunking semantics to use.\n * @returns A function which accepts a JavaScript `AsyncIterable` of values\n * to write, and returns an `AsyncIterator` that yields Vectors\n * according to the chunking semantics defined in the `options`\n * argument.\n * @nocollapse\n */\nexport function builderThroughAsyncIterable<T extends dtypes.DataType = any, TNull = any>(options: IterableBuilderOptions<T, TNull>) {\n const { ['queueingStrategy']: queueingStrategy = 'count' } = options;\n const { ['highWaterMark']: highWaterMark = queueingStrategy !== 'bytes' ? Number.POSITIVE_INFINITY : 2 ** 14 } = options;\n const sizeProperty: 'length' | 'byteLength' = queueingStrategy !== 'bytes' ? 'length' : 'byteLength';\n return async function* (source: Iterable<T['TValue'] | TNull> | AsyncIterable<T['TValue'] | TNull>) {\n let numChunks = 0;\n const builder = makeBuilder(options);\n for await (const value of source) {\n if (builder.append(value)[sizeProperty] >= highWaterMark) {\n ++numChunks && (yield builder.toVector());\n }\n }\n if (builder.finish().length > 0 || numChunks === 0) {\n yield builder.toVector();\n }\n } as ThroughAsyncIterable<T, TNull>;\n}\n", null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Type } from './enum.js';\nimport { Data, makeData } from './data.js';\nimport { vectorFromArray } from './factories.js';\nimport { makeVector, Vector } from './vector.js';\nimport { Field, Schema } from './schema.js';\nimport { DataType, Null, Struct, TypeMap } from './type.js';\nimport { compareSchemas } from './visitor/typecomparator.js';\nimport { distributeVectorsIntoRecordBatches } from './util/recordbatch.js';\n\nimport {\n isChunkedValid,\n computeChunkOffsets,\n computeChunkNullCounts,\n wrapChunkedCall1,\n wrapChunkedCall2,\n wrapChunkedIndexOf,\n sliceChunks,\n} from './util/chunk.js';\n\nimport { instance as getVisitor } from './visitor/get.js';\nimport { instance as setVisitor } from './visitor/set.js';\nimport { instance as indexOfVisitor } from './visitor/indexof.js';\nimport { instance as iteratorVisitor } from './visitor/iterator.js';\n\nimport { DataProps } from './data.js';\nimport { clampRange, wrapIndex } from './util/vector.js';\nimport { ArrayDataType, BigIntArray, TypedArray, TypedArrayDataType } from './interfaces.js';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from './recordbatch.js';\n\n/** @ignore */\nconst kTableSymbol = Symbol.for('apache-arrow/Table');\n\n/** @ignore */\nexport interface Table<T extends TypeMap = any> {\n ///\n // Virtual properties for the TypeScript compiler.\n // These do not exist at runtime.\n ///\n readonly TType: Struct<T>;\n readonly TArray: Struct<T>['TArray'];\n readonly TValue: Struct<T>['TValue'];\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable\n */\n [Symbol.isConcatSpreadable]: true;\n}\n\n/**\n * Tables are collections of {@link Vector}s and have a {@link Schema}. Use the convenience methods {@link makeTable}\n * or {@link tableFromArrays} to create a table in JavaScript. To create a table from the IPC format, use\n * {@link tableFromIPC}.\n */\nexport class Table<T extends TypeMap = any> {\n\n /**\n * Check if an object is an instance of Table.\n * This works across different instances of the Arrow library.\n */\n /** @nocollapse */ static isTable(x: any): x is Table {\n return x?.[kTableSymbol] === true;\n }\n\n /** @internal */\n declare public readonly [kTableSymbol]: true;\n\n constructor();\n constructor(batches: Iterable<RecordBatch<T>>);\n constructor(...batches: readonly RecordBatch<T>[]);\n constructor(...columns: { [P in keyof T]: Vector<T[P]> }[]);\n constructor(...columns: { [P in keyof T]: Data<T[P]> | DataProps<T[P]> }[]);\n constructor(schema: Schema<T>, ...columns: { [P in keyof T]: Vector<T[P]> }[]);\n constructor(schema: Schema<T>, ...columns: { [P in keyof T]: Data<T[P]> | DataProps<T[P]> }[]);\n constructor(schema: Schema<T>, data?: RecordBatch<T> | RecordBatch<T>[]);\n constructor(schema: Schema<T>, data?: RecordBatch<T> | RecordBatch<T>[], offsets?: Uint32Array);\n constructor(...args: any[]) {\n\n if (args.length === 0) {\n this.batches = [];\n this.schema = new Schema([]);\n this._offsets = [0];\n return this;\n }\n\n let schema: Schema<T> | undefined;\n let offsets: Uint32Array | number[] | undefined;\n\n if (args[0] instanceof Schema) {\n schema = args.shift() as Schema<T>;\n }\n\n if (args.at(-1) instanceof Uint32Array) {\n offsets = args.pop();\n }\n\n const unwrap = (x: any): RecordBatch<T>[] => {\n if (x) {\n if (x instanceof RecordBatch) {\n return [x];\n } else if (x instanceof Table) {\n return x.batches;\n } else if (x instanceof Data) {\n if (x.type instanceof Struct) {\n return [new RecordBatch(new Schema(x.type.children), x as Data<Struct<any>>)];\n }\n } else if (Array.isArray(x)) {\n return x.flatMap(v => unwrap(v));\n } else if (typeof x[Symbol.iterator] === 'function') {\n return [...x].flatMap(v => unwrap(v));\n } else if (typeof x === 'object') {\n const keys = Object.keys(x) as (keyof T)[];\n const vecs = keys.map((k) => new Vector([x[k]]));\n const batchSchema = schema ?? new Schema(keys.map((k, i) => new Field(String(k), vecs[i].type, vecs[i].nullable)));\n const [, batches] = distributeVectorsIntoRecordBatches(batchSchema, vecs);\n return batches.length === 0 ? [new RecordBatch(x)] : batches;\n }\n }\n return [];\n };\n\n const batches = args.flatMap(v => unwrap(v));\n\n schema = schema ?? batches[0]?.schema ?? new Schema([]);\n\n if (!(schema instanceof Schema)) {\n throw new TypeError('Table constructor expects a [Schema, RecordBatch[]] pair.');\n }\n\n for (const batch of batches) {\n if (!(batch instanceof RecordBatch)) {\n throw new TypeError('Table constructor expects a [Schema, RecordBatch[]] pair.');\n }\n if (!compareSchemas(schema, batch.schema)) {\n throw new TypeError('Table and inner RecordBatch schemas must be equivalent.');\n }\n }\n\n this.schema = schema;\n this.batches = batches;\n this._offsets = offsets ?? computeChunkOffsets(this.data);\n }\n\n declare protected _offsets: Uint32Array | number[];\n declare protected _nullCount: number;\n\n declare public readonly schema: Schema<T>;\n\n /**\n * The contiguous {@link RecordBatch `RecordBatch`} chunks of the Table rows.\n */\n declare public readonly batches: RecordBatch<T>[];\n\n /**\n * The contiguous {@link RecordBatch `RecordBatch`} chunks of the Table rows.\n */\n public get data() { return this.batches.map(({ data }) => data); }\n\n /**\n * The number of columns in this Table.\n */\n public get numCols() { return this.schema.fields.length; }\n\n /**\n * The number of rows in this Table.\n */\n public get numRows() {\n return this.data.reduce((numRows, data) => numRows + data.length, 0);\n }\n\n /**\n * The number of null rows in this Table.\n */\n public get nullCount() {\n if (this._nullCount === -1) {\n this._nullCount = computeChunkNullCounts(this.data);\n }\n return this._nullCount;\n }\n\n /**\n * Check whether an element is null.\n *\n * @param index The index at which to read the validity bitmap.\n */\n // @ts-ignore\n public isValid(index: number): boolean { return false; }\n\n /**\n * Get an element value by position.\n *\n * @param index The index of the element to read.\n */\n // @ts-ignore\n public get(index: number): Struct<T>['TValue'] | null { return null; }\n\n /**\n * Get an element value by position.\n * @param index The index of the element to read. A negative index will count back from the last element.\n */\n // @ts-ignore\n public at(index: number): Struct<T>['TValue'] | null {\n return this.get(wrapIndex(index, this.numRows));\n }\n\n /**\n * Set an element value by position.\n *\n * @param index The index of the element to write.\n * @param value The value to set.\n */\n // @ts-ignore\n public set(index: number, value: Struct<T>['TValue'] | null): void { return; }\n\n /**\n * Retrieve the index of the first occurrence of a value in an Vector.\n *\n * @param element The value to locate in the Vector.\n * @param offset The index at which to begin the search. If offset is omitted, the search starts at index 0.\n */\n // @ts-ignore\n public indexOf(element: Struct<T>['TValue'], offset?: number): number { return -1; }\n\n /**\n * Iterator for rows in this Table.\n */\n public [Symbol.iterator]() {\n if (this.batches.length > 0) {\n return iteratorVisitor.visit(new Vector(this.data)) as IterableIterator<Struct<T>['TValue']>;\n }\n return (new Array(0))[Symbol.iterator]();\n }\n\n /**\n * Return a JavaScript Array of the Table rows.\n *\n * @returns An Array of Table rows.\n */\n public toArray() {\n return [...this];\n }\n\n /**\n * Returns a string representation of the Table rows.\n *\n * @returns A string representation of the Table rows.\n */\n public toString() {\n return `[\\n ${this.toArray().join(',\\n ')}\\n]`;\n }\n\n /**\n * Combines two or more Tables of the same schema.\n *\n * @param others Additional Tables to add to the end of this Tables.\n */\n public concat(...others: Table<T>[]) {\n const schema = this.schema;\n const data = this.data.concat(others.flatMap(({ data }) => data));\n return new Table(schema, data.map((data) => new RecordBatch(schema, data)));\n }\n\n /**\n * Return a zero-copy sub-section of this Table.\n *\n * @param begin The beginning of the specified portion of the Table.\n * @param end The end of the specified portion of the Table. This is exclusive of the element at the index 'end'.\n */\n public slice(begin?: number, end?: number): Table<T> {\n const schema = this.schema;\n [begin, end] = clampRange({ length: this.numRows }, begin, end);\n const data = sliceChunks(this.data, this._offsets, begin, end);\n return new Table(schema, data.map((chunk) => new RecordBatch(schema, chunk)));\n }\n\n /**\n * Returns a child Vector by name, or null if this Vector has no child with the given name.\n *\n * @param name The name of the child to retrieve.\n */\n public getChild<P extends keyof T>(name: P) {\n return this.getChildAt<T[P]>(this.schema.fields.findIndex((f) => f.name === name));\n }\n\n /**\n * Returns a child Vector by index, or null if this Vector has no child at the supplied index.\n *\n * @param index The index of the child to retrieve.\n */\n public getChildAt<R extends T[keyof T] = any>(index: number): Vector<R> | null {\n if (index > -1 && index < this.schema.fields.length) {\n const data = this.data.map((data) => data.children[index] as Data<R>);\n if (data.length === 0) {\n const { type } = this.schema.fields[index] as Field<R>;\n const empty = makeData<R>({ type, length: 0, nullCount: 0 });\n data.push(empty._changeLengthAndBackfillNullBitmap(this.numRows));\n }\n return new Vector(data);\n }\n return null;\n }\n\n /**\n * Sets a child Vector by name.\n *\n * @param name The name of the child to overwrite.\n * @returns A new Table with the supplied child for the specified name.\n */\n public setChild<P extends keyof T, R extends DataType>(name: P, child: Vector<R>) {\n return this.setChildAt(this.schema.fields?.findIndex((f) => f.name === name), child) as Table<T & { [K in P]: R }>;\n }\n\n /**\n * Sets a child Vector by index.\n *\n * @param index The index of the child to overwrite.\n * @returns A new Table with the supplied child at the specified index.\n */\n public setChildAt(index: number, child?: null): Table;\n public setChildAt<R extends DataType = any>(index: number, child: Vector<R>): Table;\n public setChildAt(index: number, child: any) {\n let schema: Schema = this.schema;\n let batches: RecordBatch[] = [...this.batches];\n if (index > -1 && index < this.numCols) {\n if (!child) {\n child = new Vector([makeData({ type: new Null, length: this.numRows })]);\n }\n const fields = schema.fields.slice() as Field<any>[];\n const field = fields[index].clone({ type: child.type });\n const children = this.schema.fields.map((_, i) => this.getChildAt(i)!);\n [fields[index], children[index]] = [field, child];\n [schema, batches] = distributeVectorsIntoRecordBatches(schema, children);\n }\n return new Table(schema, batches);\n }\n\n /**\n * Construct a new Table containing only specified columns.\n *\n * @param columnNames Names of columns to keep.\n * @returns A new Table of columns matching the specified names.\n */\n public select<K extends keyof T = any>(columnNames: K[]) {\n const nameToIndex = this.schema.fields.reduce((m, f, i) => m.set(f.name as K, i), new Map<K, number>());\n return this.selectAt(columnNames.map((columnName) => nameToIndex.get(columnName)!).filter((x) => x > -1));\n }\n\n /**\n * Construct a new Table containing only columns at the specified indices.\n *\n * @param columnIndices Indices of columns to keep.\n * @returns A new Table of columns at the specified indices.\n */\n public selectAt<K extends T[keyof T] = any>(columnIndices: number[]) {\n const schema = this.schema.selectAt(columnIndices);\n const data = this.batches.map((batch) => batch.selectAt(columnIndices));\n return new Table<{ [key: string]: K }>(schema, data);\n }\n\n public assign<R extends TypeMap = any>(other: Table<R>) {\n\n const fields = this.schema.fields;\n const [indices, oldToNew] = other.schema.fields.reduce((memo, f2, newIdx) => {\n const [indices, oldToNew] = memo;\n const i = fields.findIndex((f) => f.name === f2.name);\n ~i ? (oldToNew[i] = newIdx) : indices.push(newIdx);\n return memo;\n }, [[], []] as number[][]);\n\n const schema = this.schema.assign(other.schema);\n const columns = [\n ...fields.map((_, i) => [i, oldToNew[i]]).map(([i, j]) =>\n (j === undefined ? this.getChildAt(i) : other.getChildAt(j))!),\n ...indices.map((i) => other.getChildAt(i)!)\n ].filter(Boolean) as Vector<(T & R)[keyof T | keyof R]>[];\n\n return new Table<T & R>(...distributeVectorsIntoRecordBatches<any>(schema, columns));\n }\n\n // Initialize this static property via an IIFE so bundlers don't tree-shake\n // out this logic, but also so we're still compliant with `\"sideEffects\": false`\n protected static [Symbol.toStringTag] = ((proto: Table) => {\n (proto as any).schema = null;\n (proto as any).batches = [];\n (proto as any)._offsets = new Uint32Array([0]);\n (proto as any)._nullCount = -1;\n (proto as any)[Symbol.isConcatSpreadable] = true;\n (proto as any)[kTableSymbol] = true;\n (proto as any)['isValid'] = wrapChunkedCall1(isChunkedValid);\n (proto as any)['get'] = wrapChunkedCall1(getVisitor.getVisitFn(Type.Struct));\n (proto as any)['set'] = wrapChunkedCall2(setVisitor.getVisitFn(Type.Struct));\n (proto as any)['indexOf'] = wrapChunkedIndexOf(indexOfVisitor.getVisitFn(Type.Struct));\n return 'Table';\n })(Table.prototype);\n}\n\nObject.defineProperty(Table, Symbol.hasInstance, {\n value: function isTableInstance(instance: any): instance is Table {\n return Function.prototype[Symbol.hasInstance].call(this, instance)\n || (this === Table && Table.isTable(instance));\n },\n});\n\n\ntype VectorsMap<T extends TypeMap> = { [P in keyof T]: Vector<T[P]> };\n\n/**\n * Creates a new Table from an object of typed arrays.\n *\n* @example\n * ```ts\n * const table = makeTable({\n * a: new Int8Array([1, 2, 3]),\n * })\n * ```\n *\n * @param input Input an object of typed arrays.\n * @returns A new Table.\n */\nexport function makeTable<I extends Record<string | number | symbol, TypedArray>>(input: I): Table<{ [P in keyof I]: TypedArrayDataType<I[P]> }> {\n type T = { [P in keyof I]: TypedArrayDataType<I[P]> };\n const vecs = {} as VectorsMap<T>;\n const inputs = Object.entries(input) as [keyof I, I[keyof I]][];\n for (const [key, col] of inputs) {\n vecs[key] = makeVector(col);\n }\n return new Table<T>(vecs);\n}\n\n/**\n * Creates a new Table from an object of typed arrays or JavaScript arrays.\n *\n * @example\n * ```ts\n * const table = tableFromArrays({\n * a: [1, 2, 3],\n * b: new Int8Array([1, 2, 3]),\n * })\n * ```\n *\n * @param input Input an object of typed arrays or JavaScript arrays.\n * @returns A new Table.\n */\nexport function tableFromArrays<I extends Record<string | number | symbol, TypedArray | BigIntArray | readonly unknown[]>>(input: I): Table<{ [P in keyof I]: ArrayDataType<I[P]> }> {\n type T = { [P in keyof I]: ArrayDataType<I[P]> };\n const vecs = {} as VectorsMap<T>;\n const inputs = Object.entries(input) as [keyof I, I[keyof I]][];\n for (const [key, col] of inputs) {\n vecs[key] = vectorFromArray(col);\n }\n return new Table<T>(vecs);\n}\n", "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data, makeData } from './data.js';\nimport { Table } from './table.js';\nimport { Vector } from './vector.js';\nimport { Schema, Field } from './schema.js';\nimport { DataType, Struct, Null, TypeMap } from './type.js';\nimport { wrapIndex } from './util/vector.js';\n\nimport { instance as getVisitor } from './visitor/get.js';\nimport { instance as setVisitor } from './visitor/set.js';\nimport { instance as indexOfVisitor } from './visitor/indexof.js';\nimport { instance as iteratorVisitor } from './visitor/iterator.js';\n\n/** @ignore */\nconst kRecordBatchSymbol = Symbol.for('apache-arrow/RecordBatch');\n\n/** @ignore */\nexport interface RecordBatch<T extends TypeMap = any> {\n ///\n // Virtual properties for the TypeScript compiler.\n // These do not exist at runtime.\n ///\n readonly TType: Struct<T>;\n readonly TArray: Struct<T>['TArray'];\n readonly TValue: Struct<T>['TValue'];\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable\n */\n [Symbol.isConcatSpreadable]: true;\n}\n\n/**\n * A RecordBatch is a collection of equal-length columns conforming to a\n * particular {@link Schema}. A {@link Table} is composed of one or more\n * RecordBatches.\n */\nexport class RecordBatch<T extends TypeMap = any> {\n\n /**\n * Check if an object is an instance of RecordBatch.\n * This works across different instances of the Arrow library.\n */\n /** @nocollapse */ static isRecordBatch(x: any): x is RecordBatch {\n return x?.[kRecordBatchSymbol] === true;\n }\n\n /** @internal */\n declare public readonly [kRecordBatchSymbol]: true;\n\n constructor(columns: { [P in keyof T]: Data<T[P]> });\n constructor(schema: Schema<T>, data?: Data<Struct<T>>, metadata?: Map<string, string>);\n constructor(...args: any[]) {\n switch (args.length) {\n case 3:\n case 2: {\n [this.schema] = args;\n if (!(this.schema instanceof Schema)) {\n throw new TypeError('RecordBatch constructor expects a [Schema, Data] pair.');\n }\n [,\n this.data = makeData({\n nullCount: 0,\n type: new Struct<T>(this.schema.fields),\n children: this.schema.fields.map((f) => makeData({ type: f.type, nullCount: 0 }))\n }),\n this._metadata = new Map()\n ] = args;\n if (!(this.data instanceof Data)) {\n throw new TypeError('RecordBatch constructor expects a [Schema, Data] pair.');\n }\n [this.schema, this.data] = ensureSameLengthData<T>(this.schema, this.data.children as Data<T[keyof T]>[], this.data.length);\n break;\n }\n case 1: {\n const [obj] = args;\n const { fields, children, length } = Object.keys(obj).reduce((memo, name, i) => {\n memo.children[i] = obj[name];\n memo.length = Math.max(memo.length, obj[name].length);\n memo.fields[i] = Field.new({ name, type: obj[name].type, nullable: true });\n return memo;\n }, {\n length: 0,\n fields: new Array<Field<T[keyof T]>>(),\n children: new Array<Data<T[keyof T]>>(),\n });\n\n const schema = new Schema<T>(fields);\n const data = makeData({ type: new Struct<T>(fields), length, children, nullCount: 0 });\n [this.schema, this.data] = ensureSameLengthData<T>(schema, data.children as Data<T[keyof T]>[], length);\n this._metadata = new Map();\n break;\n }\n default: throw new TypeError('RecordBatch constructor expects an Object mapping names to child Data, or a [Schema, Data] pair.');\n }\n }\n\n protected _dictionaries?: Map<number, Vector>;\n protected _metadata: Map<string, string>;\n\n public readonly schema: Schema<T>;\n public readonly data: Data<Struct<T>>;\n\n /**\n * Custom metadata for this RecordBatch.\n */\n public get metadata() { return this._metadata; }\n\n public get dictionaries() {\n return this._dictionaries || (this._dictionaries = collectDictionaries(this.schema.fields, this.data.children));\n }\n\n /**\n * The number of columns in this RecordBatch.\n */\n public get numCols() { return this.schema.fields.length; }\n\n /**\n * The number of rows in this RecordBatch.\n */\n public get numRows() { return this.data.length; }\n\n /**\n * The number of null rows in this RecordBatch.\n */\n public get nullCount() {\n return this.data.nullCount;\n }\n\n /**\n * Check whether an row is null.\n * @param index The index at which to read the validity bitmap.\n */\n public isValid(index: number) {\n return this.data.getValid(index);\n }\n\n /**\n * Get a row by position.\n * @param index The index of the row to read.\n */\n public get(index: number) {\n return getVisitor.visit(this.data, index);\n }\n\n /**\n * Get a row value by position.\n * @param index The index of the row to read. A negative index will count back from the last row.\n */\n public at(index: number) {\n return this.get(wrapIndex(index, this.numRows));\n }\n\n /**\n * Set a row by position.\n * @param index The index of the row to write.\n * @param value The value to set.\n */\n public set(index: number, value: Struct<T>['TValue']) {\n return setVisitor.visit(this.data, index, value);\n }\n\n /**\n * Retrieve the index of the first occurrence of a row in an RecordBatch.\n * @param element The row to locate in the RecordBatch.\n * @param offset The index at which to begin the search. If offset is omitted, the search starts at index 0.\n */\n public indexOf(element: Struct<T>['TValue'], offset?: number): number {\n return indexOfVisitor.visit(this.data, element, offset);\n }\n\n /**\n * Iterator for rows in this RecordBatch.\n */\n public [Symbol.iterator]() {\n return iteratorVisitor.visit(new Vector([this.data])) as IterableIterator<Struct<T>['TValue']>;\n }\n\n /**\n * Return a JavaScript Array of the RecordBatch rows.\n * @returns An Array of RecordBatch rows.\n */\n public toArray() {\n return [...this];\n }\n\n /**\n * Combines two or more RecordBatch of the same schema.\n * @param others Additional RecordBatch to add to the end of this RecordBatch.\n */\n public concat(...others: RecordBatch<T>[]) {\n return new Table(this.schema, [this, ...others]);\n }\n\n /**\n * Return a zero-copy sub-section of this RecordBatch.\n * @param start The beginning of the specified portion of the RecordBatch.\n * @param end The end of the specified portion of the RecordBatch. This is exclusive of the row at the index 'end'.\n */\n public slice(begin?: number, end?: number): RecordBatch<T> {\n const [slice] = new Vector([this.data]).slice(begin, end).data;\n return new RecordBatch(this.schema, slice, this._metadata);\n }\n\n /**\n * Returns a child Vector by name, or null if this Vector has no child with the given name.\n * @param name The name of the child to retrieve.\n */\n public getChild<P extends keyof T>(name: P) {\n return this.getChildAt<T[P]>(this.schema.fields?.findIndex((f) => f.name === name));\n }\n\n /**\n * Returns a child Vector by index, or null if this Vector has no child at the supplied index.\n * @param index The index of the child to retrieve.\n */\n public getChildAt<R extends T[keyof T] = any>(index: number): Vector<R> | null {\n if (index > -1 && index < this.schema.fields.length) {\n return new Vector([this.data.children[index]]) as Vector<R>;\n }\n return null;\n }\n\n /**\n * Sets a child Vector by name.\n * @param name The name of the child to overwrite.\n * @returns A new RecordBatch with the new child for the specified name.\n */\n public setChild<P extends keyof T, R extends DataType>(name: P, child: Vector<R>) {\n return this.setChildAt(this.schema.fields?.findIndex((f) => f.name === name), child) as RecordBatch<T & { [K in P]: R }>;\n }\n\n /**\n * Sets a child Vector by index.\n * @param index The index of the child to overwrite.\n * @returns A new RecordBatch with the new child at the specified index.\n */\n public setChildAt(index: number, child?: null): RecordBatch;\n public setChildAt<R extends DataType = any>(index: number, child: Vector<R>): RecordBatch;\n public setChildAt(index: number, child: any) {\n let schema: Schema = this.schema;\n let data: Data<Struct> = this.data;\n if (index > -1 && index < this.numCols) {\n if (!child) {\n child = new Vector([makeData({ type: new Null, length: this.numRows })]);\n }\n const fields = schema.fields.slice() as Field<any>[];\n const children = data.children.slice() as Data<any>[];\n const field = fields[index].clone({ type: child.type });\n [fields[index], children[index]] = [field, child.data[0]];\n schema = new Schema(fields, new Map(this.schema.metadata));\n data = makeData({ type: new Struct<T>(fields), length: data.length, children });\n }\n return new RecordBatch(schema, data, this._metadata);\n }\n\n /**\n * Construct a new RecordBatch containing only specified columns.\n *\n * @param columnNames Names of columns to keep.\n * @returns A new RecordBatch of columns matching the specified names.\n */\n public select<K extends keyof T = any>(columnNames: K[]) {\n const schema = this.schema.select(columnNames);\n const type = new Struct(schema.fields);\n const children = [] as Data<T[K]>[];\n for (const name of columnNames) {\n const index = this.schema.fields.findIndex((f) => f.name === name);\n if (~index) {\n children[index] = this.data.children[index] as Data<T[K]>;\n }\n }\n return new RecordBatch(schema, makeData({ type, length: this.numRows, children }), this._metadata);\n }\n\n /**\n * Construct a new RecordBatch containing only columns at the specified indices.\n *\n * @param columnIndices Indices of columns to keep.\n * @returns A new RecordBatch of columns matching at the specified indices.\n */\n public selectAt<K extends T = any>(columnIndices: number[]) {\n const schema = this.schema.selectAt<K>(columnIndices);\n const children = columnIndices.map((i) => this.data.children[i]).filter(Boolean);\n const subset = makeData({ type: new Struct(schema.fields), length: this.numRows, children });\n return new RecordBatch<{ [P in keyof K]: K[P] }>(schema, subset, this._metadata);\n }\n\n // Initialize this static property via an IIFE so bundlers don't tree-shake\n // out this logic, but also so we're still compliant with `\"sideEffects\": false`\n protected static [Symbol.toStringTag] = ((proto: RecordBatch) => {\n (proto as any)._nullCount = -1;\n (proto as any)[Symbol.isConcatSpreadable] = true;\n (proto as any)[kRecordBatchSymbol] = true;\n return 'RecordBatch';\n })(RecordBatch.prototype);\n}\n\nObject.defineProperty(RecordBatch, Symbol.hasInstance, {\n value: function isRecordBatchInstance(instance: any): instance is RecordBatch {\n return Function.prototype[Symbol.hasInstance].call(this, instance)\n || (this === RecordBatch && RecordBatch.isRecordBatch(instance));\n },\n});\n\n\n/** @ignore */\nfunction ensureSameLengthData<T extends TypeMap = any>(\n schema: Schema<T>,\n chunks: Data<T[keyof T]>[],\n maxLength = chunks.reduce((max, col) => Math.max(max, col.length), 0)\n) {\n const fields = [...schema.fields];\n const children = [...chunks] as Data<T[keyof T]>[];\n const nullBitmapSize = ((maxLength + 63) & ~63) >> 3;\n\n for (const [idx, field] of schema.fields.entries()) {\n const chunk = chunks[idx];\n if (!chunk || chunk.length !== maxLength) {\n fields[idx] = field.clone({ nullable: true });\n children[idx] = chunk?._changeLengthAndBackfillNullBitmap(maxLength) ?? makeData({\n type: field.type,\n length: maxLength,\n nullCount: maxLength,\n nullBitmap: new Uint8Array(nullBitmapSize)\n });\n }\n }\n\n return [\n schema.assign(fields),\n makeData({ type: new Struct<T>(fields), length: maxLength, children })\n ] as [Schema<T>, Data<Struct<T>>];\n}\n\n/** @ignore */\nfunction collectDictionaries(fields: Field[], children: readonly Data[], dictionaries = new Map<number, Vector>()): Map<number, Vector> {\n if ((fields?.length ?? 0) > 0 && (fields?.length === children?.length)) {\n for (let i = -1, n = fields.length; ++i < n;) {\n const { type } = fields[i];\n const data = children[i];\n for (const next of [data, ...(data?.dictionary?.data || [])]) {\n collectDictionaries(type.children, next?.children, dictionaries);\n }\n if (DataType.isDictionary(type)) {\n const { id } = type;\n if (!dictionaries.has(id)) {\n if (data?.dictionary) {\n dictionaries.set(id, data.dictionary);\n }\n } else if (dictionaries.get(id) !== data.dictionary) {\n throw new Error(`Cannot create Schema containing two different dictionaries with the same Id`);\n }\n }\n }\n }\n return dictionaries;\n}\n\n/**\n * An internal class used by the `RecordBatchReader` and `RecordBatchWriter`\n * implementations to differentiate between a stream with valid zero-length\n * RecordBatches, and a stream with a Schema message, but no RecordBatches.\n * @see https://github.com/apache/arrow/pull/4373\n * @ignore\n * @private\n */\nexport class _InternalEmptyPlaceholderRecordBatch<T extends TypeMap = any> extends RecordBatch<T> {\n constructor(schema: Schema<T>, metadata?: Map<string, string>) {\n const children = schema.fields.map((f) => makeData({ type: f.type }));\n const data = makeData({ type: new Struct<T>(schema.fields), length: 0, nullCount: 0, children });\n super(schema, data, metadata || new Map());\n }\n}\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nexport { MessageHeader } from './fb/message-header.js';\nexport { CompressionType } from './fb/compression-type.js';\n\nexport {\n Type,\n BufferType,\n DateUnit,\n TimeUnit,\n Precision,\n UnionMode,\n IntervalUnit,\n MetadataVersion,\n} from './enum.js';\n\nexport { Data, makeData } from './data.js';\nexport type { TypeMap } from './type.js';\nexport {\n DataType,\n Null,\n Bool,\n Int, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64,\n Float, Float16, Float32, Float64,\n Utf8, LargeUtf8, Utf8View,\n Binary, LargeBinary, BinaryView,\n FixedSizeBinary,\n Date_, DateDay, DateMillisecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Decimal,\n List,\n LargeList,\n Struct,\n Union, DenseUnion, SparseUnion,\n Dictionary,\n Interval, IntervalDayTime, IntervalYearMonth, IntervalMonthDayNano,\n Duration, DurationSecond, DurationMillisecond, DurationMicrosecond, DurationNanosecond,\n FixedSizeList,\n Map_\n} from './type.js';\n\nexport { Table, makeTable, tableFromArrays } from './table.js';\nexport { Vector, makeVector } from './vector.js';\nexport { Visitor } from './visitor.js';\nexport { Schema, Field } from './schema.js';\n\nexport { MapRow } from './row/map.js';\nexport { StructRow } from './row/struct.js';\nexport type { StructRowProxy } from './row/struct.js';\n\nexport { Builder } from './builder.js';\nexport { makeBuilder, vectorFromArray, tableFromJSON, builderThroughIterable, builderThroughAsyncIterable } from './factories.js';\nexport type { BuilderOptions } from './builder.js';\nexport { BoolBuilder } from './builder/bool.js';\nexport { NullBuilder } from './builder/null.js';\nexport { DateBuilder, DateDayBuilder, DateMillisecondBuilder } from './builder/date.js';\nexport { DecimalBuilder } from './builder/decimal.js';\nexport { DictionaryBuilder } from './builder/dictionary.js';\nexport { FixedSizeBinaryBuilder } from './builder/fixedsizebinary.js';\nexport { FloatBuilder, Float16Builder, Float32Builder, Float64Builder } from './builder/float.js';\nexport { IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder } from './builder/int.js';\nexport { TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder } from './builder/time.js';\nexport { TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder } from './builder/timestamp.js';\nexport { IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder, IntervalMonthDayNanoBuilder } from './builder/interval.js';\nexport { DurationBuilder, DurationSecondBuilder, DurationMillisecondBuilder, DurationMicrosecondBuilder, DurationNanosecondBuilder } from './builder/duration.js';\nexport { Utf8Builder } from './builder/utf8.js';\nexport { Utf8ViewBuilder } from './builder/utf8view.js';\nexport { LargeUtf8Builder } from './builder/largeutf8.js';\nexport { BinaryBuilder } from './builder/binary.js';\nexport { BinaryViewBuilder } from './builder/binaryview.js';\nexport { LargeBinaryBuilder } from './builder/largebinary.js';\nexport { ListBuilder } from './builder/list.js';\nexport { LargeListBuilder } from './builder/largelist.js';\nexport { FixedSizeListBuilder } from './builder/fixedsizelist.js';\nexport { MapBuilder } from './builder/map.js';\nexport { StructBuilder } from './builder/struct.js';\nexport { UnionBuilder, SparseUnionBuilder, DenseUnionBuilder } from './builder/union.js';\n\nexport { ByteStream, AsyncByteStream, AsyncByteQueue } from './io/stream.js';\nexport type { ReadableSource, WritableSink } from './io/stream.js';\nexport { RecordBatchReader, RecordBatchFileReader, RecordBatchStreamReader, AsyncRecordBatchFileReader, AsyncRecordBatchStreamReader } from './ipc/reader.js';\nexport { RecordBatchWriter, RecordBatchFileWriter, RecordBatchStreamWriter, RecordBatchJSONWriter } from './ipc/writer.js';\nexport { tableToIPC, tableFromIPC } from './ipc/serialization.js';\nexport { compressionRegistry } from './ipc/compression/registry.js';\nexport type { Codec } from './ipc/compression/registry.js';\nexport { MessageReader, AsyncMessageReader, JSONMessageReader } from './ipc/message.js';\nexport { Message } from './ipc/metadata/message.js';\nexport { RecordBatch } from './recordbatch.js';\nexport type { ArrowJSONLike, FileHandle, Readable, Writable, ReadableWritable, ReadableDOMStreamOptions } from './io/interfaces.js';\n\nexport {\n isArrowSchema,\n isArrowField,\n isArrowDataType,\n isArrowData,\n isArrowVector,\n isArrowRecordBatch,\n isArrowTable,\n} from './util/typecheck.js';\n\nimport * as util_bn_ from './util/bn.js';\nimport * as util_int_ from './util/int.js';\nimport * as util_bit_ from './util/bit.js';\nimport * as util_math_ from './util/math.js';\nimport * as util_buffer_ from './util/buffer.js';\nimport * as util_vector_ from './util/vector.js';\nimport * as util_pretty_ from './util/pretty.js';\n\nimport * as util_interval_ from './util/interval.js';\nexport type * from './util/interval.js';\n\nimport * as util_typecheck_ from './util/typecheck.js';\n\nimport { compareSchemas, compareFields, compareTypes } from './visitor/typecomparator.js';\n\n/** @ignore */\nexport const util = {\n ...util_bn_,\n ...util_int_,\n ...util_bit_,\n ...util_math_,\n ...util_buffer_,\n ...util_vector_,\n ...util_pretty_,\n ...util_interval_,\n ...util_typecheck_,\n compareSchemas,\n compareFields,\n compareTypes,\n};\n", "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport streamAdapters from './io/adapters.js';\nimport { Builder } from './builder.js';\nimport { RecordBatchReader, RecordBatchFileReader, RecordBatchStreamReader, } from './ipc/reader.js';\nimport { RecordBatchWriter, RecordBatchFileWriter, RecordBatchStreamWriter, } from './ipc/writer.js';\nimport { toDOMStream } from './io/whatwg/iterable.js';\nimport { builderThroughDOMStream } from './io/whatwg/builder.js';\nimport { recordBatchReaderThroughDOMStream } from './io/whatwg/reader.js';\nimport { recordBatchWriterThroughDOMStream } from './io/whatwg/writer.js';\n\nstreamAdapters.toDOMStream = toDOMStream;\nBuilder['throughDOM'] = builderThroughDOMStream;\nRecordBatchReader['throughDOM'] = recordBatchReaderThroughDOMStream;\nRecordBatchFileReader['throughDOM'] = recordBatchReaderThroughDOMStream;\nRecordBatchStreamReader['throughDOM'] = recordBatchReaderThroughDOMStream;\nRecordBatchWriter['throughDOM'] = recordBatchWriterThroughDOMStream;\nRecordBatchFileWriter['throughDOM'] = recordBatchWriterThroughDOMStream;\nRecordBatchStreamWriter['throughDOM'] = recordBatchWriterThroughDOMStream;\n\nexport type {\n TypeMap, StructRowProxy,\n ReadableSource, WritableSink,\n ArrowJSONLike, FileHandle, Readable, Writable, ReadableWritable, ReadableDOMStreamOptions,\n IntervalDayTimeObject, IntervalMonthDayNanoObject,\n Codec\n} from './Arrow.js';\n\nexport {\n DateUnit, IntervalUnit, MessageHeader, MetadataVersion, Precision, TimeUnit, Type, UnionMode, BufferType,\n Data, makeData,\n DataType,\n Null,\n Bool,\n Int, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64,\n Float, Float16, Float32, Float64,\n Utf8, LargeUtf8, Utf8View,\n Binary, LargeBinary, BinaryView,\n FixedSizeBinary,\n Date_, DateDay, DateMillisecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Decimal,\n List,\n LargeList,\n Struct, StructRow,\n Union, DenseUnion, SparseUnion,\n Dictionary,\n Interval, IntervalDayTime, IntervalYearMonth, IntervalMonthDayNano,\n Duration, DurationSecond, DurationMillisecond, DurationMicrosecond, DurationNanosecond,\n FixedSizeList,\n Map_, MapRow,\n Table, makeTable, tableFromArrays,\n Schema, Field,\n Visitor,\n Vector, makeVector, vectorFromArray, tableFromJSON,\n ByteStream, AsyncByteStream, AsyncByteQueue,\n RecordBatchReader, RecordBatchFileReader, RecordBatchStreamReader, AsyncRecordBatchFileReader, AsyncRecordBatchStreamReader,\n RecordBatchWriter, RecordBatchFileWriter, RecordBatchStreamWriter, RecordBatchJSONWriter,\n tableFromIPC, tableToIPC,\n MessageReader, AsyncMessageReader, JSONMessageReader,\n Message,\n RecordBatch,\n util,\n Builder, makeBuilder, builderThroughIterable, builderThroughAsyncIterable,\n compressionRegistry, CompressionType,\n isArrowSchema,\n isArrowField,\n isArrowDataType,\n isArrowData,\n isArrowVector,\n isArrowRecordBatch,\n isArrowTable\n} from './Arrow.js';\n\nexport {\n BinaryBuilder, BinaryViewBuilder, LargeBinaryBuilder,\n BoolBuilder,\n DateBuilder, DateDayBuilder, DateMillisecondBuilder,\n DecimalBuilder,\n DictionaryBuilder,\n FixedSizeBinaryBuilder,\n FixedSizeListBuilder,\n FloatBuilder, Float16Builder, Float32Builder, Float64Builder,\n IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder, IntervalMonthDayNanoBuilder,\n DurationBuilder, DurationSecondBuilder, DurationMillisecondBuilder, DurationMicrosecondBuilder, DurationNanosecondBuilder,\n IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder,\n ListBuilder,\n LargeListBuilder,\n MapBuilder,\n NullBuilder,\n StructBuilder,\n TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder,\n TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder,\n UnionBuilder, DenseUnionBuilder, SparseUnionBuilder,\n Utf8Builder, Utf8ViewBuilder, LargeUtf8Builder\n} from './Arrow.js';\n", "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport streamAdapters from './io/adapters.js';\nimport { Builder } from './builder.js';\nimport { RecordBatchReader } from './ipc/reader.js';\nimport { RecordBatchWriter } from './ipc/writer.js';\nimport { toNodeStream } from './io/node/iterable.js';\nimport { builderThroughNodeStream } from './io/node/builder.js';\nimport { recordBatchReaderThroughNodeStream } from './io/node/reader.js';\nimport { recordBatchWriterThroughNodeStream } from './io/node/writer.js';\n\nstreamAdapters.toNodeStream = toNodeStream;\nBuilder['throughNode'] = builderThroughNodeStream;\nRecordBatchReader['throughNode'] = recordBatchReaderThroughNodeStream;\nRecordBatchWriter['throughNode'] = recordBatchWriterThroughNodeStream;\n\nexport * from './Arrow.dom.js';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {DataType, Field, KeyType, Schema, SchemaMetadata} from '@loaders.gl/core/schema';\nimport * as arrow from 'apache-arrow';\n\ntype ArrowDictionaryKeyType =\n | arrow.Int8\n | arrow.Int16\n | arrow.Int32\n | arrow.Uint8\n | arrow.Uint16\n | arrow.Uint32;\n\n/** Controls whether Arrow schema conversion uses variable-width view types. */\nexport type ArrowViewTypeMode = 'never' | 'prefer' | 'require';\n\n/** Options for converting loaders.gl schemas to Apache Arrow schemas. */\nexport type ArrowSchemaConversionOptions = {\n /** Selects standard types, supported view types with fallback, or required view types. */\n viewTypes?: ArrowViewTypeMode;\n};\n\n/** Runtime support for optional Apache Arrow variable-width view types. */\nexport type ArrowViewTypeSupport = {\n /** Whether the installed Apache Arrow exports `BinaryView`. */\n binaryView: boolean;\n /** Whether the installed Apache Arrow exports `Utf8View`. */\n utf8View: boolean;\n};\n\ntype ArrowDataTypeConstructor = new () => arrow.DataType;\ntype ArrowLargeListConstructor = new (field: arrow.Field) => arrow.DataType;\ntype OptionalArrowConstructors = {\n BinaryView?: ArrowDataTypeConstructor;\n LargeList?: ArrowLargeListConstructor;\n Utf8View?: ArrowDataTypeConstructor;\n};\ntype OptionalArrowViewGuards = {\n isBinaryView?: (value: unknown) => boolean;\n isUtf8View?: (value: unknown) => boolean;\n};\n\n/** Returns the variable-width view types exported by the installed Apache Arrow runtime. */\nexport function getArrowViewTypeSupport(): ArrowViewTypeSupport {\n return {\n binaryView: typeof getOptionalArrowConstructor('BinaryView') === 'function',\n utf8View: typeof getOptionalArrowConstructor('Utf8View') === 'function'\n };\n}\n\n/** Convert Apache Arrow Schema (class instance) to a serialized Schema (plain data) */\nexport function convertArrowToSchema(arrowSchema: arrow.Schema): Schema {\n return serializeArrowSchema(arrowSchema);\n}\n\n/** Convert Apache Arrow Schema (class instance) to a serialized Schema (plain data) */\nexport function convertSchemaToArrow(\n schema: Schema,\n options?: ArrowSchemaConversionOptions\n): arrow.Schema {\n return deserializeArrowSchema(schema, options);\n}\n\n/** Convert Apache Arrow Schema (class instance) to a serialized Schema (plain data) */\nexport function serializeArrowSchema(arrowSchema: arrow.Schema): Schema {\n return {\n fields: arrowSchema.fields.map(arrowField => serializeArrowField(arrowField)),\n metadata: serializeArrowMetadata(arrowSchema.metadata)\n };\n}\n\n/** Convert a serialized Schema (plain data) to an Apache Arrow Schema (class instance) */\nexport function deserializeArrowSchema(\n schema: Schema,\n options?: ArrowSchemaConversionOptions\n): arrow.Schema {\n return new arrow.Schema(\n schema.fields.map(field => deserializeArrowField(field, options)),\n deserializeArrowMetadata(schema.metadata)\n );\n}\n\n/** Convert Apache Arrow Schema metadata (Map<string, string>) to serialized metadata (Record<string, string> */\nexport function serializeArrowMetadata(arrowMetadata: Map<string, string>): SchemaMetadata {\n return Object.fromEntries(arrowMetadata);\n}\n\n/** Convert serialized metadata (Record<string, string> to Apache Arrow Schema metadata (Map<string, string>) to */\nexport function deserializeArrowMetadata(metadata?: SchemaMetadata): Map<string, string> {\n return metadata ? new Map(Object.entries(metadata)) : new Map<string, string>();\n}\n\n/** Convert Apache Arrow Field (class instance) to serialized Field (plain data) */\nexport function serializeArrowField(field: arrow.Field): Field {\n return {\n name: field.name,\n type: serializeArrowType(field.type),\n nullable: field.nullable,\n metadata: serializeArrowMetadata(field.metadata)\n };\n}\n\n/** Convert a serialized Field (plain data) to an Apache Arrow Field (class instance)*/\nexport function deserializeArrowField(\n field: Field,\n options?: ArrowSchemaConversionOptions\n): arrow.Field {\n return new arrow.Field(\n field.name,\n deserializeArrowType(field.type, options),\n field.nullable,\n deserializeArrowMetadata(field.metadata)\n );\n}\n\n/** Converts a serializable loaders.gl data type to hydrated arrow data type */\n// eslint-disable-next-line complexity\nexport function serializeArrowType(arrowType: arrow.DataType): DataType {\n if (isArrowViewType(arrowType, 'BinaryView')) {\n return 'binary-view';\n }\n if (isArrowViewType(arrowType, 'Utf8View')) {\n return 'utf8-view';\n }\n if (isOptionalArrowType(arrowType, 'LargeList')) {\n const largeListType = arrowType as arrow.DataType & {valueField: arrow.Field};\n return {\n type: 'large-list',\n children: [serializeArrowField(largeListType.valueField)]\n };\n }\n\n switch (arrowType.constructor) {\n case arrow.Null:\n return 'null';\n case arrow.Binary:\n return 'binary';\n case arrow.FixedSizeBinary:\n return {\n type: 'fixed-size-binary',\n byteWidth: (arrowType as arrow.FixedSizeBinary).byteWidth\n };\n case arrow.Bool:\n return 'bool';\n case arrow.Int:\n const intType = arrowType as arrow.Int;\n return `${intType.isSigned ? '' : 'u'}int${intType.bitWidth}`;\n case arrow.Int8:\n return 'int8';\n case arrow.Int16:\n return 'int16';\n case arrow.Int32:\n return 'int32';\n case arrow.Int64:\n return 'int64';\n case arrow.Uint8:\n return 'uint8';\n case arrow.Uint16:\n return 'uint16';\n case arrow.Uint32:\n return 'uint32';\n case arrow.Uint64:\n return 'uint64';\n case arrow.Float:\n const precision = (arrowType as arrow.Float).precision;\n // return `float(precision + 1) * 16`;\n switch (precision) {\n case arrow.Precision.HALF:\n return 'float16';\n case arrow.Precision.SINGLE:\n return 'float32';\n case arrow.Precision.DOUBLE:\n return 'float64';\n default:\n return 'float16';\n }\n case arrow.Float16:\n return 'float16';\n case arrow.Float32:\n return 'float32';\n case arrow.Float64:\n return 'float64';\n case arrow.Utf8:\n return 'utf8';\n case arrow.Decimal:\n const decimal = arrowType as arrow.Decimal;\n return {\n type: 'decimal',\n bitWidth: decimal.bitWidth,\n precision: decimal.precision,\n scale: decimal.scale\n };\n case arrow.Date_:\n const dateUnit = (arrowType as arrow.Date_).unit;\n return dateUnit === arrow.DateUnit.DAY ? 'date-day' : 'date-millisecond';\n case arrow.DateDay:\n return 'date-day';\n case arrow.DateMillisecond:\n return 'date-millisecond';\n case arrow.Time:\n const timeUnit = (arrowType as arrow.Time).unit;\n switch (timeUnit) {\n case arrow.TimeUnit.SECOND:\n return 'time-second';\n case arrow.TimeUnit.MILLISECOND:\n return 'time-millisecond';\n case arrow.TimeUnit.MICROSECOND:\n return 'time-microsecond';\n case arrow.TimeUnit.NANOSECOND:\n return 'time-nanosecond';\n default:\n return 'time-second';\n }\n case arrow.TimeMillisecond:\n return 'time-millisecond';\n case arrow.TimeSecond:\n return 'time-second';\n case arrow.TimeMicrosecond:\n return 'time-microsecond';\n case arrow.TimeNanosecond:\n return 'time-nanosecond';\n case arrow.Timestamp:\n const timeStampUnit = (arrowType as arrow.Timestamp).unit;\n switch (timeStampUnit) {\n case arrow.TimeUnit.SECOND:\n return 'timestamp-second';\n case arrow.TimeUnit.MILLISECOND:\n return 'timestamp-millisecond';\n case arrow.TimeUnit.MICROSECOND:\n return 'timestamp-microsecond';\n case arrow.TimeUnit.NANOSECOND:\n return 'timestamp-nanosecond';\n default:\n return 'timestamp-second';\n }\n case arrow.TimestampSecond:\n return 'timestamp-second';\n case arrow.TimestampMillisecond:\n return 'timestamp-millisecond';\n case arrow.TimestampMicrosecond:\n return 'timestamp-microsecond';\n case arrow.TimestampNanosecond:\n return 'timestamp-nanosecond';\n case arrow.Interval:\n const intervalUnit = (arrowType as arrow.Interval).unit;\n switch (intervalUnit) {\n case arrow.IntervalUnit.DAY_TIME:\n return 'interval-daytime';\n case arrow.IntervalUnit.YEAR_MONTH:\n return 'interval-yearmonth';\n default:\n return 'interval-daytime';\n }\n case arrow.IntervalDayTime:\n return 'interval-daytime';\n case arrow.IntervalYearMonth:\n return 'interval-yearmonth';\n case arrow.Map_:\n const mapType = arrowType as arrow.Map_;\n return {\n type: 'map',\n keysSorted: mapType.keysSorted,\n children: mapType.children.map(arrowField => serializeArrowField(arrowField))\n };\n case arrow.List:\n const listType = arrowType as arrow.List;\n const listField = listType.valueField;\n return {\n type: 'list',\n children: [serializeArrowField(listField)]\n };\n case arrow.FixedSizeList:\n const fixedSizeList = arrowType as arrow.FixedSizeList;\n return {\n type: 'fixed-size-list',\n listSize: fixedSizeList.listSize,\n children: [serializeArrowField(fixedSizeList.children[0])]\n };\n case arrow.Struct:\n const structType = arrowType as arrow.Struct;\n return {\n type: 'struct',\n children: structType.children.map(arrowField => serializeArrowField(arrowField))\n };\n case arrow.SparseUnion:\n case arrow.DenseUnion:\n const unionType = arrowType as arrow.SparseUnion | arrow.DenseUnion;\n return {\n type: unionType instanceof arrow.DenseUnion ? 'dense-union' : 'sparse-union',\n typeIds: unionType.typeIds,\n children: unionType.children.map(arrowField => serializeArrowField(arrowField)),\n typeIdToChildIndex: {...unionType.typeIdToChildIndex}\n };\n case arrow.Dictionary:\n const dictionaryType = arrowType as arrow.Dictionary;\n return {\n type: 'dictionary',\n id: dictionaryType.id,\n indices: serializeArrowDictionaryKeyType(dictionaryType.indices),\n dictionary: serializeArrowType(dictionaryType.dictionary),\n isOrdered: dictionaryType.isOrdered\n };\n default:\n throw new Error(`arrow type not supported: ${arrowType.constructor.name}`);\n }\n}\n\n/** Converts a serializable loaders.gl data type to hydrated arrow data type */\n// eslint-disable-next-line complexity\nexport function deserializeArrowType(\n dataType: DataType,\n options?: ArrowSchemaConversionOptions\n): arrow.DataType {\n if (typeof dataType === 'object') {\n switch (dataType.type) {\n case 'decimal':\n return new arrow.Decimal(dataType.scale, dataType.precision, dataType.bitWidth);\n case 'map': {\n const children = dataType.children.map(arrowField =>\n deserializeArrowField(arrowField, options)\n );\n // Apache Arrow's Map_ constructor takes one entries struct field, not\n // an array of fields (the serialized schema stores that field in the\n // one-element children array).\n return new arrow.Map_(children[0] as any, dataType.keysSorted);\n }\n case 'list': {\n const field = deserializeArrowField(dataType.children[0], options);\n return new arrow.List(field);\n }\n case 'large-list': {\n const field = deserializeArrowField(dataType.children[0], options);\n const LargeList = getOptionalArrowConstructor('LargeList');\n if (!LargeList) {\n throw new Error(\n 'LargeList requires an Apache Arrow runtime that exports the LargeList constructor'\n );\n }\n return new LargeList(field);\n }\n case 'fixed-size-list': {\n const child = deserializeArrowField(dataType.children[0], options);\n return new arrow.FixedSizeList(dataType.listSize, child);\n }\n case 'fixed-size-binary':\n return new arrow.FixedSizeBinary(dataType.byteWidth);\n case 'struct': {\n const children = dataType.children.map(arrowField =>\n deserializeArrowField(arrowField, options)\n );\n return new arrow.Struct(children);\n }\n case 'sparse-union':\n case 'dense-union': {\n const children = dataType.children.map(arrowField =>\n deserializeArrowField(arrowField, options)\n );\n return dataType.type === 'dense-union'\n ? new arrow.DenseUnion(dataType.typeIds, children)\n : new arrow.SparseUnion(dataType.typeIds, children);\n }\n case 'dictionary': {\n return new arrow.Dictionary(\n deserializeArrowType(dataType.dictionary, options),\n deserializeArrowDictionaryKeyType(dataType.indices),\n dataType.id,\n dataType.isOrdered\n );\n }\n default:\n throw new Error('array type not supported');\n }\n }\n\n switch (dataType) {\n case 'null':\n return new arrow.Null();\n case 'binary':\n return makeVariableWidthArrowType('BinaryView', new arrow.Binary(), options);\n case 'binary-view':\n return makeRequiredArrowViewType('BinaryView');\n case 'bool':\n return new arrow.Bool();\n case 'int8':\n return new arrow.Int8();\n case 'int16':\n return new arrow.Int16();\n case 'int32':\n return new arrow.Int32();\n case 'int64':\n return new arrow.Int64();\n case 'uint8':\n return new arrow.Uint8();\n case 'uint16':\n return new arrow.Uint16();\n case 'uint32':\n return new arrow.Uint32();\n case 'uint64':\n return new arrow.Uint64();\n case 'float16':\n return new arrow.Float16();\n case 'float32':\n return new arrow.Float32();\n case 'float64':\n return new arrow.Float64();\n case 'utf8':\n return makeVariableWidthArrowType('Utf8View', new arrow.Utf8(), options);\n case 'utf8-view':\n return makeRequiredArrowViewType('Utf8View');\n case 'date-day':\n return new arrow.DateDay();\n case 'date-millisecond':\n return new arrow.DateMillisecond();\n case 'time-second':\n return new arrow.TimeSecond();\n case 'time-millisecond':\n return new arrow.TimeMillisecond();\n case 'time-microsecond':\n return new arrow.TimeMicrosecond();\n case 'time-nanosecond':\n return new arrow.TimeNanosecond();\n case 'timestamp-second':\n return new arrow.TimestampSecond();\n case 'timestamp-millisecond':\n return new arrow.TimestampMillisecond();\n case 'timestamp-microsecond':\n return new arrow.TimestampMicrosecond();\n case 'timestamp-nanosecond':\n return new arrow.TimestampNanosecond();\n case 'interval-daytime':\n return new arrow.IntervalDayTime();\n case 'interval-yearmonth':\n return new arrow.IntervalYearMonth();\n default:\n throw new Error('array type not supported');\n }\n}\n\nfunction getOptionalArrowConstructor<TypeName extends keyof OptionalArrowConstructors>(\n typeName: TypeName\n): OptionalArrowConstructors[TypeName] {\n return (arrow as unknown as OptionalArrowConstructors)[typeName];\n}\n\nfunction isArrowViewType(\n arrowType: arrow.DataType,\n viewTypeName: 'BinaryView' | 'Utf8View'\n): boolean {\n const constructor = getOptionalArrowConstructor(viewTypeName);\n if (constructor && arrowType instanceof constructor) {\n return true;\n }\n\n const guards = arrow.DataType as unknown as OptionalArrowViewGuards;\n const guard = viewTypeName === 'BinaryView' ? guards.isBinaryView : guards.isUtf8View;\n return Boolean(guard?.(arrowType));\n}\n\nfunction isOptionalArrowType(\n arrowType: arrow.DataType,\n typeName: keyof OptionalArrowConstructors\n): boolean {\n const constructor = getOptionalArrowConstructor(typeName);\n return Boolean(constructor && arrowType instanceof constructor);\n}\n\nfunction makeVariableWidthArrowType(\n viewTypeName: 'BinaryView' | 'Utf8View',\n fallbackType: arrow.DataType,\n options?: ArrowSchemaConversionOptions\n): arrow.DataType {\n const viewTypeMode = options?.viewTypes || 'never';\n if (viewTypeMode === 'never') {\n return fallbackType;\n }\n\n const constructor = getOptionalArrowConstructor(viewTypeName);\n if (constructor) {\n return new constructor();\n }\n if (viewTypeMode === 'require') {\n throw new Error(\n `${viewTypeName} requires apache-arrow 21.2.0 or later; the installed runtime does not support it`\n );\n }\n return fallbackType;\n}\n\nfunction makeRequiredArrowViewType(viewTypeName: 'BinaryView' | 'Utf8View'): arrow.DataType {\n const constructor = getOptionalArrowConstructor(viewTypeName);\n if (!constructor) {\n throw new Error(\n `${viewTypeName} requires apache-arrow 21.2.0 or later; the installed runtime does not support it`\n );\n }\n return new constructor();\n}\n\n/** Converts Arrow dictionary index types to serializable schema key types. */\nfunction serializeArrowDictionaryKeyType(arrowType: arrow.DataType): KeyType {\n if (arrowType instanceof arrow.Int) {\n const prefix = arrowType.isSigned ? 'int' : 'uint';\n const keyType = `${prefix}${arrowType.bitWidth}`;\n if (isSchemaDictionaryKeyType(keyType)) {\n return keyType;\n }\n }\n\n switch (arrowType.constructor) {\n case arrow.Int8:\n return 'int8';\n case arrow.Int16:\n return 'int16';\n case arrow.Int32:\n return 'int32';\n case arrow.Uint8:\n return 'uint8';\n case arrow.Uint16:\n return 'uint16';\n case arrow.Uint32:\n return 'uint32';\n default:\n throw new Error(`arrow dictionary index type not supported: ${arrowType.constructor.name}`);\n }\n}\n\n/** Checks whether a string is a supported serialized dictionary key type. */\nfunction isSchemaDictionaryKeyType(keyType: string): keyType is KeyType {\n return ['int8', 'int16', 'int32', 'uint8', 'uint16', 'uint32'].includes(keyType);\n}\n\n/** Converts serializable schema dictionary key types to Arrow index types. */\nfunction deserializeArrowDictionaryKeyType(keyType: KeyType): ArrowDictionaryKeyType {\n switch (keyType) {\n case 'int8':\n return new arrow.Int8();\n case 'int16':\n return new arrow.Int16();\n case 'int32':\n return new arrow.Int32();\n case 'uint8':\n return new arrow.Uint8();\n case 'uint16':\n return new arrow.Uint16();\n case 'uint32':\n return new arrow.Uint32();\n default:\n throw new Error(`schema dictionary index type not supported: ${keyType}`);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Mesh category utilities\n// TODO - move to mesh category module, or to math.gl/geometry module\nimport {MeshAttributes} from '@loaders.gl/core/schema';\nimport {TypedArray} from '../../types/types';\n\ntype TypedArrays = {[key: string]: TypedArray};\n\n/**\n * Holds an axis aligned bounding box\n * TODO - make sure AxisAlignedBoundingBox in math.gl/culling understands this format (or change this format)\n */\ntype BoundingBox = [[number, number, number], [number, number, number]];\n\n/**\n * Get number of vertices in mesh\n * @param attributes\n */\nexport function getMeshSize(attributes: TypedArrays): number {\n let size = 0;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (ArrayBuffer.isView(attribute)) {\n // @ts-ignore DataView doesn't have BYTES_PER_ELEMENT\n size += attribute.byteLength * attribute.BYTES_PER_ELEMENT;\n }\n }\n return size;\n}\n\n/**\n * Get the (axis aligned) bounding box of a mesh\n * @param attributes\n * @returns array of two vectors representing the axis aligned bounding box\n */\n// eslint-disable-next-line complexity\nexport function getMeshBoundingBox(attributes: MeshAttributes | null): BoundingBox | null {\n const positionAttribute = attributes?.POSITION;\n if (!positionAttribute || !('value' in positionAttribute) || !positionAttribute.value.length) {\n return null;\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n\n const positions = positionAttribute.value;\n const len = positions.length;\n\n for (let i = 0; i < len; i += 3) {\n const x = positions[i];\n const y = positions[i + 1];\n const z = positions[i + 2];\n\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n minZ = z < minZ ? z : minZ;\n\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n maxZ = z > maxZ ? z : maxZ;\n }\n return [\n [minX, minY, minZ],\n [maxX, maxY, maxZ]\n ];\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {getFloat16ArrayConstructor, NativeFloat16ArrayConstructor} from '@math.gl/core';\n\n/** Array storage used for logical Float16 values. */\nexport type Float16ArrayStorage = Float16Array | Uint16Array;\n\n/** Create native Float16 storage when the runtime supports it. */\nexport function createFloat16Array(length: number): Float16ArrayStorage {\n const ArrayConstructor = getFloat16ArrayConstructor();\n return new ArrayConstructor(length) as Float16ArrayStorage;\n}\n\n/** Check whether an array is backed by the native Float16Array implementation. */\nexport function isNativeFloat16Array(value: unknown): value is Float16Array {\n return Boolean(NativeFloat16ArrayConstructor && value instanceof NativeFloat16ArrayConstructor);\n}\n\n/** Write a numeric value into native or binary16 fallback storage. */\nexport function setFloat16Value(array: Float16ArrayStorage, index: number, value: number): void {\n if (isNativeFloat16Array(array)) {\n array[index] = value;\n } else {\n array[index] = encodeFloat16(value);\n }\n}\n\n/** Read a numeric value from native or binary16 fallback storage. */\nexport function getFloat16Value(array: Float16ArrayStorage, index: number): number {\n if (isNativeFloat16Array(array)) {\n return array[index];\n }\n return decodeFloat16(array[index]);\n}\n\n/** Return the binary16 words used by Apache Arrow and GPU APIs. */\nexport function getFloat16Storage(array: Float16ArrayStorage): Uint16Array {\n return isNativeFloat16Array(array)\n ? new Uint16Array(array.buffer, array.byteOffset, array.length)\n : array;\n}\n\n/** Convert byte- or word-scaled color components to logical Float16 values. */\nexport function convertColorArrayToFloat16(\n values: ArrayLike<number>,\n sourceScale: number\n): Float16ArrayStorage {\n const result = createFloat16Array(values.length);\n for (let index = 0; index < values.length; index++) {\n setFloat16Value(result, index, values[index] / sourceScale);\n }\n return result;\n}\n\n/** Convert byte- or word-scaled color components to logical Float32 values. */\nexport function convertColorArrayToFloat32(\n values: ArrayLike<number>,\n sourceScale: number\n): Float32Array {\n return Float32Array.from(values, value => value / sourceScale);\n}\n\n/** Encode a JavaScript number as an IEEE-754 binary16 bit pattern. */\nexport function encodeFloat16(value: number): number {\n if (!Number.isFinite(value)) {\n return value === Infinity ? 0x7c00 : value === -Infinity ? 0xfc00 : 0x7e00;\n }\n\n const sign = value < 0 || Object.is(value, -0) ? 0x8000 : 0;\n const absoluteValue = Math.abs(value);\n if (absoluteValue === 0) {\n return sign;\n }\n\n // Values at or above the midpoint between the largest finite half and\n // infinity round to infinity using IEEE-754 round-to-nearest-even.\n if (absoluteValue >= 65520) {\n return sign | 0x7c00;\n }\n if (absoluteValue >= 65504) {\n return sign | 0x7bff;\n }\n\n const exponent = Math.floor(Math.log2(absoluteValue));\n if (exponent < -14) {\n return sign | Math.round(absoluteValue / 2 ** -24);\n }\n\n const normalizedExponent = exponent + 15;\n const mantissa = Math.round((absoluteValue / 2 ** exponent - 1) * 1024);\n if (mantissa === 1024) {\n return sign | ((normalizedExponent + 1) << 10);\n }\n return sign | (normalizedExponent << 10) | mantissa;\n}\n\n/** Decode an IEEE-754 binary16 bit pattern. */\nfunction decodeFloat16(value: number): number {\n const sign = value & 0x8000 ? -1 : 1;\n const exponent = (value >> 10) & 0x1f;\n const mantissa = value & 0x3ff;\n if (exponent === 0) {\n return sign * mantissa * 2 ** -24;\n }\n if (exponent === 0x1f) {\n return mantissa ? NaN : sign * Infinity;\n }\n return sign * (1 + mantissa / 1024) * 2 ** (exponent - 15);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Schema} from '../types/schema';\nimport type {TypedArray} from '../types/types';\nimport type {ColumnarTable, ArrowTable} from './category-table';\nimport * as arrow from 'apache-arrow';\n\n/** Mesh as columnar table */\nexport interface MeshTable extends ColumnarTable {\n // shape: 'mesh-table';\n topology: MeshTopology;\n indices?: MeshAttribute;\n}\n\n/** Mesh as arrow table */\nexport interface MeshArrowTable extends ArrowTable {\n // shape: 'mesh-arrow-table';\n /** Mesh topology represented by the Arrow table rows and indices. */\n topology: MeshTopology;\n /** Optional top-level primitive indices accessor for indexed meshes. */\n indices?: MeshAttribute;\n /** Raw Apache Arrow table data for Mesh or IndexedMesh columns. */\n data: MeshArrowTableData | IndexedMeshArrowTableData;\n}\n\n/** Apache Arrow columns for a mesh vertex table. */\nexport type MeshArrowColumns = {\n /** XYZ vertex positions as float32 tuples. */\n POSITION: arrow.FixedSizeList<arrow.Float32>;\n /** Loader-specific vertex attribute columns appended after predefined fields. */\n [attributeName: string]: arrow.DataType;\n};\n\n/** Primitive topology names shared by columnar and Arrow mesh representations. */\nexport type MeshTopology =\n | 'point-list'\n | 'line-list'\n | 'line-loop'\n | 'line-strip'\n | 'triangle-list'\n | 'triangle-strip'\n | 'triangle-fan';\n\n/** Apache Arrow columns for an indexed mesh vertex table. */\nexport type IndexedMeshArrowColumns = MeshArrowColumns & {\n /** Unsigned 32-bit primitive indices, stored in row 0 and null for remaining vertex rows. */\n indices: arrow.List<arrow.Uint32>;\n};\n\n/** Raw Apache Arrow table data for a mesh vertex table. */\nexport type MeshArrowTableData = arrow.Table<MeshArrowColumns>;\n\n/** Raw Apache Arrow table data for an indexed mesh vertex table. */\nexport type IndexedMeshArrowTableData = arrow.Table<IndexedMeshArrowColumns>;\n\n/** Predefined Apache Arrow schema for common mesh vertex columns. */\nexport const meshArrowSchema = new arrow.Schema<MeshArrowColumns>([\n new arrow.Field(\n 'POSITION',\n new arrow.FixedSizeList(3, new arrow.Field('value', new arrow.Float32(), false)),\n false\n )\n]);\n\n/** Predefined Apache Arrow schema for indexed mesh vertex tables. */\nexport const indexedMeshArrowSchema = new arrow.Schema<IndexedMeshArrowColumns>([\n ...meshArrowSchema.fields,\n new arrow.Field(\n 'indices',\n new arrow.List(new arrow.Field('item', new arrow.Uint32(), false)),\n true\n )\n]);\n\n/** Geometry part of a Mesh (compatible with a standard luma.gl \"mesh\") */\nexport type MeshGeometry = {\n attributes: {[attributeName: string]: MeshAttribute};\n indices?: MeshAttribute;\n topology: MeshTopology;\n mode: number;\n};\n\n/** Geometry and metadata for a Mesh (compatible with a standard luma.gl \"mesh\") */\nexport type Mesh = MeshGeometry & {\n loader?: string;\n loaderData?: {[key: string]: any};\n header?: {\n vertexCount: number;\n boundingBox?: [number[], number[]];\n };\n schema: Schema;\n};\n\n/** Quantization transform required to reconstruct floating-point attribute values. */\nexport type MeshAttributeQuantizationTransform = {\n /** Transform discriminator. */\n type: 'quantization';\n /** Number of quantization bits. */\n bits: number;\n /** Per-component quantization origin. */\n origin: number[];\n /** Quantization range shared by every component. */\n range: number;\n};\n\n/** Octahedral transform required to reconstruct directional attribute values. */\nexport type MeshAttributeOctahedronTransform = {\n /** Transform discriminator. */\n type: 'octahedron';\n /** Number of quantization bits. */\n bits: number;\n};\n\n/** Encoded transform retained on an attribute for deferred CPU or GPU reconstruction. */\nexport type MeshAttributeTransform =\n | MeshAttributeQuantizationTransform\n | MeshAttributeOctahedronTransform;\n\n/**\n * luma.gl compatible attribute descriptors\n * Can be mapped to any WebGL framework\n */\nexport type MeshAttribute = {\n value: TypedArray;\n size: number;\n byteOffset?: number;\n byteStride?: number;\n normalized?: boolean;\n /** Logical component type when the storage array does not expose it directly. */\n componentType?: 'float16';\n /** Transform required to reconstruct the logical attribute values. */\n transform?: MeshAttributeTransform;\n};\n\n/** A map of mesh attributes keyed by attribute names */\nexport type MeshAttributes = Record<string, MeshAttribute>;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// COMMON CATEGORY\nexport type {\n TypedArray,\n BigTypedArray,\n TypedArrayConstructor,\n BigTypedArrayConstructor,\n NumberArray,\n ArrayType,\n AnyArray\n} from './types/types';\nexport {\n createFloat16Array,\n convertColorArrayToFloat16,\n convertColorArrayToFloat32,\n encodeFloat16,\n getFloat16Storage,\n getFloat16Value,\n isNativeFloat16Array,\n setFloat16Value\n} from './float16';\n\n// SCHEMAS AND DATA TYPES\n\nexport type {Schema, Field, DataType, KeyType, SchemaMetadata, FieldMetadata} from './types/schema';\nexport type {Metadata, SchemaWithMetadata} from './metadata';\nexport {\n getGeoMetadata,\n getMetadataValue,\n parseJSONStringMetadata,\n setGeoMetadata,\n setMetadataValue,\n unpackGeoMetadata,\n unpackJSONStringMetadata\n} from './metadata';\nexport type {Batch} from './types/batch';\nexport type {\n GeoArrowEncoding,\n GeoArrowEncodingPreference,\n GeoArrowDimension,\n GeoArrowCoordinateLayout,\n GeoArrowOffsetType,\n GeoArrowBox,\n GeoArrowEdgeType,\n GeoArrowCRSValue,\n GeoArrowCRSType,\n GeoArrowCRSMetadata,\n GeoArrowMetadata,\n GeoParquetGeometryType,\n GeoColumnMetadata,\n GeoMetadata\n} from './geometry/geoarrow';\n\n// TABLE CATEGORY TYPES\nexport type {\n Table,\n RowTable,\n ArrayRowTable,\n ObjectRowTable,\n GeoJSONTable,\n ColumnarTable,\n ArrowTable,\n Tables\n} from './categories/category-table';\nexport type {\n TableBatch,\n ArrayRowTableBatch,\n ObjectRowTableBatch,\n GeoJSONTableBatch,\n ColumnarTableBatch,\n ArrowTableBatch\n} from './categories/category-table';\n\n// MESH CATEGORY\nexport type {\n MeshTable,\n MeshArrowTable,\n MeshArrowColumns,\n IndexedMeshArrowColumns,\n MeshArrowTableData,\n IndexedMeshArrowTableData,\n Mesh,\n MeshGeometry,\n MeshAttribute,\n MeshAttributeOctahedronTransform,\n MeshAttributeQuantizationTransform,\n MeshAttributeTransform,\n MeshAttributes,\n MeshTopology\n} from './categories/category-mesh';\nexport {meshArrowSchema, indexedMeshArrowSchema} from './categories/category-mesh';\n/** @deprecated Import `getMeshBoundingBox` from `@loaders.gl/core/schema-utils`. */\nexport {getMeshBoundingBox} from './deprecated/mesh-utils';\n// TEXTURES\nexport type {\n TextureMetadata,\n Texture,\n Texture1D,\n Texture2D,\n Texture3D,\n TextureCube,\n Texture2DArray,\n TextureCubeArray,\n TextureLevel,\n GPUTextureFormat,\n TextureFormat\n} from './categories/category-texture';\n\n// IMAGES\nexport type {ImageDataType, ImageType, ImageTypeEnum} from './categories/category-image';\n\n// GIS CATEGORY - GEOARROW\n// export type {GeoArrowMetadata, GeoArrowEncoding} from './geometry/geoarrow-metadata';\n\n// GIS CATEGORY - GEOJSON\nexport type {\n GeoJSON,\n Feature,\n FeatureCollection,\n Geometry,\n Position,\n GeoJsonProperties,\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon,\n GeometryCollection\n} from './categories/category-gis';\n\n// GIS CATEGORY - FLAT GEOJSON\nexport type {\n FlatFeature,\n FlatIndexedGeometry,\n FlatGeometry,\n FlatGeometryType,\n FlatPoint,\n FlatLineString,\n FlatPolygon\n} from './categories/category-gis';\n\n// GIS CATEGORY - BINARY\nexport type {\n BinaryGeometryType,\n BinaryGeometry,\n BinaryPointGeometry,\n BinaryLineGeometry,\n BinaryPolygonGeometry,\n BinaryAttribute\n} from './categories/category-gis';\nexport type {\n BinaryFeatureCollection,\n BinaryFeature,\n BinaryPointFeature,\n BinaryLineFeature,\n BinaryPolygonFeature\n} from './categories/category-gis';\nexport type {\n ArrowBinaryFeatureTable,\n ArrowBinaryPointFeature,\n ArrowBinaryLineFeature,\n ArrowBinaryPolygonFeature,\n ArrowBinaryFeatureCollection,\n BinaryFeatureCollectionLike\n} from './categories/category-gis';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {\n BigTypedArray,\n DataType,\n getFloat16Storage,\n isNativeFloat16Array\n} from '@loaders.gl/core/schema';\nimport * as arrow from 'apache-arrow';\nimport {getDataTypeFromArray} from '../schema/data-type';\nimport {deserializeArrowType} from '../schema/convert-arrow-schema';\n\nexport function isFixedSizeList(vector: arrow.Vector): vector is arrow.Vector<arrow.FixedSizeList> {\n return vector.type instanceof arrow.FixedSizeList;\n}\n\nexport function getFixedSizeListSize(vector: arrow.Vector): number {\n return vector.type instanceof arrow.FixedSizeList ? vector.type.listSize : 1;\n}\n\n/** Get Arrow FixedSizeList vector from a typed array */\nexport function getFixedSizeListVector(\n typedArray: BigTypedArray,\n stride: number,\n logicalType?: DataType\n): arrow.Vector<arrow.FixedSizeList> {\n const data = getFixedSizeListData(typedArray, stride, logicalType);\n return new arrow.Vector<arrow.FixedSizeList>([data]);\n}\n\n/** Get Arrow FixedSizeList vector from a typed array */\nexport function getFixedSizeListData(\n typedArray: BigTypedArray,\n stride: number,\n logicalType?: DataType\n): arrow.Data<arrow.FixedSizeList> {\n const listType = getFixedSizeListType(typedArray, stride, logicalType);\n const nestedType = listType.children[0].type;\n const storage =\n logicalType === 'float16' && isNativeFloat16Array(typedArray)\n ? getFloat16Storage(typedArray)\n : typedArray;\n const buffers: Partial<Record<arrow.BufferType, any>> = {\n // valueOffsets: undefined,\n [arrow.BufferType.DATA]: storage // values\n // nullBitmap: undefined,\n // typeIds: undefined\n };\n\n // Note: The contiguous array of data is held by the nested \"primitive type\" column\n const nestedData = new arrow.Data(nestedType, 0, storage.length, 0, buffers);\n\n // Wrapped in a FixedSizeList column that provides a \"strided\" view of the data\n const data = new arrow.Data<arrow.FixedSizeList>(\n listType,\n 0,\n storage.length / stride,\n 0,\n undefined,\n [nestedData]\n );\n\n return data;\n}\n\n/** Get Arrow FixedSizeList vector from a typed array */\nexport function getFixedSizeListType(\n typedArray: BigTypedArray,\n stride: number,\n logicalType?: DataType\n): arrow.FixedSizeList {\n const type = logicalType || getDataTypeFromArray(typedArray).type;\n const arrowType = deserializeArrowType(type);\n const listType = new arrow.FixedSizeList(stride, new arrow.Field('value', arrowType, false));\n return listType;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {getFloat16Storage, isNativeFloat16Array} from '@loaders.gl/core/schema';\nimport type {\n BigTypedArray,\n Mesh,\n MeshAttribute,\n MeshArrowTable,\n MeshTable,\n ArrowTable,\n ColumnarTable,\n Schema\n} from '@loaders.gl/core/schema';\nimport {indexedMeshArrowSchema, meshArrowSchema} from '@loaders.gl/core/schema';\nimport * as arrow from 'apache-arrow';\nimport {getFixedSizeListVector} from '../arrow-utils/arrow-fixed-size-list-utils';\nimport {\n deserializeArrowField,\n deserializeArrowMetadata,\n serializeArrowSchema\n} from '../schema/convert-arrow-schema';\n\n/** Arrow column inputs, including exact 64-bit integers that are not GPU attributes. */\nexport type MeshArrowAttributes = Record<\n string,\n Omit<MeshAttribute, 'value'> & {\n /** Typed column values, retaining 64-bit integer precision. */\n value: BigTypedArray;\n }\n>;\n\nconst MESH_ARROW_ATTRIBUTE_ORDER = ['POSITION'];\n\n/** Options for constructing a MeshArrowTable directly from typed mesh attribute arrays. */\nexport type MeshArrowTableOptions = {\n /** Schema describing the mesh attributes and metadata. */\n schema?: Schema;\n /** Mesh primitive topology represented by the table rows. */\n topology?:\n | 'point-list'\n | 'line-list'\n | 'line-loop'\n | 'line-strip'\n | 'triangle-list'\n | 'triangle-strip'\n | 'triangle-fan';\n /** Numeric draw mode associated with the mesh topology. */\n mode?: number;\n /** Optional mesh bounding box metadata. */\n boundingBox?: [number[], number[]];\n /** Optional top-level primitive indices accessor for indexed meshes. */\n indices?: MeshAttribute;\n};\n\n/** Convert a mesh to a columnar table. */\nexport function convertMeshToTable(mesh: Mesh, shape: 'columnar-table'): MeshTable;\n/** Convert a mesh to an Apache Arrow table. */\nexport function convertMeshToTable(mesh: Mesh, shape: 'arrow-table'): MeshArrowTable;\n\n/**\n * Convert a mesh to a specific table shape.\n * @param mesh Mesh to convert.\n * @param shape Target table shape.\n * @returns Mesh data in the requested table shape.\n */\nexport function convertMeshToTable(\n mesh: Mesh,\n shape: 'columnar-table' | 'arrow-table'\n): Mesh | ColumnarTable | ArrowTable | MeshArrowTable {\n switch (shape) {\n case 'columnar-table':\n return convertMeshToColumnarTable(mesh);\n case 'arrow-table':\n return convertMeshToArrowTable(mesh);\n default:\n throw new Error(shape);\n }\n}\n\n/**\n * Convert a loaders.gl Mesh to a columnar table.\n * @param mesh Mesh to convert.\n * @returns Mesh data as a columnar table.\n */\nexport function convertMeshToColumnarTable(mesh: Mesh): MeshTable {\n const columns = {};\n const hasIndices = hasMeshIndices(mesh);\n\n for (const [columnName, attribute] of Object.entries(mesh.attributes)) {\n columns[columnName] = attribute.value;\n }\n\n return {\n shape: 'columnar-table',\n schema: mesh.schema,\n data: columns,\n topology: mesh.topology,\n indices: hasIndices ? mesh.indices : undefined\n };\n}\n\n/**\n * Convert a loaders.gl Mesh to an Apache Arrow table.\n * @param mesh Mesh to convert.\n * @param batchSize Reserved for future chunked Arrow conversion.\n * @returns Mesh data as an Apache Arrow table wrapper.\n */\nexport function convertMeshToArrowTable(mesh: Mesh, batchSize?: number): MeshArrowTable {\n return makeMeshArrowTable(mesh.attributes, {\n schema: mesh.schema,\n topology: mesh.topology,\n mode: mesh.mode,\n boundingBox: mesh.header?.boundingBox,\n indices: hasMeshIndices(mesh) ? mesh.indices : undefined\n });\n}\n\n/**\n * Create a MeshArrowTable directly from mesh attribute typed arrays.\n * @param attributes Mesh attributes to expose as Arrow columns.\n * @param options Mesh table metadata and optional schema.\n * @returns Mesh data as an Apache Arrow table wrapper.\n */\nexport function makeMeshArrowTable(\n attributes: MeshArrowAttributes,\n options: MeshArrowTableOptions = {}\n): MeshArrowTable {\n const fields: arrow.Field[] = [];\n const columns: {[columnName: string]: arrow.Vector} = {};\n const attributeNames = getOrderedAttributeNames(attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = attributes[attributeName];\n const {value, size = 1} = attribute;\n const column = getAttributeArrowVector(value, size, attribute.componentType);\n\n columns[attributeName] = column;\n fields.push(\n getAttributeArrowField(options.schema, attributeName, column, attribute.componentType)\n );\n\n if (attributeName === 'POSITION' && options.indices?.value?.length) {\n const indicesField = indexedMeshArrowSchema.fields.find(field => field.name === 'indices')!;\n columns.indices = getIndicesVector(options.indices.value, column.length, indicesField.type);\n fields.push(indicesField);\n }\n }\n\n const arrowSchema = new arrow.Schema(fields, getMeshArrowMetadata(options));\n // Arrow's column-object constructor synthesizes an incompatible batch schema for empty\n // fixed-size-list vectors. A schema-only table preserves the declared mesh fields instead.\n const table =\n columns[attributeNames[0]]?.length === 0\n ? new arrow.Table(arrowSchema)\n : new arrow.Table(arrowSchema, columns);\n const schema = serializeArrowSchema(table.schema);\n\n return {\n shape: 'arrow-table',\n schema,\n data: table,\n topology: options.topology || 'point-list',\n indices: options.indices\n };\n}\n\n/** Return an Arrow vector for a mesh attribute. */\nfunction getAttributeArrowVector(\n value: BigTypedArray,\n size: number,\n componentType?: MeshAttribute['componentType']\n): arrow.Vector {\n if (componentType === 'float16') {\n const storage = isNativeFloat16Array(value) ? getFloat16Storage(value) : value;\n if (size === 1) {\n const data = new arrow.Data(new arrow.Float16(), 0, storage.length, 0, {\n [arrow.BufferType.DATA]: storage as Uint16Array\n });\n return new arrow.Vector([data]);\n }\n return getFixedSizeListVector(value, size, componentType);\n }\n return size === 1 ? arrow.makeVector(value as any) : getFixedSizeListVector(value, size);\n}\n\n/** Return mesh attribute names with predefined Mesh Arrow fields first. */\nfunction getOrderedAttributeNames(attributes: MeshArrowAttributes): string[] {\n const attributeNames = Object.keys(attributes);\n const orderedAttributeNames = MESH_ARROW_ATTRIBUTE_ORDER.filter(\n attributeName => attributeName in attributes\n );\n const remainingAttributeNames = attributeNames.filter(\n attributeName => !MESH_ARROW_ATTRIBUTE_ORDER.includes(attributeName)\n );\n\n return [...orderedAttributeNames, ...remainingAttributeNames];\n}\n\n/** Return true when a mesh has a non-empty top-level index accessor. */\nfunction hasMeshIndices(mesh: Mesh): mesh is Mesh & {indices: MeshAttribute} {\n return Boolean(mesh.indices?.value?.length);\n}\n\n/** Return the Arrow field for a mesh attribute column. */\nfunction getAttributeArrowField(\n schema: Schema | undefined,\n attributeName: string,\n column: arrow.Vector,\n componentType?: MeshAttribute['componentType']\n): arrow.Field {\n if (attributeName === 'POSITION' && isMeshPositionColumn(column)) {\n const canonicalField = meshArrowSchema.fields[0];\n const suppliedField = schema?.fields.find(schemaField => schemaField.name === attributeName);\n if (!suppliedField?.metadata) {\n return canonicalField;\n }\n const metadata = new Map(canonicalField.metadata);\n for (const [key, value] of Object.entries(suppliedField.metadata)) {\n metadata.set(key, value);\n }\n return new arrow.Field(\n canonicalField.name,\n canonicalField.type,\n canonicalField.nullable,\n metadata\n );\n }\n\n const field = schema?.fields.find(schemaField => schemaField.name === attributeName);\n if (componentType === 'float16') {\n const metadata = new Map(Object.entries(field?.metadata || {}));\n metadata.set('componentType', 'float16');\n return new arrow.Field(attributeName, column.type, false, metadata);\n }\n if (field && field.type.toString() !== column.type.toString()) {\n const deserializedField = deserializeArrowField(field);\n return new arrow.Field(\n attributeName,\n column.type,\n deserializedField.nullable,\n deserializedField.metadata\n );\n }\n return field ? deserializeArrowField(field) : new arrow.Field(attributeName, column.type, false);\n}\n\n/** Return true when an Arrow column matches the predefined Mesh POSITION field. */\nfunction isMeshPositionColumn(column: arrow.Vector): boolean {\n return (\n column.type instanceof arrow.FixedSizeList &&\n column.type.listSize === 3 &&\n column.type.children[0].type instanceof arrow.Float32\n );\n}\n\n/** Return an IndexedMesh indices column with the full index list stored in row 0. */\nfunction getIndicesVector(\n indices: MeshAttribute['value'],\n vertexCount: number,\n type: arrow.DataType\n): arrow.Vector {\n const indicesType = type as arrow.List<arrow.Uint32>;\n const values = indices instanceof Uint32Array ? indices : Uint32Array.from(indices);\n const valueOffsets = new Int32Array(vertexCount + 1);\n if (vertexCount > 0) {\n valueOffsets.fill(values.length, 1);\n }\n\n const nullBitmap = new Uint8Array(Math.ceil(vertexCount / 8));\n if (vertexCount > 0) {\n nullBitmap[0] = 1;\n }\n\n const valuesData = new arrow.Data<arrow.Uint32>(\n indicesType.children[0].type,\n 0,\n values.length,\n 0,\n {[arrow.BufferType.DATA]: values}\n );\n const indicesData = new arrow.Data<arrow.List<arrow.Uint32>>(\n indicesType,\n 0,\n vertexCount,\n Math.max(0, vertexCount - 1),\n {\n [arrow.BufferType.OFFSET]: valueOffsets,\n [arrow.BufferType.VALIDITY]: nullBitmap\n },\n [valuesData]\n );\n\n return new arrow.Vector([indicesData]);\n}\n\n/** Return Arrow schema metadata for mesh-level properties. */\nfunction getMeshArrowMetadata(options: MeshArrowTableOptions): Map<string, string> {\n const metadata = {...options.schema?.metadata};\n if (options.topology) {\n metadata.topology ||= options.topology;\n }\n if (Number.isFinite(options.mode)) {\n metadata.mode ||= String(options.mode);\n }\n if (options.boundingBox) {\n metadata.boundingBox ||= JSON.stringify(options.boundingBox);\n }\n return deserializeArrowMetadata(metadata);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DataType, MeshAttribute, MeshAttributes, Schema, Field} from '@loaders.gl/core/schema';\nimport {getDataTypeFromTypedArray} from '../schema/data-type';\n\n/**\n * Create a schema for mesh attributes data\n * @param attributes\n * @param metadata\n * @returns\n */\nexport function deduceMeshSchema(\n attributes: MeshAttributes,\n metadata: Record<string, string> = {}\n): Schema {\n const fields = deduceMeshFields(attributes);\n return {fields, metadata};\n}\n\n/**\n * Create arrow-like schema field for mesh attribute\n * @param attributeName\n * @param attribute\n * @param optionalMetadata\n * @returns\n */\nexport function deduceMeshField(\n name: string,\n attribute: MeshAttribute,\n optionalMetadata?: Record<string, string>\n): Field {\n const type = attribute.componentType || getDataTypeFromTypedArray(attribute.value);\n const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);\n const dataType: DataType =\n attribute.size === 1\n ? type\n : {type: 'fixed-size-list', listSize: attribute.size, children: [{name: 'value', type}]};\n return {\n name,\n type: dataType,\n nullable: false,\n metadata\n };\n}\n\n/**\n * Create fields array for mesh attributes\n * @param attributes\n * @returns\n */\nfunction deduceMeshFields(attributes: MeshAttributes): Field[] {\n const fields: Field[] = [];\n for (const attributeName in attributes) {\n const attribute: MeshAttribute = attributes[attributeName];\n fields.push(deduceMeshField(attributeName, attribute));\n }\n return fields;\n}\n\n/**\n * Make metadata by mesh attribute properties\n * @param attribute\n * @returns\n */\nexport function makeMeshAttributeMetadata(attribute: MeshAttribute): Record<string, string> {\n const result: Record<string, string> = {};\n if ('byteOffset' in attribute) {\n result.byteOffset = attribute.byteOffset!.toString(10);\n }\n if ('byteStride' in attribute) {\n result.byteStride = attribute.byteStride!.toString(10);\n }\n if ('normalized' in attribute) {\n result.normalized = attribute.normalized!.toString();\n }\n if (attribute.componentType) {\n result.componentType = attribute.componentType;\n }\n if (attribute.transform) {\n result['loaders.gl.transform'] = JSON.stringify(attribute.transform);\n }\n return result;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Schema\nexport {getArrayTypeFromDataType} from './lib/schema/data-type';\nexport {convert} from './lib/converters/converters';\nexport type {Converter, ConversionContext} from './lib/converters/converters';\n\n// Schema utils\nexport {\n convertArrowToSchema,\n convertSchemaToArrow,\n // DETAILED FUNCTIONS\n serializeArrowSchema,\n deserializeArrowSchema,\n serializeArrowMetadata,\n deserializeArrowMetadata,\n serializeArrowField,\n deserializeArrowField,\n serializeArrowType,\n deserializeArrowType\n} from './lib/schema/convert-arrow-schema';\nexport type {\n ArrowSchemaConversionOptions,\n ArrowViewTypeMode,\n ArrowViewTypeSupport\n} from './lib/schema/convert-arrow-schema';\nexport {getArrowViewTypeSupport} from './lib/schema/convert-arrow-schema';\nexport {getDataTypeFromArray} from './lib/schema/data-type';\n\n// TABLE CATEGORY UTILS\n\nexport {deduceTableSchema} from './lib/schema/deduce-table-schema';\nexport {makeTableFromData} from './lib/table/tables/make-table';\nexport {makeTableFromBatches} from './lib/table/batches/make-table-from-batches';\n\nexport type {TableShape} from './lib/table/tables/table-converter/table-converter';\nexport {TABLE_CONVERTERS, TableConverter} from './lib/table/tables/table-converter/table-converter';\nexport {\n convertTable,\n convertToObjectRow,\n convertToArrayRow,\n convertArrowToTable,\n convertTableToArrow\n} from './deprecated';\n\nexport {\n makeTableBatchIterator,\n makeBatchFromTable\n} from './lib/table/batches/make-table-batch-iterator';\nexport {\n makeArrowTableBatchIterator,\n makeArrowRecordBatchIterator\n} from './lib/table/batches/make-arrow-batch-iterator';\nexport {\n selectArrowTableRows,\n queryArrowTable,\n type ArrowTableQueryOptions,\n type ArrowTableRowFilter\n} from './lib/table/query-arrow-table';\nexport {convertBatch, convertBatches} from './lib/table/batches/convert-batches';\n\nexport {\n isArrayRowTable,\n isObjectRowTable,\n isColumnarTable,\n isGeoJSONTable,\n isArrowTable\n} from './lib/table/tables/table-types';\n\nexport {\n isTable,\n getTableLength,\n getTableNumCols,\n getTableCell,\n getTableCellAt,\n getTableRowShape,\n getTableColumnIndex,\n getTableColumnName,\n getTableRowAsObject,\n getTableRowAsArray,\n makeRowIterator,\n makeArrayRowIterator,\n makeObjectRowIterator\n} from './lib/table/tables/table-accessors';\n\n// Table batch builders\n\nexport {TableBatchBuilder} from './lib/table/batch-builder/table-batch-builder';\nexport type {TableBatchAggregator} from './lib/table/batch-builder/table-batch-aggregator';\nexport {RowTableBatchAggregator} from './lib/table/batch-builder/row-table-batch-aggregator';\nexport {ColumnarTableBatchAggregator} from './lib/table/batch-builder/columnar-table-batch-aggregator';\n\nexport {ArrowLikeTable} from './lib/table/arrow-api/arrow-like-table';\n\n// MESH CATEGORY\n\nexport {getMeshSize, getMeshBoundingBox} from './lib/mesh/mesh-utils';\nexport {convertMeshToTable, makeMeshArrowTable} from './lib/mesh/convert-mesh-to-table';\nexport type {MeshArrowTableOptions} from './lib/mesh/convert-mesh-to-table';\nexport {convertTableToMesh} from './lib/mesh/convert-table-to-mesh';\nexport {\n deduceMeshSchema,\n deduceMeshField,\n makeMeshAttributeMetadata\n} from './lib/mesh/deduce-mesh-schema';\n\n// SCHEMA\nexport {\n Schema as ArrowLikeSchema,\n Field as ArrowLikeField,\n DataType as ArrowLikeDataType\n // Null,\n // Binary,\n // Bool,\n // Int,\n // Int8,\n // Int16,\n // Int32,\n // Int64,\n // Uint8,\n // Uint16,\n // Uint32,\n // Uint64,\n // Float,\n // Float16,\n // Float32,\n // Float64,\n // Utf8,\n // Date,\n // DateDay,\n // DateMillisecond,\n // Time,\n // TimeMillisecond,\n // TimeSecond,\n // Timestamp,\n // TimestampSecond,\n // TimestampMillisecond,\n // TimestampMicrosecond,\n // TimestampNanosecond,\n // Interval,\n // IntervalDayTime,\n // IntervalYearMonth,\n // FixedSizeList,\n // Struct\n} from './lib/table/arrow-api/index';\n\n// EXPERIMENTAL APIs\nexport {ArrowTableBuilder} from './lib/table/batch-builder/arrow-table-builder';\nexport type {ArrowTableBuilderOptions} from './lib/table/batch-builder/arrow-table-builder';\n\n// Schema utils\nexport {getTypeInfo} from './lib/table/arrow-api/get-type-info';\n\nexport {default as AsyncQueue} from './lib/utils/async-queue';\n\nexport type {MeshArrowAttributes} from './lib/mesh/convert-mesh-to-table';\n\nexport {PointCloudTiler} from './lib/mesh/point-cloud-tiler';\nexport type {\n PointCloudTilerOptions,\n PointCloudTilerNode,\n PointCloudTileBounds\n} from './lib/mesh/point-cloud-tiler';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {MeshAttribute, Schema, Field} from '@loaders.gl/core/schema';\nimport {deduceMeshField, makeMeshAttributeMetadata} from '@loaders.gl/core/schema-utils';\nimport type {DracoAttribute, DracoLoaderData, DracoMetadataEntry} from '../draco-types';\n\n/** Extract an arrow-like schema from a Draco mesh */\nexport function getDracoSchema(\n attributes: {[attributeName: string]: MeshAttribute},\n loaderData: DracoLoaderData,\n indices?: MeshAttribute\n): Schema {\n const metadata = makeMetadata(loaderData.metadata);\n const fields: Field[] = [];\n const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const field = getArrowFieldFromAttribute(\n attributeName,\n attribute,\n namedLoaderDataAttributes[attributeName]\n );\n fields.push(field);\n }\n if (indices) {\n const indicesField = getArrowFieldFromAttribute('indices', indices);\n fields.push(indicesField);\n }\n return {fields, metadata};\n}\n\nfunction transformAttributesLoaderData(loaderData: {[key: number]: DracoAttribute}): {\n [attributeName: string]: DracoAttribute;\n} {\n const result: {[attributeName: string]: DracoAttribute} = {};\n for (const key in loaderData) {\n const dracoAttribute = loaderData[key];\n result[dracoAttribute.name || 'undefined'] = dracoAttribute;\n }\n return result;\n}\n\nfunction getArrowFieldFromAttribute(\n attributeName: string,\n attribute: MeshAttribute,\n loaderData?: DracoAttribute\n): Field {\n const metadataMap = {\n ...makeMeshAttributeMetadata(attribute),\n ...(loaderData ? makeMetadata(loaderData.metadata) : {})\n };\n const field = deduceMeshField(attributeName, attribute, metadataMap);\n return field;\n}\n\nfunction makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Record<string, string> {\n Object.entries(metadata);\n const serializedMetadata: Record<string, string> = {};\n for (const key in metadata) {\n serializedMetadata[`${key}.string`] = JSON.stringify(metadata[key]);\n }\n return serializedMetadata;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable camelcase */\n\nimport type {\n TypedArray,\n TypedArrayConstructor,\n MeshAttribute,\n MeshAttributeTransform,\n MeshGeometry\n} from '@loaders.gl/core/schema';\n\n// Draco types (input)\nimport type {\n Draco3D,\n Decoder,\n Mesh,\n PointCloud,\n PointAttribute,\n Metadata,\n MetadataQuerier,\n DracoInt32Array,\n draco_DataType,\n Status\n} from '../draco3d/draco3d-types';\n\n// Parsed data types (output)\nimport type {\n DracoMesh,\n DracoLoaderData,\n DracoAttribute,\n DracoMetadataEntry,\n DracoQuantizationTransform,\n DracoOctahedronTransform\n} from './draco-types';\n\nimport {getMeshBoundingBox} from '@loaders.gl/core/schema-utils';\nimport {getDracoSchema} from './utils/get-draco-schema';\n\n/** Options to control draco parsing */\nexport type DracoParseOptions = {\n /** How triangle indices should be generated (mesh only) */\n topology?: 'triangle-list' | 'triangle-strip';\n /** Specify which attribute metadata entry stores the attribute name */\n attributeNameEntry?: string;\n /** Names and ids of extra attributes to include in the output */\n extraAttributes?: {[uniqueId: string]: number};\n /** Skip transforms specific quantized attributes */\n quantizedAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n /** Skip transforms specific octahedron encoded attributes */\n octahedronAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n /** Application attribute names to extract in addition to the required position attribute. */\n includeAttributes?: string[];\n /** Application attribute names to omit. The position attribute cannot be omitted. */\n excludeAttributes?: string[];\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR: 'COLOR_0',\n TEX_COORD: 'TEXCOORD_0'\n};\n\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n 1: Int8Array,\n 2: Uint8Array,\n 3: Int16Array,\n 4: Uint16Array,\n 5: Int32Array,\n 6: Uint32Array,\n // 7: BigInt64Array,\n // 8: BigUint64Array,\n 9: Float32Array\n // 10: Float64Array\n // 11: BOOL - What array type do we use for this?\n};\n\nconst UINT16_INDEX_ITEM_SIZE = 2;\nconst UINT32_INDEX_ITEM_SIZE = 4;\n\nexport default class DracoParser {\n draco: Draco3D;\n decoder: Decoder;\n metadataQuerier: MetadataQuerier;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.decoder = new this.draco.Decoder();\n this.metadataQuerier = new this.draco.MetadataQuerier();\n }\n\n /**\n * Destroy draco resources\n */\n destroy(): void {\n this.draco.destroy(this.decoder);\n this.draco.destroy(this.metadataQuerier);\n }\n\n /**\n * NOTE: caller must call `destroyGeometry` on the return value after using it\n * @param arrayBuffer\n * @param options\n */\n parseSync(\n arrayBuffer: ArrayBuffer | ArrayBufferView,\n options: DracoParseOptions = {}\n ): DracoMesh {\n validateAttributeSelection(options);\n const encodedData = ArrayBuffer.isView(arrayBuffer)\n ? new Int8Array(arrayBuffer.buffer, arrayBuffer.byteOffset, arrayBuffer.byteLength)\n : new Int8Array(arrayBuffer);\n\n this._disableAttributeTransforms(options);\n\n const geometry_type = this.decoder.GetEncodedGeometryType(encodedData);\n const dracoGeometry =\n geometry_type === this.draco.TRIANGULAR_MESH\n ? new this.draco.Mesh()\n : new this.draco.PointCloud();\n\n let dracoStatus: Status | null = null;\n try {\n switch (geometry_type) {\n case this.draco.TRIANGULAR_MESH:\n dracoStatus = this.decoder.DecodeArrayToMesh(\n encodedData,\n encodedData.byteLength,\n dracoGeometry as Mesh\n );\n break;\n\n case this.draco.POINT_CLOUD:\n dracoStatus = this.decoder.DecodeArrayToPointCloud(\n encodedData,\n encodedData.byteLength,\n dracoGeometry\n );\n break;\n\n default:\n throw new Error('DRACO: Unknown geometry type.');\n }\n\n if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n const message = `DRACO decompression failed: ${dracoStatus.error_msg()}`;\n // console.error(message);\n throw new Error(message);\n }\n\n const loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);\n\n const geometry = this._getMeshData(dracoGeometry, loaderData, options);\n\n const boundingBox = getTransformedMeshBoundingBox(geometry.attributes);\n\n const schema = getDracoSchema(geometry.attributes, loaderData, geometry.indices);\n\n const data: DracoMesh = {\n loader: 'draco',\n loaderData,\n header: {\n vertexCount: dracoGeometry.num_points(),\n boundingBox\n },\n ...geometry,\n schema\n };\n return data;\n } finally {\n if (dracoStatus) {\n this.draco.destroy(dracoStatus);\n }\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry);\n }\n }\n }\n\n // Draco specific \"loader data\"\n\n /**\n * Extract\n * @param dracoGeometry\n * @param geometry_type\n * @param options\n * @returns\n */\n _getDracoLoaderData(\n dracoGeometry: Mesh | PointCloud,\n geometry_type,\n options: DracoParseOptions\n ): DracoLoaderData {\n const metadata = this._getTopLevelMetadata(dracoGeometry);\n const attributes = this._getDracoAttributes(dracoGeometry, options);\n\n return {\n geometry_type,\n num_attributes: dracoGeometry.num_attributes(),\n num_points: dracoGeometry.num_points(),\n num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,\n metadata,\n attributes\n };\n }\n\n /**\n * Extract all draco provided information and metadata for each attribute\n * @param dracoGeometry\n * @param options\n * @returns\n */\n _getDracoAttributes(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: DracoAttribute} {\n const dracoAttributes: {[unique_id: number]: DracoAttribute} = {};\n\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n // Note: Draco docs do not seem clear on `GetAttribute` ids just being a zero-based index,\n // but it does seems to work this way\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n\n const metadata = this._getAttributeMetadata(dracoGeometry, attributeId);\n\n dracoAttributes[dracoAttribute.unique_id()] = {\n unique_id: dracoAttribute.unique_id(),\n attribute_type: dracoAttribute.attribute_type(),\n data_type: dracoAttribute.data_type(),\n num_components: dracoAttribute.num_components(),\n\n byte_offset: dracoAttribute.byte_offset(),\n byte_stride: dracoAttribute.byte_stride(),\n normalized: dracoAttribute.normalized(),\n attribute_index: attributeId,\n\n metadata\n };\n\n // Add transformation parameters for any attributes app wants untransformed\n const quantization = this._getQuantizationTransform(dracoAttribute, options);\n if (quantization) {\n dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;\n }\n\n const octahedron = this._getOctahedronTransform(dracoAttribute, options);\n if (octahedron) {\n dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;\n }\n }\n\n return dracoAttributes;\n }\n\n /**\n * Get standard loaders.gl mesh category data\n * Extracts the geometry from draco\n * @param dracoGeometry\n * @param options\n */\n _getMeshData(\n dracoGeometry: Mesh | PointCloud,\n loaderData: DracoLoaderData,\n options: DracoParseOptions\n ): MeshGeometry {\n const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);\n\n const positionAttribute = attributes.POSITION;\n if (!positionAttribute) {\n throw new Error('DRACO: No position attribute found.');\n }\n\n // For meshes, we need indices to define the faces.\n if (dracoGeometry instanceof this.draco.Mesh) {\n switch (options.topology) {\n case 'triangle-strip':\n return {\n topology: 'triangle-strip',\n mode: 5, // GL.TRIANGLE_STRIP\n attributes,\n indices: {\n value: this._getTriangleStripIndices(dracoGeometry),\n size: 1\n }\n };\n case 'triangle-list':\n default:\n return {\n topology: 'triangle-list',\n mode: 4, // GL.TRIANGLES\n attributes,\n indices: {\n value: this._getTriangleListIndices(dracoGeometry),\n size: 1\n }\n };\n }\n }\n\n // PointCloud - must come last as Mesh inherits from PointCloud\n return {\n topology: 'point-list',\n mode: 0, // GL.POINTS\n attributes\n };\n }\n\n _getMeshAttributes(\n loaderData: DracoLoaderData,\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[attributeName: string]: MeshAttribute} {\n const attributes: {[key: string]: MeshAttribute} = {};\n const usedAttributeNames: Record<string, unknown> = {};\n\n const loaderAttributes = Object.values(loaderData.attributes).sort(\n (left, right) => left.attribute_index - right.attribute_index\n );\n const namedAttributes = loaderAttributes.map(loaderAttribute => {\n const deducedAttributeName = this._deduceAttributeName(loaderAttribute, options);\n const attributeName = getUniqueAttributeName(deducedAttributeName, usedAttributeNames);\n usedAttributeNames[attributeName] = true;\n loaderAttribute.name = attributeName;\n return {attributeName, loaderAttribute};\n });\n validateSelectedAttributeNames(options, Object.keys(usedAttributeNames));\n\n for (const {attributeName, loaderAttribute} of namedAttributes) {\n if (!this._shouldExtractAttribute(attributeName, loaderAttribute, options)) {\n continue;\n }\n const values = this._getAttributeValues(dracoGeometry, loaderAttribute);\n if (values) {\n const {value, size} = values;\n attributes[attributeName] = {\n value,\n size,\n byteOffset: loaderAttribute.byte_offset,\n byteStride: loaderAttribute.byte_stride,\n normalized: loaderAttribute.normalized,\n transform: getMeshAttributeTransform(loaderAttribute)\n };\n }\n }\n\n return attributes;\n }\n\n /** Returns true when an attribute should be copied from WASM into the requested output. */\n _shouldExtractAttribute(\n attributeName: string,\n attribute: DracoAttribute,\n options: DracoParseOptions\n ): boolean {\n if (attribute.attribute_type === this.draco.POSITION) {\n if (options.excludeAttributes?.includes(attributeName)) {\n throw new Error(`DracoLoader: position attribute \"${attributeName}\" cannot be excluded`);\n }\n return true;\n }\n if (options.includeAttributes && !options.includeAttributes.includes(attributeName)) {\n return false;\n }\n return !options.excludeAttributes?.includes(attributeName);\n }\n\n // MESH INDICES EXTRACTION\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleListIndices(dracoGeometry: Mesh): Uint16Array | Uint32Array {\n // Example on how to retrieve mesh and attributes.\n const numFaces = dracoGeometry.num_faces();\n const numIndices = numFaces * 3;\n const useUint16 = dracoGeometry.num_points() <= 65536;\n const byteLength = numIndices * (useUint16 ? UINT16_INDEX_ITEM_SIZE : UINT32_INDEX_ITEM_SIZE);\n\n const ptr = this.draco._malloc(byteLength);\n try {\n if (useUint16) {\n const decoded = this.decoder.GetTrianglesUInt16Array(dracoGeometry, byteLength, ptr);\n if (!decoded) {\n throw new Error('DRACO: Failed to decode triangle indices.');\n }\n return new Uint16Array(this.draco.HEAPU8.buffer, ptr, numIndices).slice();\n }\n const decoded = this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n if (!decoded) {\n throw new Error('DRACO: Failed to decode triangle indices.');\n }\n return new Uint32Array(this.draco.HEAPU8.buffer, ptr, numIndices).slice();\n } finally {\n this.draco._free(ptr);\n }\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleStripIndices(dracoGeometry: Mesh) {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n /* const numStrips = */ this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n return getUint32Array(dracoArray);\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n /**\n *\n * @param dracoGeometry\n * @param dracoAttribute\n * @param attributeName\n */\n _getAttributeValues(\n dracoGeometry: Mesh | PointCloud,\n attribute: DracoAttribute\n ): {value: TypedArray; size: number} | null {\n const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];\n if (!TypedArrayCtor) {\n // eslint-disable-next-line no-console\n console.warn(`DRACO: Unsupported attribute type ${attribute.data_type}`);\n return null;\n }\n const numComponents = attribute.num_components;\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n\n const byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;\n const dataType = getDracoDataType(this.draco, TypedArrayCtor);\n\n let value: TypedArray;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);\n const decoded = this.decoder.GetAttributeDataArrayForAllPoints(\n dracoGeometry,\n dracoAttribute,\n dataType,\n byteLength,\n ptr\n );\n if (!decoded) {\n throw new Error(`DRACO: Failed to decode attribute ${attribute.unique_id}.`);\n }\n value = new TypedArrayCtor(this.draco.HEAPU8.buffer, ptr, numValues).slice();\n } finally {\n this.draco._free(ptr);\n }\n\n return {value, size: numComponents};\n }\n\n // Attribute names\n\n /** \n * DRACO does not store attribute names - We need to deduce an attribute name\n * for each attribute\n _getAttributeNames(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: string} {\n const attributeNames: {[unique_id: number]: string} = {};\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n const attributeName = this._deduceAttributeName(dracoAttribute, options);\n attributeNames[attributeName] = attributeName;\n }\n return attributeNames;\n }\n */\n\n /**\n * Deduce an attribute name.\n * @note DRACO does not save attribute names, just general type (POSITION, COLOR)\n * to help optimize compression. We generate GLTF compatible names for the Draco-recognized\n * types\n * @param attributeData\n */\n _deduceAttributeName(attribute: DracoAttribute, options: DracoParseOptions): string {\n // Deduce name based on application provided map\n const uniqueId = attribute.unique_id;\n for (const [attributeName, attributeUniqueId] of Object.entries(\n options.extraAttributes || {}\n )) {\n if (attributeUniqueId === uniqueId) {\n return attributeName;\n }\n }\n\n // Prefer the application name preserved by a Draco writer.\n const entryName = options.attributeNameEntry || 'name';\n if (attribute.metadata[entryName]) {\n const attributeName = attribute.metadata[entryName].string;\n // DracoWriter versions before v5 stored these category names instead of glTF semantics.\n if (attributeName === 'COLOR') {\n return 'COLOR_0';\n }\n if (attributeName === 'TEX_COORD') {\n return 'TEXCOORD_0';\n }\n return attributeName;\n }\n\n // Deduce name based on attribute type\n const thisAttributeType = attribute.attribute_type;\n for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n const attributeType = this.draco[dracoAttributeConstant];\n if (attributeType === thisAttributeType) {\n // TODO - Return unique names if there multiple attributes per type\n // (e.g. multiple TEX_COORDS or COLORS)\n return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n }\n }\n\n // Attribute of \"GENERIC\" type, we need to assign some name\n return `CUSTOM_ATTRIBUTE_${uniqueId}`;\n }\n\n // METADATA EXTRACTION\n\n /** Get top level metadata */\n _getTopLevelMetadata(dracoGeometry: Mesh | PointCloud) {\n const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /** Get per attribute metadata */\n _getAttributeMetadata(dracoGeometry: Mesh | PointCloud, attributeId: number) {\n const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /**\n * Extract metadata field values\n * @param dracoMetadata\n * @returns\n */\n _getDracoMetadata(dracoMetadata: Metadata): {[entry: string]: DracoMetadataEntry} {\n // The not so wonderful world of undocumented Draco APIs :(\n if (!dracoMetadata || !dracoMetadata.ptr) {\n return {};\n }\n const result = {};\n const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);\n }\n return result;\n }\n\n /**\n * Extracts possible values for one metadata entry by name\n * @param dracoMetadata\n * @param entryName\n */\n _getDracoMetadataField(dracoMetadata: Metadata, entryName: string): DracoMetadataEntry {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n // Draco metadata fields can hold int32 arrays\n this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);\n const intArray = getInt32Array(dracoArray);\n return {\n int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n intArray\n };\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)\n\n /** Skip transforms for specific attribute types */\n _disableAttributeTransforms(options: DracoParseOptions) {\n const {quantizedAttributes = [], octahedronAttributes = []} = options;\n const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];\n for (const dracoAttributeName of skipAttributes) {\n this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);\n }\n }\n\n /**\n * Extract (and apply?) Position Transform\n * @todo not used\n */\n _getQuantizationTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoQuantizationTransform | null {\n const {quantizedAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const skip = quantizedAttributes.map(type => this.draco[type]).includes(attribute_type);\n if (skip) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits(),\n range: transform.range(),\n min_values: Float32Array.from(\n {length: dracoAttribute.num_components()},\n (_, componentIndex) => transform.min_value(componentIndex)\n )\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n _getOctahedronTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoOctahedronTransform | null {\n const {octahedronAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const octahedron = octahedronAttributes.map(type => this.draco[type]).includes(attribute_type);\n if (octahedron) {\n const transform = new this.draco.AttributeOctahedronTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits()\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n // HELPERS\n}\n\n/**\n * Get draco specific data type by TypedArray constructor type\n * @param attributeType\n * @returns draco specific data type\n */\nfunction getDracoDataType(draco: Draco3D, attributeType: TypedArrayConstructor): draco_DataType {\n switch (attributeType) {\n case Float32Array:\n return draco.DT_FLOAT32;\n case Int8Array:\n return draco.DT_INT8;\n case Int16Array:\n return draco.DT_INT16;\n case Int32Array:\n return draco.DT_INT32;\n case Uint8Array:\n return draco.DT_UINT8;\n case Uint16Array:\n return draco.DT_UINT16;\n case Uint32Array:\n return draco.DT_UINT32;\n default:\n return draco.DT_INVALID;\n }\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getInt32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getUint32Array(dracoArray: DracoInt32Array): Uint32Array {\n const numValues = dracoArray.size();\n const intArray = new Uint32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n\n/** Returns a collision-free output name without discarding an earlier decoded attribute. */\nfunction getUniqueAttributeName(\n attributeName: string,\n attributes: Record<string, unknown>\n): string {\n if (!Object.prototype.hasOwnProperty.call(attributes, attributeName)) {\n return attributeName;\n }\n\n const suffixMatch = /^(.*)_([0-9]+)$/.exec(attributeName);\n const baseName = suffixMatch ? suffixMatch[1] : attributeName;\n let suffix = suffixMatch ? BigInt(suffixMatch[2]) + 1n : 1n;\n while (Object.prototype.hasOwnProperty.call(attributes, `${baseName}_${suffix}`)) {\n suffix++;\n }\n return `${baseName}_${suffix}`;\n}\n\n/** Converts Draco-specific transform metadata into the shared Mesh attribute representation. */\nfunction getMeshAttributeTransform(attribute: DracoAttribute): MeshAttributeTransform | undefined {\n if (attribute.quantization_transform) {\n const {quantization_bits, min_values, range} = attribute.quantization_transform;\n if (quantization_bits !== undefined && min_values && range !== undefined) {\n return {\n type: 'quantization',\n bits: quantization_bits,\n origin: Array.from(min_values),\n range\n };\n }\n }\n if (attribute.octahedron_transform?.quantization_bits !== undefined) {\n return {\n type: 'octahedron',\n bits: attribute.octahedron_transform.quantization_bits\n };\n }\n return undefined;\n}\n\n/** Validates mutually exclusive attribute selection options. */\nfunction validateAttributeSelection(options: DracoParseOptions): void {\n if (options.includeAttributes && options.excludeAttributes) {\n throw new Error('DracoLoader: includeAttributes and excludeAttributes cannot be combined');\n }\n}\n\n/** Rejects selection entries that do not match decoded application attribute names. */\nfunction validateSelectedAttributeNames(\n options: DracoParseOptions,\n attributeNames: string[]\n): void {\n for (const attributeName of options.includeAttributes || options.excludeAttributes || []) {\n if (!attributeNames.includes(attributeName)) {\n throw new Error(`DracoLoader: selected attribute \"${attributeName}\" does not exist`);\n }\n }\n}\n\n/** Returns a logical bounding box when quantized positions remain encoded. */\nfunction getTransformedMeshBoundingBox(\n attributes: Record<string, MeshAttribute>\n): [number[], number[]] {\n const boundingBox = getMeshBoundingBox(attributes);\n if (!boundingBox) throw new Error('Decoded mesh is missing positions');\n const position = attributes.POSITION;\n if (position?.transform?.type !== 'quantization') {\n return boundingBox;\n }\n const {bits, origin, range} = position.transform;\n const scale = range / (2 ** bits - 1);\n return boundingBox.map(bounds =>\n bounds.map((value, componentIndex) => origin[componentIndex] + value * scale)\n ) as [number[], number[]];\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LoaderContext} from '@loaders.gl/core/loader-utils';\nimport type {ArrowTable} from '@loaders.gl/core/schema';\nimport {convertMeshToTable} from '@loaders.gl/core/schema-utils';\nimport type {DracoMesh} from './draco-types';\nimport DracoParser from './draco-parser';\nimport type {DracoLoaderOptions} from '../draco-loader-options';\nimport type {Draco3D} from '../draco3d/draco3d-types';\n\n/** Parsed Draco decoder module. */\nexport type LoadedDracoDecoderModule = {\n /** Initialized Draco decoder instance. */\n draco: Draco3D;\n};\n\n/** Loads the decoder selected by a backend-specific Draco loader. */\nexport type LoadDracoDecoderModule = () => Promise<LoadedDracoDecoderModule>;\n\n/**\n * Parses Draco bytes with a backend-specific decoder module.\n * @param arrayBuffer Encoded Draco data\n * @param options Draco loader options\n * @param loadDecoderModule Function that loads the selected decoder backend\n * @param context Loader progress and cancellation context\n * @returns Decoded mesh or Arrow table\n */\nexport async function parseDraco(\n arrayBuffer: ArrayBuffer | ArrayBufferView,\n options: DracoLoaderOptions | undefined,\n loadDecoderModule: LoadDracoDecoderModule,\n context?: LoaderContext\n): Promise<DracoMesh | ArrowTable> {\n const reportProgress = context?.reportProgress || options?.onProgress;\n reportProgress?.({phase: 'decode', completed: 0, total: 1, unit: 'tasks'});\n const {draco} = await loadDecoderModule();\n (options?.signal || context?.signal)?.throwIfAborted();\n const dracoParser = new DracoParser(draco);\n try {\n const mesh = dracoParser.parseSync(arrayBuffer, options?.draco);\n reportProgress?.({phase: 'decode', completed: 1, total: 1, unit: 'tasks'});\n if (options?.draco?.shape === 'arrow-table') {\n return convertMeshToTable(mesh, 'arrow-table');\n }\n return mesh;\n } finally {\n dracoParser.destroy();\n }\n}\n", "// SPDX-License-Identifier: MIT\n\nimport {\n isBrowser,\n isWorker,\n loadLibrary as loadCoreLibrary,\n type LoadLibraryOptions\n} from '@loaders.gl/core/worker-utils';\n\nexport {isBrowser, type LoadLibraryOptions};\n\n/** Resolves local Draco assets inside scene without changing core's format-neutral library paths. */\nexport async function loadLibrary(\n libraryUrl: string,\n moduleName: string | null = null,\n options: LoadLibraryOptions = {},\n libraryName: string | null = null,\n moduleLibraryName: string | null = null\n): Promise<unknown> {\n if (\n isBrowser &&\n options.useLocalLibraries &&\n !options.CDN &&\n libraryName &&\n options.modules?.[libraryName] === undefined\n ) {\n const directory = isWorker ? './libs' : `modules/${moduleName}/dist/libs`;\n options = {\n ...options,\n modules: {\n [libraryName]: `${directory}/${libraryName}`,\n ...(moduleLibraryName ? {[moduleLibraryName]: `${directory}/${moduleLibraryName}`} : {}),\n ...options.modules\n }\n };\n }\n return await loadCoreLibrary(libraryUrl, moduleName, options, libraryName, moduleLibraryName);\n}\n", "// SPDX-License-Identifier: MIT\n\nconst DRACO_VERSION = '1.5.7';\nconst DRACO_RELEASE_COMMIT = '8786740086a9f4d83f44aa83badfbea4dce7a1b5';\nconst STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}`;\nconst STATIC_ENCODER_URL = `https://cdn.jsdelivr.net/gh/google/draco@${DRACO_RELEASE_COMMIT}/javascript`;\n\n/** External Draco runtime assets understood by `loadLibrary`. */\nexport const DRACO_EXTERNAL_LIBRARIES = {\n /** WebAssembly decoder JavaScript wrapper. */\n DECODER: 'draco_wasm_wrapper.js',\n /** WebAssembly decoder binary. */\n DECODER_WASM: 'draco_decoder.wasm',\n /** glTF-profile WebAssembly decoder JavaScript wrapper. */\n GLTF_DECODER: 'draco_wasm_wrapper_gltf.js',\n /** glTF-profile WebAssembly decoder binary. */\n GLTF_DECODER_WASM: 'draco_decoder_gltf.wasm',\n /** JavaScript decoder fallback. */\n FALLBACK_DECODER: 'draco_decoder.js',\n /** WebAssembly encoder JavaScript wrapper. */\n ENCODER: 'draco_encoder.js',\n /** WebAssembly encoder binary. */\n ENCODER_WASM: 'draco_encoder.wasm'\n} as const;\n\n/** Default versioned URLs for external Draco runtime assets. */\nexport const DRACO_EXTERNAL_LIBRARY_URLS = {\n [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,\n [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,\n [DRACO_EXTERNAL_LIBRARIES.GLTF_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.GLTF_DECODER}`,\n [DRACO_EXTERNAL_LIBRARIES.GLTF_DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.GLTF_DECODER_WASM}`,\n [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,\n [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `${STATIC_ENCODER_URL}/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`,\n [DRACO_EXTERNAL_LIBRARIES.ENCODER_WASM]: `${STATIC_ENCODER_URL}/${DRACO_EXTERNAL_LIBRARIES.ENCODER_WASM}`\n} as const;\n", "// SPDX-License-Identifier: MIT\n\n// Dynamic DRACO module loading inspired by THREE.DRACOLoader\n// https://github.com/mrdoob/three.js/blob/dev/examples/jsm/loaders/DRACOLoader.js\n// by Don McCurdy / https://www.donmccurdy.com / MIT license\n\nimport {initializeWasmModule} from '@loaders.gl/core/loader-utils';\nimport {isBrowser, loadLibrary, type LoadLibraryOptions} from './draco-library-loader';\nimport type {Draco3D} from '../draco3d/draco3d-types';\n\nimport {DRACO_EXTERNAL_LIBRARIES, DRACO_EXTERNAL_LIBRARY_URLS} from '../draco-libraries';\nexport {DRACO_EXTERNAL_LIBRARIES, DRACO_EXTERNAL_LIBRARY_URLS} from '../draco-libraries';\n\n/** Initialized Draco module returned to the parser or builder. */\nexport type LoadedDracoModule = {draco: Draco3D};\n\n/** Draco decoder build selected for general data or glTF-compatible bitstreams. */\nexport type DracoDecoderProfile = 'full' | 'gltf';\n\n/** Subset of the `draco3d` npm package accepted through `options.modules`. */\nexport type Draco3DModule = {\n /** Creates an initialized decoder module. */\n createDecoderModule?: (options?: Record<string, unknown>) => Promise<Draco3D>;\n /** Creates an initialized encoder module. */\n createEncoderModule?: (options?: Record<string, unknown>) => Promise<Draco3D>;\n};\n\ntype DracoDecoderModule = Required<Pick<Draco3DModule, 'createDecoderModule'>>;\ntype DracoEncoderModule = Required<Pick<Draco3DModule, 'createEncoderModule'>>;\n\ntype DracoModuleInitializerOptions = {\n /** Optional preloaded WASM bytes. */\n wasmBinary?: ArrayBuffer;\n /** Reports an initialized Emscripten module. */\n onModuleLoaded?: (draco: Draco3D) => void;\n};\n\ntype DracoModuleInitializer = (\n options: DracoModuleInitializerOptions\n) => Promise<Draco3D> | undefined;\n\ntype DracoGlobal = typeof globalThis & {\n DracoDecoderModule?: DracoModuleInitializer;\n DracoEncoderModule?: DracoModuleInitializer;\n};\n\nconst libraryDecoderPromises = new Map<string, Promise<LoadedDracoModule>>();\nconst libraryEncoderPromises = new Map<string, Promise<LoadedDracoModule>>();\nconst injectedDecoderPromises = new WeakMap<DracoDecoderModule, Promise<LoadedDracoModule>>();\nconst injectedEncoderPromises = new WeakMap<DracoEncoderModule, Promise<LoadedDracoModule>>();\n\n/** Loads a Draco decoder from either an injected `draco3d` package or external libraries. */\nexport async function loadDracoDecoderModule(\n options: LoadLibraryOptions = {},\n type: 'wasm' | 'js',\n profile: DracoDecoderProfile = 'full'\n): Promise<LoadedDracoModule> {\n const draco3DModule = getInjectedDraco3DModule(options);\n if (draco3DModule) {\n return await loadDracoDecoderModuleFromDraco3D(draco3DModule);\n }\n\n return await loadDracoDecoderModuleFromLibrary(\n options,\n type === 'js' ? 'javascript' : type,\n profile\n );\n}\n\n/** Loads a Draco decoder from external WASM or JavaScript fallback libraries. */\nexport async function loadDracoDecoderModuleFromLibrary(\n options: LoadLibraryOptions = {},\n type: 'wasm' | 'javascript',\n profile: DracoDecoderProfile = 'full'\n): Promise<LoadedDracoModule> {\n const cacheKey = getLibraryCacheKey(`${type}:${profile}`, options);\n let decoderPromise = libraryDecoderPromises.get(cacheKey);\n if (!decoderPromise) {\n decoderPromise = loadDracoDecoderWithFallback(options, type, profile);\n libraryDecoderPromises.set(cacheKey, decoderPromise);\n }\n return await decoderPromise;\n}\n\n/** Loads a decoder from an injected `draco3d` npm package. */\nexport async function loadDracoDecoderModuleFromDraco3D(\n draco3DModule: unknown\n): Promise<LoadedDracoModule> {\n const typedDraco3DModule = validateDracoDecoderModule(draco3DModule);\n let decoderPromise = injectedDecoderPromises.get(typedDraco3DModule);\n if (!decoderPromise) {\n decoderPromise = initializeWasmModule(\n () => typedDraco3DModule.createDecoderModule({}),\n draco => ({draco})\n );\n injectedDecoderPromises.set(typedDraco3DModule, decoderPromise);\n }\n return await decoderPromise;\n}\n\n/** Loads a Draco encoder from an injected `draco3d` package or external WASM libraries. */\nexport async function loadDracoEncoderModule(\n options: LoadLibraryOptions = {}\n): Promise<LoadedDracoModule> {\n const draco3DModule = getInjectedDraco3DModule(options);\n if (draco3DModule) {\n const typedDraco3DModule = validateDracoEncoderModule(draco3DModule);\n let encoderPromise = injectedEncoderPromises.get(typedDraco3DModule);\n if (!encoderPromise) {\n encoderPromise = initializeWasmModule(\n () => typedDraco3DModule.createEncoderModule({}),\n draco => ({draco})\n );\n injectedEncoderPromises.set(typedDraco3DModule, encoderPromise);\n }\n return await encoderPromise;\n }\n\n const cacheKey = getLibraryCacheKey('encoder', options);\n let encoderPromise = libraryEncoderPromises.get(cacheKey);\n if (!encoderPromise) {\n encoderPromise = loadDracoEncoder(options);\n libraryEncoderPromises.set(cacheKey, encoderPromise);\n }\n return await encoderPromise;\n}\n\n/** Loads the selected decoder and retries with the JavaScript backend after a WASM failure. */\nasync function loadDracoDecoderWithFallback(\n options: LoadLibraryOptions,\n type: 'wasm' | 'javascript',\n profile: DracoDecoderProfile\n): Promise<LoadedDracoModule> {\n try {\n return await loadDracoDecoder(options, type, profile);\n } catch (wasmError) {\n if (type === 'javascript') {\n throw wasmError;\n }\n try {\n return await loadDracoDecoder(options, 'javascript', 'full');\n } catch (javascriptError) {\n throw new AggregateError(\n [wasmError, javascriptError],\n 'Draco decoder could not load either the WebAssembly or JavaScript backend'\n );\n }\n }\n}\n\nlet decoderInitializationQueue = Promise.resolve();\n\n/** Loads and initializes one external Draco decoder backend. */\nasync function loadDracoDecoder(\n options: LoadLibraryOptions,\n type: 'wasm' | 'javascript',\n profile: DracoDecoderProfile\n): Promise<LoadedDracoModule> {\n const initialization = decoderInitializationQueue.then(() =>\n loadDracoDecoderInternal(options, type, profile)\n );\n decoderInitializationQueue = initialization.then(\n () => undefined,\n () => undefined\n );\n return await initialization;\n}\n\n/** Performs decoder loading after preceding global initializers have completed. */\nasync function loadDracoDecoderInternal(\n options: LoadLibraryOptions,\n type: 'wasm' | 'javascript',\n profile: DracoDecoderProfile\n): Promise<LoadedDracoModule> {\n if (type === 'javascript') {\n let decoderLibrary: unknown;\n try {\n decoderLibrary = await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],\n 'scene',\n options,\n DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER,\n 'draco_decoder.mjs'\n );\n } catch (error) {\n if (isBrowser || options.useLocalLibraries) {\n throw error;\n }\n decoderLibrary = await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],\n 'scene',\n {...options, useLocalLibraries: true},\n DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER,\n 'draco_decoder.mjs'\n );\n }\n const decoderInitializer =\n getLibraryExport(decoderLibrary, 'DracoDecoderModule') ||\n (globalThis as DracoGlobal).DracoDecoderModule;\n return await initializeDracoModule(decoderInitializer);\n }\n\n let decoderLibrary: unknown;\n let wasmBinary: ArrayBuffer;\n try {\n [decoderLibrary, wasmBinary] = await loadDecoderWasmAssets(options, profile);\n } catch (error) {\n if (isBrowser || options.useLocalLibraries) {\n throw error;\n }\n [decoderLibrary, wasmBinary] = await loadDecoderWasmAssets(\n {...options, useLocalLibraries: true},\n profile\n );\n }\n const decoderInitializer =\n getLibraryExport(decoderLibrary, 'DracoDecoderModule') ||\n (globalThis as DracoGlobal).DracoDecoderModule;\n return await initializeDracoModule(decoderInitializer, wasmBinary);\n}\n\n/** Loads the decoder wrapper and WASM binary concurrently. */\nasync function loadDecoderWasmAssets(\n options: LoadLibraryOptions,\n profile: DracoDecoderProfile\n): Promise<[unknown, ArrayBuffer]> {\n const decoderLibrary =\n profile === 'gltf' ? DRACO_EXTERNAL_LIBRARIES.GLTF_DECODER : DRACO_EXTERNAL_LIBRARIES.DECODER;\n const decoderWasm =\n profile === 'gltf'\n ? DRACO_EXTERNAL_LIBRARIES.GLTF_DECODER_WASM\n : DRACO_EXTERNAL_LIBRARIES.DECODER_WASM;\n return await Promise.all([\n loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[decoderLibrary],\n 'scene',\n options,\n decoderLibrary,\n profile === 'gltf' ? 'draco_wasm_wrapper_gltf.mjs' : 'draco_wasm_wrapper.mjs'\n ),\n loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[decoderWasm],\n 'scene',\n options,\n decoderWasm\n ) as Promise<ArrayBuffer>\n ]);\n}\n\n/** Loads and initializes the external Draco WASM encoder. */\nasync function loadDracoEncoder(options: LoadLibraryOptions): Promise<LoadedDracoModule> {\n let encoderLibrary: unknown;\n let wasmBinary: ArrayBuffer;\n try {\n [encoderLibrary, wasmBinary] = await loadEncoderWasmAssets(options);\n } catch (error) {\n if (isBrowser || options.useLocalLibraries) {\n throw error;\n }\n [encoderLibrary, wasmBinary] = await loadEncoderWasmAssets({\n ...options,\n useLocalLibraries: true\n });\n }\n const encoderInitializer =\n getLibraryExport(encoderLibrary, 'DracoEncoderModule') ||\n (globalThis as DracoGlobal).DracoEncoderModule;\n return await initializeDracoModule(encoderInitializer, wasmBinary);\n}\n\n/** Loads the encoder wrapper and WASM binary concurrently. */\nasync function loadEncoderWasmAssets(options: LoadLibraryOptions): Promise<[unknown, ArrayBuffer]> {\n return await Promise.all([\n loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER],\n 'scene',\n options,\n DRACO_EXTERNAL_LIBRARIES.ENCODER,\n 'draco_encoder.mjs'\n ),\n loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER_WASM],\n 'scene',\n options,\n DRACO_EXTERNAL_LIBRARIES.ENCODER_WASM\n ) as Promise<ArrayBuffer>\n ]);\n}\n\n/** Initializes an Emscripten Draco factory that may use callbacks, promises, or both. */\nfunction initializeDracoModule(\n initializer: DracoModuleInitializer | undefined,\n wasmBinary?: ArrayBuffer\n): Promise<LoadedDracoModule> {\n if (typeof initializer !== 'function') {\n throw new Error('Draco module initializer could not be loaded');\n }\n\n return initializeWasmModule(\n onInitialized =>\n initializer({\n ...(wasmBinary ? {wasmBinary} : {}),\n onModuleLoaded: onInitialized\n }),\n (draco: Draco3D) => ({draco})\n );\n}\n\n/** Resolves a Draco initializer from a direct, named, or default library export. */\nfunction getLibraryExport(\n library: unknown,\n exportName: 'DracoDecoderModule' | 'DracoEncoderModule'\n): DracoModuleInitializer | undefined {\n if (typeof library === 'function') {\n return library as DracoModuleInitializer;\n }\n if (library && typeof library === 'object') {\n const exports = library as Record<string, unknown>;\n const exportedInitializer = exports[exportName] || exports.default;\n return typeof exportedInitializer === 'function'\n ? (exportedInitializer as DracoModuleInitializer)\n : undefined;\n }\n return undefined;\n}\n\n/** Returns and validates the optional injected `draco3d` package reference. */\nfunction getInjectedDraco3DModule(options: LoadLibraryOptions): Draco3DModule | undefined {\n const module = options.modules?.draco3d;\n if (!module) {\n return undefined;\n }\n if (typeof module !== 'object' && typeof module !== 'function') {\n throw new Error('Invalid draco3d module');\n }\n return module as Draco3DModule;\n}\n\n/** Narrows an injected package to the decoder factory interface. */\nfunction validateDracoDecoderModule(module: unknown): DracoDecoderModule {\n const typedModule = module as Draco3DModule;\n if (typeof typedModule?.createDecoderModule !== 'function') {\n throw new Error('Invalid draco3d decoder module');\n }\n return typedModule as DracoDecoderModule;\n}\n\n/** Narrows an injected package to the encoder factory interface. */\nfunction validateDracoEncoderModule(module: unknown): DracoEncoderModule {\n const typedModule = module as Draco3DModule;\n if (typeof typedModule?.createEncoderModule !== 'function') {\n throw new Error('Invalid draco3d encoder module');\n }\n return typedModule as DracoEncoderModule;\n}\n\n/** Builds a stable cache key from the backend and external-library configuration. */\nfunction getLibraryCacheKey(type: string, options: LoadLibraryOptions): string {\n const libraryOverrides = Object.entries(options.modules || {})\n .filter(([name]) => name !== 'draco3d')\n .map(([name, value]) => `${name}:${String(value)}`)\n .sort()\n .join('|');\n return [\n type,\n options.useLocalLibraries ? 'local' : 'remote',\n options.CDN || '',\n libraryOverrides\n ].join('|');\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport * as arrow from 'apache-arrow';\nimport type {Buffers} from 'apache-arrow/data';\n\n/** Arrow JS typed array used in Arrow internal buffer slots. */\ntype ArrowTypedArray =\n | Uint8Array\n | Uint8ClampedArray\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n\n/** Arrow JS object shapes supported by splitArrowBuffers. */\nexport type SplitArrowBuffersInput =\n | arrow.Table\n | arrow.RecordBatch\n | arrow.Vector\n | arrow.Data<arrow.DataType>;\n\n/** Options for splitArrowBuffers. */\nexport type SplitArrowBuffersOptions = {\n /**\n * Buffer copy mode.\n * - 'none': do not copy any typed arrays.\n * - 'sliced': copy only typed arrays that view a larger ArrayBuffer.\n * - 'all': copy every Arrow internal typed array.\n */\n copy?: 'none' | 'sliced' | 'all';\n};\n\n/** Copy ownership is scoped to one outgoing Arrow object. */\ntype SplitArrowBuffersContext = SplitArrowBuffersOptions & {\n /** Reuses a copy when multiple columns or dictionaries reference the same typed-array view. */\n copies: WeakMap<object, ArrowTypedArray>;\n};\n\n/**\n * Rebuilds an Arrow object so sliced internal typed-array buffers are split into standalone\n * ArrayBuffers, while whole-buffer typed arrays are reused by default.\n * @param input Arrow table, record batch, vector, or data node to rebuild.\n * @param options Buffer splitting options.\n * @returns A real Arrow object of the same kind with transfer-safe internal buffers.\n */\nexport function splitArrowBuffers<T extends arrow.TypeMap>(\n input: arrow.Table<T>,\n options?: SplitArrowBuffersOptions\n): arrow.Table<T>;\nexport function splitArrowBuffers<T extends arrow.TypeMap>(\n input: arrow.RecordBatch<T>,\n options?: SplitArrowBuffersOptions\n): arrow.RecordBatch<T>;\nexport function splitArrowBuffers<T extends arrow.DataType>(\n input: arrow.Vector<T>,\n options?: SplitArrowBuffersOptions\n): arrow.Vector<T>;\nexport function splitArrowBuffers<T extends arrow.DataType>(\n input: arrow.Data<T>,\n options?: SplitArrowBuffersOptions\n): arrow.Data<T>;\nexport function splitArrowBuffers<T extends SplitArrowBuffersInput>(\n input: T,\n options: SplitArrowBuffersOptions = {}\n): T {\n const context: SplitArrowBuffersContext = {...options, copies: new WeakMap()};\n if (isArrowTable(input)) {\n return splitArrowTableBuffersInternal(input, context) as T;\n }\n\n if (isArrowRecordBatch(input)) {\n return splitArrowRecordBatchBuffers(input, context) as T;\n }\n\n if (isArrowVector(input)) {\n return splitArrowVectorBuffers(input, context) as T;\n }\n\n return splitArrowDataBuffers(input, context) as T;\n}\n\n/**\n * Rebuilds an Arrow table so sliced internal typed-array buffers are split into standalone\n * ArrayBuffers, while whole-buffer typed arrays are reused by default.\n * @param table Arrow table to rebuild without mutating the original table.\n * @param options Buffer splitting options.\n * @returns A real Arrow table with transfer-safe internal buffers.\n */\nexport function splitArrowTableBuffers<T extends arrow.TypeMap>(\n table: arrow.Table<T>,\n options?: SplitArrowBuffersOptions\n): arrow.Table<T> {\n return splitArrowBuffers(table, options);\n}\n\n/**\n * Tests whether a value is an Arrow table.\n * @param input Value to test.\n * @returns True when the value is an Arrow table.\n */\nfunction isArrowTable(input: SplitArrowBuffersInput): input is arrow.Table {\n return 'batches' in input;\n}\n\n/**\n * Tests whether a value is an Arrow record batch.\n * @param input Value to test.\n * @returns True when the value is an Arrow record batch.\n */\nfunction isArrowRecordBatch(input: SplitArrowBuffersInput): input is arrow.RecordBatch {\n return 'schema' in input && 'data' in input && !Array.isArray(input.data);\n}\n\n/**\n * Tests whether a value is an Arrow vector.\n * @param input Value to test.\n * @returns True when the value is an Arrow vector.\n */\nfunction isArrowVector(input: SplitArrowBuffersInput): input is arrow.Vector {\n return 'data' in input && Array.isArray(input.data);\n}\n\n/**\n * Rebuilds an Arrow table by rebuilding each record batch.\n * @param table Arrow table to rebuild.\n * @param options Buffer splitting options.\n * @returns Rebuilt Arrow table.\n */\nfunction splitArrowTableBuffersInternal<T extends arrow.TypeMap>(\n table: arrow.Table<T>,\n options: SplitArrowBuffersContext\n): arrow.Table<T> {\n const recordBatches = table.batches.map(recordBatch =>\n splitArrowRecordBatchBuffers(recordBatch, options)\n );\n return new arrow.Table(table.schema, recordBatches);\n}\n\n/**\n * Rebuilds an Arrow record batch by rebuilding its data node.\n * @param recordBatch Arrow record batch to rebuild.\n * @param options Buffer splitting options.\n * @returns Rebuilt Arrow record batch.\n */\nfunction splitArrowRecordBatchBuffers<T extends arrow.TypeMap>(\n recordBatch: arrow.RecordBatch<T>,\n options: SplitArrowBuffersContext\n): arrow.RecordBatch<T> {\n return new arrow.RecordBatch(\n recordBatch.schema,\n splitArrowDataBuffers(recordBatch.data, options)\n );\n}\n\n/**\n * Recursively rebuilds Arrow Data and isolates requested internal typed-array buffers.\n * @param data Arrow data node to rebuild.\n * @param options Buffer splitting options.\n * @returns Rebuilt Arrow data node.\n */\nfunction splitArrowDataBuffers<T extends arrow.DataType>(\n data: arrow.Data<T>,\n options: SplitArrowBuffersContext\n): arrow.Data<T> {\n const children = data.children.map(childData => splitArrowDataBuffers(childData, options));\n const dictionary = data.dictionary\n ? splitArrowVectorBuffers(data.dictionary, options)\n : undefined;\n\n const buffers: Partial<Buffers<T>> = {\n [arrow.BufferType.OFFSET]: splitArrowBuffer(data.buffers[arrow.BufferType.OFFSET], options),\n [arrow.BufferType.DATA]: splitArrowBuffer(data.buffers[arrow.BufferType.DATA], options),\n [arrow.BufferType.VALIDITY]: splitArrowBuffer(data.buffers[arrow.BufferType.VALIDITY], options),\n [arrow.BufferType.TYPE]: splitArrowBuffer(data.buffers[arrow.BufferType.TYPE], options)\n };\n\n return new arrow.Data(\n data.type,\n data.offset,\n data.length,\n // @ts-expect-error _nullCount is protected. Reuse it to preserve lazy null-count state.\n data._nullCount,\n buffers,\n children,\n dictionary\n );\n}\n\n/**\n * Rebuilds an Arrow vector by rebuilding each underlying Data chunk.\n * @param vector Arrow vector to rebuild.\n * @param options Buffer splitting options.\n * @returns Rebuilt Arrow vector.\n */\nfunction splitArrowVectorBuffers<T extends arrow.DataType>(\n vector: arrow.Vector<T>,\n options: SplitArrowBuffersContext\n): arrow.Vector<T> {\n return new arrow.Vector(vector.data.map(data => splitArrowDataBuffers(data, options)));\n}\n\n/**\n * Copies a typed-array view when requested or when it does not span its full backing buffer.\n * @param array Typed array from an Arrow buffer slot.\n * @param options Buffer splitting options.\n * @returns The original typed array or a copied typed array with a standalone buffer.\n */\nfunction splitArrowBuffer<T>(array: T, options: SplitArrowBuffersContext): T {\n if (!isArrowTypedArray(array)) {\n return array;\n }\n\n if (options.copy === 'none') {\n return array;\n }\n\n if (\n options.copy !== 'all' &&\n array.byteOffset === 0 &&\n array.byteLength === array.buffer.byteLength\n ) {\n return array;\n }\n\n let copy = options.copies.get(array);\n if (!copy) {\n copy = array.slice();\n options.copies.set(array, copy);\n }\n return copy as T;\n}\n\n/**\n * Tests whether a value is an Arrow typed array instead of a DataView.\n * @param value Value to test.\n * @returns True when the value is one of the Arrow internal typed-array buffer types.\n */\nfunction isArrowTypedArray(value: unknown): value is ArrowTypedArray {\n return ArrayBuffer.isView(value) && !(value instanceof DataView);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport * as arrow from 'apache-arrow';\nimport type {Buffers} from 'apache-arrow/data';\nimport type {DataType, Schema} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowSchema,\n deserializeArrowType,\n serializeArrowSchema,\n serializeArrowType\n} from '../schema/convert-arrow-schema';\nimport {splitArrowBuffers, type SplitArrowBuffersOptions} from './split-arrow-buffers';\n\ntype ArrowWorkerOptions = {\n core?: {workerTransferBufferCopy?: SplitArrowBuffersOptions['copy']};\n workerTransferBufferCopy?: SplitArrowBuffersOptions['copy'];\n};\n\ntype SerializedArrowWorkerTable = {\n shape: 'arrow-table';\n data: DehydratedArrowTable;\n [key: string]: unknown;\n};\n\n/** Structured-cloneable Arrow Data payload used by dehydrateArrowTable. */\nexport type DehydratedArrowData<T extends arrow.DataType = arrow.DataType> = {\n type: DataType;\n offset: number;\n length: number;\n nullCount: number;\n buffers: Partial<Buffers<T>>;\n children: DehydratedArrowData[];\n dictionary?: DehydratedArrowVector;\n};\n\n/** Structured-cloneable Arrow Vector payload used by dehydrateArrowTable. */\nexport type DehydratedArrowVector<T extends arrow.DataType = arrow.DataType> = {\n data: DehydratedArrowData<T>[];\n};\n\n/** Structured-cloneable Arrow RecordBatch payload used by dehydrateArrowTable. */\nexport type DehydratedArrowRecordBatch<T extends arrow.TypeMap = arrow.TypeMap> = {\n data: DehydratedArrowData<arrow.Struct<T>>;\n};\n\n/** Structured-cloneable Arrow Table payload for same-version Arrow JS boundaries. */\nexport type DehydratedArrowTable<T extends arrow.TypeMap = arrow.TypeMap> = {\n shape: 'arrow-table';\n transport: 'arrow-js';\n schema: Schema;\n batches: DehydratedArrowRecordBatch<T>[];\n};\n\n/** Arrow IPC payload for robust Arrow table transport across Arrow JS versions. */\nexport type SerializedArrowTableIPC = {\n shape: 'arrow-table';\n transport: 'arrow-ipc';\n data: Uint8Array;\n};\n\n/**\n * Dehydrates an Arrow table into a structured-cloneable payload.\n *\n * This format preserves Arrow JS object details and is efficient, but assumes both sides hydrate\n * with a compatible Apache Arrow JS version. Use serializeArrowTableToIPC when crossing version\n * boundaries. Arrow schema and type metadata are serialized with @loaders.gl/core/schema-utils helpers.\n * @param table Arrow table to dehydrate.\n * @param options Buffer splitting options.\n * @returns Structured-cloneable Arrow table payload.\n */\nexport function dehydrateArrowTable<T extends arrow.TypeMap>(\n table: arrow.Table<T>,\n options?: SplitArrowBuffersOptions\n): DehydratedArrowTable<T> {\n const splitTable = splitArrowBuffers(table, options);\n return {\n shape: 'arrow-table',\n transport: 'arrow-js',\n schema: serializeArrowSchema(splitTable.schema),\n batches: splitTable.batches.map(recordBatch => dehydrateArrowRecordBatch(recordBatch))\n };\n}\n\n/**\n * Hydrates a table payload created by dehydrateArrowTable into a real Arrow table.\n * @param table Structured-cloneable Arrow table payload.\n * @returns Hydrated Arrow table.\n */\nexport function hydrateArrowTable<T extends arrow.TypeMap>(\n table: DehydratedArrowTable<T>\n): arrow.Table<T> {\n const schema = deserializeArrowSchema(table.schema) as arrow.Schema<T>;\n const recordBatches = table.batches.map(\n recordBatch => new arrow.RecordBatch(schema, hydrateArrowData(recordBatch.data))\n );\n return new arrow.Table(schema, recordBatches);\n}\n\n/**\n * Serializes an Arrow table to Arrow IPC bytes.\n *\n * This is less efficient than dehydrateArrowTable for in-memory worker hops, but it is more robust\n * when the producer and consumer may use different Apache Arrow JS versions.\n * @param table Arrow table to serialize.\n * @returns Arrow IPC payload.\n */\nexport function serializeArrowTableToIPC(table: arrow.Table): SerializedArrowTableIPC {\n return {\n shape: 'arrow-table',\n transport: 'arrow-ipc',\n data: arrow.tableToIPC(table)\n };\n}\n\n/**\n * Deserializes Arrow IPC bytes from serializeArrowTableToIPC into a real Arrow table.\n * @param table Serialized Arrow table payload or raw IPC bytes.\n * @returns Deserialized Arrow table.\n */\nexport function deserializeArrowTableFromIPC(\n table: SerializedArrowTableIPC | ArrayBuffer | Uint8Array\n): arrow.Table {\n const data = isSerializedArrowTableIPC(table) ? table.data : table;\n return arrow.tableFromIPC(data);\n}\n\n/** Serializes Arrow columns with owned buffers so transfers cannot detach retained parser state. */\nexport function serializeArrowWorkerTable(result: unknown): unknown {\n if (!isArrowTableWrapper(result)) {\n throw new Error('Workers require Arrow table output');\n }\n const {data, ...metadata} = result;\n // Headers, sidecar indexes, and mesh indices can also retain parser-owned binary buffers.\n // Clone only this small envelope; the Arrow table always uses column-buffer transfer.\n return {\n ...structuredClone(metadata),\n data: dehydrateArrowTable(data, {copy: 'all'})\n };\n}\n\n/** Hydrates the column-buffer worker protocol; other wire formats are rejected. */\nexport function deserializeArrowWorkerTable(result: unknown): any {\n if (!isDehydratedArrowTableWrapper(result)) {\n throw new Error('Workers require Arrow column transport');\n }\n return {...result, data: hydrateArrowTable(result.data)};\n}\n\n/** Serializes any loaders.gl Arrow table wrapper for worker postMessage transport. */\nexport function serializeArrowWorkerResult(result: unknown, options?: unknown): unknown {\n if (!isArrowTableWrapper(result)) {\n return result;\n }\n const workerOptions = options as ArrowWorkerOptions | undefined;\n const bufferCopyMode =\n workerOptions?.core?.workerTransferBufferCopy ?? workerOptions?.workerTransferBufferCopy;\n return {\n ...result,\n data: dehydrateArrowTable(result.data, bufferCopyMode ? {copy: bufferCopyMode} : undefined)\n };\n}\n\n/** Rehydrates any loaders.gl Arrow table wrapper returned from worker postMessage transport. */\nexport function deserializeArrowWorkerResult(result: unknown): any {\n if (!isDehydratedArrowTableWrapper(result)) {\n return result;\n }\n return {...result, data: hydrateArrowTable(result.data)};\n}\n\nfunction isArrowTableWrapper(value: unknown): value is {shape: 'arrow-table'; data: arrow.Table} {\n const table = value as {shape?: unknown; data?: unknown} | null;\n return Boolean(\n table &&\n table.shape === 'arrow-table' &&\n table.data &&\n typeof table.data === 'object' &&\n 'batches' in table.data\n );\n}\n\nfunction isDehydratedArrowTableWrapper(value: unknown): value is SerializedArrowWorkerTable {\n const table = value as SerializedArrowWorkerTable | null;\n return Boolean(\n table &&\n table.shape === 'arrow-table' &&\n table.data &&\n table.data.transport === 'arrow-js' &&\n Array.isArray(table.data.batches)\n );\n}\n\n/**\n * Dehydrates an Arrow record batch into a structured-cloneable payload.\n * @param recordBatch Arrow record batch to dehydrate.\n * @returns Structured-cloneable record batch payload.\n */\nfunction dehydrateArrowRecordBatch<T extends arrow.TypeMap>(\n recordBatch: arrow.RecordBatch<T>\n): DehydratedArrowRecordBatch<T> {\n return {data: dehydrateArrowData(recordBatch.data)};\n}\n\n/**\n * Dehydrates an Arrow data node into a structured-cloneable payload.\n * @param data Arrow data node to dehydrate.\n * @returns Structured-cloneable data payload.\n */\nfunction dehydrateArrowData<T extends arrow.DataType>(data: arrow.Data<T>): DehydratedArrowData<T> {\n return {\n type: serializeArrowType(data.type),\n offset: data.offset,\n length: data.length,\n // @ts-expect-error _nullCount is protected. Preserve the Arrow lazy null-count state.\n nullCount: data._nullCount,\n buffers: {\n [arrow.BufferType.OFFSET]: data.buffers[arrow.BufferType.OFFSET],\n [arrow.BufferType.DATA]: data.buffers[arrow.BufferType.DATA],\n [arrow.BufferType.VALIDITY]: data.buffers[arrow.BufferType.VALIDITY],\n [arrow.BufferType.TYPE]: data.buffers[arrow.BufferType.TYPE]\n },\n children: data.children.map(childData => dehydrateArrowData(childData)),\n dictionary: data.dictionary ? dehydrateArrowVector(data.dictionary) : undefined\n };\n}\n\n/**\n * Dehydrates an Arrow vector into a structured-cloneable payload.\n * @param vector Arrow vector to dehydrate.\n * @returns Structured-cloneable vector payload.\n */\nfunction dehydrateArrowVector<T extends arrow.DataType>(\n vector: arrow.Vector<T>\n): DehydratedArrowVector<T> {\n return {data: vector.data.map(data => dehydrateArrowData(data))};\n}\n\n/**\n * Hydrates an Arrow data payload into a real Arrow data node.\n * @param data Structured-cloneable data payload.\n * @returns Hydrated Arrow data node.\n */\nfunction hydrateArrowData<T extends arrow.DataType>(data: DehydratedArrowData<T>): arrow.Data<T> {\n const children = data.children.map(childData => hydrateArrowData(childData));\n const dictionary = data.dictionary ? hydrateArrowVector(data.dictionary) : undefined;\n return new arrow.Data(\n deserializeArrowType(data.type) as T,\n data.offset,\n data.length,\n data.nullCount,\n data.buffers,\n children,\n dictionary\n );\n}\n\n/**\n * Hydrates an Arrow vector payload into a real Arrow vector.\n * @param vector Structured-cloneable vector payload.\n * @returns Hydrated Arrow vector.\n */\nfunction hydrateArrowVector<T extends arrow.DataType>(\n vector: DehydratedArrowVector<T>\n): arrow.Vector<T> {\n return new arrow.Vector(vector.data.map(data => hydrateArrowData(data)));\n}\n\n/**\n * Tests whether a value is a serialized Arrow table payload.\n * @param value Value to test.\n * @returns True when the value is a SerializedArrowTableIPC.\n */\nfunction isSerializedArrowTableIPC(value: unknown): value is SerializedArrowTableIPC {\n return Boolean(\n value &&\n typeof value === 'object' &&\n (value as SerializedArrowTableIPC).shape === 'arrow-table' &&\n (value as SerializedArrowTableIPC).transport === 'arrow-ipc'\n );\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/** Transfer-safe Apache Arrow table serialization and buffer ownership helpers. */\nexport * from './lib/arrow/arrow-table-transport';\nexport * from './lib/arrow/split-arrow-buffers';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Format} from '@loaders.gl/core/loader-utils';\n\n/**\n * Draco3D compressed geometries\n */\nexport const DracoFormat = {\n name: 'Draco',\n id: 'draco',\n module: 'scene',\n encoding: 'binary',\n format: 'draco',\n extensions: ['drc'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['DRACO']\n} as const satisfies Format;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {StrictLoaderOptions} from '@loaders.gl/core/loader-utils';\nimport type {DracoParseOptions} from './lib/draco-parser';\nimport type {DracoDecoderProfile} from './lib/draco-module-loader';\n\n/** Draco decoder backend selected by the metadata loader. */\nexport type DracoDecoderBackend = 'wasm' | 'javascript' | 'draco3d';\n\n/** Options for the Draco loader. */\nexport type DracoLoaderOptions = StrictLoaderOptions & {\n draco?: DracoParseOptions & {\n /** Decoder backend. Defaults to WASM when available and JavaScript otherwise. */\n backend?: DracoDecoderBackend | 'js';\n /** Selects mesh output or Apache Arrow output. */\n shape?: 'mesh' | 'arrow-table';\n /** Selects the full decoder or the smaller glTF-compatible decoder build. */\n decoderProfile?: DracoDecoderProfile;\n /** Override the URL to the worker bundle (by default loads from unpkg.com) */\n workerUrl?: string;\n };\n};\n\n/** Default option bag for the Draco loader. */\nexport const DRACO_LOADER_DEFAULT_OPTIONS = {\n backend: typeof WebAssembly === 'object' ? 'wasm' : 'javascript',\n extraAttributes: {},\n attributeNameEntry: undefined,\n shape: 'arrow-table',\n decoderProfile: 'full'\n} as const;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LoaderWithParser, LoaderContext} from '@loaders.gl/core/loader-utils';\nimport {extractLoadLibraryOptions} from '@loaders.gl/core/worker-utils';\nimport type {ArrowTable} from '@loaders.gl/core/schema';\nimport type {DracoMesh} from './lib/draco-types';\nimport {loadDracoDecoderModule} from './lib/draco-module-loader';\nimport {parseDraco} from './lib/parse-draco';\nimport {DracoLoader as DracoLoaderMetadata} from './draco-loader-types';\nimport type {DracoLoaderOptions} from './draco-loader-options';\n\nconst {preload: _DracoLoaderPreload, ...DracoLoaderMetadataWithoutPreload} = DracoLoaderMetadata;\n\n/** Parser-bearing Draco loader backed by the WASM decoder. */\nexport const DracoWASMLoaderWithParser = {\n ...DracoLoaderMetadataWithoutPreload,\n parse: async (arrayBuffer: ArrayBuffer, options?: DracoLoaderOptions, context?: LoaderContext) =>\n await parseDraco(\n arrayBuffer,\n options,\n async () =>\n await loadDracoDecoderModule(\n extractLoadLibraryOptions(options),\n 'wasm',\n options?.draco?.decoderProfile\n ),\n context\n )\n} as const satisfies LoaderWithParser<DracoMesh | ArrowTable, never, DracoLoaderOptions>;\n", "// SPDX-License-Identifier: MIT\nexport * from './draco/draco-wasm-loader-with-parser';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LoaderWithParser, LoaderContext} from '@loaders.gl/core/loader-utils';\nimport {extractLoadLibraryOptions} from '@loaders.gl/core/worker-utils';\nimport type {ArrowTable} from '@loaders.gl/core/schema';\nimport type {DracoMesh} from './lib/draco-types';\nimport {loadDracoDecoderModule} from './lib/draco-module-loader';\nimport {parseDraco} from './lib/parse-draco';\nimport {DracoLoader as DracoLoaderMetadata} from './draco-loader-types';\nimport type {DracoLoaderOptions} from './draco-loader-options';\n\nconst {preload: _DracoLoaderPreload, ...DracoLoaderMetadataWithoutPreload} = DracoLoaderMetadata;\n\n/** Parser-bearing Draco loader backed by the JavaScript fallback decoder. */\nexport const DracoJavaScriptLoaderWithParser = {\n ...DracoLoaderMetadataWithoutPreload,\n parse: async (arrayBuffer: ArrayBuffer, options?: DracoLoaderOptions, context?: LoaderContext) =>\n await parseDraco(\n arrayBuffer,\n options,\n async () => await loadDracoDecoderModule(extractLoadLibraryOptions(options), 'js'),\n context\n )\n} as const satisfies LoaderWithParser<DracoMesh | ArrowTable, never, DracoLoaderOptions>;\n", "// SPDX-License-Identifier: MIT\nexport * from './draco/draco-javascript-loader-with-parser';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LoaderWithParser, LoaderContext} from '@loaders.gl/core/loader-utils';\nimport type {ArrowTable} from '@loaders.gl/core/schema';\nimport type {DracoMesh} from './lib/draco-types';\nimport {loadDracoDecoderModuleFromDraco3D} from './lib/draco-module-loader';\nimport {parseDraco} from './lib/parse-draco';\nimport {DracoLoader as DracoLoaderMetadata} from './draco-loader-types';\nimport type {DracoLoaderOptions} from './draco-loader-options';\n\nconst {preload: _DracoLoaderPreload, ...DracoLoaderMetadataWithoutPreload} = DracoLoaderMetadata;\n\n/** Parser-bearing Draco loader backed by an injected `draco3d` package. */\nexport const Draco3DLoaderWithParser = {\n ...DracoLoaderMetadataWithoutPreload,\n parse: async (arrayBuffer: ArrayBuffer, options?: DracoLoaderOptions, context?: LoaderContext) =>\n await parseDraco(\n arrayBuffer,\n options,\n async () => await loadDracoDecoderModuleFromDraco3D(getDraco3DModule(options)),\n context\n )\n} as const satisfies LoaderWithParser<DracoMesh | ArrowTable, never, DracoLoaderOptions>;\n\n/** Extracts the injected `draco3d` package from loader options. */\nfunction getDraco3DModule(options?: DracoLoaderOptions): unknown {\n const draco3DModule = options?.modules?.draco3d;\n if (!draco3DModule) {\n throw new Error('DracoLoader: backend \"draco3d\" requires options.modules.draco3d');\n }\n return draco3DModule;\n}\n", "// SPDX-License-Identifier: MIT\nexport * from './draco/draco3d-loader-with-parser';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser} from '@loaders.gl/core/loader-utils';\nimport type {ArrowTable} from '@loaders.gl/core/schema';\nimport type {DracoMesh} from './lib/draco-types';\nimport {\n deserializeArrowWorkerResult,\n serializeArrowWorkerResult\n} from '@loaders.gl/core/schema-utils/arrow-transport';\nimport {VERSION} from './lib/utils/version';\nimport {DracoFormat} from './draco-format';\nimport {\n DRACO_LOADER_DEFAULT_OPTIONS,\n type DracoDecoderBackend,\n type DracoLoaderOptions\n} from './draco-loader-options';\n\nexport type {DracoLoaderOptions} from './draco-loader-options';\n\n/** Preloads the parser-bearing Draco loader implementation. */\nasync function preload(\n _url: string,\n options?: Record<string, unknown>\n): Promise<LoaderWithParser<DracoMesh | ArrowTable, never, DracoLoaderOptions>> {\n const dracoLoaderOptions = options as DracoLoaderOptions | undefined;\n switch (getDracoBackend(dracoLoaderOptions)) {\n case 'wasm': {\n const {DracoWASMLoaderWithParser} = await import('@loaders.gl/scene/draco-wasm-loader');\n return DracoWASMLoaderWithParser;\n }\n\n case 'javascript': {\n const {DracoJavaScriptLoaderWithParser} = await import(\n '@loaders.gl/scene/draco-javascript-loader'\n );\n return DracoJavaScriptLoaderWithParser;\n }\n\n case 'draco3d': {\n const {Draco3DLoaderWithParser} = await import('@loaders.gl/scene/draco3d-loader');\n return Draco3DLoaderWithParser;\n }\n\n default:\n throw new Error(`DracoLoader: unsupported backend \"${dracoLoaderOptions?.draco?.backend}\"`);\n }\n}\n\n/** Metadata-only worker loader for Draco3D compressed geometries. */\nexport const DracoLoader = {\n dataType: null as unknown as DracoMesh | ArrowTable,\n batchType: null as never,\n ...DracoFormat,\n // shapes: ['mesh'],\n version: VERSION,\n worker: true,\n /** Node test workers live with the Draco implementation. */\n workerSourceNode: 'draco/workers/draco-worker-node.ts',\n serializeWorkerResult: serializeArrowWorkerResult,\n deserializeWorkerResult: deserializeArrowWorkerResult,\n options: {\n draco: DRACO_LOADER_DEFAULT_OPTIONS\n },\n preload\n} as const satisfies Loader<DracoMesh | ArrowTable, never, DracoLoaderOptions>;\n\n/** @deprecated Use DracoLoader. */\nexport const DracoWorkerLoader = DracoLoader;\n\n/** Resolves the Draco decoder backend from loader options. */\nfunction getDracoBackend(options?: DracoLoaderOptions): DracoDecoderBackend {\n if (options?.draco?.backend) {\n return options.draco.backend === 'js' ? 'javascript' : options.draco.backend;\n }\n return DracoLoader.options.draco.backend;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable no-restricted-globals */\nexport const isBrowser: boolean =\n // @ts-ignore process.browser\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n", "// SPDX-License-Identifier: Unlicense\n\n/* eslint-disable */\n// Copied from https://github.com/inexorabletash/text-encoding/blob/b4e5bc26e26e51f56e3daa9f13138c79f49d3c34/lib/encoding-indexes.js\n// License: Public domain https://github.com/inexorabletash/text-encoding/blob/b4e5bc26e26e51f56e3daa9f13138c79f49d3c34/LICENSE.md\n\n// biome-ignore format: preserve intentional fixture layout\nexport default {\n \"ibm866\":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1025,1105,1028,1108,1031,1111,1038,1118,176,8729,183,8730,8470,164,9632,160],\n \"iso-8859-2\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,728,321,164,317,346,167,168,352,350,356,377,173,381,379,176,261,731,322,180,318,347,711,184,353,351,357,378,733,382,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],\n \"iso-8859-3\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,294,728,163,164,null,292,167,168,304,350,286,308,173,null,379,176,295,178,179,180,181,293,183,184,305,351,287,309,189,null,380,192,193,194,null,196,266,264,199,200,201,202,203,204,205,206,207,null,209,210,211,212,288,214,215,284,217,218,219,220,364,348,223,224,225,226,null,228,267,265,231,232,233,234,235,236,237,238,239,null,241,242,243,244,289,246,247,285,249,250,251,252,365,349,729],\n \"iso-8859-4\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,312,342,164,296,315,167,168,352,274,290,358,173,381,175,176,261,731,343,180,297,316,711,184,353,275,291,359,330,382,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,298,272,325,332,310,212,213,214,215,216,370,218,219,220,360,362,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,299,273,326,333,311,244,245,246,247,248,371,250,251,252,361,363,729],\n \"iso-8859-5\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,173,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8470,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,167,1118,1119],\n \"iso-8859-6\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,null,null,164,null,null,null,null,null,null,null,1548,173,null,null,null,null,null,null,null,null,null,null,null,null,null,1563,null,null,null,1567,null,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,null,null,null,null,null,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,null,null,null,null,null,null,null,null,null,null,null,null,null],\n \"iso-8859-7\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8216,8217,163,8364,8367,166,167,168,169,890,171,172,173,null,8213,176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],\n \"iso-8859-8\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,162,163,164,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8215,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],\n \"iso-8859-10\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,274,290,298,296,310,167,315,272,352,358,381,173,362,330,176,261,275,291,299,297,311,183,316,273,353,359,382,8213,363,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,207,208,325,332,211,212,213,214,360,216,370,218,219,220,221,222,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,239,240,326,333,243,244,245,246,361,248,371,250,251,252,253,254,312],\n \"iso-8859-13\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8221,162,163,164,8222,166,167,216,169,342,171,172,173,174,198,176,177,178,179,8220,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,8217],\n \"iso-8859-14\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7682,7683,163,266,267,7690,167,7808,169,7810,7691,7922,173,174,376,7710,7711,288,289,7744,7745,182,7766,7809,7767,7811,7776,7923,7812,7813,7777,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,372,209,210,211,212,213,214,7786,216,217,218,219,220,221,374,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,373,241,242,243,244,245,246,7787,248,249,250,251,252,253,375,255],\n \"iso-8859-15\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,8364,165,352,167,353,169,170,171,172,173,174,175,176,177,178,179,381,181,182,183,382,185,186,187,338,339,376,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],\n \"iso-8859-16\":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,261,321,8364,8222,352,167,353,169,536,171,377,173,378,379,176,177,268,322,381,8221,182,183,382,269,537,187,338,339,376,380,192,193,194,258,196,262,198,199,200,201,202,203,204,205,206,207,272,323,210,211,212,336,214,346,368,217,218,219,220,280,538,223,224,225,226,259,228,263,230,231,232,233,234,235,236,237,238,239,273,324,242,243,244,337,246,347,369,249,250,251,252,281,539,255],\n \"koi8-r\":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,1025,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],\n \"koi8-u\":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,1108,9556,1110,1111,9559,9560,9561,9562,9563,1169,1118,9566,9567,9568,9569,1025,1028,9571,1030,1031,9574,9575,9576,9577,9578,1168,1038,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],\n \"macintosh\":[196,197,199,201,209,214,220,225,224,226,228,227,229,231,233,232,234,235,237,236,238,239,241,243,242,244,246,245,250,249,251,252,8224,176,162,163,167,8226,182,223,174,169,8482,180,168,8800,198,216,8734,177,8804,8805,165,181,8706,8721,8719,960,8747,170,186,937,230,248,191,161,172,8730,402,8776,8710,171,187,8230,160,192,195,213,338,339,8211,8212,8220,8221,8216,8217,247,9674,255,376,8260,8364,8249,8250,64257,64258,8225,183,8218,8222,8240,194,202,193,203,200,205,206,207,204,211,212,63743,210,218,219,217,305,710,732,175,728,729,730,184,733,731,711],\n \"windows-874\":[8364,129,130,131,132,8230,134,135,136,137,138,139,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,153,154,155,156,157,158,159,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,null,null,null,null,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,null,null,null,null],\n \"windows-1250\":[8364,129,8218,131,8222,8230,8224,8225,136,8240,352,8249,346,356,381,377,144,8216,8217,8220,8221,8226,8211,8212,152,8482,353,8250,347,357,382,378,160,711,728,321,164,260,166,167,168,169,350,171,172,173,174,379,176,177,731,322,180,181,182,183,184,261,351,187,317,733,318,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],\n \"windows-1251\":[1026,1027,8218,1107,8222,8230,8224,8225,8364,8240,1033,8249,1034,1036,1035,1039,1106,8216,8217,8220,8221,8226,8211,8212,152,8482,1113,8250,1114,1116,1115,1119,160,1038,1118,1032,164,1168,166,167,1025,169,1028,171,172,173,174,1031,176,177,1030,1110,1169,181,182,183,1105,8470,1108,187,1112,1029,1109,1111,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103],\n \"windows-1252\":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],\n \"windows-1253\":[8364,129,8218,402,8222,8230,8224,8225,136,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,157,158,159,160,901,902,163,164,165,166,167,168,169,null,171,172,173,174,8213,176,177,178,179,900,181,182,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],\n \"windows-1254\":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,286,209,210,211,212,213,214,215,216,217,218,219,220,304,350,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,287,241,242,243,244,245,246,247,248,249,250,251,252,305,351,255],\n \"windows-1255\":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,156,157,158,159,160,161,162,163,8362,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,191,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1520,1521,1522,1523,1524,null,null,null,null,null,null,null,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],\n \"windows-1256\":[8364,1662,8218,402,8222,8230,8224,8225,710,8240,1657,8249,338,1670,1688,1672,1711,8216,8217,8220,8221,8226,8211,8212,1705,8482,1681,8250,339,8204,8205,1722,160,1548,162,163,164,165,166,167,168,169,1726,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,1563,187,188,189,190,1567,1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,215,1591,1592,1593,1594,1600,1601,1602,1603,224,1604,226,1605,1606,1607,1608,231,232,233,234,235,1609,1610,238,239,1611,1612,1613,1614,244,1615,1616,247,1617,249,1618,251,252,8206,8207,1746],\n \"windows-1257\":[8364,129,8218,131,8222,8230,8224,8225,136,8240,138,8249,140,168,711,184,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,175,731,159,160,null,162,163,164,null,166,167,216,169,342,171,172,173,174,198,176,177,178,179,180,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,729],\n \"windows-1258\":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,258,196,197,198,199,200,201,202,203,768,205,206,207,272,209,777,211,212,416,214,215,216,217,218,219,220,431,771,223,224,225,226,259,228,229,230,231,232,233,234,235,769,237,238,239,273,241,803,243,244,417,246,247,248,249,250,251,252,432,8363,255],\n \"x-mac-cyrillic\":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,8224,176,1168,163,167,8226,182,1030,174,169,8482,1026,1106,8800,1027,1107,8734,177,8804,8805,1110,181,1169,1032,1028,1108,1031,1111,1033,1113,1034,1114,1112,1029,172,8730,402,8776,8710,171,187,8230,160,1035,1115,1036,1116,1109,8211,8212,8220,8221,8216,8217,247,8222,1038,1118,1039,1119,8470,1025,1105,1103,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,8364]\n};\n", "// SPDX-License-Identifier: Unlicense\n\n// @ts-nocheck\n/* eslint-disable */\n\n// Copied from https://github.com/inexorabletash/text-encoding/blob/b4e5bc26e26e51f56e3daa9f13138c79f49d3c34/lib/encoding.js\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\nimport indexes from './encoding-indexes';\n// Note: Aaian character indices add half a megabyte to bundle. Ignore, since we really only want the built-in UTF8...\n// import indexes from './encoding-indexes-asian.js';\nglobalThis['encoding-indexes'] = indexes || {};\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {!Array.<*>} array The array to check.\n * @param {*} item The item to look for in the array.\n * @return {boolean} True if the item appears in the array.\n */\nfunction includes(array, item) {\n return array.indexOf(item) !== -1;\n}\n\nvar floor = Math.floor;\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.<number>} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xd800 || c > 0xdfff) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 \u2264 c \u2264 0xDFFF\n else if (0xdc00 <= c && c <= 0xdfff) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xfffd);\n }\n\n // 0xD800 \u2264 c \u2264 0xDBFF\n else if (0xd800 <= c && c <= 0xdbff) {\n // 1. If i = n\u22121, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xfffd);\n }\n // 2. Otherwise, i < n\u22121:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = s.charCodeAt(i + 1);\n\n // 2. If 0xDC00 \u2264 d \u2264 0xDFFF, then:\n if (0xdc00 <= d && d <= 0xdfff) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3ff;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3ff;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xfffd);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.<number>} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xffff) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xd800, (cp & 0x3ff) + 0xdc00);\n }\n }\n return s;\n}\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 4. Terminology\n//\n\n/**\n * An ASCII byte is a byte in the range 0x00 to 0x7F, inclusive.\n * @param {number} a The number to test.\n * @return {boolean} True if a is in the range 0x00 to 0x7F, inclusive.\n */\nfunction isASCIIByte(a) {\n return 0x00 <= a && a <= 0x7f;\n}\n\n/**\n * An ASCII code point is a code point in the range U+0000 to\n * U+007F, inclusive.\n */\nvar isASCIICodePoint = isASCIIByte;\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.<number>|Uint8Array)} tokens Array of tokens that provide\n * the stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.<number>} */\n this.tokens = [].slice.call(tokens);\n // Reversed as push/pop is more efficient than shift/unshift.\n this.tokens.reverse();\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function () {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function () {\n if (!this.tokens.length) return end_of_stream;\n return this.tokens.pop();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.<number>)} token The token(s) to prepend to the\n * stream.\n */\n prepend: function (token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.<number>}*/ token;\n while (tokens.length) this.tokens.push(tokens.pop());\n } else {\n this.tokens.push(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.<number>)} token The tokens(s) to push to the\n * stream.\n */\n push: function (token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.<number>}*/ token;\n while (tokens.length) this.tokens.unshift(tokens.shift());\n } else {\n this.tokens.unshift(token);\n }\n }\n};\n\n//\n// 5. Encodings\n//\n\n// 5.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal) throw TypeError('Decoder error');\n return opt_code_point || 0xfffd;\n}\n\n/**\n * @param {number} code_point The code point that could not be encoded.\n * @return {number} Always throws, no value is actually returned.\n */\nfunction encoderError(code_point) {\n throw TypeError('The code point ' + code_point + ' could not be encoded.');\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function (stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit, or |finished|.\n */\n handler: function (stream, code_point) {}\n};\n\n// 5.2 Names and labels\n\n// TODO: Define @typedef for Encoding: {name:string,labels:Array.<string>}\n// https://github.com/google/closure-compiler/issues/247\n\n/**\n * @param {string} label The encoding label.\n * @return {?{name:string,labels:Array.<string>}}\n */\nfunction getEncoding(label) {\n // 1. Remove any leading and trailing ASCII whitespace from label.\n label = String(label).trim().toLowerCase();\n\n // 2. If label is an ASCII case-insensitive match for any of the\n // labels listed in the table below, return the corresponding\n // encoding, and failure otherwise.\n if (Object.prototype.hasOwnProperty.call(label_to_encoding, label)) {\n return label_to_encoding[label];\n }\n return null;\n}\n\n/**\n * Encodings table: https://encoding.spec.whatwg.org/encodings.json\n * @const\n * @type {!Array.<{\n * heading: string,\n * encodings: Array.<{name:string,labels:Array.<string>}>\n * }>}\n */\nvar encodings = [\n {\n encodings: [\n {\n labels: ['unicode-1-1-utf-8', 'utf-8', 'utf8'],\n name: 'UTF-8'\n }\n ],\n heading: 'The Encoding'\n },\n {\n encodings: [\n {\n labels: ['866', 'cp866', 'csibm866', 'ibm866'],\n name: 'IBM866'\n },\n {\n labels: [\n 'csisolatin2',\n 'iso-8859-2',\n 'iso-ir-101',\n 'iso8859-2',\n 'iso88592',\n 'iso_8859-2',\n 'iso_8859-2:1987',\n 'l2',\n 'latin2'\n ],\n name: 'ISO-8859-2'\n },\n {\n labels: [\n 'csisolatin3',\n 'iso-8859-3',\n 'iso-ir-109',\n 'iso8859-3',\n 'iso88593',\n 'iso_8859-3',\n 'iso_8859-3:1988',\n 'l3',\n 'latin3'\n ],\n name: 'ISO-8859-3'\n },\n {\n labels: [\n 'csisolatin4',\n 'iso-8859-4',\n 'iso-ir-110',\n 'iso8859-4',\n 'iso88594',\n 'iso_8859-4',\n 'iso_8859-4:1988',\n 'l4',\n 'latin4'\n ],\n name: 'ISO-8859-4'\n },\n {\n labels: [\n 'csisolatincyrillic',\n 'cyrillic',\n 'iso-8859-5',\n 'iso-ir-144',\n 'iso8859-5',\n 'iso88595',\n 'iso_8859-5',\n 'iso_8859-5:1988'\n ],\n name: 'ISO-8859-5'\n },\n {\n labels: [\n 'arabic',\n 'asmo-708',\n 'csiso88596e',\n 'csiso88596i',\n 'csisolatinarabic',\n 'ecma-114',\n 'iso-8859-6',\n 'iso-8859-6-e',\n 'iso-8859-6-i',\n 'iso-ir-127',\n 'iso8859-6',\n 'iso88596',\n 'iso_8859-6',\n 'iso_8859-6:1987'\n ],\n name: 'ISO-8859-6'\n },\n {\n labels: [\n 'csisolatingreek',\n 'ecma-118',\n 'elot_928',\n 'greek',\n 'greek8',\n 'iso-8859-7',\n 'iso-ir-126',\n 'iso8859-7',\n 'iso88597',\n 'iso_8859-7',\n 'iso_8859-7:1987',\n 'sun_eu_greek'\n ],\n name: 'ISO-8859-7'\n },\n {\n labels: [\n 'csiso88598e',\n 'csisolatinhebrew',\n 'hebrew',\n 'iso-8859-8',\n 'iso-8859-8-e',\n 'iso-ir-138',\n 'iso8859-8',\n 'iso88598',\n 'iso_8859-8',\n 'iso_8859-8:1988',\n 'visual'\n ],\n name: 'ISO-8859-8'\n },\n {\n labels: ['csiso88598i', 'iso-8859-8-i', 'logical'],\n name: 'ISO-8859-8-I'\n },\n {\n labels: [\n 'csisolatin6',\n 'iso-8859-10',\n 'iso-ir-157',\n 'iso8859-10',\n 'iso885910',\n 'l6',\n 'latin6'\n ],\n name: 'ISO-8859-10'\n },\n {\n labels: ['iso-8859-13', 'iso8859-13', 'iso885913'],\n name: 'ISO-8859-13'\n },\n {\n labels: ['iso-8859-14', 'iso8859-14', 'iso885914'],\n name: 'ISO-8859-14'\n },\n {\n labels: ['csisolatin9', 'iso-8859-15', 'iso8859-15', 'iso885915', 'iso_8859-15', 'l9'],\n name: 'ISO-8859-15'\n },\n {\n labels: ['iso-8859-16'],\n name: 'ISO-8859-16'\n },\n {\n labels: ['cskoi8r', 'koi', 'koi8', 'koi8-r', 'koi8_r'],\n name: 'KOI8-R'\n },\n {\n labels: ['koi8-ru', 'koi8-u'],\n name: 'KOI8-U'\n },\n {\n labels: ['csmacintosh', 'mac', 'macintosh', 'x-mac-roman'],\n name: 'macintosh'\n },\n {\n labels: ['dos-874', 'iso-8859-11', 'iso8859-11', 'iso885911', 'tis-620', 'windows-874'],\n name: 'windows-874'\n },\n {\n labels: ['cp1250', 'windows-1250', 'x-cp1250'],\n name: 'windows-1250'\n },\n {\n labels: ['cp1251', 'windows-1251', 'x-cp1251'],\n name: 'windows-1251'\n },\n {\n labels: [\n 'ansi_x3.4-1968',\n 'ascii',\n 'cp1252',\n 'cp819',\n 'csisolatin1',\n 'ibm819',\n 'iso-8859-1',\n 'iso-ir-100',\n 'iso8859-1',\n 'iso88591',\n 'iso_8859-1',\n 'iso_8859-1:1987',\n 'l1',\n 'latin1',\n 'us-ascii',\n 'windows-1252',\n 'x-cp1252'\n ],\n name: 'windows-1252'\n },\n {\n labels: ['cp1253', 'windows-1253', 'x-cp1253'],\n name: 'windows-1253'\n },\n {\n labels: [\n 'cp1254',\n 'csisolatin5',\n 'iso-8859-9',\n 'iso-ir-148',\n 'iso8859-9',\n 'iso88599',\n 'iso_8859-9',\n 'iso_8859-9:1989',\n 'l5',\n 'latin5',\n 'windows-1254',\n 'x-cp1254'\n ],\n name: 'windows-1254'\n },\n {\n labels: ['cp1255', 'windows-1255', 'x-cp1255'],\n name: 'windows-1255'\n },\n {\n labels: ['cp1256', 'windows-1256', 'x-cp1256'],\n name: 'windows-1256'\n },\n {\n labels: ['cp1257', 'windows-1257', 'x-cp1257'],\n name: 'windows-1257'\n },\n {\n labels: ['cp1258', 'windows-1258', 'x-cp1258'],\n name: 'windows-1258'\n },\n {\n labels: ['x-mac-cyrillic', 'x-mac-ukrainian'],\n name: 'x-mac-cyrillic'\n }\n ],\n heading: 'Legacy single-byte encodings'\n },\n {\n encodings: [\n {\n labels: [\n 'chinese',\n 'csgb2312',\n 'csiso58gb231280',\n 'gb2312',\n 'gb_2312',\n 'gb_2312-80',\n 'gbk',\n 'iso-ir-58',\n 'x-gbk'\n ],\n name: 'GBK'\n },\n {\n labels: ['gb18030'],\n name: 'gb18030'\n }\n ],\n heading: 'Legacy multi-byte Chinese (simplified) encodings'\n },\n {\n encodings: [\n {\n labels: ['big5', 'big5-hkscs', 'cn-big5', 'csbig5', 'x-x-big5'],\n name: 'Big5'\n }\n ],\n heading: 'Legacy multi-byte Chinese (traditional) encodings'\n },\n {\n encodings: [\n {\n labels: ['cseucpkdfmtjapanese', 'euc-jp', 'x-euc-jp'],\n name: 'EUC-JP'\n },\n {\n labels: ['csiso2022jp', 'iso-2022-jp'],\n name: 'ISO-2022-JP'\n },\n {\n labels: [\n 'csshiftjis',\n 'ms932',\n 'ms_kanji',\n 'shift-jis',\n 'shift_jis',\n 'sjis',\n 'windows-31j',\n 'x-sjis'\n ],\n name: 'Shift_JIS'\n }\n ],\n heading: 'Legacy multi-byte Japanese encodings'\n },\n {\n encodings: [\n {\n labels: [\n 'cseuckr',\n 'csksc56011987',\n 'euc-kr',\n 'iso-ir-149',\n 'korean',\n 'ks_c_5601-1987',\n 'ks_c_5601-1989',\n 'ksc5601',\n 'ksc_5601',\n 'windows-949'\n ],\n name: 'EUC-KR'\n }\n ],\n heading: 'Legacy multi-byte Korean encodings'\n },\n {\n encodings: [\n {\n labels: ['csiso2022kr', 'hz-gb-2312', 'iso-2022-cn', 'iso-2022-cn-ext', 'iso-2022-kr'],\n name: 'replacement'\n },\n {\n labels: ['utf-16be'],\n name: 'UTF-16BE'\n },\n {\n labels: ['utf-16', 'utf-16le'],\n name: 'UTF-16LE'\n },\n {\n labels: ['x-user-defined'],\n name: 'x-user-defined'\n }\n ],\n heading: 'Legacy miscellaneous encodings'\n }\n];\n\n// Label to encoding registry.\n/** @type {Object.<string,{name:string,labels:Array.<string>}>} */\nvar label_to_encoding = {};\nencodings.forEach(function (category) {\n category.encodings.forEach(function (encoding) {\n encoding.labels.forEach(function (label) {\n label_to_encoding[label] = encoding;\n });\n });\n});\n\n// Registry of of encoder/decoder factories, by encoding name.\n/** @type {Object.<string, function({fatal:boolean}): Encoder>} */\nvar encoders = {};\n/** @type {Object.<string, function({fatal:boolean}): Decoder>} */\nvar decoders = {};\n\n//\n// 6. Indexes\n//\n\n/**\n * @param {number} pointer The |pointer| to search for.\n * @param {(!Array.<?number>|undefined)} index The |index| to search within.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in |index|.\n */\nfunction indexCodePointFor(pointer, index) {\n if (!index) return null;\n return index[pointer] || null;\n}\n\n/**\n * @param {number} code_point The |code point| to search for.\n * @param {!Array.<?number>} index The |index| to search within.\n * @return {?number} The first pointer corresponding to |code point| in\n * |index|, or null if |code point| is not in |index|.\n */\nfunction indexPointerFor(code_point, index) {\n var pointer = index.indexOf(code_point);\n return pointer === -1 ? null : pointer;\n}\n\n/**\n * @param {string} name Name of the index.\n * @return {(!Array.<number>|!Array.<Array.<number>>)}\n * */\nfunction index(name) {\n if (!('encoding-indexes' in globalThis)) {\n throw Error('Indexes missing.' + ' Did you forget to include encoding-indexes.js first?');\n }\n return globalThis['encoding-indexes'][name];\n}\n\n/**\n * @param {number} pointer The |pointer| to search for in the gb18030 index.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in the gb18030 index.\n */\nfunction indexGB18030RangesCodePointFor(pointer) {\n // 1. If pointer is greater than 39419 and less than 189000, or\n // pointer is greater than 1237575, return null.\n if ((pointer > 39419 && pointer < 189000) || pointer > 1237575) return null;\n\n // 2. If pointer is 7457, return code point U+E7C7.\n if (pointer === 7457) return 0xe7c7;\n\n // 3. Let offset be the last pointer in index gb18030 ranges that\n // is equal to or less than pointer and let code point offset be\n // its corresponding code point.\n var offset = 0;\n var code_point_offset = 0;\n var idx = index('gb18030-ranges');\n var i;\n for (i = 0; i < idx.length; ++i) {\n /** @type {!Array.<number>} */\n var entry = idx[i];\n if (entry[0] <= pointer) {\n offset = entry[0];\n code_point_offset = entry[1];\n } else {\n break;\n }\n }\n\n // 4. Return a code point whose value is code point offset +\n // pointer \u2212 offset.\n return code_point_offset + pointer - offset;\n}\n\n/**\n * @param {number} code_point The |code point| to locate in the gb18030 index.\n * @return {number} The first pointer corresponding to |code point| in the\n * gb18030 index.\n */\nfunction indexGB18030RangesPointerFor(code_point) {\n // 1. If code point is U+E7C7, return pointer 7457.\n if (code_point === 0xe7c7) return 7457;\n\n // 2. Let offset be the last code point in index gb18030 ranges\n // that is equal to or less than code point and let pointer offset\n // be its corresponding pointer.\n var offset = 0;\n var pointer_offset = 0;\n var idx = index('gb18030-ranges');\n var i;\n for (i = 0; i < idx.length; ++i) {\n /** @type {!Array.<number>} */\n var entry = idx[i];\n if (entry[1] <= code_point) {\n offset = entry[1];\n pointer_offset = entry[0];\n } else {\n break;\n }\n }\n\n // 3. Return a pointer whose value is pointer offset + code point\n // \u2212 offset.\n return pointer_offset + code_point - offset;\n}\n\n/**\n * @param {number} code_point The |code_point| to search for in the Shift_JIS\n * index.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in the Shift_JIS index.\n */\nfunction indexShiftJISPointerFor(code_point) {\n // 1. Let index be index jis0208 excluding all entries whose\n // pointer is in the range 8272 to 8835, inclusive.\n shift_jis_index =\n shift_jis_index ||\n index('jis0208').map(function (code_point, pointer) {\n return inRange(pointer, 8272, 8835) ? null : code_point;\n });\n var index_ = shift_jis_index;\n\n // 2. Return the index pointer for code point in index.\n return index_.indexOf(code_point);\n}\nvar shift_jis_index;\n\n/**\n * @param {number} code_point The |code_point| to search for in the big5\n * index.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in the big5 index.\n */\nfunction indexBig5PointerFor(code_point) {\n // 1. Let index be index Big5 excluding all entries whose pointer\n big5_index_no_hkscs =\n big5_index_no_hkscs ||\n index('big5').map(function (code_point, pointer) {\n return pointer < (0xa1 - 0x81) * 157 ? null : code_point;\n });\n var index_ = big5_index_no_hkscs;\n\n // 2. If code point is U+2550, U+255E, U+2561, U+256A, U+5341, or\n // U+5345, return the last pointer corresponding to code point in\n // index.\n if (\n code_point === 0x2550 ||\n code_point === 0x255e ||\n code_point === 0x2561 ||\n code_point === 0x256a ||\n code_point === 0x5341 ||\n code_point === 0x5345\n ) {\n return index_.lastIndexOf(code_point);\n }\n\n // 3. Return the index pointer for code point in index.\n return indexPointerFor(code_point, index_);\n}\nvar big5_index_no_hkscs;\n\n//\n// 8. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 8.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} label The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(label, options) {\n // Web IDL conventions\n if (!(this instanceof TextDecoder))\n throw TypeError(\"Called as a function. Did you forget 'new'?\");\n label = label !== undefined ? String(label) : DEFAULT_ENCODING;\n options = ToDictionary(options);\n\n // A TextDecoder object has an associated encoding, decoder,\n // stream, ignore BOM flag (initially unset), BOM seen flag\n // (initially unset), error mode (initially replacement), and do\n // not flush flag (initially unset).\n\n /** @private */\n this._encoding = null;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._ignoreBOM = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {string} */\n this._error_mode = 'replacement';\n /** @private @type {boolean} */\n this._do_not_flush = false;\n\n // 1. Let encoding be the result of getting an encoding from\n // label.\n var encoding = getEncoding(label);\n\n // 2. If encoding is failure or replacement, throw a RangeError.\n if (encoding === null || encoding.name === 'replacement')\n throw RangeError('Unknown encoding: ' + label);\n if (!decoders[encoding.name]) {\n throw Error('Decoder not present.' + ' Did you forget to include encoding-indexes.js first?');\n }\n\n // 3. Let dec be a new TextDecoder object.\n var dec = this;\n\n // 4. Set dec's encoding to encoding.\n dec._encoding = encoding;\n\n // 5. If options's fatal member is true, set dec's error mode to\n // fatal.\n if (Boolean(options['fatal'])) dec._error_mode = 'fatal';\n\n // 6. If options's ignoreBOM member is true, set dec's ignore BOM\n // flag.\n if (Boolean(options['ignoreBOM'])) dec._ignoreBOM = true;\n\n // For pre-ES5 runtimes:\n if (!Object.defineProperty) {\n this.encoding = dec._encoding.name.toLowerCase();\n this.fatal = dec._error_mode === 'fatal';\n this.ignoreBOM = dec._ignoreBOM;\n }\n\n // 7. Return dec.\n return dec;\n}\n\nif (Object.defineProperty) {\n // The encoding attribute's getter must return encoding's name.\n Object.defineProperty(TextDecoder.prototype, 'encoding', {\n /** @this {TextDecoder} */\n get: function () {\n return this._encoding.name.toLowerCase();\n }\n });\n\n // The fatal attribute's getter must return true if error mode\n // is fatal, and false otherwise.\n Object.defineProperty(TextDecoder.prototype, 'fatal', {\n /** @this {TextDecoder} */\n get: function () {\n return this._error_mode === 'fatal';\n }\n });\n\n // The ignoreBOM attribute's getter must return true if ignore\n // BOM flag is set, and false otherwise.\n Object.defineProperty(TextDecoder.prototype, 'ignoreBOM', {\n /** @this {TextDecoder} */\n get: function () {\n return this._ignoreBOM;\n }\n });\n}\n\n/**\n * @param {BufferSource=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\nTextDecoder.prototype.decode = function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (\n typeof input === 'object' &&\n 'buffer' in input &&\n input.buffer instanceof ArrayBuffer\n ) {\n bytes = new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n // 1. If the do not flush flag is unset, set decoder to a new\n // encoding's decoder, set stream to a new stream, and unset the\n // BOM seen flag.\n if (!this._do_not_flush) {\n this._decoder = decoders[this._encoding.name]({\n fatal: this._error_mode === 'fatal'\n });\n this._BOMseen = false;\n }\n\n // 2. If options's stream is true, set the do not flush flag, and\n // unset the do not flush flag otherwise.\n this._do_not_flush = Boolean(options['stream']);\n\n // 3. If input is given, push a copy of input to stream.\n // TODO: Align with spec algorithm - maintain stream on instance.\n var input_stream = new Stream(bytes);\n\n // 4. Let output be a new stream.\n var output = [];\n\n /** @type {?(number|!Array.<number>)} */\n var result;\n\n // 5. While true:\n while (true) {\n // 1. Let token be the result of reading from stream.\n var token = input_stream.read();\n\n // 2. If token is end-of-stream and the do not flush flag is\n // set, return output, serialized.\n // TODO: Align with spec algorithm.\n if (token === end_of_stream) break;\n\n // 3. Otherwise, run these subsubsteps:\n\n // 1. Let result be the result of processing token for decoder,\n // stream, output, and error mode.\n result = this._decoder.handler(input_stream, token);\n\n // 2. If result is finished, return output, serialized.\n if (result === finished) break;\n\n if (result !== null) {\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.<number>}*/ result);\n else output.push(result);\n }\n\n // 3. Otherwise, if result is error, throw a TypeError.\n // (Thrown in handler)\n\n // 4. Otherwise, do nothing.\n }\n // TODO: Align with spec algorithm.\n if (!this._do_not_flush) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished) break;\n if (result === null) continue;\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.<number>}*/ result);\n else output.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n // A TextDecoder object also has an associated serialize stream\n // algorithm...\n /**\n * @param {!Array.<number>} stream\n * @return {string}\n * @this {TextDecoder}\n */\n function serializeStream(stream) {\n // 1. Let token be the result of reading from stream.\n // (Done in-place on array, rather than as a stream)\n\n // 2. If encoding is UTF-8, UTF-16BE, or UTF-16LE, and ignore\n // BOM flag and BOM seen flag are unset, run these subsubsteps:\n if (\n includes(['UTF-8', 'UTF-16LE', 'UTF-16BE'], this._encoding.name) &&\n !this._ignoreBOM &&\n !this._BOMseen\n ) {\n if (stream.length > 0 && stream[0] === 0xfeff) {\n // 1. If token is U+FEFF, set BOM seen flag.\n this._BOMseen = true;\n stream.shift();\n } else if (stream.length > 0) {\n // 2. Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to stream.\n this._BOMseen = true;\n } else {\n // 3. Otherwise, if token is not end-of-stream, append token\n // to output.\n // (no-op)\n }\n }\n // 4. Otherwise, return output.\n return codePointsToString(stream);\n }\n\n return serializeStream.call(this, output);\n};\n\n// 8.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} label The label of the encoding. NONSTANDARD.\n * @param {Object=} options NONSTANDARD.\n */\nfunction TextEncoder(label, options) {\n // Web IDL conventions\n if (!(this instanceof TextEncoder))\n throw TypeError(\"Called as a function. Did you forget 'new'?\");\n options = ToDictionary(options);\n\n // A TextEncoder object has an associated encoding and encoder.\n\n /** @private */\n this._encoding = null;\n /** @private @type {?Encoder} */\n this._encoder = null;\n\n // Non-standard\n /** @private @type {boolean} */\n this._do_not_flush = false;\n /** @private @type {string} */\n this._fatal = Boolean(options['fatal']) ? 'fatal' : 'replacement';\n\n // 1. Let enc be a new TextEncoder object.\n var enc = this;\n\n // 2. Set enc's encoding to UTF-8's encoder.\n if (Boolean(options['NONSTANDARD_allowLegacyEncoding'])) {\n // NONSTANDARD behavior.\n label = label !== undefined ? String(label) : DEFAULT_ENCODING;\n var encoding = getEncoding(label);\n if (encoding === null || encoding.name === 'replacement')\n throw RangeError('Unknown encoding: ' + label);\n if (!encoders[encoding.name]) {\n throw Error('Encoder not present.' + ' Did you forget to include encoding-indexes.js first?');\n }\n enc._encoding = encoding;\n } else {\n // Standard behavior.\n enc._encoding = getEncoding('utf-8');\n\n if (label !== undefined && 'console' in globalThis) {\n }\n }\n\n // For pre-ES5 runtimes:\n if (!Object.defineProperty) this.encoding = enc._encoding.name.toLowerCase();\n\n // 3. Return enc.\n return enc;\n}\n\nif (Object.defineProperty) {\n // The encoding attribute's getter must return encoding's name.\n Object.defineProperty(TextEncoder.prototype, 'encoding', {\n /** @this {TextEncoder} */\n get: function () {\n return this._encoding.name.toLowerCase();\n }\n });\n}\n\n/**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {!Uint8Array} Encoded bytes, as a Uint8Array.\n */\nTextEncoder.prototype.encode = function encode(opt_string, options) {\n opt_string = opt_string === undefined ? '' : String(opt_string);\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful when\n // the input is a USVString so streaming is not necessary.\n if (!this._do_not_flush)\n this._encoder = encoders[this._encoding.name]({\n fatal: this._fatal === 'fatal'\n });\n this._do_not_flush = Boolean(options['stream']);\n\n // 1. Convert input to a stream.\n var input = new Stream(stringToCodePoints(opt_string));\n\n // 2. Let output be a new stream\n var output = [];\n\n /** @type {?(number|!Array.<number>)} */\n var result;\n // 3. While true, run these substeps:\n while (true) {\n // 1. Let token be the result of reading from input.\n var token = input.read();\n if (token === end_of_stream) break;\n // 2. Let result be the result of processing token for encoder,\n // input, output.\n result = this._encoder.handler(input, token);\n if (result === finished) break;\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.<number>}*/ result);\n else output.push(result);\n }\n // TODO: Align with spec algorithm.\n if (!this._do_not_flush) {\n while (true) {\n result = this._encoder.handler(input, input.read());\n if (result === finished) break;\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.<number>}*/ result);\n else output.push(result);\n }\n this._encoder = null;\n }\n // 3. If result is finished, convert output into a byte sequence,\n // and then return a Uint8Array object wrapping an ArrayBuffer\n // containing output.\n return new Uint8Array(output);\n};\n\n//\n// 9. The encoding\n//\n\n// 9.1 utf-8\n\n// 9.1.1 utf-8 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xbf;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream) return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7f)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n else if (inRange(bite, 0xc2, 0xdf)) {\n // 1. Set utf-8 bytes needed to 1.\n utf8_bytes_needed = 1;\n\n // 2. Set UTF-8 code point to byte & 0x1F.\n utf8_code_point = bite & 0x1f;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xe0, 0xef)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xe0) utf8_lower_boundary = 0xa0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xed) utf8_upper_boundary = 0x9f;\n // 3. Set utf-8 bytes needed to 2.\n utf8_bytes_needed = 2;\n // 4. Set UTF-8 code point to byte & 0xF.\n utf8_code_point = bite & 0xf;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xf0, 0xf4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xf0) utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xf4) utf8_upper_boundary = 0x8f;\n // 3. Set utf-8 bytes needed to 3.\n utf8_bytes_needed = 3;\n // 4. Set UTF-8 code point to byte & 0x7.\n utf8_code_point = bite & 0x7;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Return continue.\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, inclusive, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xbf;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xbf;\n\n // 6. Set UTF-8 code point to (UTF-8 code point << 6) | (byte &\n // 0x3F)\n utf8_code_point = (utf8_code_point << 6) | (bite & 0x3f);\n\n // 7. Increase utf-8 bytes seen by one.\n utf8_bytes_seen += 1;\n\n // 8. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed) return null;\n\n // 9. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 10. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 11. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n// 9.1.2 utf-8 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var _fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF, inclusive:\n if (inRange(code_point, 0x0080, 0x07ff)) {\n // 1 and 0xC0\n count = 1;\n offset = 0xc0;\n }\n // U+0800 to U+FFFF, inclusive:\n else if (inRange(code_point, 0x0800, 0xffff)) {\n // 2 and 0xE0\n count = 2;\n offset = 0xe0;\n }\n // U+10000 to U+10FFFF, inclusive:\n else if (inRange(code_point, 0x10000, 0x10ffff)) {\n // 3 and 0xF0\n count = 3;\n offset = 0xf0;\n }\n\n // 4. Let bytes be a byte sequence whose first byte is (code\n // point >> (6 \u00D7 count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n // 1. Set temp to code point >> (6 \u00D7 (count \u2212 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3f));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['UTF-8'] = function (options) {\n return new UTF8Encoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['UTF-8'] = function (options) {\n return new UTF8Decoder(options);\n};\n\n//\n// 10. Legacy single-byte encodings\n//\n\n// 10.1 single-byte decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {!Array.<number>} index The encoding index.\n * @param {{fatal: boolean}} options\n */\nfunction SingleByteDecoder(index, options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream, return finished.\n if (bite === end_of_stream) return finished;\n\n // 2. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 3. Let code point be the index code point for byte \u2212 0x80 in\n // index single-byte.\n var code_point = index[bite - 0x80];\n\n // 4. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 5. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n// 10.2 single-byte encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {!Array.<?number>} index The encoding index.\n * @param {{fatal: boolean}} options\n */\nfunction SingleByteEncoder(index, options) {\n var _fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Let pointer be the index pointer for code point in index\n // single-byte.\n var pointer = indexPointerFor(code_point, index);\n\n // 4. If pointer is null, return error with code point.\n if (pointer === null) encoderError(code_point);\n\n // 5. Return a byte whose value is pointer + 0x80.\n return pointer + 0x80;\n };\n}\n\n(function () {\n if (!('encoding-indexes' in globalThis)) return;\n encodings.forEach(function (category) {\n if (category.heading !== 'Legacy single-byte encodings') return;\n category.encodings.forEach(function (encoding) {\n var name = encoding.name;\n var idx = index(name.toLowerCase());\n /** @param {{fatal: boolean}} options */\n decoders[name] = function (options) {\n return new SingleByteDecoder(idx, options);\n };\n /** @param {{fatal: boolean}} options */\n encoders[name] = function (options) {\n return new SingleByteEncoder(idx, options);\n };\n });\n });\n})();\n\n//\n// 11. Legacy multi-byte Chinese (simplified) encodings\n//\n\n// 11.1 gbk\n\n// 11.1.1 gbk decoder\n// gbk's decoder is gb18030's decoder.\n/** @param {{fatal: boolean}} options */\ndecoders['GBK'] = function (options) {\n return new GB18030Decoder(options);\n};\n\n// 11.1.2 gbk encoder\n// gbk's encoder is gb18030's encoder with its gbk flag set.\n/** @param {{fatal: boolean}} options */\nencoders['GBK'] = function (options) {\n return new GB18030Encoder(options, true);\n};\n\n// 11.2 gb18030\n\n// 11.2.1 gb18030 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction GB18030Decoder(options) {\n var fatal = options.fatal;\n // gb18030's decoder has an associated gb18030 first, gb18030\n // second, and gb18030 third (all initially 0x00).\n var /** @type {number} */ gb18030_first = 0x00,\n /** @type {number} */ gb18030_second = 0x00,\n /** @type {number} */ gb18030_third = 0x00;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and gb18030 first, gb18030\n // second, and gb18030 third are 0x00, return finished.\n if (\n bite === end_of_stream &&\n gb18030_first === 0x00 &&\n gb18030_second === 0x00 &&\n gb18030_third === 0x00\n ) {\n return finished;\n }\n // 2. If byte is end-of-stream, and gb18030 first, gb18030\n // second, or gb18030 third is not 0x00, set gb18030 first,\n // gb18030 second, and gb18030 third to 0x00, and return error.\n if (\n bite === end_of_stream &&\n (gb18030_first !== 0x00 || gb18030_second !== 0x00 || gb18030_third !== 0x00)\n ) {\n gb18030_first = 0x00;\n gb18030_second = 0x00;\n gb18030_third = 0x00;\n decoderError(fatal);\n }\n var code_point;\n // 3. If gb18030 third is not 0x00, run these substeps:\n if (gb18030_third !== 0x00) {\n // 1. Let code point be null.\n code_point = null;\n // 2. If byte is in the range 0x30 to 0x39, inclusive, set\n // code point to the index gb18030 ranges code point for\n // (((gb18030 first \u2212 0x81) \u00D7 10 + gb18030 second \u2212 0x30) \u00D7\n // 126 + gb18030 third \u2212 0x81) \u00D7 10 + byte \u2212 0x30.\n if (inRange(bite, 0x30, 0x39)) {\n code_point = indexGB18030RangesCodePointFor(\n (((gb18030_first - 0x81) * 10 + gb18030_second - 0x30) * 126 + gb18030_third - 0x81) *\n 10 +\n bite -\n 0x30\n );\n }\n\n // 3. Let buffer be a byte sequence consisting of gb18030\n // second, gb18030 third, and byte, in order.\n var buffer = [gb18030_second, gb18030_third, bite];\n\n // 4. Set gb18030 first, gb18030 second, and gb18030 third to\n // 0x00.\n gb18030_first = 0x00;\n gb18030_second = 0x00;\n gb18030_third = 0x00;\n\n // 5. If code point is null, prepend buffer to stream and\n // return error.\n if (code_point === null) {\n stream.prepend(buffer);\n return decoderError(fatal);\n }\n\n // 6. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If gb18030 second is not 0x00, run these substeps:\n if (gb18030_second !== 0x00) {\n // 1. If byte is in the range 0x81 to 0xFE, inclusive, set\n // gb18030 third to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n gb18030_third = bite;\n return null;\n }\n\n // 2. Prepend gb18030 second followed by byte to stream, set\n // gb18030 first and gb18030 second to 0x00, and return error.\n stream.prepend([gb18030_second, bite]);\n gb18030_first = 0x00;\n gb18030_second = 0x00;\n return decoderError(fatal);\n }\n\n // 5. If gb18030 first is not 0x00, run these substeps:\n if (gb18030_first !== 0x00) {\n // 1. If byte is in the range 0x30 to 0x39, inclusive, set\n // gb18030 second to byte and return continue.\n if (inRange(bite, 0x30, 0x39)) {\n gb18030_second = bite;\n return null;\n }\n\n // 2. Let lead be gb18030 first, let pointer be null, and set\n // gb18030 first to 0x00.\n var lead = gb18030_first;\n var pointer = null;\n gb18030_first = 0x00;\n\n // 3. Let offset be 0x40 if byte is less than 0x7F and 0x41\n // otherwise.\n var offset = bite < 0x7f ? 0x40 : 0x41;\n\n // 4. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80\n // to 0xFE, inclusive, set pointer to (lead \u2212 0x81) \u00D7 190 +\n // (byte \u2212 offset).\n if (inRange(bite, 0x40, 0x7e) || inRange(bite, 0x80, 0xfe))\n pointer = (lead - 0x81) * 190 + (bite - offset);\n\n // 5. Let code point be null if pointer is null and the index\n // code point for pointer in index gb18030 otherwise.\n code_point = pointer === null ? null : indexCodePointFor(pointer, index('gb18030'));\n\n // 6. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (code_point === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 7. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 8. Return a code point whose value is code point.\n return code_point;\n }\n\n // 6. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 7. If byte is 0x80, return code point U+20AC.\n if (bite === 0x80) return 0x20ac;\n\n // 8. If byte is in the range 0x81 to 0xFE, inclusive, set\n // gb18030 first to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n gb18030_first = bite;\n return null;\n }\n\n // 9. Return error.\n return decoderError(fatal);\n };\n}\n\n// 11.2.2 gb18030 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n * @param {boolean=} gbk_flag\n */\nfunction GB18030Encoder(options, gbk_flag) {\n var _fatal = options.fatal;\n // gb18030's decoder has an associated gbk flag (initially unset).\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. If code point is U+E5E5, return error with code point.\n if (code_point === 0xe5e5) return encoderError(code_point);\n\n // 4. If the gbk flag is set and code point is U+20AC, return\n // byte 0x80.\n if (gbk_flag && code_point === 0x20ac) return 0x80;\n\n // 5. Let pointer be the index pointer for code point in index\n // gb18030.\n var pointer = indexPointerFor(code_point, index('gb18030'));\n\n // 6. If pointer is not null, run these substeps:\n if (pointer !== null) {\n // 1. Let lead be floor(pointer / 190) + 0x81.\n var lead = floor(pointer / 190) + 0x81;\n\n // 2. Let trail be pointer % 190.\n var trail = pointer % 190;\n\n // 3. Let offset be 0x40 if trail is less than 0x3F and 0x41 otherwise.\n var offset = trail < 0x3f ? 0x40 : 0x41;\n\n // 4. Return two bytes whose values are lead and trail + offset.\n return [lead, trail + offset];\n }\n\n // 7. If gbk flag is set, return error with code point.\n if (gbk_flag) return encoderError(code_point);\n\n // 8. Set pointer to the index gb18030 ranges pointer for code\n // point.\n pointer = indexGB18030RangesPointerFor(code_point);\n\n // 9. Let byte1 be floor(pointer / 10 / 126 / 10).\n var byte1 = floor(pointer / 10 / 126 / 10);\n\n // 10. Set pointer to pointer \u2212 byte1 \u00D7 10 \u00D7 126 \u00D7 10.\n pointer = pointer - byte1 * 10 * 126 * 10;\n\n // 11. Let byte2 be floor(pointer / 10 / 126).\n var byte2 = floor(pointer / 10 / 126);\n\n // 12. Set pointer to pointer \u2212 byte2 \u00D7 10 \u00D7 126.\n pointer = pointer - byte2 * 10 * 126;\n\n // 13. Let byte3 be floor(pointer / 10).\n var byte3 = floor(pointer / 10);\n\n // 14. Let byte4 be pointer \u2212 byte3 \u00D7 10.\n var byte4 = pointer - byte3 * 10;\n\n // 15. Return four bytes whose values are byte1 + 0x81, byte2 +\n // 0x30, byte3 + 0x81, byte4 + 0x30.\n return [byte1 + 0x81, byte2 + 0x30, byte3 + 0x81, byte4 + 0x30];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['gb18030'] = function (options) {\n return new GB18030Encoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['gb18030'] = function (options) {\n return new GB18030Decoder(options);\n};\n\n//\n// 12. Legacy multi-byte Chinese (traditional) encodings\n//\n\n// 12.1 Big5\n\n// 12.1.1 Big5 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction Big5Decoder(options) {\n var fatal = options.fatal;\n // Big5's decoder has an associated Big5 lead (initially 0x00).\n var /** @type {number} */ Big5_lead = 0x00;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and Big5 lead is not 0x00, set\n // Big5 lead to 0x00 and return error.\n if (bite === end_of_stream && Big5_lead !== 0x00) {\n Big5_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and Big5 lead is 0x00, return\n // finished.\n if (bite === end_of_stream && Big5_lead === 0x00) return finished;\n\n // 3. If Big5 lead is not 0x00, let lead be Big5 lead, let\n // pointer be null, set Big5 lead to 0x00, and then run these\n // substeps:\n if (Big5_lead !== 0x00) {\n var lead = Big5_lead;\n var pointer = null;\n Big5_lead = 0x00;\n\n // 1. Let offset be 0x40 if byte is less than 0x7F and 0x62\n // otherwise.\n var offset = bite < 0x7f ? 0x40 : 0x62;\n\n // 2. If byte is in the range 0x40 to 0x7E, inclusive, or 0xA1\n // to 0xFE, inclusive, set pointer to (lead \u2212 0x81) \u00D7 157 +\n // (byte \u2212 offset).\n if (inRange(bite, 0x40, 0x7e) || inRange(bite, 0xa1, 0xfe))\n pointer = (lead - 0x81) * 157 + (bite - offset);\n\n // 3. If there is a row in the table below whose first column\n // is pointer, return the two code points listed in its second\n // column\n // Pointer | Code points\n // --------+--------------\n // 1133 | U+00CA U+0304\n // 1135 | U+00CA U+030C\n // 1164 | U+00EA U+0304\n // 1166 | U+00EA U+030C\n switch (pointer) {\n case 1133:\n return [0x00ca, 0x0304];\n case 1135:\n return [0x00ca, 0x030c];\n case 1164:\n return [0x00ea, 0x0304];\n case 1166:\n return [0x00ea, 0x030c];\n }\n\n // 4. Let code point be null if pointer is null and the index\n // code point for pointer in index Big5 otherwise.\n var code_point = pointer === null ? null : indexCodePointFor(pointer, index('big5'));\n\n // 5. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (code_point === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 6. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 7. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 5. If byte is in the range 0x81 to 0xFE, inclusive, set Big5\n // lead to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n Big5_lead = bite;\n return null;\n }\n\n // 6. Return error.\n return decoderError(fatal);\n };\n}\n\n// 12.1.2 Big5 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction Big5Encoder(options) {\n var _fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Let pointer be the index Big5 pointer for code point.\n var pointer = indexBig5PointerFor(code_point);\n\n // 4. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 5. Let lead be floor(pointer / 157) + 0x81.\n var lead = floor(pointer / 157) + 0x81;\n\n // 6. If lead is less than 0xA1, return error with code point.\n if (lead < 0xa1) return encoderError(code_point);\n\n // 7. Let trail be pointer % 157.\n var trail = pointer % 157;\n\n // 8. Let offset be 0x40 if trail is less than 0x3F and 0x62\n // otherwise.\n var offset = trail < 0x3f ? 0x40 : 0x62;\n\n // Return two bytes whose values are lead and trail + offset.\n return [lead, trail + offset];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['Big5'] = function (options) {\n return new Big5Encoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['Big5'] = function (options) {\n return new Big5Decoder(options);\n};\n\n//\n// 13. Legacy multi-byte Japanese encodings\n//\n\n// 13.1 euc-jp\n\n// 13.1.1 euc-jp decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCJPDecoder(options) {\n var fatal = options.fatal;\n\n // euc-jp's decoder has an associated euc-jp jis0212 flag\n // (initially unset) and euc-jp lead (initially 0x00).\n var /** @type {boolean} */ eucjp_jis0212_flag = false,\n /** @type {number} */ eucjp_lead = 0x00;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and euc-jp lead is not 0x00, set\n // euc-jp lead to 0x00, and return error.\n if (bite === end_of_stream && eucjp_lead !== 0x00) {\n eucjp_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and euc-jp lead is 0x00, return\n // finished.\n if (bite === end_of_stream && eucjp_lead === 0x00) return finished;\n\n // 3. If euc-jp lead is 0x8E and byte is in the range 0xA1 to\n // 0xDF, inclusive, set euc-jp lead to 0x00 and return a code\n // point whose value is 0xFF61 \u2212 0xA1 + byte.\n if (eucjp_lead === 0x8e && inRange(bite, 0xa1, 0xdf)) {\n eucjp_lead = 0x00;\n return 0xff61 - 0xa1 + bite;\n }\n\n // 4. If euc-jp lead is 0x8F and byte is in the range 0xA1 to\n // 0xFE, inclusive, set the euc-jp jis0212 flag, set euc-jp lead\n // to byte, and return continue.\n if (eucjp_lead === 0x8f && inRange(bite, 0xa1, 0xfe)) {\n eucjp_jis0212_flag = true;\n eucjp_lead = bite;\n return null;\n }\n\n // 5. If euc-jp lead is not 0x00, let lead be euc-jp lead, set\n // euc-jp lead to 0x00, and run these substeps:\n if (eucjp_lead !== 0x00) {\n var lead = eucjp_lead;\n eucjp_lead = 0x00;\n\n // 1. Let code point be null.\n var code_point = null;\n\n // 2. If lead and byte are both in the range 0xA1 to 0xFE,\n // inclusive, set code point to the index code point for (lead\n // \u2212 0xA1) \u00D7 94 + byte \u2212 0xA1 in index jis0208 if the euc-jp\n // jis0212 flag is unset and in index jis0212 otherwise.\n if (inRange(lead, 0xa1, 0xfe) && inRange(bite, 0xa1, 0xfe)) {\n code_point = indexCodePointFor(\n (lead - 0xa1) * 94 + (bite - 0xa1),\n index(!eucjp_jis0212_flag ? 'jis0208' : 'jis0212')\n );\n }\n\n // 3. Unset the euc-jp jis0212 flag.\n eucjp_jis0212_flag = false;\n\n // 4. If byte is not in the range 0xA1 to 0xFE, inclusive,\n // prepend byte to stream.\n if (!inRange(bite, 0xa1, 0xfe)) stream.prepend(bite);\n\n // 5. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 6. Return a code point whose value is code point.\n return code_point;\n }\n\n // 6. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 7. If byte is 0x8E, 0x8F, or in the range 0xA1 to 0xFE,\n // inclusive, set euc-jp lead to byte and return continue.\n if (bite === 0x8e || bite === 0x8f || inRange(bite, 0xa1, 0xfe)) {\n eucjp_lead = bite;\n return null;\n }\n\n // 8. Return error.\n return decoderError(fatal);\n };\n}\n\n// 13.1.2 euc-jp encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCJPEncoder(options) {\n var _fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. If code point is U+00A5, return byte 0x5C.\n if (code_point === 0x00a5) return 0x5c;\n\n // 4. If code point is U+203E, return byte 0x7E.\n if (code_point === 0x203e) return 0x7e;\n\n // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,\n // return two bytes whose values are 0x8E and code point \u2212\n // 0xFF61 + 0xA1.\n if (inRange(code_point, 0xff61, 0xff9f)) return [0x8e, code_point - 0xff61 + 0xa1];\n\n // 6. If code point is U+2212, set it to U+FF0D.\n if (code_point === 0x2212) code_point = 0xff0d;\n\n // 7. Let pointer be the index pointer for code point in index\n // jis0208.\n var pointer = indexPointerFor(code_point, index('jis0208'));\n\n // 8. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 9. Let lead be floor(pointer / 94) + 0xA1.\n var lead = floor(pointer / 94) + 0xa1;\n\n // 10. Let trail be pointer % 94 + 0xA1.\n var trail = (pointer % 94) + 0xa1;\n\n // 11. Return two bytes whose values are lead and trail.\n return [lead, trail];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['EUC-JP'] = function (options) {\n return new EUCJPEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['EUC-JP'] = function (options) {\n return new EUCJPDecoder(options);\n};\n\n// 13.2 iso-2022-jp\n\n// 13.2.1 iso-2022-jp decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction ISO2022JPDecoder(options) {\n var fatal = options.fatal;\n /** @enum */\n var states = {\n ASCII: 0,\n Roman: 1,\n Katakana: 2,\n LeadByte: 3,\n TrailByte: 4,\n EscapeStart: 5,\n Escape: 6\n };\n // iso-2022-jp's decoder has an associated iso-2022-jp decoder\n // state (initially ASCII), iso-2022-jp decoder output state\n // (initially ASCII), iso-2022-jp lead (initially 0x00), and\n // iso-2022-jp output flag (initially unset).\n var /** @type {number} */ iso2022jp_decoder_state = states.ASCII,\n /** @type {number} */ iso2022jp_decoder_output_state = states.ASCII,\n /** @type {number} */ iso2022jp_lead = 0x00,\n /** @type {boolean} */ iso2022jp_output_flag = false;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // switching on iso-2022-jp decoder state:\n switch (iso2022jp_decoder_state) {\n default:\n case states.ASCII:\n // ASCII\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x00 to 0x7F, excluding 0x0E, 0x0F, and 0x1B\n if (inRange(bite, 0x00, 0x7f) && bite !== 0x0e && bite !== 0x0f && bite !== 0x1b) {\n // Unset the iso-2022-jp output flag and return a code point\n // whose value is byte.\n iso2022jp_output_flag = false;\n return bite;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.Roman:\n // Roman\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x5C\n if (bite === 0x5c) {\n // Unset the iso-2022-jp output flag and return code point\n // U+00A5.\n iso2022jp_output_flag = false;\n return 0x00a5;\n }\n\n // 0x7E\n if (bite === 0x7e) {\n // Unset the iso-2022-jp output flag and return code point\n // U+203E.\n iso2022jp_output_flag = false;\n return 0x203e;\n }\n\n // 0x00 to 0x7F, excluding 0x0E, 0x0F, 0x1B, 0x5C, and 0x7E\n if (\n inRange(bite, 0x00, 0x7f) &&\n bite !== 0x0e &&\n bite !== 0x0f &&\n bite !== 0x1b &&\n bite !== 0x5c &&\n bite !== 0x7e\n ) {\n // Unset the iso-2022-jp output flag and return a code point\n // whose value is byte.\n iso2022jp_output_flag = false;\n return bite;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.Katakana:\n // Katakana\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x21 to 0x5F\n if (inRange(bite, 0x21, 0x5f)) {\n // Unset the iso-2022-jp output flag and return a code point\n // whose value is 0xFF61 \u2212 0x21 + byte.\n iso2022jp_output_flag = false;\n return 0xff61 - 0x21 + bite;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.LeadByte:\n // Lead byte\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x21 to 0x7E\n if (inRange(bite, 0x21, 0x7e)) {\n // Unset the iso-2022-jp output flag, set iso-2022-jp lead\n // to byte, iso-2022-jp decoder state to trail byte, and\n // return continue.\n iso2022jp_output_flag = false;\n iso2022jp_lead = bite;\n iso2022jp_decoder_state = states.TrailByte;\n return null;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.TrailByte:\n // Trail byte\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return decoderError(fatal);\n }\n\n // 0x21 to 0x7E\n if (inRange(bite, 0x21, 0x7e)) {\n // 1. Set the iso-2022-jp decoder state to lead byte.\n iso2022jp_decoder_state = states.LeadByte;\n\n // 2. Let pointer be (iso-2022-jp lead \u2212 0x21) \u00D7 94 + byte \u2212 0x21.\n var pointer = (iso2022jp_lead - 0x21) * 94 + bite - 0x21;\n\n // 3. Let code point be the index code point for pointer in\n // index jis0208.\n var code_point = indexCodePointFor(pointer, index('jis0208'));\n\n // 4. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 5. Return a code point whose value is code point.\n return code_point;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Set the iso-2022-jp decoder state to lead byte, prepend\n // byte to stream, and return error.\n iso2022jp_decoder_state = states.LeadByte;\n stream.prepend(bite);\n return decoderError(fatal);\n }\n\n // Otherwise\n // Set iso-2022-jp decoder state to lead byte and return\n // error.\n iso2022jp_decoder_state = states.LeadByte;\n return decoderError(fatal);\n\n case states.EscapeStart:\n // Escape start\n\n // 1. If byte is either 0x24 or 0x28, set iso-2022-jp lead to\n // byte, iso-2022-jp decoder state to escape, and return\n // continue.\n if (bite === 0x24 || bite === 0x28) {\n iso2022jp_lead = bite;\n iso2022jp_decoder_state = states.Escape;\n return null;\n }\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Unset the iso-2022-jp output flag, set iso-2022-jp\n // decoder state to iso-2022-jp decoder output state, and\n // return error.\n iso2022jp_output_flag = false;\n iso2022jp_decoder_state = iso2022jp_decoder_output_state;\n return decoderError(fatal);\n\n case states.Escape:\n // Escape\n\n // 1. Let lead be iso-2022-jp lead and set iso-2022-jp lead to\n // 0x00.\n var lead = iso2022jp_lead;\n iso2022jp_lead = 0x00;\n\n // 2. Let state be null.\n var state = null;\n\n // 3. If lead is 0x28 and byte is 0x42, set state to ASCII.\n if (lead === 0x28 && bite === 0x42) state = states.ASCII;\n\n // 4. If lead is 0x28 and byte is 0x4A, set state to Roman.\n if (lead === 0x28 && bite === 0x4a) state = states.Roman;\n\n // 5. If lead is 0x28 and byte is 0x49, set state to Katakana.\n if (lead === 0x28 && bite === 0x49) state = states.Katakana;\n\n // 6. If lead is 0x24 and byte is either 0x40 or 0x42, set\n // state to lead byte.\n if (lead === 0x24 && (bite === 0x40 || bite === 0x42)) state = states.LeadByte;\n\n // 7. If state is non-null, run these substeps:\n if (state !== null) {\n // 1. Set iso-2022-jp decoder state and iso-2022-jp decoder\n // output state to states.\n iso2022jp_decoder_state = iso2022jp_decoder_state = state;\n\n // 2. Let output flag be the iso-2022-jp output flag.\n var output_flag = iso2022jp_output_flag;\n\n // 3. Set the iso-2022-jp output flag.\n iso2022jp_output_flag = true;\n\n // 4. Return continue, if output flag is unset, and error\n // otherwise.\n return !output_flag ? null : decoderError(fatal);\n }\n\n // 8. Prepend lead and byte to stream.\n stream.prepend([lead, bite]);\n\n // 9. Unset the iso-2022-jp output flag, set iso-2022-jp\n // decoder state to iso-2022-jp decoder output state and\n // return error.\n iso2022jp_output_flag = false;\n iso2022jp_decoder_state = iso2022jp_decoder_output_state;\n return decoderError(fatal);\n }\n };\n}\n\n// 13.2.2 iso-2022-jp encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction ISO2022JPEncoder(options) {\n var _fatal = options.fatal;\n // iso-2022-jp's encoder has an associated iso-2022-jp encoder\n // state which is one of ASCII, Roman, and jis0208 (initially\n // ASCII).\n /** @enum */\n var states = {\n ASCII: 0,\n Roman: 1,\n jis0208: 2\n };\n var /** @type {number} */ iso2022jp_state = states.ASCII;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream and iso-2022-jp encoder\n // state is not ASCII, prepend code point to stream, set\n // iso-2022-jp encoder state to ASCII, and return three bytes\n // 0x1B 0x28 0x42.\n if (code_point === end_of_stream && iso2022jp_state !== states.ASCII) {\n stream.prepend(code_point);\n iso2022jp_state = states.ASCII;\n return [0x1b, 0x28, 0x42];\n }\n\n // 2. If code point is end-of-stream and iso-2022-jp encoder\n // state is ASCII, return finished.\n if (code_point === end_of_stream && iso2022jp_state === states.ASCII) return finished;\n\n // 3. If ISO-2022-JP encoder state is ASCII or Roman, and code\n // point is U+000E, U+000F, or U+001B, return error with U+FFFD.\n if (\n (iso2022jp_state === states.ASCII || iso2022jp_state === states.Roman) &&\n (code_point === 0x000e || code_point === 0x000f || code_point === 0x001b)\n ) {\n return encoderError(0xfffd);\n }\n\n // 4. If iso-2022-jp encoder state is ASCII and code point is an\n // ASCII code point, return a byte whose value is code point.\n if (iso2022jp_state === states.ASCII && isASCIICodePoint(code_point)) return code_point;\n\n // 5. If iso-2022-jp encoder state is Roman and code point is an\n // ASCII code point, excluding U+005C and U+007E, or is U+00A5\n // or U+203E, run these substeps:\n if (\n iso2022jp_state === states.Roman &&\n ((isASCIICodePoint(code_point) && code_point !== 0x005c && code_point !== 0x007e) ||\n code_point === 0x00a5 ||\n code_point === 0x203e)\n ) {\n // 1. If code point is an ASCII code point, return a byte\n // whose value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 2. If code point is U+00A5, return byte 0x5C.\n if (code_point === 0x00a5) return 0x5c;\n\n // 3. If code point is U+203E, return byte 0x7E.\n if (code_point === 0x203e) return 0x7e;\n }\n\n // 6. If code point is an ASCII code point, and iso-2022-jp\n // encoder state is not ASCII, prepend code point to stream, set\n // iso-2022-jp encoder state to ASCII, and return three bytes\n // 0x1B 0x28 0x42.\n if (isASCIICodePoint(code_point) && iso2022jp_state !== states.ASCII) {\n stream.prepend(code_point);\n iso2022jp_state = states.ASCII;\n return [0x1b, 0x28, 0x42];\n }\n\n // 7. If code point is either U+00A5 or U+203E, and iso-2022-jp\n // encoder state is not Roman, prepend code point to stream, set\n // iso-2022-jp encoder state to Roman, and return three bytes\n // 0x1B 0x28 0x4A.\n if ((code_point === 0x00a5 || code_point === 0x203e) && iso2022jp_state !== states.Roman) {\n stream.prepend(code_point);\n iso2022jp_state = states.Roman;\n return [0x1b, 0x28, 0x4a];\n }\n\n // 8. If code point is U+2212, set it to U+FF0D.\n if (code_point === 0x2212) code_point = 0xff0d;\n\n // 9. Let pointer be the index pointer for code point in index\n // jis0208.\n var pointer = indexPointerFor(code_point, index('jis0208'));\n\n // 10. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 11. If iso-2022-jp encoder state is not jis0208, prepend code\n // point to stream, set iso-2022-jp encoder state to jis0208,\n // and return three bytes 0x1B 0x24 0x42.\n if (iso2022jp_state !== states.jis0208) {\n stream.prepend(code_point);\n iso2022jp_state = states.jis0208;\n return [0x1b, 0x24, 0x42];\n }\n\n // 12. Let lead be floor(pointer / 94) + 0x21.\n var lead = floor(pointer / 94) + 0x21;\n\n // 13. Let trail be pointer % 94 + 0x21.\n var trail = (pointer % 94) + 0x21;\n\n // 14. Return two bytes whose values are lead and trail.\n return [lead, trail];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['ISO-2022-JP'] = function (options) {\n return new ISO2022JPEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['ISO-2022-JP'] = function (options) {\n return new ISO2022JPDecoder(options);\n};\n\n// 13.3 Shift_JIS\n\n// 13.3.1 Shift_JIS decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction ShiftJISDecoder(options) {\n var fatal = options.fatal;\n // Shift_JIS's decoder has an associated Shift_JIS lead (initially\n // 0x00).\n var /** @type {number} */ Shift_JIS_lead = 0x00;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and Shift_JIS lead is not 0x00,\n // set Shift_JIS lead to 0x00 and return error.\n if (bite === end_of_stream && Shift_JIS_lead !== 0x00) {\n Shift_JIS_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and Shift_JIS lead is 0x00,\n // return finished.\n if (bite === end_of_stream && Shift_JIS_lead === 0x00) return finished;\n\n // 3. If Shift_JIS lead is not 0x00, let lead be Shift_JIS lead,\n // let pointer be null, set Shift_JIS lead to 0x00, and then run\n // these substeps:\n if (Shift_JIS_lead !== 0x00) {\n var lead = Shift_JIS_lead;\n var pointer = null;\n Shift_JIS_lead = 0x00;\n\n // 1. Let offset be 0x40, if byte is less than 0x7F, and 0x41\n // otherwise.\n var offset = bite < 0x7f ? 0x40 : 0x41;\n\n // 2. Let lead offset be 0x81, if lead is less than 0xA0, and\n // 0xC1 otherwise.\n var lead_offset = lead < 0xa0 ? 0x81 : 0xc1;\n\n // 3. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80\n // to 0xFC, inclusive, set pointer to (lead \u2212 lead offset) \u00D7\n // 188 + byte \u2212 offset.\n if (inRange(bite, 0x40, 0x7e) || inRange(bite, 0x80, 0xfc))\n pointer = (lead - lead_offset) * 188 + bite - offset;\n\n // 4. If pointer is in the range 8836 to 10715, inclusive,\n // return a code point whose value is 0xE000 \u2212 8836 + pointer.\n if (inRange(pointer, 8836, 10715)) return 0xe000 - 8836 + pointer;\n\n // 5. Let code point be null, if pointer is null, and the\n // index code point for pointer in index jis0208 otherwise.\n var code_point = pointer === null ? null : indexCodePointFor(pointer, index('jis0208'));\n\n // 6. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (code_point === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 7. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 8. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If byte is an ASCII byte or 0x80, return a code point\n // whose value is byte.\n if (isASCIIByte(bite) || bite === 0x80) return bite;\n\n // 5. If byte is in the range 0xA1 to 0xDF, inclusive, return a\n // code point whose value is 0xFF61 \u2212 0xA1 + byte.\n if (inRange(bite, 0xa1, 0xdf)) return 0xff61 - 0xa1 + bite;\n\n // 6. If byte is in the range 0x81 to 0x9F, inclusive, or 0xE0\n // to 0xFC, inclusive, set Shift_JIS lead to byte and return\n // continue.\n if (inRange(bite, 0x81, 0x9f) || inRange(bite, 0xe0, 0xfc)) {\n Shift_JIS_lead = bite;\n return null;\n }\n\n // 7. Return error.\n return decoderError(fatal);\n };\n}\n\n// 13.3.2 Shift_JIS encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction ShiftJISEncoder(options) {\n var _fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point or U+0080, return a\n // byte whose value is code point.\n if (isASCIICodePoint(code_point) || code_point === 0x0080) return code_point;\n\n // 3. If code point is U+00A5, return byte 0x5C.\n if (code_point === 0x00a5) return 0x5c;\n\n // 4. If code point is U+203E, return byte 0x7E.\n if (code_point === 0x203e) return 0x7e;\n\n // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,\n // return a byte whose value is code point \u2212 0xFF61 + 0xA1.\n if (inRange(code_point, 0xff61, 0xff9f)) return code_point - 0xff61 + 0xa1;\n\n // 6. If code point is U+2212, set it to U+FF0D.\n if (code_point === 0x2212) code_point = 0xff0d;\n\n // 7. Let pointer be the index Shift_JIS pointer for code point.\n var pointer = indexShiftJISPointerFor(code_point);\n\n // 8. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 9. Let lead be floor(pointer / 188).\n var lead = floor(pointer / 188);\n\n // 10. Let lead offset be 0x81, if lead is less than 0x1F, and\n // 0xC1 otherwise.\n var lead_offset = lead < 0x1f ? 0x81 : 0xc1;\n\n // 11. Let trail be pointer % 188.\n var trail = pointer % 188;\n\n // 12. Let offset be 0x40, if trail is less than 0x3F, and 0x41\n // otherwise.\n var offset = trail < 0x3f ? 0x40 : 0x41;\n\n // 13. Return two bytes whose values are lead + lead offset and\n // trail + offset.\n return [lead + lead_offset, trail + offset];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['Shift_JIS'] = function (options) {\n return new ShiftJISEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['Shift_JIS'] = function (options) {\n return new ShiftJISDecoder(options);\n};\n\n//\n// 14. Legacy multi-byte Korean encodings\n//\n\n// 14.1 euc-kr\n\n// 14.1.1 euc-kr decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCKRDecoder(options) {\n var fatal = options.fatal;\n\n // euc-kr's decoder has an associated euc-kr lead (initially 0x00).\n var /** @type {number} */ euckr_lead = 0x00;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and euc-kr lead is not 0x00, set\n // euc-kr lead to 0x00 and return error.\n if (bite === end_of_stream && euckr_lead !== 0) {\n euckr_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and euc-kr lead is 0x00, return\n // finished.\n if (bite === end_of_stream && euckr_lead === 0) return finished;\n\n // 3. If euc-kr lead is not 0x00, let lead be euc-kr lead, let\n // pointer be null, set euc-kr lead to 0x00, and then run these\n // substeps:\n if (euckr_lead !== 0x00) {\n var lead = euckr_lead;\n var pointer = null;\n euckr_lead = 0x00;\n\n // 1. If byte is in the range 0x41 to 0xFE, inclusive, set\n // pointer to (lead \u2212 0x81) \u00D7 190 + (byte \u2212 0x41).\n if (inRange(bite, 0x41, 0xfe)) pointer = (lead - 0x81) * 190 + (bite - 0x41);\n\n // 2. Let code point be null, if pointer is null, and the\n // index code point for pointer in index euc-kr otherwise.\n var code_point = pointer === null ? null : indexCodePointFor(pointer, index('euc-kr'));\n\n // 3. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (pointer === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 4. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 5. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 5. If byte is in the range 0x81 to 0xFE, inclusive, set\n // euc-kr lead to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n euckr_lead = bite;\n return null;\n }\n\n // 6. Return error.\n return decoderError(fatal);\n };\n}\n\n// 14.1.2 euc-kr encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCKREncoder(options) {\n var _fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Let pointer be the index pointer for code point in index\n // euc-kr.\n var pointer = indexPointerFor(code_point, index('euc-kr'));\n\n // 4. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 5. Let lead be floor(pointer / 190) + 0x81.\n var lead = floor(pointer / 190) + 0x81;\n\n // 6. Let trail be pointer % 190 + 0x41.\n var trail = (pointer % 190) + 0x41;\n\n // 7. Return two bytes whose values are lead and trail.\n return [lead, trail];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['EUC-KR'] = function (options) {\n return new EUCKREncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['EUC-KR'] = function (options) {\n return new EUCKRDecoder(options);\n};\n\n//\n// 15. Legacy miscellaneous encodings\n//\n\n// 15.1 replacement\n\n// Not needed - API throws RangeError\n\n// 15.2 Common infrastructure for utf-16be and utf-16le\n\n/**\n * @param {number} code_unit\n * @param {boolean} utf16be\n * @return {!Array.<number>} bytes\n */\nfunction convertCodeUnitToBytes(code_unit, utf16be) {\n // 1. Let byte1 be code unit >> 8.\n var byte1 = code_unit >> 8;\n\n // 2. Let byte2 be code unit & 0x00FF.\n var byte2 = code_unit & 0x00ff;\n\n // 3. Then return the bytes in order:\n // utf-16be flag is set: byte1, then byte2.\n if (utf16be) return [byte1, byte2];\n // utf-16be flag is unset: byte2, then byte1.\n return [byte2, byte1];\n}\n\n// 15.2.1 shared utf-16 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {boolean} utf16_be True if big-endian, false if little-endian.\n * @param {{fatal: boolean}} options\n */\nfunction UTF16Decoder(utf16_be, options) {\n var fatal = options.fatal;\n var /** @type {?number} */ utf16_lead_byte = null,\n /** @type {?number} */ utf16_lead_surrogate = null;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and either utf-16 lead byte or\n // utf-16 lead surrogate is not null, set utf-16 lead byte and\n // utf-16 lead surrogate to null, and return error.\n if (bite === end_of_stream && (utf16_lead_byte !== null || utf16_lead_surrogate !== null)) {\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and utf-16 lead byte and utf-16\n // lead surrogate are null, return finished.\n if (bite === end_of_stream && utf16_lead_byte === null && utf16_lead_surrogate === null) {\n return finished;\n }\n\n // 3. If utf-16 lead byte is null, set utf-16 lead byte to byte\n // and return continue.\n if (utf16_lead_byte === null) {\n utf16_lead_byte = bite;\n return null;\n }\n\n // 4. Let code unit be the result of:\n var code_unit;\n if (utf16_be) {\n // utf-16be decoder flag is set\n // (utf-16 lead byte << 8) + byte.\n code_unit = (utf16_lead_byte << 8) + bite;\n } else {\n // utf-16be decoder flag is unset\n // (byte << 8) + utf-16 lead byte.\n code_unit = (bite << 8) + utf16_lead_byte;\n }\n // Then set utf-16 lead byte to null.\n utf16_lead_byte = null;\n\n // 5. If utf-16 lead surrogate is not null, let lead surrogate\n // be utf-16 lead surrogate, set utf-16 lead surrogate to null,\n // and then run these substeps:\n if (utf16_lead_surrogate !== null) {\n var lead_surrogate = utf16_lead_surrogate;\n utf16_lead_surrogate = null;\n\n // 1. If code unit is in the range U+DC00 to U+DFFF,\n // inclusive, return a code point whose value is 0x10000 +\n // ((lead surrogate \u2212 0xD800) << 10) + (code unit \u2212 0xDC00).\n if (inRange(code_unit, 0xdc00, 0xdfff)) {\n return 0x10000 + (lead_surrogate - 0xd800) * 0x400 + (code_unit - 0xdc00);\n }\n\n // 2. Prepend the sequence resulting of converting code unit\n // to bytes using utf-16be decoder flag to stream and return\n // error.\n stream.prepend(convertCodeUnitToBytes(code_unit, utf16_be));\n return decoderError(fatal);\n }\n\n // 6. If code unit is in the range U+D800 to U+DBFF, inclusive,\n // set utf-16 lead surrogate to code unit and return continue.\n if (inRange(code_unit, 0xd800, 0xdbff)) {\n utf16_lead_surrogate = code_unit;\n return null;\n }\n\n // 7. If code unit is in the range U+DC00 to U+DFFF, inclusive,\n // return error.\n if (inRange(code_unit, 0xdc00, 0xdfff)) return decoderError(fatal);\n\n // 8. Return code point code unit.\n return code_unit;\n };\n}\n\n// 15.2.2 shared utf-16 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {boolean} utf16_be True if big-endian, false if little-endian.\n * @param {{fatal: boolean}} options\n */\nfunction UTF16Encoder(utf16_be, options) {\n var _fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is in the range U+0000 to U+FFFF, inclusive,\n // return the sequence resulting of converting code point to\n // bytes using utf-16be encoder flag.\n if (inRange(code_point, 0x0000, 0xffff)) return convertCodeUnitToBytes(code_point, utf16_be);\n\n // 3. Let lead be ((code point \u2212 0x10000) >> 10) + 0xD800,\n // converted to bytes using utf-16be encoder flag.\n var lead = convertCodeUnitToBytes(((code_point - 0x10000) >> 10) + 0xd800, utf16_be);\n\n // 4. Let trail be ((code point \u2212 0x10000) & 0x3FF) + 0xDC00,\n // converted to bytes using utf-16be encoder flag.\n var trail = convertCodeUnitToBytes(((code_point - 0x10000) & 0x3ff) + 0xdc00, utf16_be);\n\n // 5. Return a byte sequence of lead followed by trail.\n return lead.concat(trail);\n };\n}\n\n// 15.3 utf-16be\n// 15.3.1 utf-16be decoder\n/** @param {{fatal: boolean}} options */\nencoders['UTF-16BE'] = function (options) {\n return new UTF16Encoder(true, options);\n};\n// 15.3.2 utf-16be encoder\n/** @param {{fatal: boolean}} options */\ndecoders['UTF-16BE'] = function (options) {\n return new UTF16Decoder(true, options);\n};\n\n// 15.4 utf-16le\n// 15.4.1 utf-16le decoder\n/** @param {{fatal: boolean}} options */\nencoders['UTF-16LE'] = function (options) {\n return new UTF16Encoder(false, options);\n};\n// 15.4.2 utf-16le encoder\n/** @param {{fatal: boolean}} options */\ndecoders['UTF-16LE'] = function (options) {\n return new UTF16Decoder(false, options);\n};\n\n// 15.5 x-user-defined\n\n// 15.5.1 x-user-defined decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction XUserDefinedDecoder(options) {\n var _fatal = options.fatal;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream, return finished.\n if (bite === end_of_stream) return finished;\n\n // 2. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 3. Return a code point whose value is 0xF780 + byte \u2212 0x80.\n return 0xf780 + bite - 0x80;\n };\n}\n\n// 15.5.2 x-user-defined encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction XUserDefinedEncoder(options) {\n var _fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1.If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. If code point is in the range U+F780 to U+F7FF, inclusive,\n // return a byte whose value is code point \u2212 0xF780 + 0x80.\n if (inRange(code_point, 0xf780, 0xf7ff)) return code_point - 0xf780 + 0x80;\n\n // 4. Return error with code point.\n return encoderError(code_point);\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['x-user-defined'] = function (options) {\n return new XUserDefinedEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['x-user-defined'] = function (options) {\n return new XUserDefinedDecoder(options);\n};\n\n// FORK\n// if (!globalThis['TextEncoder']) globalThis['TextEncoder'] = TextEncoder;\n// if (!globalThis['TextDecoder']) globalThis['TextDecoder'] = TextDecoder;\n// babel.config.js skip transpiling files in `libs/`\n// module.exports = {TextEncoder, TextDecoder};\nexport {TextEncoder, TextDecoder};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// btoa, atob polyfills for Node.js\n// Note: The atob and btoa functions (not just the polyfills!) are not unicode safe\n// But still useful for unit testing\n\nexport function atob(string) {\n return Buffer.from(string).toString('base64');\n}\n\nexport function btoa(base64) {\n return Buffer.from(base64, 'base64').toString('ascii');\n}\n", "// SPDX-License-Identifier: MIT\n\n/** Loads the optional Node image codec only when image processing is requested. */\nexport async function loadSharp(): Promise<typeof import('sharp').default> {\n try {\n return (await import('sharp')).default;\n } catch (error) {\n throw new Error(\n \"Node image decoding and encoding require the optional 'sharp' package. Install it with 'npm install sharp'.\",\n {cause: error}\n );\n }\n}\n", "// SPDX-License-Identifier: MIT\n\n/** Image MIME types supported by the optional Sharp Node backend. */\nexport const NODE_FORMAT_SUPPORT = [\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/avif',\n 'image/tiff',\n 'image/svg+xml'\n];\n", "// SPDX-License-Identifier: MIT\n\nimport {loadSharp} from './load-sharp';\n\nexport {NODE_FORMAT_SUPPORT} from './node-image-formats';\n\n/** Decoded Node image pixels and dimensions. */\ntype NodeImageData = {\n /** Pixel layout, including a frame dimension for animations. */\n shape: number[];\n /** Interleaved RGBA pixels. */\n data: Uint8Array;\n /** Frame width in pixels. */\n width: number;\n /** Frame height in pixels. */\n height: number;\n /** Number of components per pixel. */\n components: number;\n /** Number of animation frames. */\n layers: number[];\n};\n\n/** Decodes encoded image bytes into RGBA pixels, detecting the format from the bytes. */\nexport async function parseImageNode(\n arrayBuffer: ArrayBuffer,\n _mimeType?: string\n): Promise<NodeImageData> {\n const sharp = await loadSharp();\n const {data, info: imageInformation} = await sharp(Buffer.from(arrayBuffer), {animated: true})\n .toColourspace('srgb')\n .ensureAlpha()\n .raw()\n .toBuffer({resolveWithObject: true});\n const width = imageInformation.width;\n const height = imageInformation.pageHeight || imageInformation.height;\n const frameCount = imageInformation.pages || 1;\n return {\n shape: frameCount > 1 ? [frameCount, width, height, 4] : [width, height, 4],\n data: new Uint8Array(data),\n width,\n height,\n components: 4,\n layers: [frameCount]\n };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/** Convert a Node buffer, typed array, or ArrayBuffer-like value to an ArrayBuffer. */\nexport function toArrayBuffer(data: Buffer | ArrayBufferLike | ArrayBufferView): ArrayBuffer {\n if (data instanceof ArrayBuffer) {\n return data;\n }\n if (ArrayBuffer.isView(data)) {\n return ensureArrayBuffer(data);\n }\n return ensureArrayBuffer(data);\n}\n\n/** Return an ArrayBuffer without exposing pooled or shared backing memory. */\nexport function ensureArrayBuffer(data: ArrayBufferLike | ArrayBufferView): ArrayBuffer {\n if (data instanceof ArrayBuffer) {\n return data;\n }\n if (ArrayBuffer.isView(data)) {\n const {buffer, byteOffset, byteLength} = data;\n if (buffer instanceof ArrayBuffer && byteOffset === 0 && byteLength === buffer.byteLength) {\n return buffer;\n }\n return copyArrayBufferRange(buffer, byteOffset, byteLength);\n }\n return copyArrayBufferRange(data);\n}\n\n/** Copy a byte range into an ordinary ArrayBuffer. */\nfunction copyArrayBufferRange(\n buffer: ArrayBufferLike,\n offset = 0,\n length = buffer.byteLength - offset\n): ArrayBuffer {\n const copy = new Uint8Array(length);\n copy.set(new Uint8Array(buffer, offset, length));\n return copy.buffer;\n}\n", "// SPDX-License-Identifier: MIT\n\nimport {PassThrough} from 'node:stream';\nimport {loadSharp} from './load-sharp';\nimport {toArrayBuffer} from '../utils/buffer-utils';\n\n/** Raw RGBA image accepted by the Node encoder. */\ntype NodeImageData = {\n /** Interleaved RGBA pixels. */\n data: Uint8Array;\n /** Width in pixels. */\n width: number;\n /** Height in pixels. */\n height: number;\n};\n\n/** Options for the Node image encoder. */\ntype NodeImageEncoderOptions = {\n /** Output format name or MIME type; defaults to JPEG. */\n type?: string;\n /** Legacy option retained for callers. */\n dataURI?: string;\n};\n\n/** Encodes raw RGBA pixels with the optional Sharp backend. */\nexport async function encodeImageNode(\n image: NodeImageData,\n options: NodeImageEncoderOptions = {}\n): Promise<ArrayBuffer> {\n const sharp = await loadSharp();\n const requestedFormat = (options.type || 'jpeg').toLowerCase().replace(/^image\\//, '');\n const format = requestedFormat === 'jpg' ? 'jpeg' : requestedFormat;\n const encodedImage = await sharp(Buffer.from(image.data), {\n raw: {width: image.width, height: image.height, channels: 4}\n })\n .toFormat(format as keyof import('sharp').FormatEnum)\n .toBuffer();\n return toArrayBuffer(encodedImage);\n}\n\n/** Streams an encoded image and forwards codec loading and encoding failures. */\nexport function encodeImageToStreamNode(\n image: NodeImageData,\n options: NodeImageEncoderOptions = {}\n): PassThrough {\n const stream = new PassThrough();\n void encodeImageNode(image, options).then(\n arrayBuffer => stream.end(Buffer.from(arrayBuffer)),\n error => stream.destroy(error)\n );\n return stream;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\ntype NodeImageData = {\n data: Uint8Array;\n width: number;\n height: number;\n};\n\n/**\n * Minimal Node.js `ImageBitmap` polyfill backed by decoded pixel data.\n * This is intentionally limited to the functionality needed by `ImageLoader`\n * and `getImageBitmapData()`.\n */\nexport class NodeImageBitmap {\n /** Width of the decoded bitmap in pixels. */\n width: number;\n\n /** Height of the decoded bitmap in pixels. */\n height: number;\n\n /** Backing pixel data retained until `close()` is called. */\n private data: Uint8Array | null;\n\n /** Creates a bitmap wrapper around decoded Node.js image data. */\n constructor(imageData: NodeImageData) {\n if (!imageData || !imageData.data || !imageData.width || !imageData.height) {\n throw new Error('NodeImageBitmap requires decoded image data');\n }\n\n this.width = imageData.width;\n this.height = imageData.height;\n this.data = imageData.data;\n }\n\n /** Releases the backing pixel data and invalidates further reads. */\n close(): void {\n this.width = 0;\n this.height = 0;\n this.data = null;\n }\n\n /** Returns the decoded image data backing this bitmap. */\n _getImageData(): NodeImageData {\n if (!this.data) {\n throw new Error('ImageBitmap is closed');\n }\n\n return {\n data: this.data,\n width: this.width,\n height: this.height\n };\n }\n}\n\n/**\n * Detects whether a value is a Node.js `ImageBitmap` installed by `@loaders.gl/core/polyfills`.\n */\nexport function isNodeImageBitmap(image: unknown): image is NodeImageBitmap {\n return image instanceof NodeImageBitmap;\n}\n\n/**\n * Wraps decoded Node.js image data in the loaders.gl `NodeImageBitmap` polyfill.\n */\nexport function createImageBitmapNode(imageData: NodeImageData): NodeImageBitmap {\n return new NodeImageBitmap(imageData);\n}\n\n/**\n * Returns decoded image data from a Node.js `ImageBitmap`.\n */\nexport function getImageBitmapDataNode(image: unknown): NodeImageData {\n if (!isNodeImageBitmap(image)) {\n throw new Error('getImageBitmapData');\n }\n\n return image._getImageData();\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nlet pathPrefix = '';\nconst fileAliases = new Map<string, string>();\n\n/** Set the prefix applied to local paths used by Node polyfills. */\nexport function setPathPrefix(prefix: string): void {\n pathPrefix = prefix;\n}\n\n/** Register local path aliases used by Node polyfills. */\nexport function addAliases(aliases: Record<string, string>): void {\n for (const [alias, replacement] of Object.entries(aliases)) {\n fileAliases.set(alias, replacement);\n }\n}\n\n/** Resolve a local path using the polyfills path aliases and prefix. */\nexport function resolvePath(filename: string): string {\n for (const [alias, replacement] of fileAliases) {\n if (filename.startsWith(alias)) {\n filename = filename.replace(alias, replacement);\n }\n }\n if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n filename = `${pathPrefix}${filename}`;\n }\n return filename;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {resolvePath} from '../utils/path-utils';\nimport type {FileStat} from '../utils/filesystem-types';\nimport fs from 'fs';\n\nexport class NodeFile {\n handle: number;\n size: number;\n bigsize: bigint;\n url: string;\n\n constructor(path: string, flags: 'r' | 'w' | 'wx' | 'a+', mode?: number) {\n path = resolvePath(path);\n this.handle = fs.openSync(path, flags, mode);\n const stats = fs.fstatSync(this.handle, {bigint: true});\n this.size = Number(stats.size);\n this.bigsize = stats.size;\n this.url = path;\n }\n\n async close(): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.close(this.handle, err => (err ? reject(err) : resolve()));\n });\n }\n\n async truncate(length: number): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.ftruncate(this.handle, length, err => {\n if (err) {\n reject(err);\n } else {\n this.bigsize = BigInt(length);\n this.size = Number(this.bigsize);\n resolve();\n }\n });\n });\n }\n\n async append(data: Uint8Array): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.appendFile(this.handle, data, err => {\n if (err) {\n reject(err);\n } else {\n this.bigsize = this.bigsize + BigInt(data.length);\n this.size = Number(this.bigsize);\n resolve();\n }\n });\n });\n }\n\n async stat(): Promise<FileStat> {\n return await new Promise((resolve, reject) =>\n fs.fstat(this.handle, {bigint: true}, (err, info) => {\n const stats: FileStat = {\n size: Number(info.size),\n bigsize: info.size,\n isDirectory: info.isDirectory()\n };\n if (err) {\n reject(err);\n } else {\n resolve(stats);\n }\n })\n );\n }\n\n async read(offset: number | bigint, length: number): Promise<ArrayBuffer> {\n const arrayBuffer = new ArrayBuffer(length);\n let bigOffset = BigInt(offset);\n\n let totalBytesRead = 0;\n const uint8Array = new Uint8Array(arrayBuffer);\n\n let position;\n // Read in loop until we get required number of bytes\n while (length > 0) {\n const bytesRead = await readBytes(this.handle, uint8Array, 0, length, bigOffset);\n\n // Check if end of file reached\n if (bytesRead === 0) {\n break;\n }\n\n totalBytesRead += bytesRead;\n bigOffset += BigInt(bytesRead);\n length -= bytesRead;\n\n // Advance position unless we are using built-in position advancement\n if (position !== undefined) {\n position += bytesRead;\n }\n }\n return totalBytesRead < length ? arrayBuffer.slice(0, totalBytesRead) : arrayBuffer;\n }\n\n async write(\n arrayBuffer: ArrayBuffer,\n offset: number | bigint = 0,\n length: number = arrayBuffer.byteLength\n ): Promise<number> {\n return new Promise((resolve, reject) => {\n // TODO - Node.js doesn't offer write with bigint offsets???\n const nOffset = Number(offset);\n const uint8Array = new Uint8Array(arrayBuffer, Number(offset), length);\n fs.write(this.handle, uint8Array, 0, length, nOffset, (err, bytesWritten) =>\n err ? reject(err) : resolve(bytesWritten)\n );\n });\n }\n}\n\nasync function readBytes(\n fd: number,\n uint8Array: Uint8Array,\n offset: number,\n length: number,\n position: number | bigint | null\n): Promise<number> {\n return await new Promise<number>((resolve, reject) =>\n fs.read(fd, uint8Array, offset, length, position, (err, bytesRead) =>\n err ? reject(err) : resolve(bytesRead)\n )\n );\n}\n\n// TODO - implement streaming write\n/*\nexport interface WriteStreamOptions {\n flags?: string;\n encoding?: 'utf8';\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n}\n\nexport class NodeStreamWritableFile implements WritableFile {\n outputStream: fs.WriteStream | Writable;\n\n constructor(pathOrStream: string | Writable, options?: WriteStreamOptions) {\n this.outputStream =\n typeof pathOrStream === 'string' ? fs.createWriteStream(pathOrStream, options) : pathOrStream;\n }\n\n async write(buffer: ArrayBuffer): Promise<void> {\n return new Promise((resolve, reject) => {\n const uint8Array = new Uint8Array(buffer);\n this.outputStream.write(uint8Array, (err) => (err ? reject(err) : resolve()));\n });\n }\n\n async close(): Promise<void> {\n if (this.outputStream instanceof fs.WriteStream) {\n return new Promise((resolve, reject) => {\n const stream = this.outputStream as fs.WriteStream;\n stream.close((err) => (err ? reject(err) : resolve()));\n });\n }\n }\n}\n*/\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport fsPromise from 'fs/promises';\nimport type {FileStat} from '../utils/filesystem-types';\nimport {NodeFile} from './node-file';\nimport {fetchNode} from './fetch-node';\n\n// import {fetchFile} from \"../fetch/fetch-file\"\n// import {selectLoader} from \"../api/select-loader\";\n\n/**\n * FileSystem pass-through for Node.js\n * Compatible with BrowserFileSystem.\n * @param options\n */\nexport class NodeFileSystem {\n readable: boolean = true;\n writable: boolean = true;\n\n // implements FileSystem\n constructor() {}\n\n async readdir(dirname = '.', options?: {}): Promise<any[]> {\n return await fsPromise.readdir(dirname, options);\n }\n\n async stat(path: string): Promise<FileStat> {\n const info = await fsPromise.stat(path, {bigint: true});\n return {\n size: Number(info.size),\n bigsize: info.size,\n isDirectory: info.isDirectory()\n };\n }\n\n async unlink(path: string): Promise<void> {\n return await fsPromise.unlink(path);\n }\n\n async fetch(path: string, options: RequestInit): Promise<Response> {\n return await fetchNode(path, options);\n }\n\n // implements IRandomAccessFileSystem\n async openReadableFile(path: string, flags: 'r' = 'r'): Promise<NodeFile> {\n return new NodeFile(path, flags);\n }\n\n async openWritableFile(path: string, flags: 'w' | 'wx' = 'w', mode?: any): Promise<NodeFile> {\n return new NodeFile(path, flags, mode);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport fs from 'fs';\nimport {Readable} from 'stream';\nimport {resolvePath} from '../utils/path-utils';\nimport {decompressReadStream} from './stream-utils.node.js';\n\nconst isBoolean = x => typeof x === 'boolean';\nconst isFunction = x => typeof x === 'function';\nconst isObject = x => x !== null && typeof x === 'object';\nconst isReadableNodeStream = x =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\n\n/**\n * Enables\n * @param url\n * @param options\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport async function fetchNode(url: string, options?: RequestInit): Promise<Response> {\n // Support `file://` protocol\n const FILE_PROTOCOL_REGEX = /^file:\\/\\//;\n url.replace(FILE_PROTOCOL_REGEX, '/');\n\n // Remove any query parameters, as they have no meaning\n let noqueryUrl = url.split('?')[0];\n noqueryUrl = resolvePath(noqueryUrl);\n\n const responseHeaders = new Headers();\n // Automatically decompress gzipped files with .gz extension\n if (url.endsWith('.gz')) {\n // url = url.slice(0, -3);\n responseHeaders.set('content-encoding', 'gzip');\n }\n if (url.endsWith('.br')) {\n // url = url.slice(0, -3);\n responseHeaders.set('content-encoding', 'br');\n }\n\n try {\n // Now open the stream\n const body = await new Promise<fs.ReadStream>((resolve, reject) => {\n // @ts-ignore\n const stream = fs.createReadStream(noqueryUrl, {encoding: null});\n stream.once('readable', () => resolve(stream));\n stream.on('error', error => reject(error));\n });\n\n let bodyStream: Readable = body;\n\n // Check for content-encoding and create a decompression stream\n if (isReadableNodeStream(body)) {\n bodyStream = decompressReadStream(body, responseHeaders);\n } else if (typeof body === 'string') {\n bodyStream = Readable.from([new TextEncoder().encode(body)]);\n } else {\n bodyStream = Readable.from([body || new ArrayBuffer(0)]);\n }\n\n const status = 200;\n const statusText = 'OK';\n const headers = getHeadersForFile(noqueryUrl);\n // @ts-expect-error\n const response = new Response(bodyStream, {headers, status, statusText});\n Object.defineProperty(response, 'url', {value: url});\n return response;\n } catch (error) {\n // console.error(error);\n const errorMessage = (error as Error).message;\n const status = 400;\n const statusText = errorMessage;\n const headers = {};\n const response = new Response(errorMessage, {headers, status, statusText});\n Object.defineProperty(response, 'url', {value: url});\n return response;\n }\n}\n\nfunction getHeadersForFile(noqueryUrl: string): Headers {\n const headers = {};\n\n // Fix up content length if we can for best progress experience\n if (!headers['content-length']) {\n const stats = fs.statSync(noqueryUrl);\n headers['content-length'] = stats.size;\n }\n\n // Automatically decompress gzipped files with .gz extension\n if (noqueryUrl.endsWith('.gz')) {\n noqueryUrl = noqueryUrl.slice(0, -3);\n headers['content-encoding'] = 'gzip';\n }\n\n return new Headers(headers);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport zlib from 'zlib';\nimport {Readable} from 'stream';\nimport {toArrayBuffer} from '../utils/buffer-utils';\n\n/**\n *\n */\nexport function decompressReadStream(readStream: Readable, headers?: Headers) {\n switch (headers?.get('content-encoding')) {\n case 'br':\n return readStream.pipe(zlib.createBrotliDecompress());\n case 'gzip':\n return readStream.pipe(zlib.createGunzip());\n case 'deflate':\n return readStream.pipe(zlib.createDeflate());\n default:\n // No compression or an unknown one, just return it as is\n return readStream;\n }\n}\n\n/**\n *\n * @param readStream\n * @returns\n */\nexport async function concatenateReadStream(readStream): Promise<ArrayBuffer> {\n const arrayBufferChunks: ArrayBuffer[] = [];\n\n return await new Promise((resolve, reject) => {\n readStream.on('error', error => reject(error));\n\n // Once the readable callback has been added, stream switches to \"flowing mode\"\n // In Node 10 (but not 12 and 14) this causes `data` and `end` to never be called unless we read data here\n readStream.on('readable', () => readStream.read());\n\n readStream.on('data', chunk => {\n if (typeof chunk === 'string') {\n reject(new Error('Read stream not binary'));\n }\n arrayBufferChunks.push(toArrayBuffer(chunk));\n });\n\n readStream.on('end', () => {\n const arrayBuffer = concatenateArrayBuffers(arrayBufferChunks);\n resolve(arrayBuffer);\n });\n });\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers\n * @return A concatenated ArrayBuffer\n * @note duplicates loader-utils since polyfills should be independent\n */\nexport function concatenateArrayBuffers(sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map(source2 =>\n source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\nimport * as crypto from 'crypto'; // Node.js builtin\n\ntype CryptoHashOptions = {\n crypto: {\n algorithm: string;\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\n/**\n * Calculates Cryptographic Hash using Node.js crypto library\n * @deprecated Warning, experimental class\n */\nexport class NodeHash {\n readonly name = 'crypto-node';\n\n options: CryptoHashOptions;\n // @ts-ignore\n private _algorithm;\n // @ts-ignore\n private _hash;\n\n constructor(options: CryptoHashOptions) {\n this.options = options;\n this.hashBatches = this.hashBatches.bind(this);\n if (!this.options?.crypto?.algorithm) {\n throw new Error(this.name);\n }\n }\n\n /** Complete the optional hash initialization step. */\n async preload(): Promise<void> {\n return;\n }\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n async hash(input: ArrayBuffer, encoding: 'hex' | 'base64'): Promise<string> {\n // await this.preload();\n const algorithm = this.options?.crypto?.algorithm?.toLowerCase();\n try {\n if (!crypto.createHash) {\n throw new Error('crypto.createHash not available');\n }\n const hash = crypto.createHash?.(algorithm);\n const inputArray = new Uint8Array(input);\n return hash.update(inputArray).digest('base64');\n } catch (error) {\n throw Error(`${algorithm} hash not available. ${error}`);\n }\n }\n\n async *hashBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n encoding: 'hex' | 'base64' = 'base64'\n ): AsyncIterable<ArrayBuffer> {\n // await this.preload();\n if (!crypto.createHash) {\n throw new Error('crypto.createHash not available');\n }\n const hash = crypto.createHash?.(this.options?.crypto?.algorithm?.toLowerCase());\n for await (const chunk of asyncIterator) {\n // https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer\n const inputArray = new Uint8Array(chunk);\n hash.update(inputArray);\n yield chunk;\n }\n // We can pass our encoding constant directly to Node.js digest as it already supports `hex` and `base64`\n const digest = hash.digest(encoding);\n this.options?.crypto?.onEnd?.({hash: digest});\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* eslint-disable dot-notation */\nimport {isBrowser} from './utils/is-browser';\n\nimport {TextDecoder, TextEncoder} from './text-encoder/text-encoder';\n\n// Node specific\nimport {atob, btoa} from './buffer/btoa.node.js';\n\nimport {encodeImageNode, parseImageNode, NODE_FORMAT_SUPPORT} from './images/image-codecs-node';\nimport {\n createImageBitmapNode,\n NodeImageBitmap,\n getImageBitmapDataNode,\n isNodeImageBitmap\n} from './images/node-image-bitmap';\n\n// FILESYSTEM POLYFILLS\nimport {NodeFile} from './filesystems/node-file';\nimport {NodeFileSystem} from './filesystems/node-filesystem';\nimport {fetchNode} from './filesystems/fetch-node';\n\nimport {NodeHash} from './crypto/node-hash';\n\n// NODE VERSION\nimport {versions} from 'node:process';\nimport {ReadableStream as NodeReadableStream} from 'node:stream/web';\nexport const nodeVersion = parseInt(versions.node.split('.')[0]);\n\n// STREAM POLYFILLS\nimport {makeNodeStream} from './streams/make-node-stream';\n\n// Native Blob and File constructors and the FileReader adapter.\nimport {installFilePolyfills} from './file/install-file-polyfills';\n/** Native Node.js Blob constructor. */\nexport const Blob = globalThis.Blob;\n/** Native Node.js File constructor. */\nexport const File = globalThis.File;\ninstallFilePolyfills();\n\nif (isBrowser) {\n // eslint-disable-next-line no-console\n console.error(\n 'loaders.gl: The @loaders.gl/core/polyfills should only be used in Node.js environments'\n );\n}\n\nglobalThis.loaders = globalThis.loaders || {};\n\n// STREAM POLYFILLS\nexport {makeNodeStream} from './streams/make-node-stream';\nglobalThis.loaders.makeNodeStream = makeNodeStream;\n\n// FILESYSTEM POLYFILLS\nglobalThis.loaders.NodeFile = NodeFile;\nglobalThis.loaders.NodeFileSystem = NodeFileSystem;\nglobalThis.loaders.fetchNode = fetchNode;\n\n// CRYPTO POLYFILLS\nglobalThis.loaders.NodeHash = NodeHash;\n\n// POLYFILLS: TextEncoder, TextDecoder\n// - Recent Node versions have these classes but virtually no encodings unless special build.\n// - Browser: Edge, IE11 do not have these\n\nif (!globalThis.TextEncoder) {\n // @ts-expect-error\n globalThis.TextEncoder = TextEncoder;\n}\n\nif (!globalThis.TextDecoder) {\n // @ts-expect-error\n globalThis.TextDecoder = TextDecoder;\n}\n\nif (!globalThis.ReadableStream) {\n globalThis.ReadableStream = NodeReadableStream as typeof ReadableStream;\n}\n\n// POLYFILLS: btoa, atob\n// - Node: Yes\n// - Browser: No\n\nif (!('atob' in globalThis) && atob) {\n globalThis['atob'] = atob;\n}\nif (!('btoa' in globalThis) && btoa) {\n globalThis['btoa'] = btoa;\n}\n\n// NODE IMAGE FUNCTIONS:\n// These are not official polyfills but used by the @loaders.gl/images module if installed\n// TODO - is there an appropriate Image API we could polyfill using an adapter?\n\nglobalThis.loaders.encodeImageNode = encodeImageNode;\nglobalThis.loaders.parseImageNode = parseImageNode;\nglobalThis.loaders.imageFormatsNode = NODE_FORMAT_SUPPORT;\nglobalThis.loaders.createImageBitmapNode = createImageBitmapNode;\nglobalThis.loaders.getImageBitmapDataNode = getImageBitmapDataNode;\nglobalThis.loaders.isImageBitmapNode = isNodeImageBitmap;\n\nif (!globalThis.ImageBitmap) {\n (globalThis as any).ImageBitmap = NodeImageBitmap;\n}\n\nif (!('getImageBitmapData' in globalThis)) {\n (globalThis as any).getImageBitmapData = getImageBitmapDataNode;\n}\n\n// Deprecated, remove after republish\nglobalThis._parseImageNode = parseImageNode;\nglobalThis._imageFormatsNode = NODE_FORMAT_SUPPORT;\n\n// LOAD LIBRARY\n\nimport {\n readFileAsArrayBuffer,\n readFileAsText,\n requireFromFile,\n requireFromString\n} from './load-library/require-utils.node.js';\n\nglobalThis.loaders.readFileAsArrayBuffer = readFileAsArrayBuffer;\nglobalThis.loaders.readFileAsText = readFileAsText;\nglobalThis.loaders.requireFromFile = requireFromFile;\nglobalThis.loaders.requireFromString = requireFromString;\n\nexport {installFilePolyfills};\nexport {setPathPrefix, addAliases} from './utils/path-utils';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Readable, getDefaultHighWaterMark} from 'node:stream';\nimport type {ReadableOptions} from 'node:stream';\n\nexport type MakeStreamOptions = ReadableOptions;\n\n/** Builds a Node stream of byte chunks from a synchronous or asynchronous iterable. */\nexport function makeNodeStream<Value>(\n source: Iterable<Value> | AsyncIterable<Value>,\n options?: ReadableOptions\n): Readable {\n const iterator =\n Symbol.asyncIterator in source ? source[Symbol.asyncIterator]() : source[Symbol.iterator]();\n let iteratorFailed = false;\n const convertedIterator: AsyncIterableIterator<Uint8Array> = {\n async next() {\n try {\n const result = await iterator.next();\n if (result.done) {\n await iterator.return?.();\n return {done: true, value: undefined};\n }\n return {done: false, value: new Uint8Array(result.value as ArrayBuffer)};\n } catch (error) {\n iteratorFailed = true;\n throw error;\n }\n },\n async return(value?: unknown) {\n await iterator.return?.(value as never);\n return {done: true, value: undefined};\n },\n async throw(error?: unknown) {\n if (iterator.throw) {\n await iterator.throw(error);\n }\n return {done: true, value: undefined};\n },\n [Symbol.asyncIterator]() {\n return this;\n }\n };\n\n const objectMode = options?.objectMode ?? false;\n const stream = Readable.from(convertedIterator, {\n highWaterMark: getDefaultHighWaterMark(objectMode),\n ...options,\n objectMode\n });\n const destroyStream = stream._destroy;\n stream._destroy = function (error, callback) {\n destroyStream.call(this, error, destroyError => {\n // The previous adapter consumed explicit destroy errors after forwarding them to the iterator.\n callback(!iteratorFailed && destroyError === error ? null : destroyError);\n });\n };\n return stream;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\nimport {atob} from '../buffer/btoa.node.js';\n\nexport class FileReaderPolyfill implements FileReader {\n // onload: ({result: any}) => void;\n onload;\n onabort;\n onerror;\n error;\n onloadstart;\n onloadend;\n onprogress;\n\n readyState;\n result;\n DONE;\n EMPTY;\n LOADING;\n addEventListener;\n removeEventListener;\n dispatchEvent;\n\n constructor() {\n this.onload = null;\n }\n\n abort(): void {\n return;\n }\n\n async readAsArrayBuffer(blob: Blob): Promise<void> {\n const arrayBuffer = await blob.arrayBuffer();\n if (this.onload) {\n this.onload({target: {result: arrayBuffer}});\n }\n }\n\n async readAsBinaryString(blob) {\n throw Error('Not implemented');\n }\n\n async readAsDataURL(blob) {\n const text = await blob.text();\n const dataUrl = `data://;base64,${atob(text)}`;\n if (this.onload) {\n this.onload({target: {result: dataUrl}});\n }\n }\n\n async readAsText(blob) {\n const text = await blob.text();\n if (this.onload) {\n this.onload({target: {result: text}});\n }\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\nimport {FileReaderPolyfill} from './file-reader';\n\nexport function installFilePolyfills() {\n if (typeof FileReader === 'undefined' && !globalThis.FileReader) {\n // @ts-ignore;\n globalThis.FileReader = FileReaderPolyfill;\n }\n\n return global;\n}\n", "// SPDX-License-Identifier: MIT\n\n// Fork of https://github.com/floatdrop/require-from-string/blob/master/index.js\n// Copyright (c) Vsevolod Strukchinsky <floatdrop@gmail.com> (github.com/floatdrop)\n// MIT license\n\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\n\nimport Module from 'module';\nimport path from 'path';\nimport fs from 'fs';\nimport {fileURLToPath} from 'node:url';\nimport {ensureArrayBuffer} from '../utils/buffer-utils';\n\n/**\n * Loads exact file bytes from a local path, file URL or HTTP(S) resource.\n * Typed-array byte ranges are preserved rather than exposing a pooled Node backing buffer.\n * @param filename - Resource location; relative file paths resolve against the working directory.\n */\nexport async function readFileAsArrayBuffer(filename: string): Promise<ArrayBuffer> {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n return await response.arrayBuffer();\n }\n return ensureArrayBuffer(fs.readFileSync(resolveFilePath(filename)));\n}\n\n/**\n * Loads UTF-8 text from a local path, file URL or HTTP(S) resource.\n * @param filename - Resource location; relative file paths resolve against the working directory.\n */\nexport async function readFileAsText(filename: string): Promise<string> {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n return await response.text();\n }\n const text = fs.readFileSync(resolveFilePath(filename), 'utf8');\n return text;\n}\n\n// Node.js Dynamically require from file\n// Relative names are resolved relative to cwd\n// This indirect function is provided because webpack will try to bundle `module.require`.\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\n/** Loads a CommonJS library, resolving local relative imports against the library file. */\nexport async function requireFromFile(filename: string): Promise<any> {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n const code = await response.text();\n return requireFromString(code);\n }\n\n const filePath = resolveFilePath(filename);\n const code = fs.readFileSync(filePath, 'utf8');\n return requireFromString(code, filePath);\n}\n\n// Dynamically require from string\n// - `code` - Required - Type: string - Module code.\n// - `filename` - Type: string - Default: '' - Optional filename.\n// - `options.appendPaths` Type: Array List of paths, that will be appended to module paths.\n// Useful, when you want to be able require modules from these paths.\n// - `options.prependPaths` Type: Array Same as appendPaths, but paths will be prepended.\n/** Evaluates a CommonJS library with an optional filename/file URL and module search paths. */\nexport function requireFromString(\n code: string,\n filename = '',\n options?: {\n prependPaths?: string[];\n appendPaths?: string[];\n }\n): any {\n if (typeof filename === 'object') {\n options = filename;\n filename = '';\n }\n if (filename.startsWith('file:')) filename = fileURLToPath(filename);\n\n if (typeof code !== 'string') {\n throw new Error(`code must be a string, not ${typeof code}`);\n }\n\n // @ts-ignore\n const paths = Module._nodeModulePaths(path.dirname(filename));\n\n const parent = typeof module !== 'undefined' && module?.parent;\n\n // @ts-ignore\n const newModule = new Module(filename, parent);\n newModule.filename = filename;\n newModule.paths = ([] as string[])\n .concat(options?.prependPaths || [])\n .concat(paths)\n .concat(options?.appendPaths || []);\n // @ts-ignore\n newModule._compile(code, filename);\n\n if (parent && parent.children) {\n parent.children.splice(parent.children.indexOf(newModule), 1);\n }\n\n return newModule.exports;\n}\n\n/** Resolves local paths and file URLs without treating URL escapes or drive paths as relative names. */\nfunction resolveFilePath(filename: string): string {\n return filename.startsWith('file:') ? fileURLToPath(filename) : path.resolve(filename);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Polyfills increases the bundle size significantly. Use it for NodeJS worker only\nimport '@loaders.gl/core/polyfills';\nimport {createLoaderWorker} from '@loaders.gl/core/loader-utils';\nimport {DracoLoaderWithParser} from '../draco-loader';\n\ncreateLoaderWorker(DracoLoaderWithParser);\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LoaderWithParser, LoaderContext} from '@loaders.gl/core/loader-utils';\nimport {extractLoadLibraryOptions} from '@loaders.gl/core/worker-utils';\nimport type {ArrowTable} from '@loaders.gl/core/schema';\nimport type {DracoMesh} from './lib/draco-types';\nimport {parseDraco} from './lib/parse-draco';\nimport {loadDracoDecoderModule} from './lib/draco-module-loader';\nimport {DracoLoader as DracoLoaderMetadata} from './draco-loader-types';\nimport type {DracoLoaderOptions} from './draco-loader-options';\n\nconst {preload: _DracoLoaderPreload, ...DracoLoaderMetadataWithoutPreload} = DracoLoaderMetadata;\n\nexport type {DracoLoaderOptions} from './draco-loader-options';\n\n/**\n * Loader for Draco3D compressed geometries\n */\nexport const DracoLoaderWithParser = {\n ...DracoLoaderMetadataWithoutPreload,\n parse\n} as const satisfies LoaderWithParser<DracoMesh | ArrowTable, never, DracoLoaderOptions>;\n\n/** Decodes compressed geometry through the selected Draco runtime. */\nasync function parse(\n arrayBuffer: ArrayBuffer,\n options?: DracoLoaderOptions,\n context?: LoaderContext\n): Promise<DracoMesh | ArrowTable> {\n return await parseDraco(\n arrayBuffer,\n options,\n async () =>\n await loadDracoDecoderModule(\n extractLoadLibraryOptions(options),\n options?.draco?.backend === 'javascript' || options?.draco?.backend === 'js'\n ? 'js'\n : 'wasm',\n options?.draco?.decoderProfile\n ),\n context\n );\n}\n"],
5
+ "mappings": "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KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC7gB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACphB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC7gB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,IAAI;AAAA,EAC1mB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EAC1mB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAI;AAAA,EACrhB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EAC/kB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC/gB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAI;AAAA,EAClhB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACpiB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC/gB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACjhB,UAAS,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACnoB,UAAS,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACnoB,aAAY,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,MAAK,KAAI,KAAI,MAAK,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,OAAM,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChjB,eAAc,CAAC,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACtnB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChiB,gBAAe,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EAC/nB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChiB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAI;AAAA,EACpiB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChiB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACjmB,gBAAe,CAAC,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,MAAK,IAAI;AAAA,EAChmB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACliB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,GAAG;AAAA,EACjiB,kBAAiB,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK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",
6
+ "names": ["inRange", "exports", "module", "exports", "module", "fs", "path", "buffer", "exports", "module", "exports", "module", "path", "family", "familySync", "version", "versionSync", "exports", "module", "exports", "module", "exports", "module", "index", "exports", "module", "exports", "module", "exports", "module", "version", "exports", "module", "parse", "version", "exports", "module", "parse", "version", "exports", "module", "parse", "version", "exports", "module", "version", "exports", "module", "parse", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "parse", "version", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "parse", "version", "exports", "module", "parse", "version", "exports", "module", "exports", "module", "cache", "version", "exports", "module", "version", "exports", "module", "version", "exports", "module", "exports", "module", "versions", "exports", "module", "versions", "exports", "module", "require_valid", "exports", "module", "exports", "module", "version", "exports", "module", "version", "exports", "module", "version", "exports", "module", "exports", "module", "versions", "version", "exports", "module", "require_semver", "exports", "module", "parse", "semver", "detectLibc", "_a", "globalLibvipsVersion", "pkgConfigPath", "import_detect_libc", "require", "runtimePlatformArch", "isUnsupportedNodeRuntime", "prebuiltPlatforms", "minimumLibvipsVersion", "_a", "clone", "debuglog", "queueListener", "util", "stream", "fn", "metadata", "stats", "Sharp", "extend", "Sharp", "composite", "Sharp", "flip", "flop", "gamma", "kernel", "threshold", "Sharp", "exports", "module", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__export", "__copyProps", "string", "color", "integer", "grayscale", "queue", "path", "fn", "object", "self", "number", "exports", "module", "tint", "greyscale", "grayscale", "colourspace", "color", "Sharp", "bool", "Sharp", "path", "format", "Sharp", "concurrency", "simd", "import_node_module", "import_detect_libc", "import_meta", "require", "runtimePlatform", "_", "detectLibc", "events", "Sharp", "module", "version", "isBrowser", "nodeVersion", "nodeParentPort", "object", "parentPort", "buffer", "process", "preload", "_a", "_b", "_c", "_d", "_e", "arrayBuffer", "pending", "finished", "import_meta", "path", "_a", "_b", "_c", "isInternalThread", "locks", "parentPort", "structuredClone", "threadName", "import_worker_threads", "init_worker_threads", "_a", "isMainThread", "initializeTaskWorker", "init_task_runtime", "getTransferList", "object", "isTransferable", "init_get_transfer_list", "createWorker", "process", "initializeTaskWorker", "_a", "getTransferList", "init_create_worker", "init_task_runtime", "init_get_transfer_list", "_a", "_b", "isBrowser", "requireFromFile", "moduleUrl", "_e", "readFileAsArrayBuffer", "readFileAsText", "init_worker_utils", "init_create_worker", "createWorker", "processOnMainThread", "arrayBuffer", "fetch", "_a", "init_worker_utils", "init_types", "init_mat3", "init_mat4", "init_quat", "init_vec2", "init_vec3", "init_vec4", "init_dist", "init_types", "init_mat3", "init_mat4", "init_quat", "init_vec2", "init_vec3", "init_vec4", "v", "isBoolean", "isFunction", "isObject", "isReadableNodeStream", "toUint8Array", "buffer", "index", "source", "buffer", "toUint8Array", "stream", "events", "err", "fn", "pump", "MetadataVersion", "UnionMode", "Precision", "DateUnit", "TimeUnit", "IntervalUnit", "require_constants", "exports", "exports", "exports", "Encoding", "exports", "ByteBuffer", "position", "exports", "Builder", "exports", "BodyCompressionMethod", "CompressionType", "Buffer", "init_buffer", "flatbuffers", "init_buffer", "index", "Buffer", "flatbuffers", "Endianness", "DictionaryKind", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "Date", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "Map", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "flatbuffers", "index", "flatbuffers", "init_utf8", "flatbuffers", "Type", "flatbuffers", "index", "flatbuffers", "index", "MessageHeader", "Type", "BufferType", "x", "number", "buffer", "number", "Type", "Null", "Binary", "BinaryView", "LargeBinary", "Utf8", "Utf8View", "LargeUtf8", "Bool", "Decimal", "Duration", "List", "LargeList", "FixedSizeBinary", "FixedSizeList", "init_type", "Type", "fn", "init_type", "fn", "init_vector", "init_type", "index", "BinaryView", "_a", "_b", "_c", "_d", "init_struct", "instance", "fn", "instance", "init_vector", "init_map", "init_struct", "index", "_a", "init_map", "init_vector", "instance", "init_vector", "init_map", "init_struct", "index", "getBool", "setBool", "index", "init_vector", "init_type", "_a", "byteLength", "nullCount", "buffer", "index", "Type", "BinaryView", "instance", "toUint8Array", "Utf8View", "length", "index", "fn", "getBool", "Type", "instance", "instance", "init_type", "init_vector", "init_type", "_b", "index", "_d", "_c", "Type", "instance", "begin", "end", "newData", "_a", "cache", "init_buffer", "index", "buffer", "init_vector", "init_map", "init_type", "init_buffer", "size", "index", "_a", "_b", "_c", "_d", "pending", "flatbuffers", "index", "version", "Schema", "Field", "init_schema", "init_type", "metadata", "instance", "flatbuffers", "Builder", "ByteBuffer", "init_schema", "toUint8Array", "Schema", "version", "block", "index", "flatbuffers", "index", "version", "instance", "init_utf8", "Date", "Map", "Schema", "RecordBatch", "DictionaryBatch", "Field", "FieldNode", "metadata", "Null", "Binary", "LargeBinary", "BinaryView", "Utf8", "LargeUtf8", "Utf8View", "Bool", "List", "LargeList", "Decimal", "Duration", "FixedSizeBinary", "FixedSizeList", "init_schema", "init_type", "init_message", "Schema", "RecordBatch", "DictionaryBatch", "version", "FieldNode", "Field", "Null", "Binary", "LargeBinary", "BinaryView", "Utf8", "LargeUtf8", "Utf8View", "Bool", "List", "LargeList", "Decimal", "Date", "Duration", "FixedSizeBinary", "FixedSizeList", "Map", "BodyCompression", "instance", "Buffer", "flatbuffers", "Builder", "ByteBuffer", "Message", "init_message", "init_buffer", "init_schema", "init_type", "toUint8Array", "metadata", "buffer", "AsyncQueue", "AsyncQueue", "toUint8Array", "_d", "_e", "_f", "_a", "_c", "isReadableNodeStream", "init_file", "buffer", "toUint8Array", "position", "Int64", "Uint64", "init_int", "buffer", "negate", "_a", "_b", "init_interval", "encoder", "init_schema", "init_type", "init_int", "init_interval", "Field", "buffer", "_a", "Int64", "init_binary", "init_buffer", "index", "toUint8Array", "pending", "init_buffer", "index", "toUint8Array", "pending", "init_bool", "init_buffer", "index", "init_date", "init_decimal", "init_type", "index", "init_schema", "init_type", "index", "FixedSizeList", "Field", "index", "init_interval", "init_duration", "init_int", "index", "init_list", "init_schema", "init_type", "init_buffer", "List", "Field", "pending", "index", "init_schema", "init_type", "init_buffer", "LargeList", "Field", "pending", "index", "init_map", "init_schema", "init_type", "index", "pending", "Field", "init_null", "index", "init_struct", "init_schema", "init_type", "index", "Field", "init_timestamp", "init_time", "init_union", "init_schema", "init_buffer", "init_type", "index", "Field", "init_utf8", "init_binary", "init_buffer", "index", "pending", "init_buffer", "index", "pending", "init_type", "init_buffer", "buffer", "index", "BinaryView", "toUint8Array", "index", "instance", "init_binary", "init_bool", "init_date", "init_decimal", "init_interval", "init_duration", "init_int", "init_list", "init_map", "init_null", "init_struct", "init_timestamp", "init_time", "init_union", "init_utf8", "instance", "instance", "index", "type", "RecordBatch", "Schema", "Null", "Utf8", "Bool", "List", "Field", "_d", "_a", "_c", "init_schema", "init_type", "init_vector", "init_recordbatch", "RecordBatch", "_a", "init_type", "init_recordbatch", "init_vector", "init_schema", "init_type", "init_recordbatch", "Schema", "RecordBatch", "Field", "batches", "_c", "_b", "index", "instance", "data", "Null", "indices", "oldToNew", "_a", "Type", "_b", "_c", "RecordBatch", "init_recordbatch", "init_vector", "init_schema", "init_type", "Schema", "Field", "index", "instance", "Null", "_a", "metadata", "buffer", "index", "init_message", "init_file", "toUint8Array", "Message", "buffer", "_a", "self", "flatbuffers", "init_vector", "init_type", "init_message", "init_file", "init_recordbatch", "index", "isReadableNodeStream", "_a", "_d", "_e", "_f", "_c", "RecordBatch", "DictionaryBatch", "buffer", "block", "index", "_a", "buffer", "init_vector", "init_recordbatch", "init_message", "init_type", "RecordBatch", "FieldNode", "init_vector", "init_interval", "init_type", "getBool", "_a", "_b", "_d", "RecordBatch", "flatbuffers", "init_message", "init_vector", "init_type", "init_recordbatch", "isObject", "BodyCompression", "buffer", "Message", "toUint8Array", "DictionaryBatch", "index", "import_node_stream", "fn", "import_node_stream", "init_builder", "import_node_stream", "init_reader", "import_node_stream", "init_writer", "it", "toUint8Array", "init_iterable", "init_builder", "_a", "queue", "reader", "init_reader", "init_writer", "reader", "Schema", "Field", "RecordBatch", "init_schema", "init_type", "init_vector", "init_recordbatch", "util", "init_type", "init_vector", "init_schema", "init_map", "init_struct", "init_bool", "init_null", "init_date", "init_decimal", "init_int", "init_time", "init_timestamp", "init_interval", "init_duration", "init_utf8", "init_binary", "init_list", "init_union", "init_message", "init_recordbatch", "init_iterable", "init_builder", "init_reader", "init_writer", "Binary", "BinaryView", "Bool", "Decimal", "Duration", "Field", "FixedSizeBinary", "FixedSizeList", "LargeBinary", "LargeList", "LargeUtf8", "List", "Message", "Null", "RecordBatch", "Schema", "Type", "Utf8", "Utf8View", "util", "init_builder", "init_reader", "init_writer", "Schema", "metadata", "Field", "Null", "Binary", "FixedSizeBinary", "Bool", "Utf8", "Decimal", "List", "FixedSizeList", "LargeList", "init_float16", "init_dist", "Schema", "Field", "FixedSizeList", "List", "init_schema", "init_float16", "typedArray", "FixedSizeList", "Field", "init_schema", "_a", "_b", "_c", "Schema", "metadata", "Field", "FixedSizeList", "init_schema", "metadata", "metadata", "_a", "position", "arrayBuffer", "metadata", "_b", "decoded", "arrayBuffer", "_a", "_b", "loadLibrary", "_a", "isBrowser", "init_worker_utils", "getLibraryCacheKey", "decoderLibrary", "loadLibrary", "isBrowser", "decoderInitializer", "exports", "_a", "module", "isArrowTable", "isArrowRecordBatch", "isArrowVector", "RecordBatch", "RecordBatch", "_a", "VERSION", "init_version", "init_worker_utils", "arrayBuffer", "_a", "_DracoLoaderPreload", "DracoLoaderMetadataWithoutPreload", "init_worker_utils", "arrayBuffer", "_a", "_DracoLoaderPreload", "DracoLoaderMetadataWithoutPreload", "arrayBuffer", "_a", "DracoWASMLoaderWithParser", "DracoJavaScriptLoaderWithParser", "Draco3DLoaderWithParser", "init_version", "VERSION", "string", "stream", "index", "code_point", "TextDecoder", "TextEncoder", "buffer", "string", "arrayBuffer", "sharp", "buffer", "sharp", "format", "path", "fs", "stats", "arrayBuffer", "position", "import_fs", "zlib", "stream", "fs", "stats", "fsPromise", "path", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "import_node_stream", "_a", "stream", "arrayBuffer", "import_fs", "fs", "code", "Module", "path", "TextEncoder", "TextDecoder", "NodeReadableStream", "init_worker_utils", "_DracoLoaderPreload", "DracoLoaderMetadataWithoutPreload", "arrayBuffer", "_a", "_b", "_c"]
7
+ }