@holoscript/core 7.0.0 → 8.0.0

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 (345) hide show
  1. package/README.md +2 -2
  2. package/bin/holoscript.cjs +3 -0
  3. package/dist/GLTFPipeline-276GE64O.js +16 -0
  4. package/dist/GLTFPipeline-M7WSSJED.cjs +37 -0
  5. package/dist/HoloScriptPlusParser-7FBIFUFC.js +693 -0
  6. package/dist/HoloScriptPlusParser-A2W7OCN2.cjs +698 -0
  7. package/dist/HoloScriptPlusParser-F2Z56FJR.js +10 -0
  8. package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +27 -0
  9. package/dist/HoloScriptRuntime-3URVTKPJ.js +10 -0
  10. package/dist/HoloScriptRuntime-SXEAEU2N.cjs +19 -0
  11. package/dist/USDZExporter-3FWJ25JI.cjs +1037 -0
  12. package/dist/USDZExporter-D2HQLQYK.js +1035 -0
  13. package/dist/agents/index.cjs +19 -0
  14. package/dist/agents/index.d.ts +100 -0
  15. package/dist/agents/index.js +17 -0
  16. package/dist/chunk-23J755AR.js +1046 -0
  17. package/dist/chunk-253GBQZY.cjs +627 -0
  18. package/dist/chunk-25IQCHTO.cjs +781 -0
  19. package/dist/chunk-2BSMSUCE.js +1941 -0
  20. package/dist/chunk-2M2DPHKB.js +762 -0
  21. package/dist/chunk-2YSNA2F2.cjs +1274 -0
  22. package/dist/chunk-3AO425MZ.cjs +886 -0
  23. package/dist/chunk-3FOKASKO.cjs +348 -0
  24. package/dist/chunk-3HYYMEXI.cjs +56578 -0
  25. package/dist/chunk-3NFFOWGG.js +4287 -0
  26. package/dist/chunk-3WZEJHUQ.cjs +116 -0
  27. package/dist/chunk-4C57PR42.js +468 -0
  28. package/dist/chunk-4N4SXXWF.js +769 -0
  29. package/dist/chunk-4PDEPEQW.cjs +41 -0
  30. package/dist/chunk-4R6SBXDB.js +45 -0
  31. package/dist/chunk-4V2E7U7Q.cjs +2015 -0
  32. package/dist/chunk-5FSKKMR7.cjs +2092 -0
  33. package/dist/chunk-5GLCTO44.js +161 -0
  34. package/dist/chunk-5JEU52DW.js +382 -0
  35. package/dist/chunk-5S7RKFGR.cjs +446 -0
  36. package/dist/chunk-5WUNN6ZN.cjs +428 -0
  37. package/dist/chunk-62FBK3B7.js +70 -0
  38. package/dist/chunk-6CTRH7HT.cjs +1985 -0
  39. package/dist/chunk-6DPSFNJB.cjs +847 -0
  40. package/dist/chunk-6EX3I5P4.cjs +130 -0
  41. package/dist/chunk-73FELZVJ.cjs +611 -0
  42. package/dist/chunk-7CUEMLDZ.cjs +6445 -0
  43. package/dist/chunk-7HIASF7S.cjs +814 -0
  44. package/dist/chunk-A6KINLZJ.js +236 -0
  45. package/dist/chunk-AIA52I7T.cjs +543 -0
  46. package/dist/chunk-ANXZFVY2.js +113 -0
  47. package/dist/chunk-AYBXB26F.js +2176 -0
  48. package/dist/chunk-B4TFTDG4.js +449 -0
  49. package/dist/chunk-BE4UJCQT.js +623 -0
  50. package/dist/chunk-BRQJKJGT.cjs +20 -0
  51. package/dist/chunk-C2A5DUMF.cjs +689 -0
  52. package/dist/chunk-C37BHB7N.cjs +636 -0
  53. package/dist/chunk-CBJY23VL.js +126 -0
  54. package/dist/chunk-CIWWXYHZ.cjs +50 -0
  55. package/dist/chunk-CXFDRBQU.cjs +672 -0
  56. package/dist/chunk-D54CNIAJ.cjs +413 -0
  57. package/dist/chunk-DAJXW4KX.js +725 -0
  58. package/dist/chunk-DTGBOSEM.cjs +319 -0
  59. package/dist/chunk-E7JP3BS3.cjs +61 -0
  60. package/dist/chunk-EKBKLK7P.js +1169 -0
  61. package/dist/chunk-EKYL4PE3.cjs +404 -0
  62. package/dist/chunk-EUDQTK7N.cjs +4310 -0
  63. package/dist/chunk-EXKSFGSX.cjs +274 -0
  64. package/dist/chunk-EXUP2BUM.cjs +1173 -0
  65. package/dist/chunk-F43YAA34.js +623 -0
  66. package/dist/chunk-FDSGHPAK.js +130 -0
  67. package/dist/chunk-FEWUHQNM.cjs +144 -0
  68. package/dist/chunk-FGGJQRLZ.js +270 -0
  69. package/dist/chunk-FHP6LXJS.js +415 -0
  70. package/dist/chunk-FJPADH77.cjs +666 -0
  71. package/dist/chunk-FYSPZT4V.cjs +169 -0
  72. package/dist/chunk-GIOYPNTH.js +5575 -0
  73. package/dist/chunk-GJNCFRJU.cjs +125 -0
  74. package/dist/chunk-GMP623FG.cjs +1508 -0
  75. package/dist/chunk-GQHQOPXZ.cjs +5580 -0
  76. package/dist/chunk-GQT4TYKY.cjs +4381 -0
  77. package/dist/chunk-GTU2Z2WW.cjs +262 -0
  78. package/dist/chunk-GYZE55MO.js +2007 -0
  79. package/dist/chunk-GZG4KA4E.js +529 -0
  80. package/dist/chunk-H652NHX5.js +600 -0
  81. package/dist/chunk-HCCQLAA4.cjs +74 -0
  82. package/dist/chunk-HINXWAOD.cjs +1049 -0
  83. package/dist/chunk-HYNTS5CP.js +422 -0
  84. package/dist/chunk-HZSPDCXV.cjs +457 -0
  85. package/dist/chunk-HZTDET3N.js +1399 -0
  86. package/dist/chunk-I6XZ5DZF.cjs +488 -0
  87. package/dist/chunk-ILRBGFVD.cjs +72 -0
  88. package/dist/chunk-IPWSXCCN.js +1183 -0
  89. package/dist/chunk-IUTY5WQ2.cjs +424 -0
  90. package/dist/chunk-IVSZDECV.js +882 -0
  91. package/dist/chunk-IVY74O6C.js +247 -0
  92. package/dist/chunk-IZM5VQZD.js +714 -0
  93. package/dist/chunk-J32ZJZJH.js +554 -0
  94. package/dist/chunk-J6M4FPK5.js +421 -0
  95. package/dist/chunk-JC5YBPSF.cjs +984 -0
  96. package/dist/chunk-JCLBKPMX.js +3813 -0
  97. package/dist/chunk-JD7CIZ33.js +1949 -0
  98. package/dist/chunk-JIYN45TV.cjs +2525 -0
  99. package/dist/chunk-JJBE3TIH.cjs +1189 -0
  100. package/dist/chunk-JX7YL6ZE.js +2252 -0
  101. package/dist/chunk-K4VVR7CN.cjs +2433 -0
  102. package/dist/chunk-KEFNV2WM.cjs +2257 -0
  103. package/dist/chunk-KH4CNH66.cjs +424 -0
  104. package/dist/chunk-KJLB4OPV.js +5731 -0
  105. package/dist/chunk-KKFZ3B6J.cjs +557 -0
  106. package/dist/chunk-KKP7JKN4.cjs +6002 -0
  107. package/dist/chunk-KPJL34Y7.cjs +186 -0
  108. package/dist/chunk-KQCN6AKJ.cjs +3042 -0
  109. package/dist/chunk-KVRSTFNH.cjs +72 -0
  110. package/dist/chunk-LICPB5HZ.cjs +1409 -0
  111. package/dist/chunk-LM2VU56C.cjs +37 -0
  112. package/dist/chunk-M56JSP4A.js +400 -0
  113. package/dist/chunk-MBOOR7X4.js +18 -0
  114. package/dist/chunk-MGE5Z4GS.js +608 -0
  115. package/dist/chunk-MXFUTKCO.js +56 -0
  116. package/dist/chunk-MYY4PMWX.cjs +264 -0
  117. package/dist/chunk-N75IH2HY.js +258 -0
  118. package/dist/chunk-NBMHU6SW.js +669 -0
  119. package/dist/chunk-NG77ATEW.cjs +778 -0
  120. package/dist/chunk-NGKREZ36.js +6384 -0
  121. package/dist/chunk-NHWSN2SD.cjs +718 -0
  122. package/dist/chunk-NV4VMVXU.js +421 -0
  123. package/dist/chunk-NW5G5FBQ.js +215 -0
  124. package/dist/chunk-NXZFOPVD.cjs +5737 -0
  125. package/dist/chunk-OBIYPYYS.cjs +1993 -0
  126. package/dist/chunk-OIQYIIO3.cjs +473 -0
  127. package/dist/chunk-OL46QLBJ.js +61 -0
  128. package/dist/chunk-OMXII44L.js +5386 -0
  129. package/dist/chunk-OR4Q2BGL.cjs +759 -0
  130. package/dist/chunk-OSYNRVOV.cjs +243 -0
  131. package/dist/chunk-PGANYCAG.cjs +220 -0
  132. package/dist/chunk-PHENW4MQ.js +65 -0
  133. package/dist/chunk-PHVRG4I2.js +844 -0
  134. package/dist/chunk-Q56TT7IL.js +483 -0
  135. package/dist/chunk-QPOQ7VPI.js +1491 -0
  136. package/dist/chunk-QPSKHBJP.js +5963 -0
  137. package/dist/chunk-QXH7QDSZ.js +1989 -0
  138. package/dist/chunk-R75BSDH7.cjs +50 -0
  139. package/dist/chunk-RARB3MBR.js +207 -0
  140. package/dist/chunk-RVBHAXFG.js +56160 -0
  141. package/dist/chunk-S3MDHNKB.cjs +490 -0
  142. package/dist/chunk-S4W6Z2MN.js +2426 -0
  143. package/dist/chunk-S6YWHCKV.cjs +410 -0
  144. package/dist/chunk-SIEXCILW.js +229 -0
  145. package/dist/chunk-SJBGLS25.cjs +2196 -0
  146. package/dist/chunk-SLU6UPJI.cjs +410 -0
  147. package/dist/chunk-SMIWS6DE.cjs +212 -0
  148. package/dist/chunk-T2QCTZMO.js +811 -0
  149. package/dist/chunk-T5J7ZKP3.cjs +4885 -0
  150. package/dist/chunk-TDCNJHWO.js +341 -0
  151. package/dist/chunk-TG7O4WBC.js +406 -0
  152. package/dist/chunk-THCK6ECW.js +2085 -0
  153. package/dist/chunk-TJHVSBP2.js +439 -0
  154. package/dist/chunk-TVHSPJ4N.cjs +606 -0
  155. package/dist/chunk-U44IKGG7.cjs +5390 -0
  156. package/dist/chunk-UJXISJBN.js +487 -0
  157. package/dist/chunk-UM6C3CGK.js +4375 -0
  158. package/dist/chunk-UMABK6SI.js +686 -0
  159. package/dist/chunk-UOIGFQXC.cjs +9750 -0
  160. package/dist/chunk-URG2SJLK.js +2521 -0
  161. package/dist/chunk-V6MKC2FZ.js +979 -0
  162. package/dist/chunk-VECQYRXL.js +474 -0
  163. package/dist/chunk-VJ3L7CHT.cjs +169 -0
  164. package/dist/chunk-VMLKSV26.js +1216 -0
  165. package/dist/chunk-VVKVQZI6.js +55 -0
  166. package/dist/chunk-W6RW64BB.cjs +1219 -0
  167. package/dist/chunk-W7VDOASB.cjs +639 -0
  168. package/dist/chunk-WDT3JTGM.cjs +483 -0
  169. package/dist/chunk-WJIHFLMJ.js +404 -0
  170. package/dist/chunk-WKX5AMOY.js +309 -0
  171. package/dist/chunk-WNNE3PO3.js +34 -0
  172. package/dist/chunk-WRKUDAZJ.js +3038 -0
  173. package/dist/chunk-WRLUBRKS.cjs +1943 -0
  174. package/dist/chunk-WRNEH5MO.js +3169 -0
  175. package/dist/chunk-WRWEX5ZF.js +658 -0
  176. package/dist/chunk-X3GJPRVK.cjs +3246 -0
  177. package/dist/chunk-XHIV6326.cjs +793 -0
  178. package/dist/chunk-XIVIE43A.cjs +729 -0
  179. package/dist/chunk-XJAN7CZG.cjs +432 -0
  180. package/dist/chunk-XKTPFXGA.js +164 -0
  181. package/dist/chunk-XL6INWKT.js +121 -0
  182. package/dist/chunk-XSFNHP2E.js +632 -0
  183. package/dist/chunk-XT6JY5W5.js +9684 -0
  184. package/dist/chunk-XUILI4KB.cjs +430 -0
  185. package/dist/chunk-XUUVDHIF.cjs +3962 -0
  186. package/dist/chunk-YF2I3MV3.js +46 -0
  187. package/dist/chunk-YIMN575O.js +4847 -0
  188. package/dist/chunk-YIVFJNYV.js +176 -0
  189. package/dist/chunk-YKGPCZEE.cjs +237 -0
  190. package/dist/chunk-YN6V7R3L.cjs +327 -0
  191. package/dist/chunk-YQELFNJV.js +39 -0
  192. package/dist/chunk-YYXH45E2.js +426 -0
  193. package/dist/chunk-ZBQXLH2L.js +756 -0
  194. package/dist/chunk-ZDSYWBIE.cjs +69 -0
  195. package/dist/chunk-ZU7NIRT6.js +325 -0
  196. package/dist/chunk-ZZ7RO2UQ.js +1243 -0
  197. package/dist/chunk-ZZEI7MV4.js +778 -0
  198. package/dist/cli/holoscript-runner.cjs +2255 -0
  199. package/dist/cli/holoscript-runner.js +2230 -0
  200. package/dist/codebase/index.cjs +336 -0
  201. package/dist/codebase/index.js +331 -0
  202. package/dist/compiler/agent-inference.cjs +31 -0
  203. package/dist/compiler/agent-inference.js +8 -0
  204. package/dist/compiler/android-xr.cjs +24 -0
  205. package/dist/compiler/android-xr.js +14 -0
  206. package/dist/compiler/android.cjs +24 -0
  207. package/dist/compiler/android.js +14 -0
  208. package/dist/compiler/ar.cjs +23 -0
  209. package/dist/compiler/ar.js +11 -0
  210. package/dist/compiler/babylon.cjs +21 -0
  211. package/dist/compiler/babylon.js +15 -0
  212. package/dist/compiler/business-quest.cjs +43 -0
  213. package/dist/compiler/business-quest.js +4 -0
  214. package/dist/compiler/coco.cjs +27 -0
  215. package/dist/compiler/coco.js +4 -0
  216. package/dist/compiler/context.cjs +25 -0
  217. package/dist/compiler/context.d.ts +28 -0
  218. package/dist/compiler/context.js +8 -0
  219. package/dist/compiler/domain-block-utils.cjs +605 -0
  220. package/dist/compiler/domain-block-utils.js +11 -0
  221. package/dist/compiler/dtdl.cjs +27 -0
  222. package/dist/compiler/dtdl.js +11 -0
  223. package/dist/compiler/gltf-pipeline.cjs +39 -0
  224. package/dist/compiler/gltf-pipeline.js +4 -0
  225. package/dist/compiler/godot.cjs +18 -0
  226. package/dist/compiler/godot.js +12 -0
  227. package/dist/compiler/incremental.cjs +34 -0
  228. package/dist/compiler/incremental.js +9 -0
  229. package/dist/compiler/index.cjs +5860 -0
  230. package/dist/compiler/index.d.ts +322 -21
  231. package/dist/compiler/index.js +5525 -0
  232. package/dist/compiler/ios.cjs +23 -0
  233. package/dist/compiler/ios.js +13 -0
  234. package/dist/compiler/llm-provider-capabilities.cjs +25 -0
  235. package/dist/compiler/llm-provider-capabilities.d.ts +43 -0
  236. package/dist/compiler/llm-provider-capabilities.js +8 -0
  237. package/dist/compiler/multi-layer.cjs +24 -0
  238. package/dist/compiler/multi-layer.js +15 -0
  239. package/dist/compiler/nodetoy.cjs +23 -0
  240. package/dist/compiler/nodetoy.js +4 -0
  241. package/dist/compiler/openxr.cjs +19 -0
  242. package/dist/compiler/openxr.js +13 -0
  243. package/dist/compiler/playcanvas.cjs +19 -0
  244. package/dist/compiler/playcanvas.js +13 -0
  245. package/dist/compiler/r3f.cjs +38 -0
  246. package/dist/compiler/r3f.d.ts +22 -0
  247. package/dist/compiler/r3f.js +16 -0
  248. package/dist/compiler/remotion.cjs +23 -0
  249. package/dist/compiler/remotion.js +4 -0
  250. package/dist/compiler/reproducibility.cjs +39 -0
  251. package/dist/compiler/reproducibility.js +4 -0
  252. package/dist/compiler/sdf.cjs +24 -0
  253. package/dist/compiler/sdf.js +12 -0
  254. package/dist/compiler/semantic-scene.cjs +31 -0
  255. package/dist/compiler/semantic-scene.js +4 -0
  256. package/dist/compiler/state.cjs +21 -0
  257. package/dist/compiler/state.js +11 -0
  258. package/dist/compiler/trait-composition.cjs +30 -0
  259. package/dist/compiler/trait-composition.js +9 -0
  260. package/dist/compiler/unity.cjs +19 -0
  261. package/dist/compiler/unity.js +13 -0
  262. package/dist/compiler/unreal.cjs +23 -0
  263. package/dist/compiler/unreal.js +13 -0
  264. package/dist/compiler/urdf.cjs +52 -0
  265. package/dist/compiler/urdf.js +12 -0
  266. package/dist/compiler/usd-physics.cjs +26 -0
  267. package/dist/compiler/usd-physics.js +9 -0
  268. package/dist/compiler/visionos.cjs +19 -0
  269. package/dist/compiler/visionos.js +13 -0
  270. package/dist/compiler/vrchat.cjs +22 -0
  271. package/dist/compiler/vrchat.js +12 -0
  272. package/dist/compiler/vrr.cjs +24 -0
  273. package/dist/compiler/vrr.js +12 -0
  274. package/dist/compiler/wasm.cjs +36 -0
  275. package/dist/compiler/wasm.js +12 -0
  276. package/dist/compiler/webgpu.cjs +18 -0
  277. package/dist/compiler/webgpu.js +12 -0
  278. package/dist/coordinators/index.cjs +1266 -0
  279. package/dist/coordinators/index.d.ts +72 -1
  280. package/dist/coordinators/index.js +1259 -0
  281. package/dist/debugger.cjs +24 -0
  282. package/dist/debugger.js +11 -0
  283. package/dist/entries/interop.cjs +64 -0
  284. package/dist/entries/interop.js +7 -0
  285. package/dist/entries/scripting.cjs +55 -0
  286. package/dist/entries/scripting.js +10 -0
  287. package/dist/hololand/index.cjs +146 -0
  288. package/dist/hololand/index.d.ts +70 -0
  289. package/dist/hololand/index.js +5 -0
  290. package/dist/index.cjs +43233 -0
  291. package/dist/index.d.ts +976 -21
  292. package/dist/index.js +39995 -0
  293. package/dist/math/tropical-spmv.cjs +45 -0
  294. package/dist/math/tropical-spmv.js +4 -0
  295. package/dist/math/vec3.cjs +57 -0
  296. package/dist/math/vec3.js +4 -0
  297. package/dist/ml-dsa-FSKBTE3W.cjs +1265 -0
  298. package/dist/ml-dsa-Z7JDKW4L.js +1265 -0
  299. package/dist/paper-0c-spike/index.cjs +150 -0
  300. package/dist/paper-0c-spike/index.js +141 -0
  301. package/dist/parser.cjs +61 -0
  302. package/dist/parser.d.ts +11 -0
  303. package/dist/parser.js +12 -0
  304. package/dist/playwright-3AT3AKTV.cjs +98673 -0
  305. package/dist/playwright-VZPDVUEQ.js +98660 -0
  306. package/dist/reconstruction/index.cjs +153 -0
  307. package/dist/reconstruction/index.d.ts +29 -2
  308. package/dist/reconstruction/index.js +8 -0
  309. package/dist/runtime.cjs +316 -0
  310. package/dist/runtime.d.ts +61 -0
  311. package/dist/runtime.js +31 -0
  312. package/dist/self-improvement/index.cjs +563 -0
  313. package/dist/self-improvement/index.js +545 -0
  314. package/dist/storage/index.cjs +38 -0
  315. package/dist/storage/index.js +5 -0
  316. package/dist/testing.cjs +25 -0
  317. package/dist/testing.d.ts +70 -0
  318. package/dist/testing.js +4 -0
  319. package/dist/traitDocs/traitDocs.cjs +33 -0
  320. package/dist/traitDocs/traitDocs.js +7 -0
  321. package/dist/traits/botanical-lotus.cjs +41 -0
  322. package/dist/traits/botanical-lotus.d.ts +172 -0
  323. package/dist/traits/botanical-lotus.js +4 -0
  324. package/dist/traits/engines/index.cjs +520 -0
  325. package/dist/traits/engines/index.js +380 -0
  326. package/dist/traits/index.cjs +24409 -0
  327. package/dist/traits/index.d.ts +171 -35
  328. package/dist/traits/index.js +21634 -0
  329. package/dist/traits/simulation-solver-factory.cjs +13 -0
  330. package/dist/traits/simulation-solver-factory.d.ts +23 -0
  331. package/dist/traits/simulation-solver-factory.js +4 -0
  332. package/dist/traits/webcam-gaze.cjs +35 -0
  333. package/dist/traits/webcam-gaze.d.ts +17 -0
  334. package/dist/traits/webcam-gaze.js +4 -0
  335. package/dist/type-checker.cjs +19 -0
  336. package/dist/type-checker.js +6 -0
  337. package/dist/world/index.cjs +947 -0
  338. package/dist/world/index.d.ts +147 -0
  339. package/dist/world/index.js +939 -0
  340. package/dist/world-model/index.cjs +1446 -0
  341. package/dist/world-model/index.d.ts +119 -0
  342. package/dist/world-model/index.js +1414 -0
  343. package/dist/wot/index.cjs +29 -0
  344. package/dist/wot/index.js +4 -0
  345. package/package.json +93 -49
@@ -0,0 +1,406 @@
1
+ // src/compiler/NodeToyMapping.ts
2
+ var NODE_TYPE_MAP = {
3
+ // Math operations
4
+ Add: { expression: "({in:a} + {in:b})", outputType: "float" },
5
+ Subtract: { expression: "({in:a} - {in:b})", outputType: "float" },
6
+ Multiply: { expression: "({in:a} * {in:b})", outputType: "float" },
7
+ Divide: { expression: "({in:a} / max({in:b}, 0.0001))", outputType: "float" },
8
+ Power: { expression: "pow({in:a}, {in:b})", outputType: "float" },
9
+ Sqrt: { expression: "sqrt({in:a})", outputType: "float" },
10
+ Abs: { expression: "abs({in:a})", outputType: "float" },
11
+ Sign: { expression: "sign({in:a})", outputType: "float" },
12
+ Floor: { expression: "floor({in:a})", outputType: "float" },
13
+ Ceil: { expression: "ceil({in:a})", outputType: "float" },
14
+ Fract: { expression: "fract({in:a})", outputType: "float" },
15
+ Mod: { expression: "mod({in:a}, {in:b})", outputType: "float" },
16
+ Min: { expression: "min({in:a}, {in:b})", outputType: "float" },
17
+ Max: { expression: "max({in:a}, {in:b})", outputType: "float" },
18
+ Clamp: { expression: "clamp({in:a}, {in:min}, {in:max})", outputType: "float" },
19
+ Lerp: { expression: "mix({in:a}, {in:b}, {in:t})", outputType: "float" },
20
+ Smoothstep: { expression: "smoothstep({in:edge0}, {in:edge1}, {in:x})", outputType: "float" },
21
+ Step: { expression: "step({in:edge}, {in:x})", outputType: "float" },
22
+ OneMinus: { expression: "(1.0 - {in:a})", outputType: "float" },
23
+ Negate: { expression: "(-{in:a})", outputType: "float" },
24
+ Length: { expression: "length({in:a})", outputType: "float" },
25
+ Distance: { expression: "distance({in:a}, {in:b})", outputType: "float" },
26
+ Dot: { expression: "dot({in:a}, {in:b})", outputType: "float" },
27
+ Cross: { expression: "cross({in:a}, {in:b})", outputType: "vec3" },
28
+ Normalize: { expression: "normalize({in:a})", outputType: "vec3" },
29
+ Reflect: { expression: "reflect({in:a}, {in:b})", outputType: "vec3" },
30
+ // Trigonometry
31
+ Sin: { expression: "sin({in:a})", outputType: "float" },
32
+ Cos: { expression: "cos({in:a})", outputType: "float" },
33
+ Tan: { expression: "tan({in:a})", outputType: "float" },
34
+ Asin: { expression: "asin({in:a})", outputType: "float" },
35
+ Acos: { expression: "acos({in:a})", outputType: "float" },
36
+ Atan: { expression: "atan({in:a})", outputType: "float" },
37
+ Atan2: { expression: "atan({in:y}, {in:x})", outputType: "float" },
38
+ // Color operations
39
+ Mix: { expression: "mix({in:a}, {in:b}, {in:factor})", outputType: "vec3" },
40
+ Saturate: { expression: "clamp({in:a}, 0.0, 1.0)", outputType: "float" },
41
+ // Constructors
42
+ Vec2: { expression: "vec2({in:x}, {in:y})", outputType: "vec2" },
43
+ Vec3: { expression: "vec3({in:x}, {in:y}, {in:z})", outputType: "vec3" },
44
+ Vec4: { expression: "vec4({in:x}, {in:y}, {in:z}, {in:w})", outputType: "vec4" },
45
+ // Component extraction
46
+ SplitVec2: { expression: "{in:a}", outputType: "float" },
47
+ SplitVec3: { expression: "{in:a}", outputType: "float" },
48
+ SplitVec4: { expression: "{in:a}", outputType: "float" },
49
+ // Texture sampling
50
+ Texture2D: { expression: "texture2D({in:sampler}, {in:uv})", outputType: "vec4" },
51
+ CubeMap: { expression: "textureCube({in:sampler}, {in:dir})", outputType: "vec4" },
52
+ // Noise
53
+ ProceduralNoise: { expression: "snoise({in:uv} * {in:scale})", outputType: "float" }
54
+ };
55
+ var BUILTIN_INPUT_NODES = /* @__PURE__ */ new Set([
56
+ "Time",
57
+ "Resolution",
58
+ "ScreenUV",
59
+ "UV",
60
+ "Normal",
61
+ "Position",
62
+ "ViewDirection",
63
+ "FragCoord",
64
+ "Constant",
65
+ "Parameter"
66
+ ]);
67
+ var OUTPUT_NODES = /* @__PURE__ */ new Set(["FragColor", "Output", "Emission", "Alpha", "Discard"]);
68
+ function mapNodeToyToShader(graph, options = {}) {
69
+ const mapper = new NodeToyMapper(options);
70
+ return mapper.map(graph);
71
+ }
72
+ var NodeToyMapper = class {
73
+ constructor(options = {}) {
74
+ this.warnings = [];
75
+ this.unsupportedNodes = [];
76
+ this.uniforms = {};
77
+ this.varyingDecls = [];
78
+ this.fragmentLines = [];
79
+ this.nodeOutputVars = /* @__PURE__ */ new Map();
80
+ this.nodeMap = /* @__PURE__ */ new Map();
81
+ this.edgesByTarget = /* @__PURE__ */ new Map();
82
+ this.visitedNodes = /* @__PURE__ */ new Set();
83
+ this.language = options.language ?? "glsl";
84
+ this.autoTimeUniform = options.autoTimeUniform ?? true;
85
+ this.autoResolutionUniform = options.autoResolutionUniform ?? true;
86
+ this.variablePrefix = options.variablePrefix ?? "nt_";
87
+ this.optimization = options.optimization ?? "basic";
88
+ }
89
+ map(graph) {
90
+ this.warnings = [];
91
+ this.unsupportedNodes = [];
92
+ this.uniforms = {};
93
+ this.varyingDecls = [];
94
+ this.fragmentLines = [];
95
+ this.nodeOutputVars.clear();
96
+ this.nodeMap.clear();
97
+ this.edgesByTarget.clear();
98
+ this.visitedNodes.clear();
99
+ for (const node of graph.nodes) {
100
+ this.nodeMap.set(node.id, node);
101
+ }
102
+ for (const edge of graph.edges) {
103
+ const key = `${edge.toNode}:${edge.toPort}`;
104
+ if (!this.edgesByTarget.has(key)) {
105
+ this.edgesByTarget.set(key, []);
106
+ }
107
+ this.edgesByTarget.get(key).push(edge);
108
+ }
109
+ const outputNodes = graph.nodes.filter((n) => OUTPUT_NODES.has(n.type));
110
+ if (outputNodes.length === 0) {
111
+ this.warnings.push("No output node found in graph; generating passthrough shader");
112
+ }
113
+ for (const outputNode of outputNodes) {
114
+ this.traverseNode(outputNode.id);
115
+ }
116
+ const hasTimeNode = graph.nodes.some((n) => n.type === "Time");
117
+ const hasResolutionNode = graph.nodes.some((n) => n.type === "Resolution");
118
+ if (this.autoTimeUniform && hasTimeNode) {
119
+ this.uniforms["time"] = { type: "float", value: 0 };
120
+ }
121
+ if (this.autoResolutionUniform && hasResolutionNode) {
122
+ this.uniforms["resolution"] = { type: "vec2", value: [1920, 1080] };
123
+ }
124
+ for (const node of graph.nodes) {
125
+ if (node.type === "Parameter" || node.type === "Constant") {
126
+ this.extractParameterUniform(node);
127
+ }
128
+ }
129
+ const vertexSource = this.generateVertexSource();
130
+ const fragmentSource = this.generateFragmentSource(outputNodes);
131
+ const shaderConfig = {
132
+ name: graph.name || "nodetoy_shader",
133
+ source: {
134
+ language: this.language,
135
+ vertex: vertexSource,
136
+ fragment: fragmentSource
137
+ },
138
+ uniforms: this.uniforms,
139
+ blendMode: graph.settings?.blendMode ?? "opaque",
140
+ depthTest: graph.settings?.depthTest ?? true,
141
+ depthWrite: graph.settings?.depthWrite ?? true,
142
+ cullFace: graph.settings?.doubleSided ? "none" : "back"
143
+ };
144
+ return {
145
+ shaderConfig,
146
+ vertexSource,
147
+ fragmentSource,
148
+ uniforms: this.uniforms,
149
+ warnings: this.warnings,
150
+ unsupportedNodes: this.unsupportedNodes
151
+ };
152
+ }
153
+ // ---------------------------------------------------------------------------
154
+ // Graph traversal (reverse topological from output nodes)
155
+ // ---------------------------------------------------------------------------
156
+ traverseNode(nodeId) {
157
+ if (this.nodeOutputVars.has(nodeId)) {
158
+ return this.nodeOutputVars.get(nodeId);
159
+ }
160
+ if (this.visitedNodes.has(nodeId)) {
161
+ this.warnings.push(`Cycle detected at node ${nodeId}; breaking with default value`);
162
+ return "0.0";
163
+ }
164
+ this.visitedNodes.add(nodeId);
165
+ const node = this.nodeMap.get(nodeId);
166
+ if (!node) {
167
+ this.warnings.push(`Missing node: ${nodeId}`);
168
+ return "0.0";
169
+ }
170
+ if (BUILTIN_INPUT_NODES.has(node.type)) {
171
+ const varExpr = this.resolveBuiltinNode(node);
172
+ this.nodeOutputVars.set(nodeId, varExpr);
173
+ return varExpr;
174
+ }
175
+ if (OUTPUT_NODES.has(node.type)) {
176
+ for (const input of node.inputs) {
177
+ const inputExpr = this.resolveInputPort(nodeId, input.name, input);
178
+ if (node.type === "FragColor" || node.type === "Output") {
179
+ this.fragmentLines.push(` // Output: ${node.label || node.type}`);
180
+ if (input.type === "vec4") {
181
+ this.fragmentLines.push(` gl_FragColor = ${inputExpr};`);
182
+ } else if (input.type === "vec3") {
183
+ this.fragmentLines.push(` gl_FragColor = vec4(${inputExpr}, 1.0);`);
184
+ } else {
185
+ this.fragmentLines.push(` gl_FragColor = vec4(vec3(${inputExpr}), 1.0);`);
186
+ }
187
+ }
188
+ }
189
+ const varName2 = `${this.variablePrefix}out_${this.sanitize(nodeId)}`;
190
+ this.nodeOutputVars.set(nodeId, varName2);
191
+ return varName2;
192
+ }
193
+ const codegen = NODE_TYPE_MAP[node.type];
194
+ if (!codegen) {
195
+ this.unsupportedNodes.push(node.type);
196
+ this.warnings.push(`Unsupported node type: ${node.type}; using default value`);
197
+ this.nodeOutputVars.set(nodeId, "0.0");
198
+ return "0.0";
199
+ }
200
+ const resolvedInputs = {};
201
+ for (const input of node.inputs) {
202
+ resolvedInputs[input.name] = this.resolveInputPort(nodeId, input.name, input);
203
+ }
204
+ let expression = codegen.expression;
205
+ for (const [portName, portExpr] of Object.entries(resolvedInputs)) {
206
+ expression = expression.replace(`{in:${portName}}`, portExpr);
207
+ }
208
+ expression = expression.replace(/\{in:\w+\}/g, "0.0");
209
+ const varName = `${this.variablePrefix}${this.sanitize(nodeId)}`;
210
+ const glslType = this.uniformTypeToGLSL(codegen.outputType);
211
+ this.fragmentLines.push(` ${glslType} ${varName} = ${expression};`);
212
+ this.nodeOutputVars.set(nodeId, varName);
213
+ return varName;
214
+ }
215
+ resolveInputPort(nodeId, portName, port) {
216
+ const edgeKey = `${nodeId}:${portName}`;
217
+ const edges = this.edgesByTarget.get(edgeKey);
218
+ if (edges && edges.length > 0) {
219
+ const edge = edges[0];
220
+ return this.traverseNode(edge.fromNode);
221
+ }
222
+ if (port.default !== void 0) {
223
+ if (typeof port.default === "number") return String(port.default);
224
+ if (Array.isArray(port.default)) {
225
+ const len = port.default.length;
226
+ if (len === 2) return `vec2(${port.default.join(", ")})`;
227
+ if (len === 3) return `vec3(${port.default.join(", ")})`;
228
+ if (len === 4) return `vec4(${port.default.join(", ")})`;
229
+ return String(port.default[0] ?? 0);
230
+ }
231
+ }
232
+ return "0.0";
233
+ }
234
+ resolveBuiltinNode(node) {
235
+ switch (node.type) {
236
+ case "Time":
237
+ return "time";
238
+ case "Resolution":
239
+ return "resolution";
240
+ case "UV":
241
+ case "ScreenUV":
242
+ this.ensureVarying("vUv", "vec2");
243
+ return "vUv";
244
+ case "Normal":
245
+ this.ensureVarying("vNormal", "vec3");
246
+ return "vNormal";
247
+ case "Position":
248
+ this.ensureVarying("vPosition", "vec3");
249
+ return "vPosition";
250
+ case "ViewDirection":
251
+ this.ensureVarying("vViewDir", "vec3");
252
+ return "vViewDir";
253
+ case "FragCoord":
254
+ return "gl_FragCoord.xy";
255
+ case "Constant": {
256
+ const val = node.params?.["value"];
257
+ if (typeof val === "number") return String(val);
258
+ if (Array.isArray(val)) {
259
+ if (val.length === 2) return `vec2(${val.join(", ")})`;
260
+ if (val.length === 3) return `vec3(${val.join(", ")})`;
261
+ if (val.length === 4) return `vec4(${val.join(", ")})`;
262
+ }
263
+ return "0.0";
264
+ }
265
+ case "Parameter": {
266
+ const name = node.params?.["name"] || `param_${node.id}`;
267
+ return name;
268
+ }
269
+ default:
270
+ return "0.0";
271
+ }
272
+ }
273
+ // ---------------------------------------------------------------------------
274
+ // Uniform and varying management
275
+ // ---------------------------------------------------------------------------
276
+ extractParameterUniform(node) {
277
+ const name = node.params?.["name"] || `param_${node.id}`;
278
+ const value = node.params?.["value"];
279
+ const uniformType = this.inferUniformType(value);
280
+ if (!this.uniforms[name]) {
281
+ this.uniforms[name] = {
282
+ type: uniformType,
283
+ value: typeof value === "number" || Array.isArray(value) ? value : 0,
284
+ min: node.params?.["min"],
285
+ max: node.params?.["max"],
286
+ label: node.label
287
+ };
288
+ }
289
+ }
290
+ inferUniformType(value) {
291
+ if (typeof value === "number") return "float";
292
+ if (typeof value === "boolean") return "bool";
293
+ if (Array.isArray(value)) {
294
+ if (value.length === 2) return "vec2";
295
+ if (value.length === 3) return "vec3";
296
+ if (value.length === 4) return "vec4";
297
+ if (value.length === 9) return "mat3";
298
+ if (value.length === 16) return "mat4";
299
+ }
300
+ return "float";
301
+ }
302
+ ensureVarying(name, type) {
303
+ const decl = `varying ${type} ${name};`;
304
+ if (!this.varyingDecls.includes(decl)) {
305
+ this.varyingDecls.push(decl);
306
+ }
307
+ }
308
+ // ---------------------------------------------------------------------------
309
+ // Source generation
310
+ // ---------------------------------------------------------------------------
311
+ generateVertexSource() {
312
+ const lines = [];
313
+ for (const decl of this.varyingDecls) {
314
+ lines.push(decl);
315
+ }
316
+ lines.push("");
317
+ lines.push("void main() {");
318
+ if (this.varyingDecls.some((d) => d.includes("vUv"))) {
319
+ lines.push(" vUv = uv;");
320
+ }
321
+ if (this.varyingDecls.some((d) => d.includes("vNormal"))) {
322
+ lines.push(" vNormal = normalize(normalMatrix * normal);");
323
+ }
324
+ if (this.varyingDecls.some((d) => d.includes("vPosition"))) {
325
+ lines.push(" vPosition = position;");
326
+ }
327
+ if (this.varyingDecls.some((d) => d.includes("vViewDir"))) {
328
+ lines.push(" vec4 mvPos = modelViewMatrix * vec4(position, 1.0);");
329
+ lines.push(" vViewDir = normalize(-mvPos.xyz);");
330
+ }
331
+ lines.push(" gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);");
332
+ lines.push("}");
333
+ return lines.join("\n");
334
+ }
335
+ generateFragmentSource(outputNodes) {
336
+ const lines = [];
337
+ lines.push("precision highp float;");
338
+ lines.push("");
339
+ for (const [name, uniform] of Object.entries(this.uniforms)) {
340
+ lines.push(`uniform ${this.uniformTypeToGLSL(uniform.type)} ${name};`);
341
+ }
342
+ lines.push("");
343
+ for (const decl of this.varyingDecls) {
344
+ lines.push(decl);
345
+ }
346
+ lines.push("");
347
+ if (this.nodeMap.size > 0) {
348
+ const hasNoise = Array.from(this.nodeMap.values()).some((n) => n.type === "ProceduralNoise");
349
+ if (hasNoise) {
350
+ lines.push(SIMPLEX_NOISE_2D);
351
+ lines.push("");
352
+ }
353
+ }
354
+ lines.push("void main() {");
355
+ for (const line of this.fragmentLines) {
356
+ lines.push(line);
357
+ }
358
+ if (!this.fragmentLines.some((l) => l.includes("gl_FragColor"))) {
359
+ lines.push(" gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0); // No output node");
360
+ }
361
+ lines.push("}");
362
+ return lines.join("\n");
363
+ }
364
+ // ---------------------------------------------------------------------------
365
+ // Helpers
366
+ // ---------------------------------------------------------------------------
367
+ uniformTypeToGLSL(type) {
368
+ return type;
369
+ }
370
+ sanitize(id) {
371
+ return id.replace(/[^a-zA-Z0-9]/g, "_");
372
+ }
373
+ };
374
+ var SIMPLEX_NOISE_2D = `
375
+ // Simplex 2D noise for ProceduralNoise nodes
376
+ vec3 mod289_n(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
377
+ vec2 mod289_n(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
378
+ vec3 permute_n(vec3 x) { return mod289_n(((x*34.0)+1.0)*x); }
379
+
380
+ float snoise(vec2 v) {
381
+ const vec4 C = vec4(0.211324865405187, 0.366025403784439,
382
+ -0.577350269189626, 0.024390243902439);
383
+ vec2 i = floor(v + dot(v, C.yy));
384
+ vec2 x0 = v - i + dot(i, C.xx);
385
+ vec2 i1 = (x0[0] > x0[1]) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
386
+ vec4 x12 = x0.xyxy + C.xxzz;
387
+ x12.xy -= i1;
388
+ i = mod289_n(i);
389
+ vec3 p = permute_n(permute_n(i[1] + vec3(0.0, i1[1], 1.0)) + i[0] + vec3(0.0, i1[0], 1.0));
390
+ vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);
391
+ m = m*m; m = m*m;
392
+ vec3 x = 2.0 * fract(p * C.www) - 1.0;
393
+ vec3 h = abs(x) - 0.5;
394
+ vec3 ox = floor(x + 0.5);
395
+ vec3 a0 = x - ox;
396
+ m *= 1.79284291400159 - 0.85373472095314 * (a0*a0 + h*h);
397
+ vec3 g;
398
+ g[0] = a0[0] * x0[0] + h[0] * x0[1];
399
+ g.yz = a0.yz * x12.xz + h.yz * x12.yw;
400
+ return 130.0 * dot(m, g);
401
+ }`.trim();
402
+ var NodeToyMapping_default = mapNodeToyToShader;
403
+
404
+ export { NodeToyMapper, NodeToyMapping_default, mapNodeToyToShader };
405
+ //# sourceMappingURL=chunk-TG7O4WBC.js.map
406
+ //# sourceMappingURL=chunk-TG7O4WBC.js.map