@nodetool-ai/gpu 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/README.md +52 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/blend/blendModes.d.ts +67 -0
  4. package/dist/blend/blendModes.d.ts.map +1 -0
  5. package/dist/blend/blendModes.js +80 -0
  6. package/dist/blend/blendModes.js.map +1 -0
  7. package/dist/blend/index.d.ts +10 -0
  8. package/dist/blend/index.d.ts.map +1 -0
  9. package/dist/blend/index.js +10 -0
  10. package/dist/blend/index.js.map +1 -0
  11. package/dist/blend/wgsl.d.ts +16 -0
  12. package/dist/blend/wgsl.d.ts.map +1 -0
  13. package/dist/blend/wgsl.js +85 -0
  14. package/dist/blend/wgsl.js.map +1 -0
  15. package/dist/compositor/compositor.d.ts +112 -0
  16. package/dist/compositor/compositor.d.ts.map +1 -0
  17. package/dist/compositor/compositor.js +353 -0
  18. package/dist/compositor/compositor.js.map +1 -0
  19. package/dist/compositor/headless.d.ts +47 -0
  20. package/dist/compositor/headless.d.ts.map +1 -0
  21. package/dist/compositor/headless.js +158 -0
  22. package/dist/compositor/headless.js.map +1 -0
  23. package/dist/compositor/index.d.ts +8 -0
  24. package/dist/compositor/index.d.ts.map +1 -0
  25. package/dist/compositor/index.js +8 -0
  26. package/dist/compositor/index.js.map +1 -0
  27. package/dist/compositor/shaders.d.ts +24 -0
  28. package/dist/compositor/shaders.d.ts.map +1 -0
  29. package/dist/compositor/shaders.js +241 -0
  30. package/dist/compositor/shaders.js.map +1 -0
  31. package/dist/compositor/transform.d.ts +49 -0
  32. package/dist/compositor/transform.d.ts.map +1 -0
  33. package/dist/compositor/transform.js +74 -0
  34. package/dist/compositor/transform.js.map +1 -0
  35. package/dist/context.d.ts +108 -0
  36. package/dist/context.d.ts.map +1 -0
  37. package/dist/context.js +205 -0
  38. package/dist/context.js.map +1 -0
  39. package/dist/debug/premulValidator.d.ts +85 -0
  40. package/dist/debug/premulValidator.d.ts.map +1 -0
  41. package/dist/debug/premulValidator.js +239 -0
  42. package/dist/debug/premulValidator.js.map +1 -0
  43. package/dist/executor.d.ts +74 -0
  44. package/dist/executor.d.ts.map +1 -0
  45. package/dist/executor.js +413 -0
  46. package/dist/executor.js.map +1 -0
  47. package/dist/fullscreenQuad.d.ts +11 -0
  48. package/dist/fullscreenQuad.d.ts.map +1 -0
  49. package/dist/fullscreenQuad.js +31 -0
  50. package/dist/fullscreenQuad.js.map +1 -0
  51. package/dist/index.d.ts +16 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +16 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/module.d.ts +162 -0
  56. package/dist/module.d.ts.map +1 -0
  57. package/dist/module.js +100 -0
  58. package/dist/module.js.map +1 -0
  59. package/dist/node.d.ts +38 -0
  60. package/dist/node.d.ts.map +1 -0
  61. package/dist/node.js +140 -0
  62. package/dist/node.js.map +1 -0
  63. package/dist/pool.d.ts +30 -0
  64. package/dist/pool.d.ts.map +1 -0
  65. package/dist/pool.js +33 -0
  66. package/dist/pool.js.map +1 -0
  67. package/dist/recipe.d.ts +148 -0
  68. package/dist/recipe.d.ts.map +1 -0
  69. package/dist/recipe.js +181 -0
  70. package/dist/recipe.js.map +1 -0
  71. package/dist/registry.d.ts +49 -0
  72. package/dist/registry.d.ts.map +1 -0
  73. package/dist/registry.js +100 -0
  74. package/dist/registry.js.map +1 -0
  75. package/dist/shaders/_canary/passthrough/v1/module.d.ts +13 -0
  76. package/dist/shaders/_canary/passthrough/v1/module.d.ts.map +1 -0
  77. package/dist/shaders/_canary/passthrough/v1/module.js +71 -0
  78. package/dist/shaders/_canary/passthrough/v1/module.js.map +1 -0
  79. package/dist/shaders/alpha/premulToStraight/v1/module.d.ts +16 -0
  80. package/dist/shaders/alpha/premulToStraight/v1/module.d.ts.map +1 -0
  81. package/dist/shaders/alpha/premulToStraight/v1/module.js +62 -0
  82. package/dist/shaders/alpha/premulToStraight/v1/module.js.map +1 -0
  83. package/dist/shaders/alpha/straightToPremul/v1/module.d.ts +19 -0
  84. package/dist/shaders/alpha/straightToPremul/v1/module.d.ts.map +1 -0
  85. package/dist/shaders/alpha/straightToPremul/v1/module.js +61 -0
  86. package/dist/shaders/alpha/straightToPremul/v1/module.js.map +1 -0
  87. package/dist/shaders/color/brightnessContrast/v1/module.d.ts +17 -0
  88. package/dist/shaders/color/brightnessContrast/v1/module.d.ts.map +1 -0
  89. package/dist/shaders/color/brightnessContrast/v1/module.js +84 -0
  90. package/dist/shaders/color/brightnessContrast/v1/module.js.map +1 -0
  91. package/dist/shaders/color/cdl/v1/module.d.ts +35 -0
  92. package/dist/shaders/color/cdl/v1/module.d.ts.map +1 -0
  93. package/dist/shaders/color/cdl/v1/module.js +106 -0
  94. package/dist/shaders/color/cdl/v1/module.js.map +1 -0
  95. package/dist/shaders/color/channelMerge/v1/module.d.ts +22 -0
  96. package/dist/shaders/color/channelMerge/v1/module.d.ts.map +1 -0
  97. package/dist/shaders/color/channelMerge/v1/module.js +101 -0
  98. package/dist/shaders/color/channelMerge/v1/module.js.map +1 -0
  99. package/dist/shaders/color/channelShuffle/v1/module.d.ts +29 -0
  100. package/dist/shaders/color/channelShuffle/v1/module.d.ts.map +1 -0
  101. package/dist/shaders/color/channelShuffle/v1/module.js +94 -0
  102. package/dist/shaders/color/channelShuffle/v1/module.js.map +1 -0
  103. package/dist/shaders/color/channelSplit/v1/module.d.ts +18 -0
  104. package/dist/shaders/color/channelSplit/v1/module.d.ts.map +1 -0
  105. package/dist/shaders/color/channelSplit/v1/module.js +90 -0
  106. package/dist/shaders/color/channelSplit/v1/module.js.map +1 -0
  107. package/dist/shaders/color/colorBalance/v1/module.d.ts +18 -0
  108. package/dist/shaders/color/colorBalance/v1/module.d.ts.map +1 -0
  109. package/dist/shaders/color/colorBalance/v1/module.js +86 -0
  110. package/dist/shaders/color/colorBalance/v1/module.js.map +1 -0
  111. package/dist/shaders/color/cubeLut/v1/module.d.ts +14 -0
  112. package/dist/shaders/color/cubeLut/v1/module.d.ts.map +1 -0
  113. package/dist/shaders/color/cubeLut/v1/module.js +78 -0
  114. package/dist/shaders/color/cubeLut/v1/module.js.map +1 -0
  115. package/dist/shaders/color/curves/v1/module.d.ts +31 -0
  116. package/dist/shaders/color/curves/v1/module.d.ts.map +1 -0
  117. package/dist/shaders/color/curves/v1/module.js +102 -0
  118. package/dist/shaders/color/curves/v1/module.js.map +1 -0
  119. package/dist/shaders/color/exposure/v1/module.d.ts +15 -0
  120. package/dist/shaders/color/exposure/v1/module.d.ts.map +1 -0
  121. package/dist/shaders/color/exposure/v1/module.js +78 -0
  122. package/dist/shaders/color/exposure/v1/module.js.map +1 -0
  123. package/dist/shaders/color/exposureTone/v1/module.d.ts +28 -0
  124. package/dist/shaders/color/exposureTone/v1/module.d.ts.map +1 -0
  125. package/dist/shaders/color/exposureTone/v1/module.js +107 -0
  126. package/dist/shaders/color/exposureTone/v1/module.js.map +1 -0
  127. package/dist/shaders/color/filmLook/v1/module.d.ts +28 -0
  128. package/dist/shaders/color/filmLook/v1/module.d.ts.map +1 -0
  129. package/dist/shaders/color/filmLook/v1/module.js +103 -0
  130. package/dist/shaders/color/filmLook/v1/module.js.map +1 -0
  131. package/dist/shaders/color/grade/v1/module.d.ts +35 -0
  132. package/dist/shaders/color/grade/v1/module.d.ts.map +1 -0
  133. package/dist/shaders/color/grade/v1/module.js +182 -0
  134. package/dist/shaders/color/grade/v1/module.js.map +1 -0
  135. package/dist/shaders/color/grayscale/v1/module.d.ts +14 -0
  136. package/dist/shaders/color/grayscale/v1/module.d.ts.map +1 -0
  137. package/dist/shaders/color/grayscale/v1/module.js +79 -0
  138. package/dist/shaders/color/grayscale/v1/module.js.map +1 -0
  139. package/dist/shaders/color/hsb/v1/module.d.ts +20 -0
  140. package/dist/shaders/color/hsb/v1/module.d.ts.map +1 -0
  141. package/dist/shaders/color/hsb/v1/module.js +131 -0
  142. package/dist/shaders/color/hsb/v1/module.js.map +1 -0
  143. package/dist/shaders/color/hslAdjust/v1/module.d.ts +30 -0
  144. package/dist/shaders/color/hslAdjust/v1/module.d.ts.map +1 -0
  145. package/dist/shaders/color/hslAdjust/v1/module.js +170 -0
  146. package/dist/shaders/color/hslAdjust/v1/module.js.map +1 -0
  147. package/dist/shaders/color/invert/v1/module.d.ts +15 -0
  148. package/dist/shaders/color/invert/v1/module.d.ts.map +1 -0
  149. package/dist/shaders/color/invert/v1/module.js +85 -0
  150. package/dist/shaders/color/invert/v1/module.js.map +1 -0
  151. package/dist/shaders/color/levels/v1/module.d.ts +33 -0
  152. package/dist/shaders/color/levels/v1/module.d.ts.map +1 -0
  153. package/dist/shaders/color/levels/v1/module.js +116 -0
  154. package/dist/shaders/color/levels/v1/module.js.map +1 -0
  155. package/dist/shaders/color/liftGammaGain/v1/module.d.ts +40 -0
  156. package/dist/shaders/color/liftGammaGain/v1/module.d.ts.map +1 -0
  157. package/dist/shaders/color/liftGammaGain/v1/module.js +114 -0
  158. package/dist/shaders/color/liftGammaGain/v1/module.js.map +1 -0
  159. package/dist/shaders/color/posterize/v1/module.d.ts +16 -0
  160. package/dist/shaders/color/posterize/v1/module.d.ts.map +1 -0
  161. package/dist/shaders/color/posterize/v1/module.js +80 -0
  162. package/dist/shaders/color/posterize/v1/module.js.map +1 -0
  163. package/dist/shaders/color/solarize/v1/module.d.ts +15 -0
  164. package/dist/shaders/color/solarize/v1/module.d.ts.map +1 -0
  165. package/dist/shaders/color/solarize/v1/module.js +83 -0
  166. package/dist/shaders/color/solarize/v1/module.js.map +1 -0
  167. package/dist/shaders/color/splitToning/v1/module.d.ts +26 -0
  168. package/dist/shaders/color/splitToning/v1/module.d.ts.map +1 -0
  169. package/dist/shaders/color/splitToning/v1/module.js +95 -0
  170. package/dist/shaders/color/splitToning/v1/module.js.map +1 -0
  171. package/dist/shaders/filters/blur/gaussian/v1/module.d.ts +23 -0
  172. package/dist/shaders/filters/blur/gaussian/v1/module.d.ts.map +1 -0
  173. package/dist/shaders/filters/blur/gaussian/v1/module.js +110 -0
  174. package/dist/shaders/filters/blur/gaussian/v1/module.js.map +1 -0
  175. package/dist/shaders/filters/blur/separable/v1/module.d.ts +18 -0
  176. package/dist/shaders/filters/blur/separable/v1/module.d.ts.map +1 -0
  177. package/dist/shaders/filters/blur/separable/v1/module.js +64 -0
  178. package/dist/shaders/filters/blur/separable/v1/module.js.map +1 -0
  179. package/dist/shaders/filters/convolve3x3/v1/module.d.ts +23 -0
  180. package/dist/shaders/filters/convolve3x3/v1/module.d.ts.map +1 -0
  181. package/dist/shaders/filters/convolve3x3/v1/module.js +128 -0
  182. package/dist/shaders/filters/convolve3x3/v1/module.js.map +1 -0
  183. package/dist/shaders/filters/glow/v1/module.d.ts +26 -0
  184. package/dist/shaders/filters/glow/v1/module.d.ts.map +1 -0
  185. package/dist/shaders/filters/glow/v1/module.js +102 -0
  186. package/dist/shaders/filters/glow/v1/module.js.map +1 -0
  187. package/dist/shaders/filters/grain/v1/module.d.ts +38 -0
  188. package/dist/shaders/filters/grain/v1/module.d.ts.map +1 -0
  189. package/dist/shaders/filters/grain/v1/module.js +110 -0
  190. package/dist/shaders/filters/grain/v1/module.js.map +1 -0
  191. package/dist/shaders/filters/pixelate/v1/module.d.ts +14 -0
  192. package/dist/shaders/filters/pixelate/v1/module.d.ts.map +1 -0
  193. package/dist/shaders/filters/pixelate/v1/module.js +76 -0
  194. package/dist/shaders/filters/pixelate/v1/module.js.map +1 -0
  195. package/dist/shaders/filters/sharpen/unsharpMask/v1/module.d.ts +17 -0
  196. package/dist/shaders/filters/sharpen/unsharpMask/v1/module.d.ts.map +1 -0
  197. package/dist/shaders/filters/sharpen/unsharpMask/v1/module.js +93 -0
  198. package/dist/shaders/filters/sharpen/unsharpMask/v1/module.js.map +1 -0
  199. package/dist/shaders/filters/threshold/v1/module.d.ts +17 -0
  200. package/dist/shaders/filters/threshold/v1/module.d.ts.map +1 -0
  201. package/dist/shaders/filters/threshold/v1/module.js +71 -0
  202. package/dist/shaders/filters/threshold/v1/module.js.map +1 -0
  203. package/dist/shaders/filters/vignette/v1/module.d.ts +18 -0
  204. package/dist/shaders/filters/vignette/v1/module.d.ts.map +1 -0
  205. package/dist/shaders/filters/vignette/v1/module.js +78 -0
  206. package/dist/shaders/filters/vignette/v1/module.js.map +1 -0
  207. package/dist/shaders/filters/visualFx/v1/module.d.ts +24 -0
  208. package/dist/shaders/filters/visualFx/v1/module.d.ts.map +1 -0
  209. package/dist/shaders/filters/visualFx/v1/module.js +210 -0
  210. package/dist/shaders/filters/visualFx/v1/module.js.map +1 -0
  211. package/dist/shaders/index.d.ts +86 -0
  212. package/dist/shaders/index.d.ts.map +1 -0
  213. package/dist/shaders/index.js +161 -0
  214. package/dist/shaders/index.js.map +1 -0
  215. package/dist/shaders/keyer/chromaKey/v1/module.d.ts +25 -0
  216. package/dist/shaders/keyer/chromaKey/v1/module.d.ts.map +1 -0
  217. package/dist/shaders/keyer/chromaKey/v1/module.js +111 -0
  218. package/dist/shaders/keyer/chromaKey/v1/module.js.map +1 -0
  219. package/dist/shaders/keyer/lumaKey/v1/module.d.ts +22 -0
  220. package/dist/shaders/keyer/lumaKey/v1/module.d.ts.map +1 -0
  221. package/dist/shaders/keyer/lumaKey/v1/module.js +89 -0
  222. package/dist/shaders/keyer/lumaKey/v1/module.js.map +1 -0
  223. package/dist/shaders/mask/apply/v1/module.d.ts +16 -0
  224. package/dist/shaders/mask/apply/v1/module.d.ts.map +1 -0
  225. package/dist/shaders/mask/apply/v1/module.js +79 -0
  226. package/dist/shaders/mask/apply/v1/module.js.map +1 -0
  227. package/dist/shaders/mask/fromImage/v1/module.d.ts +18 -0
  228. package/dist/shaders/mask/fromImage/v1/module.d.ts.map +1 -0
  229. package/dist/shaders/mask/fromImage/v1/module.js +99 -0
  230. package/dist/shaders/mask/fromImage/v1/module.js.map +1 -0
  231. package/dist/shaders/mask/invert/v1/module.d.ts +12 -0
  232. package/dist/shaders/mask/invert/v1/module.d.ts.map +1 -0
  233. package/dist/shaders/mask/invert/v1/module.js +57 -0
  234. package/dist/shaders/mask/invert/v1/module.js.map +1 -0
  235. package/dist/shaders/mixer/add/v1/module.d.ts +17 -0
  236. package/dist/shaders/mixer/add/v1/module.d.ts.map +1 -0
  237. package/dist/shaders/mixer/add/v1/module.js +73 -0
  238. package/dist/shaders/mixer/add/v1/module.js.map +1 -0
  239. package/dist/shaders/mixer/colorOverlay/v1/module.d.ts +26 -0
  240. package/dist/shaders/mixer/colorOverlay/v1/module.d.ts.map +1 -0
  241. package/dist/shaders/mixer/colorOverlay/v1/module.js +81 -0
  242. package/dist/shaders/mixer/colorOverlay/v1/module.js.map +1 -0
  243. package/dist/shaders/mixer/dropShadow/v1/module.d.ts +28 -0
  244. package/dist/shaders/mixer/dropShadow/v1/module.d.ts.map +1 -0
  245. package/dist/shaders/mixer/dropShadow/v1/module.js +104 -0
  246. package/dist/shaders/mixer/dropShadow/v1/module.js.map +1 -0
  247. package/dist/shaders/mixer/outline/v1/module.d.ts +27 -0
  248. package/dist/shaders/mixer/outline/v1/module.d.ts.map +1 -0
  249. package/dist/shaders/mixer/outline/v1/module.js +105 -0
  250. package/dist/shaders/mixer/outline/v1/module.js.map +1 -0
  251. package/dist/shaders/mixer/over/v1/module.d.ts +16 -0
  252. package/dist/shaders/mixer/over/v1/module.d.ts.map +1 -0
  253. package/dist/shaders/mixer/over/v1/module.js +71 -0
  254. package/dist/shaders/mixer/over/v1/module.js.map +1 -0
  255. package/dist/shaders/mixer/shadowCompose/v1/module.d.ts +26 -0
  256. package/dist/shaders/mixer/shadowCompose/v1/module.d.ts.map +1 -0
  257. package/dist/shaders/mixer/shadowCompose/v1/module.js +95 -0
  258. package/dist/shaders/mixer/shadowCompose/v1/module.js.map +1 -0
  259. package/dist/shaders/sources/angularGradient/v1/module.d.ts +18 -0
  260. package/dist/shaders/sources/angularGradient/v1/module.d.ts.map +1 -0
  261. package/dist/shaders/sources/angularGradient/v1/module.js +67 -0
  262. package/dist/shaders/sources/angularGradient/v1/module.js.map +1 -0
  263. package/dist/shaders/sources/checkerboard/v1/module.d.ts +19 -0
  264. package/dist/shaders/sources/checkerboard/v1/module.d.ts.map +1 -0
  265. package/dist/shaders/sources/checkerboard/v1/module.js +70 -0
  266. package/dist/shaders/sources/checkerboard/v1/module.js.map +1 -0
  267. package/dist/shaders/sources/diamondGradient/v1/module.d.ts +18 -0
  268. package/dist/shaders/sources/diamondGradient/v1/module.d.ts.map +1 -0
  269. package/dist/shaders/sources/diamondGradient/v1/module.js +61 -0
  270. package/dist/shaders/sources/diamondGradient/v1/module.js.map +1 -0
  271. package/dist/shaders/sources/gaussianNoise/v1/module.d.ts +21 -0
  272. package/dist/shaders/sources/gaussianNoise/v1/module.d.ts.map +1 -0
  273. package/dist/shaders/sources/gaussianNoise/v1/module.js +72 -0
  274. package/dist/shaders/sources/gaussianNoise/v1/module.js.map +1 -0
  275. package/dist/shaders/sources/linearGradient/v1/module.d.ts +21 -0
  276. package/dist/shaders/sources/linearGradient/v1/module.d.ts.map +1 -0
  277. package/dist/shaders/sources/linearGradient/v1/module.js +72 -0
  278. package/dist/shaders/sources/linearGradient/v1/module.js.map +1 -0
  279. package/dist/shaders/sources/radialGradient/v1/module.d.ts +18 -0
  280. package/dist/shaders/sources/radialGradient/v1/module.d.ts.map +1 -0
  281. package/dist/shaders/sources/radialGradient/v1/module.js +60 -0
  282. package/dist/shaders/sources/radialGradient/v1/module.js.map +1 -0
  283. package/dist/shaders/sources/solid/v1/module.d.ts +17 -0
  284. package/dist/shaders/sources/solid/v1/module.d.ts.map +1 -0
  285. package/dist/shaders/sources/solid/v1/module.js +49 -0
  286. package/dist/shaders/sources/solid/v1/module.js.map +1 -0
  287. package/dist/shaders/transform/affine/v1/module.d.ts +36 -0
  288. package/dist/shaders/transform/affine/v1/module.d.ts.map +1 -0
  289. package/dist/shaders/transform/affine/v1/module.js +94 -0
  290. package/dist/shaders/transform/affine/v1/module.js.map +1 -0
  291. package/dist/shaders/transform/cornerPin/v1/module.d.ts +40 -0
  292. package/dist/shaders/transform/cornerPin/v1/module.d.ts.map +1 -0
  293. package/dist/shaders/transform/cornerPin/v1/module.js +109 -0
  294. package/dist/shaders/transform/cornerPin/v1/module.js.map +1 -0
  295. package/dist/shaders/transform/crop/v1/module.d.ts +26 -0
  296. package/dist/shaders/transform/crop/v1/module.d.ts.map +1 -0
  297. package/dist/shaders/transform/crop/v1/module.js +82 -0
  298. package/dist/shaders/transform/crop/v1/module.js.map +1 -0
  299. package/dist/shaders/transform/displace/v1/module.d.ts +23 -0
  300. package/dist/shaders/transform/displace/v1/module.d.ts.map +1 -0
  301. package/dist/shaders/transform/displace/v1/module.js +95 -0
  302. package/dist/shaders/transform/displace/v1/module.js.map +1 -0
  303. package/dist/shaders/transform/mirror/v1/module.d.ts +14 -0
  304. package/dist/shaders/transform/mirror/v1/module.d.ts.map +1 -0
  305. package/dist/shaders/transform/mirror/v1/module.js +73 -0
  306. package/dist/shaders/transform/mirror/v1/module.js.map +1 -0
  307. package/dist/shaders/transform/offset/v1/module.d.ts +21 -0
  308. package/dist/shaders/transform/offset/v1/module.d.ts.map +1 -0
  309. package/dist/shaders/transform/offset/v1/module.js +88 -0
  310. package/dist/shaders/transform/offset/v1/module.js.map +1 -0
  311. package/dist/shaders/transform/pad/v1/module.d.ts +26 -0
  312. package/dist/shaders/transform/pad/v1/module.d.ts.map +1 -0
  313. package/dist/shaders/transform/pad/v1/module.js +95 -0
  314. package/dist/shaders/transform/pad/v1/module.js.map +1 -0
  315. package/dist/shaders/transform/polarRemap/v1/module.d.ts +20 -0
  316. package/dist/shaders/transform/polarRemap/v1/module.d.ts.map +1 -0
  317. package/dist/shaders/transform/polarRemap/v1/module.js +95 -0
  318. package/dist/shaders/transform/polarRemap/v1/module.js.map +1 -0
  319. package/dist/shaders/transform/resize/v1/module.d.ts +20 -0
  320. package/dist/shaders/transform/resize/v1/module.d.ts.map +1 -0
  321. package/dist/shaders/transform/resize/v1/module.js +116 -0
  322. package/dist/shaders/transform/resize/v1/module.js.map +1 -0
  323. package/dist/shaders/transform/rotate90/v1/module.d.ts +25 -0
  324. package/dist/shaders/transform/rotate90/v1/module.d.ts.map +1 -0
  325. package/dist/shaders/transform/rotate90/v1/module.js +90 -0
  326. package/dist/shaders/transform/rotate90/v1/module.js.map +1 -0
  327. package/dist/shaders/transform/spherize/v1/module.d.ts +21 -0
  328. package/dist/shaders/transform/spherize/v1/module.d.ts.map +1 -0
  329. package/dist/shaders/transform/spherize/v1/module.js +94 -0
  330. package/dist/shaders/transform/spherize/v1/module.js.map +1 -0
  331. package/dist/shaders/transform/tile/v1/module.d.ts +22 -0
  332. package/dist/shaders/transform/tile/v1/module.d.ts.map +1 -0
  333. package/dist/shaders/transform/tile/v1/module.js +89 -0
  334. package/dist/shaders/transform/tile/v1/module.js.map +1 -0
  335. package/dist/shared/lumaWgsl.d.ts +14 -0
  336. package/dist/shared/lumaWgsl.d.ts.map +1 -0
  337. package/dist/shared/lumaWgsl.js +18 -0
  338. package/dist/shared/lumaWgsl.js.map +1 -0
  339. package/dist/shared/premulWgsl.d.ts +46 -0
  340. package/dist/shared/premulWgsl.d.ts.map +1 -0
  341. package/dist/shared/premulWgsl.js +90 -0
  342. package/dist/shared/premulWgsl.js.map +1 -0
  343. package/dist/texture.d.ts +54 -0
  344. package/dist/texture.d.ts.map +1 -0
  345. package/dist/texture.js +70 -0
  346. package/dist/texture.js.map +1 -0
  347. package/dist/types.d.ts +103 -0
  348. package/dist/types.d.ts.map +1 -0
  349. package/dist/types.js +8 -0
  350. package/dist/types.js.map +1 -0
  351. package/dist/validate/wgslLinearity.d.ts +86 -0
  352. package/dist/validate/wgslLinearity.d.ts.map +1 -0
  353. package/dist/validate/wgslLinearity.js +298 -0
  354. package/dist/validate/wgslLinearity.js.map +1 -0
  355. package/dist/webgpu/index.d.ts +11 -0
  356. package/dist/webgpu/index.d.ts.map +1 -0
  357. package/dist/webgpu/index.js +11 -0
  358. package/dist/webgpu/index.js.map +1 -0
  359. package/package.json +85 -0
@@ -0,0 +1,94 @@
1
+ /**
2
+ * `transform.spherize@1` — spherical/fisheye lens distortion centered on the
3
+ * source.
4
+ *
5
+ * `amount > 0` bulges the centre outward (fisheye, magnifying-glass);
6
+ * `amount < 0` pinches it inward. The implementation is the classic
7
+ * Photoshop-style normalized-radius warp: convert UV to centered polar,
8
+ * remap the radius by `r' = r * (1 + amount * (1 - r²))`, convert back.
9
+ *
10
+ * Output dimensions stay `same-as:source`. Pixels outside the unit circle
11
+ * pass through unchanged so the corners of a rectangular source aren't
12
+ * snipped; pixels inside the circle get the spherical remap.
13
+ */
14
+ import tgpu from "typegpu";
15
+ import * as d from "typegpu/data";
16
+ import { defineModule } from "../../../../module.js";
17
+ export const SpherizeParams = d.struct({
18
+ amount: d.f32
19
+ });
20
+ const layout = tgpu.bindGroupLayout({
21
+ params: { uniform: SpherizeParams },
22
+ source: { texture: "float" },
23
+ samp: { sampler: "filtering" }
24
+ });
25
+ const samplerDescriptor = {
26
+ magFilter: "linear",
27
+ minFilter: "linear",
28
+ addressModeU: "clamp-to-edge",
29
+ addressModeV: "clamp-to-edge"
30
+ };
31
+ export const transformSpherizeV1 = defineModule({
32
+ id: "transform.spherize",
33
+ version: 1,
34
+ surface: "internal",
35
+ category: "transform",
36
+ linearity: "linear-in-rgb",
37
+ kind: "fragment",
38
+ params: SpherizeParams,
39
+ paramDefaults: { amount: 0.5 },
40
+ paramUi: {
41
+ amount: {
42
+ min: -1,
43
+ max: 1,
44
+ step: 0.01,
45
+ label: "Amount",
46
+ notes: "negative pinches, positive bulges"
47
+ }
48
+ },
49
+ layout,
50
+ samplers: { samp: samplerDescriptor },
51
+ wgsl: /* wgsl */ `
52
+ @fragment
53
+ fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {
54
+ let amount = layout.$.params.amount;
55
+ let centered = (uv - vec2f(0.5)) * 2.0;
56
+ let r2 = dot(centered, centered);
57
+ // Inverse map: an output pixel at radius r samples the source at r*factor.
58
+ // To bulge (magnify) the centre, the source radius must be pulled inward
59
+ // (factor < 1 near the centre), so positive amount subtracts. Using
60
+ // 1.0 + amount * (...) inverted this and pinched on positive amount, the
61
+ // opposite of the documented behaviour.
62
+ let factor = 1.0 - amount * (1.0 - r2);
63
+ let warpedUv = centered * factor * 0.5 + vec2f(0.5);
64
+ // Outside the unit circle: passthrough (sample the original uv). Inside:
65
+ // sample the warped uv. textureSample must run in uniform control flow, so
66
+ // pick the source uv up front and sample once.
67
+ let inside = r2 < 1.0;
68
+ let s = select(uv, warpedUv, inside);
69
+ let col = textureSample(layout.$.source, layout.$.samp, s);
70
+ // A strong pinch (amount < 0) can push the warped uv outside [0,1]; those
71
+ // taps become transparent black rather than smearing the edge, matching the
72
+ // out-of-bounds convention in transform.affine / transform.cornerPin.
73
+ let oob = inside && (warpedUv.x < 0.0 || warpedUv.x > 1.0 || warpedUv.y < 0.0 || warpedUv.y > 1.0);
74
+ return select(col, vec4f(0.0), oob);
75
+ }
76
+ `,
77
+ io: {
78
+ inputs: {
79
+ source: {
80
+ colorSpace: "linear",
81
+ alpha: "premultiplied",
82
+ bindingKinds: ["texture_2d"]
83
+ }
84
+ },
85
+ output: {
86
+ colorSpace: "linear",
87
+ alpha: "premultiplied",
88
+ format: "rgba8unorm",
89
+ dimensions: "same-as:source"
90
+ },
91
+ rod: "same-as:source"
92
+ }
93
+ });
94
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/shaders/transform/spherize/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,GAAG;CACd,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAClC,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;IACnC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC5B,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAyB;IAC9C,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;IAC9C,EAAE,EAAE,oBAAoB;IACxB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,cAAc;IACtB,aAAa,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;IAC9B,OAAO,EAAE;QACP,MAAM,EAAE;YACN,GAAG,EAAE,CAAC,CAAC;YACP,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,mCAAmC;SAC3C;KACF;IACD,MAAM;IACN,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACrC,IAAI,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlB;IACC,EAAE,EAAE;QACF,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,UAAU,EAAE,QAAQ;gBACpB,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,CAAC,YAAY,CAAC;aAC7B;SACF;QACD,MAAM,EAAE;YACN,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,gBAAgB;SAC7B;QACD,GAAG,EAAE,gBAAgB;KACtB;CACF,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `transform.tile@1` — tile the source `tilesX` × `tilesY` times across the
3
+ * output canvas.
4
+ *
5
+ * Output dimensions stay `same-as:source` — tiling reduces the per-tile size
6
+ * inside the same canvas rather than enlarging the target. `wrap` controls
7
+ * how UVs at tile borders are sampled: `0` clamp-to-edge (every tile is a
8
+ * crisp copy of the source), `1` repeat, `2` mirror-repeat (tiles alternate
9
+ * orientation, producing the classic seamless pattern).
10
+ */
11
+ import * as d from "typegpu/data";
12
+ export declare const TileParams: d.WgslStruct<{
13
+ tilesX: d.F32;
14
+ tilesY: d.F32;
15
+ wrap: d.F32;
16
+ }>;
17
+ export declare const transformTileV1: import("../../../../module.js").ShaderModule<d.WgslStruct<{
18
+ tilesX: d.F32;
19
+ tilesY: d.F32;
20
+ wrap: d.F32;
21
+ }>>;
22
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/shaders/transform/tile/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,eAAO,MAAM,UAAU;;;;EAIrB,CAAC;AAeH,eAAO,MAAM,eAAe;;;;GA0D1B,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * `transform.tile@1` — tile the source `tilesX` × `tilesY` times across the
3
+ * output canvas.
4
+ *
5
+ * Output dimensions stay `same-as:source` — tiling reduces the per-tile size
6
+ * inside the same canvas rather than enlarging the target. `wrap` controls
7
+ * how UVs at tile borders are sampled: `0` clamp-to-edge (every tile is a
8
+ * crisp copy of the source), `1` repeat, `2` mirror-repeat (tiles alternate
9
+ * orientation, producing the classic seamless pattern).
10
+ */
11
+ import tgpu from "typegpu";
12
+ import * as d from "typegpu/data";
13
+ import { defineModule } from "../../../../module.js";
14
+ export const TileParams = d.struct({
15
+ tilesX: d.f32,
16
+ tilesY: d.f32,
17
+ wrap: d.f32
18
+ });
19
+ const layout = tgpu.bindGroupLayout({
20
+ params: { uniform: TileParams },
21
+ source: { texture: "float" },
22
+ samp: { sampler: "filtering" }
23
+ });
24
+ const samplerDescriptor = {
25
+ magFilter: "linear",
26
+ minFilter: "linear",
27
+ addressModeU: "clamp-to-edge",
28
+ addressModeV: "clamp-to-edge"
29
+ };
30
+ export const transformTileV1 = defineModule({
31
+ id: "transform.tile",
32
+ version: 1,
33
+ surface: "internal",
34
+ category: "transform",
35
+ linearity: "linear-in-rgb",
36
+ kind: "fragment",
37
+ params: TileParams,
38
+ paramDefaults: { tilesX: 2, tilesY: 2, wrap: 1 },
39
+ paramUi: {
40
+ tilesX: { min: 1, max: 32, step: 1, label: "Tiles X" },
41
+ tilesY: { min: 1, max: 32, step: 1, label: "Tiles Y" },
42
+ wrap: { min: 0, max: 2, step: 1, label: "Wrap", notes: "0 clamp / 1 repeat / 2 mirror" }
43
+ },
44
+ layout,
45
+ samplers: { samp: samplerDescriptor },
46
+ wgsl: /* wgsl */ `
47
+ fn applyWrap(u: vec2f, mode: i32) -> vec2f {
48
+ if (mode == 2) {
49
+ let q = fract(u * 0.5) * 2.0;
50
+ return vec2f(
51
+ select(q.x, 2.0 - q.x, q.x > 1.0),
52
+ select(q.y, 2.0 - q.y, q.y > 1.0)
53
+ );
54
+ }
55
+ if (mode == 0) {
56
+ return clamp(u, vec2f(0.0), vec2f(1.0));
57
+ }
58
+ return fract(u);
59
+ }
60
+
61
+ @fragment
62
+ fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {
63
+ let p = layout.$.params;
64
+ let tx = max(1.0, p.tilesX);
65
+ let ty = max(1.0, p.tilesY);
66
+ let mode = i32(round(p.wrap));
67
+ let scaled = vec2f(uv.x * tx, uv.y * ty);
68
+ let u = applyWrap(scaled, mode);
69
+ return textureSample(layout.$.source, layout.$.samp, u);
70
+ }
71
+ `,
72
+ io: {
73
+ inputs: {
74
+ source: {
75
+ colorSpace: "linear",
76
+ alpha: "premultiplied",
77
+ bindingKinds: ["texture_2d"]
78
+ }
79
+ },
80
+ output: {
81
+ colorSpace: "linear",
82
+ alpha: "premultiplied",
83
+ format: "rgba8unorm",
84
+ dimensions: "same-as:source"
85
+ },
86
+ rod: "same-as:source"
87
+ }
88
+ });
89
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../../src/shaders/transform/tile/v1/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,GAAG;IACb,MAAM,EAAE,CAAC,CAAC,GAAG;IACb,IAAI,EAAE,CAAC,CAAC,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;IAClC,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;IAC/B,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;IAC5B,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAyB;IAC9C,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;IAC1C,EAAE,EAAE,gBAAgB;IACpB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,UAAU;IAClB,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IAChD,OAAO,EAAE;QACP,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;QACtD,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;QACtD,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,+BAA+B,EAAE;KACzF;IACD,MAAM;IACN,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACrC,IAAI,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlB;IACC,EAAE,EAAE;QACF,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,UAAU,EAAE,QAAQ;gBACpB,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,CAAC,YAAY,CAAC;aAC7B;SACF;QACD,MAAM,EAAE;YACN,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,gBAAgB;SAC7B;QACD,GAAG,EAAE,gBAAgB;KACtB;CACF,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Rec. 709 luminance — interpolate into a WGSL template, then call `luma709`.
3
+ *
4
+ * The weights are the linear-space set. Rec. 601 (`0.299, 0.587, 0.114`) is
5
+ * for gamma-encoded video and is wrong for the color spaces the pool declares;
6
+ * `shaderCorrectness.test.ts` asserts it never appears.
7
+ *
8
+ * What to pass is the caller's call. A nonlinear module un-premultiplies first
9
+ * (see `shared/premulWgsl.ts`) so the result doesn't drift with alpha; a
10
+ * `linear-in-rgb` one can hand over premultiplied RGB, because `dot` commutes
11
+ * with the alpha multiply.
12
+ */
13
+ export declare const WGSL_LUMA709 = "\nfn luma709(c: vec3f) -> f32 {\n return dot(c, vec3f(0.2126, 0.7152, 0.0722));\n}\n";
14
+ //# sourceMappingURL=lumaWgsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lumaWgsl.d.ts","sourceRoot":"","sources":["../../src/shared/lumaWgsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,0FAIxB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Rec. 709 luminance — interpolate into a WGSL template, then call `luma709`.
3
+ *
4
+ * The weights are the linear-space set. Rec. 601 (`0.299, 0.587, 0.114`) is
5
+ * for gamma-encoded video and is wrong for the color spaces the pool declares;
6
+ * `shaderCorrectness.test.ts` asserts it never appears.
7
+ *
8
+ * What to pass is the caller's call. A nonlinear module un-premultiplies first
9
+ * (see `shared/premulWgsl.ts`) so the result doesn't drift with alpha; a
10
+ * `linear-in-rgb` one can hand over premultiplied RGB, because `dot` commutes
11
+ * with the alpha multiply.
12
+ */
13
+ export const WGSL_LUMA709 = /* wgsl */ `
14
+ fn luma709(c: vec3f) -> f32 {
15
+ return dot(c, vec3f(0.2126, 0.7152, 0.0722));
16
+ }
17
+ `;
18
+ //# sourceMappingURL=lumaWgsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lumaWgsl.js","sourceRoot":"","sources":["../../src/shared/lumaWgsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;;;;CAItC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Premul-typed color helpers — WGSL snippet bundle for shader authors.
3
+ *
4
+ * **When to use.** Any module whose input is `alpha: "premultiplied"` AND
5
+ * whose RGB math is *nonlinear* (gamma, contrast, HSV, saturate, etc.) MUST
6
+ * un-premultiply before touching channels and re-premultiply before writing.
7
+ * Doing that math directly on `texture.rgb` silently produces wrong output
8
+ * on partially transparent pixels, and the bug is invisible in the common
9
+ * fully-opaque case. This bundle makes the mistake impossible to express:
10
+ *
11
+ * - `Premul { v: vec4f }` and `Straight { v: vec4f }` are distinct structs.
12
+ * WGSL has no newtype, but distinct structs are nominally typed — you
13
+ * can't pass a `Premul` where a `Straight` is expected, and neither has
14
+ * a `.rgb` field, so `samp.rgb` simply won't compile.
15
+ * - The only way to extract channels is `unpremul(p).v.rgb` (for nonlinear
16
+ * ops) or `p.v` (for linear ops that stay in premul space).
17
+ *
18
+ * **How to use.** Interpolate the bundle into the WGSL template:
19
+ *
20
+ * import { WGSL_PREMUL_HELPERS } from "../../../../shared/premulWgsl.js";
21
+ *
22
+ * wgsl: \/\* wgsl \*\/ \`
23
+ * ${WGSL_PREMUL_HELPERS}
24
+ *
25
+ * @fragment fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {
26
+ * let p = samplePremul(layout.$.source, layout.$.samp, uv);
27
+ * let s = unpremul(p);
28
+ * let newRgb = vec3f(1.0) - s.v.rgb; // nonlinear op
29
+ * let out = premul(Straight(vec4f(newRgb, s.v.a)));
30
+ * return out.v;
31
+ * }
32
+ * \`
33
+ *
34
+ * For linear-in-rgb modules (tint multiply, brightness add, lerp between
35
+ * two premul values, Porter-Duff over), prefer the `premul*` helpers
36
+ * (`premulScale`, `premulAdd`, `premulOver`) so the *intent* is local —
37
+ * a reader doesn't have to verify the math is linearity-safe by eye.
38
+ *
39
+ * **Migration status.** Two modules use this bundle today as proof of
40
+ * concept: `_canary.passthrough@1` (linear) and `color.invert@1` (nonlinear,
41
+ * previously hand-rolled the unpremul dance). Migrating the remaining 47
42
+ * shader modules is tracked separately and is deliberate follow-up work —
43
+ * the bundle is ship-ready; the rest of the pool isn't blocked on it.
44
+ */
45
+ export declare const WGSL_PREMUL_HELPERS = "\n// ---- Typed-color helpers (premul-invariant) -------------------------------\n// Distinct structs; WGSL nominal typing prevents Premul/Straight from being\n// swapped, and neither has a .rgb field so channel access is forced through\n// unpremul()/premul().\nstruct Premul { v: vec4f }\nstruct Straight { v: vec4f }\n\nfn samplePremul(t: texture_2d<f32>, s: sampler, uv: vec2f) -> Premul {\n return Premul(textureSample(t, s, uv));\n}\n\nfn sampleStraight(t: texture_2d<f32>, s: sampler, uv: vec2f) -> Straight {\n return Straight(textureSample(t, s, uv));\n}\n\n// 1/255 floor avoids dividing by zero on transparent pixels; the resulting\n// \"straight\" color of a fully-transparent pixel is undefined anyway because\n// rgb*0 = 0 erases all information, but the floor keeps math finite and\n// matches the convention used elsewhere in the pool.\nfn unpremul(p: Premul) -> Straight {\n let a = max(p.v.a, 1.0 / 255.0);\n return Straight(vec4f(p.v.rgb / a, p.v.a));\n}\n\nfn premul(s: Straight) -> Premul {\n return Premul(vec4f(s.v.rgb * s.v.a, s.v.a));\n}\n\n// Linear-op helpers \u2014 safe to apply directly to premul values without an\n// unpremul round-trip. Use these when you want the intent (\"this is a\n// premul-safe linear op\") to be visible at the call site.\nfn premulScale(p: Premul, k: f32) -> Premul {\n return Premul(p.v * k);\n}\n\nfn premulAdd(a: Premul, b: Premul) -> Premul {\n return Premul(a.v + b.v);\n}\n\n// Premultiplied Porter-Duff \"over\": src over dst, correct on premul inputs.\nfn premulOver(src: Premul, dst: Premul) -> Premul {\n return Premul(src.v + dst.v * (1.0 - src.v.a));\n}\n";
46
+ //# sourceMappingURL=premulWgsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"premulWgsl.d.ts","sourceRoot":"","sources":["../../src/shared/premulWgsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,mBAAmB,smDA4C/B,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Premul-typed color helpers — WGSL snippet bundle for shader authors.
3
+ *
4
+ * **When to use.** Any module whose input is `alpha: "premultiplied"` AND
5
+ * whose RGB math is *nonlinear* (gamma, contrast, HSV, saturate, etc.) MUST
6
+ * un-premultiply before touching channels and re-premultiply before writing.
7
+ * Doing that math directly on `texture.rgb` silently produces wrong output
8
+ * on partially transparent pixels, and the bug is invisible in the common
9
+ * fully-opaque case. This bundle makes the mistake impossible to express:
10
+ *
11
+ * - `Premul { v: vec4f }` and `Straight { v: vec4f }` are distinct structs.
12
+ * WGSL has no newtype, but distinct structs are nominally typed — you
13
+ * can't pass a `Premul` where a `Straight` is expected, and neither has
14
+ * a `.rgb` field, so `samp.rgb` simply won't compile.
15
+ * - The only way to extract channels is `unpremul(p).v.rgb` (for nonlinear
16
+ * ops) or `p.v` (for linear ops that stay in premul space).
17
+ *
18
+ * **How to use.** Interpolate the bundle into the WGSL template:
19
+ *
20
+ * import { WGSL_PREMUL_HELPERS } from "../../../../shared/premulWgsl.js";
21
+ *
22
+ * wgsl: \/\* wgsl \*\/ \`
23
+ * ${WGSL_PREMUL_HELPERS}
24
+ *
25
+ * @fragment fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {
26
+ * let p = samplePremul(layout.$.source, layout.$.samp, uv);
27
+ * let s = unpremul(p);
28
+ * let newRgb = vec3f(1.0) - s.v.rgb; // nonlinear op
29
+ * let out = premul(Straight(vec4f(newRgb, s.v.a)));
30
+ * return out.v;
31
+ * }
32
+ * \`
33
+ *
34
+ * For linear-in-rgb modules (tint multiply, brightness add, lerp between
35
+ * two premul values, Porter-Duff over), prefer the `premul*` helpers
36
+ * (`premulScale`, `premulAdd`, `premulOver`) so the *intent* is local —
37
+ * a reader doesn't have to verify the math is linearity-safe by eye.
38
+ *
39
+ * **Migration status.** Two modules use this bundle today as proof of
40
+ * concept: `_canary.passthrough@1` (linear) and `color.invert@1` (nonlinear,
41
+ * previously hand-rolled the unpremul dance). Migrating the remaining 47
42
+ * shader modules is tracked separately and is deliberate follow-up work —
43
+ * the bundle is ship-ready; the rest of the pool isn't blocked on it.
44
+ */
45
+ export const WGSL_PREMUL_HELPERS = /* wgsl */ `
46
+ // ---- Typed-color helpers (premul-invariant) -------------------------------
47
+ // Distinct structs; WGSL nominal typing prevents Premul/Straight from being
48
+ // swapped, and neither has a .rgb field so channel access is forced through
49
+ // unpremul()/premul().
50
+ struct Premul { v: vec4f }
51
+ struct Straight { v: vec4f }
52
+
53
+ fn samplePremul(t: texture_2d<f32>, s: sampler, uv: vec2f) -> Premul {
54
+ return Premul(textureSample(t, s, uv));
55
+ }
56
+
57
+ fn sampleStraight(t: texture_2d<f32>, s: sampler, uv: vec2f) -> Straight {
58
+ return Straight(textureSample(t, s, uv));
59
+ }
60
+
61
+ // 1/255 floor avoids dividing by zero on transparent pixels; the resulting
62
+ // "straight" color of a fully-transparent pixel is undefined anyway because
63
+ // rgb*0 = 0 erases all information, but the floor keeps math finite and
64
+ // matches the convention used elsewhere in the pool.
65
+ fn unpremul(p: Premul) -> Straight {
66
+ let a = max(p.v.a, 1.0 / 255.0);
67
+ return Straight(vec4f(p.v.rgb / a, p.v.a));
68
+ }
69
+
70
+ fn premul(s: Straight) -> Premul {
71
+ return Premul(vec4f(s.v.rgb * s.v.a, s.v.a));
72
+ }
73
+
74
+ // Linear-op helpers — safe to apply directly to premul values without an
75
+ // unpremul round-trip. Use these when you want the intent ("this is a
76
+ // premul-safe linear op") to be visible at the call site.
77
+ fn premulScale(p: Premul, k: f32) -> Premul {
78
+ return Premul(p.v * k);
79
+ }
80
+
81
+ fn premulAdd(a: Premul, b: Premul) -> Premul {
82
+ return Premul(a.v + b.v);
83
+ }
84
+
85
+ // Premultiplied Porter-Duff "over": src over dst, correct on premul inputs.
86
+ fn premulOver(src: Premul, dst: Premul) -> Premul {
87
+ return Premul(src.v + dst.v * (1.0 - src.v.a));
88
+ }
89
+ `;
90
+ //# sourceMappingURL=premulWgsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"premulWgsl.js","sourceRoot":"","sources":["../../src/shared/premulWgsl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C7C,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * `LabeledTexture` — a `GPUTexture` plus the metadata the Executor validates
3
+ * against a module's I/O contract.
4
+ *
5
+ * Every texture in flight through the pool is labeled: it carries its color
6
+ * space, alpha association, format, dimensions, and binding kind. The
7
+ * Executor checks bound inputs against the module's declared contract at
8
+ * bind time; mismatches fail loud or (later phases) route through a
9
+ * registered conversion.
10
+ *
11
+ * It also exposes a `contentVersion` counter, bumped on every write. That is
12
+ * the `inputs_content_hash` source for the future cache key (Phase 3) — full
13
+ * pixel hashing is not required.
14
+ */
15
+ import type { AlphaMode, BindingKind, ColorSpaceTag } from "./types.js";
16
+ /** Storage encoding + association recorded per texture. */
17
+ export interface LabeledTextureMeta {
18
+ colorSpace: ColorSpaceTag;
19
+ alpha: AlphaMode;
20
+ bindingKind: BindingKind;
21
+ }
22
+ export interface CreateLabeledTextureOptions {
23
+ width: number;
24
+ height: number;
25
+ format: GPUTextureFormat;
26
+ usage: GPUTextureUsageFlags;
27
+ label?: string;
28
+ meta?: Partial<LabeledTextureMeta>;
29
+ }
30
+ export declare class LabeledTexture {
31
+ readonly texture: GPUTexture;
32
+ readonly label: string;
33
+ readonly format: GPUTextureFormat;
34
+ readonly width: number;
35
+ readonly height: number;
36
+ readonly meta: LabeledTextureMeta;
37
+ private version;
38
+ constructor(texture: GPUTexture, info: {
39
+ label: string;
40
+ format: GPUTextureFormat;
41
+ width: number;
42
+ height: number;
43
+ meta: LabeledTextureMeta;
44
+ });
45
+ /** Monotonic counter, bumped by {@link markWritten}. */
46
+ get contentVersion(): number;
47
+ /** Record that this texture's pixels changed (cache-key source). */
48
+ markWritten(): void;
49
+ createView(descriptor?: GPUTextureViewDescriptor): GPUTextureView;
50
+ destroy(): void;
51
+ }
52
+ /** Allocate a fresh {@link LabeledTexture} on the given device. */
53
+ export declare function createLabeledTexture(device: GPUDevice, options: CreateLabeledTextureOptions): LabeledTexture;
54
+ //# sourceMappingURL=texture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../src/texture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAExE,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,aAAa,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACpC;AAQD,qBAAa,cAAc;IACzB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAElC,OAAO,CAAC,OAAO,CAAK;IAEpB,YACE,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,gBAAgB,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,kBAAkB,CAAC;KAC1B,EAQF;IAED,wDAAwD;IACxD,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,oEAAoE;IACpE,WAAW,IAAI,IAAI,CAElB;IAED,UAAU,CAAC,UAAU,CAAC,EAAE,wBAAwB,GAAG,cAAc,CAEhE;IAED,OAAO,IAAI,IAAI,CAEd;CACF;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,2BAA2B,GACnC,cAAc,CAiBhB"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * `LabeledTexture` — a `GPUTexture` plus the metadata the Executor validates
3
+ * against a module's I/O contract.
4
+ *
5
+ * Every texture in flight through the pool is labeled: it carries its color
6
+ * space, alpha association, format, dimensions, and binding kind. The
7
+ * Executor checks bound inputs against the module's declared contract at
8
+ * bind time; mismatches fail loud or (later phases) route through a
9
+ * registered conversion.
10
+ *
11
+ * It also exposes a `contentVersion` counter, bumped on every write. That is
12
+ * the `inputs_content_hash` source for the future cache key (Phase 3) — full
13
+ * pixel hashing is not required.
14
+ */
15
+ const DEFAULT_META = {
16
+ colorSpace: "linear",
17
+ alpha: "premultiplied",
18
+ bindingKind: "texture_2d"
19
+ };
20
+ export class LabeledTexture {
21
+ texture;
22
+ label;
23
+ format;
24
+ width;
25
+ height;
26
+ meta;
27
+ version = 0;
28
+ constructor(texture, info) {
29
+ this.texture = texture;
30
+ this.label = info.label;
31
+ this.format = info.format;
32
+ this.width = info.width;
33
+ this.height = info.height;
34
+ this.meta = info.meta;
35
+ }
36
+ /** Monotonic counter, bumped by {@link markWritten}. */
37
+ get contentVersion() {
38
+ return this.version;
39
+ }
40
+ /** Record that this texture's pixels changed (cache-key source). */
41
+ markWritten() {
42
+ this.version += 1;
43
+ }
44
+ createView(descriptor) {
45
+ return this.texture.createView(descriptor);
46
+ }
47
+ destroy() {
48
+ this.texture.destroy();
49
+ }
50
+ }
51
+ /** Allocate a fresh {@link LabeledTexture} on the given device. */
52
+ export function createLabeledTexture(device, options) {
53
+ const width = Math.max(1, Math.floor(options.width));
54
+ const height = Math.max(1, Math.floor(options.height));
55
+ const label = options.label ?? "labeled-texture";
56
+ const texture = device.createTexture({
57
+ label,
58
+ size: { width, height },
59
+ format: options.format,
60
+ usage: options.usage
61
+ });
62
+ return new LabeledTexture(texture, {
63
+ label,
64
+ format: options.format,
65
+ width,
66
+ height,
67
+ meta: { ...DEFAULT_META, ...options.meta }
68
+ });
69
+ }
70
+ //# sourceMappingURL=texture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texture.js","sourceRoot":"","sources":["../src/texture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAoBH,MAAM,YAAY,GAAuB;IACvC,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,YAAY;CAC1B,CAAC;AAEF,MAAM,OAAO,cAAc;IAChB,OAAO,CAAa;IACpB,KAAK,CAAS;IACd,MAAM,CAAmB;IACzB,KAAK,CAAS;IACd,MAAM,CAAS;IACf,IAAI,CAAqB;IAE1B,OAAO,GAAG,CAAC,CAAC;IAEpB,YACE,OAAmB,EACnB,IAMC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,wDAAwD;IACxD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,oEAAoE;IACpE,WAAW;QACT,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,UAAU,CAAC,UAAqC;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,OAAoC;IAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;QACnC,KAAK;QACL,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACvB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IACH,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE;QACjC,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK;QACL,MAAM;QACN,IAAI,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE;KAC3C,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Shared shader-pool contracts. Pure types + small const tuples — no WebGPU
3
+ * runtime, Node-safe. The pool's atomic unit of reuse is a {@link
4
+ * ShaderModule} (see `module.ts`); these are the vocabulary its fields are
5
+ * built from.
6
+ */
7
+ /**
8
+ * Operation category. Drives registry grouping and (later) workflow-node
9
+ * palette organization. Open-ended on purpose — the catalog grows across
10
+ * phases — but the Phase 1–3 set is enumerated so typos fail typecheck.
11
+ */
12
+ export type ShaderCategory = "filters" | "color" | "keyer" | "mask" | "sources" | "transform" | "mixer" | "compositor" | "alpha" | "_canary";
13
+ /**
14
+ * Stability surface. `internal` modules are free to churn; `published`
15
+ * modules are frozen (additive-only) and are the only ones workflow nodes
16
+ * may reference (Phase 4). Promotion is a deliberate review, never a side
17
+ * effect of authoring a shader.
18
+ */
19
+ export type ShaderSurface = "internal" | "published";
20
+ /**
21
+ * Dispatch kind. `fragment` (full-screen triangle render pass) is the
22
+ * default for image-in/image-out ops. `compute` is reserved for ops that
23
+ * genuinely need shared memory or reductions. `snippet` is a reusable WGSL
24
+ * fragment with no entry point of its own (resolved into other modules).
25
+ */
26
+ export type ShaderKind = "fragment" | "compute" | "snippet";
27
+ /** Working color space a module input expects / an output is encoded in. */
28
+ export type ColorSpaceTag = "linear" | "srgb";
29
+ /**
30
+ * Alpha association. The pool keeps alpha **premultiplied between modules**;
31
+ * `straight` appears only at host boundaries (decode/encode).
32
+ */
33
+ export type AlphaMode = "premultiplied" | "straight";
34
+ /**
35
+ * Premul-invariant classification for a module's RGB math.
36
+ *
37
+ * - `linear-in-rgb` — the shader's RGB output is a linear function of its RGB
38
+ * input (scale, add, lerp, convolution with normalized weights). Safe to
39
+ * apply directly to premultiplied input; preserves the rgb ≤ a invariant.
40
+ * - `nonlinear-in-rgb` — the shader applies a nonlinear function to RGB (pow,
41
+ * log, hue rotate, threshold, posterize). MUST unpremultiply before the op
42
+ * and re-premultiply after, otherwise output violates rgb ≤ a.
43
+ * - `alpha-only` — the shader does not read or write RGB (only alpha math,
44
+ * RGB output is zero or pass-through).
45
+ * - `source` — no RGB input (generator); responsibility for premul-valid
46
+ * output rests on the source itself.
47
+ *
48
+ * This tag is read by the static WGSL validator (load-time) and the runtime
49
+ * debug pass (per-dispatch).
50
+ */
51
+ export type LinearityMode = "linear-in-rgb" | "nonlinear-in-rgb" | "alpha-only" | "source";
52
+ /**
53
+ * How a binding is presented to WGSL. Phase 1 ships `texture_2d`; `texture_external`
54
+ * (camera/video fast path) arrives with variants in Phase 3. Kept a string
55
+ * enum until a module needs format/dimension discrimination (deferred).
56
+ */
57
+ export type BindingKind = "texture_2d" | "texture_external";
58
+ /**
59
+ * Region-of-definition propagation. Declared by every module from Phase 1;
60
+ * the Executor does nothing with it until a real consumer (blur, crop,
61
+ * composite) demands propagation. Declaring it now avoids retrofitting a
62
+ * 50-module catalog later.
63
+ */
64
+ export type RodSpec = "same-as:source" | `expand:${string}` | "union-of-inputs" | "explicit";
65
+ /** How an output's dimensions are derived. */
66
+ export type OutputDimensions = `same-as:${string}` | "host-specified" | "derived";
67
+ /** A declared texture input. `"source"` and `"mask"` are reserved names. */
68
+ export interface InputContract {
69
+ colorSpace: ColorSpaceTag;
70
+ alpha: AlphaMode;
71
+ bindingKinds: readonly BindingKind[];
72
+ /** Optional inputs sample as fully-covered (mask → 1.0) when unbound. */
73
+ optional?: boolean;
74
+ }
75
+ /** The declared output of a module. */
76
+ export interface OutputContract {
77
+ colorSpace: ColorSpaceTag;
78
+ alpha: AlphaMode;
79
+ format: GPUTextureFormat;
80
+ dimensions: OutputDimensions;
81
+ }
82
+ /**
83
+ * I/O contract. The Executor validates bound {@link LabeledTexture}s against
84
+ * this at encode time; mismatches fail loud or route through a registered
85
+ * conversion (later phases). Source modules declare `inputs: {}`.
86
+ */
87
+ export interface IOContract {
88
+ inputs: Record<string, InputContract>;
89
+ output: OutputContract;
90
+ rod: RodSpec;
91
+ }
92
+ /**
93
+ * Non-semantic UI hint for a param (min/max/step/notes). Carries no runtime
94
+ * meaning — the TypeGPU schema is the source of truth for layout and type.
95
+ */
96
+ export interface UiHint {
97
+ min?: number;
98
+ max?: number;
99
+ step?: number;
100
+ label?: string;
101
+ notes?: string;
102
+ }
103
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,OAAO,GACP,OAAO,GACP,MAAM,GACN,SAAS,GACT,WAAW,GACX,OAAO,GACP,YAAY,GACZ,OAAO,GACP,SAAS,CAAC;AAEd;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC;AAErD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5D,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,UAAU,CAAC;AAErD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,kBAAkB,GAClB,YAAY,GACZ,QAAQ,CAAC;AAEb;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,kBAAkB,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GACf,gBAAgB,GAChB,UAAU,MAAM,EAAE,GAClB,iBAAiB,GACjB,UAAU,CAAC;AAEf,8CAA8C;AAC9C,MAAM,MAAM,gBAAgB,GACxB,WAAW,MAAM,EAAE,GACnB,gBAAgB,GAChB,SAAS,CAAC;AAEd,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,aAAa,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IACrC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,aAAa,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,OAAO,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}