@field/cascade 0.2.22

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 (319) hide show
  1. package/AGENTS.md +168 -0
  2. package/ARCHITECTURE.md +137 -0
  3. package/DESIGN.md +161 -0
  4. package/LICENSE +21 -0
  5. package/README.md +229 -0
  6. package/dist/assets/CodeEditor-DR7u0q7p.css +1 -0
  7. package/dist/assets/CodeEditor-DoaNEUaM.js +641 -0
  8. package/dist/assets/CodePanel-B0_2XJ-t.js +2 -0
  9. package/dist/assets/CodePanel-IT1secyI.css +1 -0
  10. package/dist/assets/CustomNodeDialog-026lzecD.js +1 -0
  11. package/dist/assets/CustomNodeDialog-JGYnWY6m.css +1 -0
  12. package/dist/assets/ExportDialog-DOq0flMV.css +1 -0
  13. package/dist/assets/ExportDialog-DWN4nhXI.js +358 -0
  14. package/dist/assets/ProjectSettings-BzT164Yx.js +2 -0
  15. package/dist/assets/ProjectSettings-DdO9xoQz.css +1 -0
  16. package/dist/assets/SettingsDialog-CeK7ytpY.css +1 -0
  17. package/dist/assets/SettingsDialog-DmHb1V0r.js +1 -0
  18. package/dist/assets/VersionHistoryDialog-CWNmHQ-P.css +1 -0
  19. package/dist/assets/VersionHistoryDialog-hH6VsXLX.js +3 -0
  20. package/dist/assets/abap-08VXUWAP.js +1 -0
  21. package/dist/assets/apex-BWPQTe0t.js +1 -0
  22. package/dist/assets/azcli-Bc_sGQ0U.js +1 -0
  23. package/dist/assets/bat-i0X4ZdIN.js +1 -0
  24. package/dist/assets/bicep-B5-_aFwp.js +2 -0
  25. package/dist/assets/cameligo-DMUM7wLl.js +1 -0
  26. package/dist/assets/cascade.jpg +0 -0
  27. package/dist/assets/clojure-Cm7r79vr.js +1 -0
  28. package/dist/assets/codicon-Brq4_Ui5.ttf +0 -0
  29. package/dist/assets/coffee-Ba7i2nA0.js +1 -0
  30. package/dist/assets/core-Bji4aZUU.js +965 -0
  31. package/dist/assets/cpp-C7h46wYY.js +1 -0
  32. package/dist/assets/csharp-BKxtCVv1.js +1 -0
  33. package/dist/assets/csp-bTuwJoIa.js +1 -0
  34. package/dist/assets/css-DIMkf-bt.js +3 -0
  35. package/dist/assets/css.worker-B3ciXF_0.js +93 -0
  36. package/dist/assets/cssMode-B6Z_Q1Kh.js +1 -0
  37. package/dist/assets/cypher-CVaqCwHa.js +1 -0
  38. package/dist/assets/dart-onAF5SnQ.js +1 -0
  39. package/dist/assets/dockerfile-DZFCIeNp.js +1 -0
  40. package/dist/assets/ecl-D05T4iGw.js +1 -0
  41. package/dist/assets/editor-1FQrmyyI.css +1 -0
  42. package/dist/assets/editor.api-jMoW_43X.js +847 -0
  43. package/dist/assets/editor.worker-q-txB4vs.js +30 -0
  44. package/dist/assets/elixir-6RTg0lbw.js +1 -0
  45. package/dist/assets/flow9-C5_-GSwl.js +1 -0
  46. package/dist/assets/freemarker2-DvvPV6m5.js +3 -0
  47. package/dist/assets/fsharp-C8Ef5oNN.js +1 -0
  48. package/dist/assets/geo-CXmCtzMM.js +2 -0
  49. package/dist/assets/go-C-y9NEjX.js +1 -0
  50. package/dist/assets/graphql-fmXr3nnJ.js +1 -0
  51. package/dist/assets/handlebars-B8rfuSIa.js +1 -0
  52. package/dist/assets/hcl-CpzslTdj.js +1 -0
  53. package/dist/assets/html-DyHm6JCp.js +1 -0
  54. package/dist/assets/html.worker-C93Ht9o9.js +506 -0
  55. package/dist/assets/htmlMode-E9XLWE5u.js +1 -0
  56. package/dist/assets/image-BUcQC7PG.js +2076 -0
  57. package/dist/assets/index-BXYXSdgh.js +224 -0
  58. package/dist/assets/index-CrNke7SW.css +1 -0
  59. package/dist/assets/index-client-DN_FvjN8.js +1 -0
  60. package/dist/assets/ini-sBoK_t0W.js +1 -0
  61. package/dist/assets/java-BEtHBSE6.js +1 -0
  62. package/dist/assets/javascript-C_bM5PCN.js +1 -0
  63. package/dist/assets/json.worker-B2V3pomh.js +62 -0
  64. package/dist/assets/jsonMode-BdyVS7G4.js +7 -0
  65. package/dist/assets/julia-Bri6UV-V.js +1 -0
  66. package/dist/assets/kotlin-BOotOW0E.js +1 -0
  67. package/dist/assets/legacy-DIu3XRwl.js +2 -0
  68. package/dist/assets/less-B9JPFI3C.js +2 -0
  69. package/dist/assets/lexon-CfSJPG6W.js +1 -0
  70. package/dist/assets/liquid-CDkn3spA.js +1 -0
  71. package/dist/assets/lspLanguageFeatures-AB5DMAsr.js +4 -0
  72. package/dist/assets/lua-CsQS60Ue.js +1 -0
  73. package/dist/assets/m3-D-oSqn_W.js +1 -0
  74. package/dist/assets/markdown-Cimd5fb3.js +1 -0
  75. package/dist/assets/mdx-BvH_NjDN.js +1 -0
  76. package/dist/assets/mips-CIPQ_RoX.js +1 -0
  77. package/dist/assets/msdax-DauUninz.js +1 -0
  78. package/dist/assets/mysql-SOo6toE5.js +1 -0
  79. package/dist/assets/nodeTypeUtils-CweA3NHd.js +1 -0
  80. package/dist/assets/objective-c-FvmIjYaQ.js +1 -0
  81. package/dist/assets/pascal-DrH0SRf2.js +1 -0
  82. package/dist/assets/pascaligo-D-ptJ9y-.js +1 -0
  83. package/dist/assets/perl-oz_6vUea.js +1 -0
  84. package/dist/assets/pgsql-DTj74zXo.js +1 -0
  85. package/dist/assets/php-nr791fC2.js +1 -0
  86. package/dist/assets/pla-CopQ2nXW.js +1 -0
  87. package/dist/assets/postiats-43DmfD33.js +1 -0
  88. package/dist/assets/powerquery-D3hlyOfw.js +1 -0
  89. package/dist/assets/powershell-DmHpPYUd.js +1 -0
  90. package/dist/assets/projectSettingsApi-C1WvIwfP.js +1 -0
  91. package/dist/assets/protobuf-C531GsRP.js +2 -0
  92. package/dist/assets/pug-Z5eAx3Zn.js +1 -0
  93. package/dist/assets/python-B7uii4fi.js +1 -0
  94. package/dist/assets/qsharp-DkqhCAOL.js +1 -0
  95. package/dist/assets/quill-DjZ69wL_.js +121 -0
  96. package/dist/assets/r-BwWrilGY.js +1 -0
  97. package/dist/assets/razor-Z48fWdJc.js +1 -0
  98. package/dist/assets/redis-ClamHrr6.js +1 -0
  99. package/dist/assets/redshift-DT7zqm-g.js +1 -0
  100. package/dist/assets/restructuredtext-BYgofb2h.js +1 -0
  101. package/dist/assets/ruby-DezsRK8O.js +1 -0
  102. package/dist/assets/rust-DdL9SqIa.js +1 -0
  103. package/dist/assets/sb-CcwsVR0C.js +1 -0
  104. package/dist/assets/scala-DHpiXF5c.js +1 -0
  105. package/dist/assets/scheme-BeGwcela.js +1 -0
  106. package/dist/assets/scss-gp-XZpBa.js +3 -0
  107. package/dist/assets/shell-CC2rA5mh.js +1 -0
  108. package/dist/assets/solidity-BEEn4gHE.js +1 -0
  109. package/dist/assets/sophia-CRfGWb83.js +1 -0
  110. package/dist/assets/sparql-D_Lu-MrJ.js +1 -0
  111. package/dist/assets/sql-NEE52Syq.js +1 -0
  112. package/dist/assets/st-DbInun42.js +1 -0
  113. package/dist/assets/swift-Bxkupp3x.js +1 -0
  114. package/dist/assets/systemverilog-Bz4Y3fRF.js +1 -0
  115. package/dist/assets/tcl-DISqw1ZD.js +1 -0
  116. package/dist/assets/ts.worker-D7T1-Ig5.js +67738 -0
  117. package/dist/assets/tsMode-BDgacVG4.js +11 -0
  118. package/dist/assets/twig-De2hgUGE.js +1 -0
  119. package/dist/assets/typescript-Derb6Oqa.js +1 -0
  120. package/dist/assets/typespec-B8J7ngcE.js +1 -0
  121. package/dist/assets/vb-DV3o63ZY.js +1 -0
  122. package/dist/assets/wgsl-DpFanUEy.js +298 -0
  123. package/dist/assets/workers-BtoMX_pm.js +1 -0
  124. package/dist/assets/xml-B1CaFSrG.js +1 -0
  125. package/dist/assets/yaml-HmIeA0KH.js +1 -0
  126. package/dist/cli/index.js +11377 -0
  127. package/dist/cli/index.js.map +7 -0
  128. package/dist/cli/runtime/io.ts +445 -0
  129. package/dist/cli/runtime/net.ts +19 -0
  130. package/dist/cli/runtime/shell.ts +46 -0
  131. package/dist/cli/runtime/stage.ts +132 -0
  132. package/dist/contracts/capabilities.d.ts +109 -0
  133. package/dist/contracts/capabilities.d.ts.map +1 -0
  134. package/dist/contracts/capabilities.js +11 -0
  135. package/dist/contracts/capabilities.js.map +1 -0
  136. package/dist/contracts/color.d.ts +67 -0
  137. package/dist/contracts/color.d.ts.map +1 -0
  138. package/dist/contracts/color.js +83 -0
  139. package/dist/contracts/color.js.map +1 -0
  140. package/dist/contracts/definition.d.ts +118 -0
  141. package/dist/contracts/definition.d.ts.map +1 -0
  142. package/dist/contracts/definition.js +2 -0
  143. package/dist/contracts/definition.js.map +1 -0
  144. package/dist/contracts/document.d.ts +50 -0
  145. package/dist/contracts/document.d.ts.map +1 -0
  146. package/dist/contracts/document.js +2 -0
  147. package/dist/contracts/document.js.map +1 -0
  148. package/dist/contracts/geometry.d.ts +301 -0
  149. package/dist/contracts/geometry.d.ts.map +1 -0
  150. package/dist/contracts/geometry.js +604 -0
  151. package/dist/contracts/geometry.js.map +1 -0
  152. package/dist/contracts/index.d.ts +8 -0
  153. package/dist/contracts/index.d.ts.map +1 -0
  154. package/dist/contracts/index.js +8 -0
  155. package/dist/contracts/index.js.map +1 -0
  156. package/dist/contracts/schema.d.ts +6 -0
  157. package/dist/contracts/schema.d.ts.map +1 -0
  158. package/dist/contracts/schema.js +85 -0
  159. package/dist/contracts/schema.js.map +1 -0
  160. package/dist/contracts/validate.d.ts +13 -0
  161. package/dist/contracts/validate.d.ts.map +1 -0
  162. package/dist/contracts/validate.js +202 -0
  163. package/dist/contracts/validate.js.map +1 -0
  164. package/dist/contracts/values.d.ts +100 -0
  165. package/dist/contracts/values.d.ts.map +1 -0
  166. package/dist/contracts/values.js +59 -0
  167. package/dist/contracts/values.js.map +1 -0
  168. package/dist/graphs/default-orig.cascade +128 -0
  169. package/dist/graphs/default.cascade +21 -0
  170. package/dist/index.html +19 -0
  171. package/dist/runtime/browser.d.ts +3 -0
  172. package/dist/runtime/browser.d.ts.map +1 -0
  173. package/dist/runtime/browser.js +12 -0
  174. package/dist/runtime/browser.js.map +1 -0
  175. package/dist/runtime/builtins/core/index.d.ts +9 -0
  176. package/dist/runtime/builtins/core/index.d.ts.map +1 -0
  177. package/dist/runtime/builtins/core/index.js +21 -0
  178. package/dist/runtime/builtins/core/index.js.map +1 -0
  179. package/dist/runtime/builtins/core/random.d.ts +66 -0
  180. package/dist/runtime/builtins/core/random.d.ts.map +1 -0
  181. package/dist/runtime/builtins/core/random.js +46 -0
  182. package/dist/runtime/builtins/core/random.js.map +1 -0
  183. package/dist/runtime/builtins/core/remap.d.ts +105 -0
  184. package/dist/runtime/builtins/core/remap.d.ts.map +1 -0
  185. package/dist/runtime/builtins/core/remap.js +43 -0
  186. package/dist/runtime/builtins/core/remap.js.map +1 -0
  187. package/dist/runtime/builtins/core/routing.d.ts +117 -0
  188. package/dist/runtime/builtins/core/routing.d.ts.map +1 -0
  189. package/dist/runtime/builtins/core/routing.js +114 -0
  190. package/dist/runtime/builtins/core/routing.js.map +1 -0
  191. package/dist/runtime/builtins/core/structural.d.ts +86 -0
  192. package/dist/runtime/builtins/core/structural.d.ts.map +1 -0
  193. package/dist/runtime/builtins/core/structural.js +63 -0
  194. package/dist/runtime/builtins/core/structural.js.map +1 -0
  195. package/dist/runtime/builtins/geo/copyToPoints.d.ts +58 -0
  196. package/dist/runtime/builtins/geo/copyToPoints.d.ts.map +1 -0
  197. package/dist/runtime/builtins/geo/copyToPoints.js +35 -0
  198. package/dist/runtime/builtins/geo/copyToPoints.js.map +1 -0
  199. package/dist/runtime/builtins/geo/definitions.d.ts +526 -0
  200. package/dist/runtime/builtins/geo/definitions.d.ts.map +1 -0
  201. package/dist/runtime/builtins/geo/definitions.js +182 -0
  202. package/dist/runtime/builtins/geo/definitions.js.map +1 -0
  203. package/dist/runtime/builtins/geo/generators.d.ts +94 -0
  204. package/dist/runtime/builtins/geo/generators.d.ts.map +1 -0
  205. package/dist/runtime/builtins/geo/generators.js +41 -0
  206. package/dist/runtime/builtins/geo/generators.js.map +1 -0
  207. package/dist/runtime/builtins/geo/index.d.ts +23 -0
  208. package/dist/runtime/builtins/geo/index.d.ts.map +1 -0
  209. package/dist/runtime/builtins/geo/index.js +35 -0
  210. package/dist/runtime/builtins/geo/index.js.map +1 -0
  211. package/dist/runtime/builtins/geo/merge.d.ts +40 -0
  212. package/dist/runtime/builtins/geo/merge.d.ts.map +1 -0
  213. package/dist/runtime/builtins/geo/merge.js +24 -0
  214. package/dist/runtime/builtins/geo/merge.js.map +1 -0
  215. package/dist/runtime/builtins/geo/namespace.d.ts +15 -0
  216. package/dist/runtime/builtins/geo/namespace.d.ts.map +1 -0
  217. package/dist/runtime/builtins/geo/namespace.js +17 -0
  218. package/dist/runtime/builtins/geo/namespace.js.map +1 -0
  219. package/dist/runtime/builtins/geo/svgExport.d.ts +130 -0
  220. package/dist/runtime/builtins/geo/svgExport.d.ts.map +1 -0
  221. package/dist/runtime/builtins/geo/svgExport.js +50 -0
  222. package/dist/runtime/builtins/geo/svgExport.js.map +1 -0
  223. package/dist/runtime/builtins/geo/transform.d.ts +60 -0
  224. package/dist/runtime/builtins/geo/transform.d.ts.map +1 -0
  225. package/dist/runtime/builtins/geo/transform.js +32 -0
  226. package/dist/runtime/builtins/geo/transform.js.map +1 -0
  227. package/dist/runtime/builtins/index.d.ts +9 -0
  228. package/dist/runtime/builtins/index.d.ts.map +1 -0
  229. package/dist/runtime/builtins/index.js +16 -0
  230. package/dist/runtime/builtins/index.js.map +1 -0
  231. package/dist/runtime/definition/architecture.d.ts +8 -0
  232. package/dist/runtime/definition/architecture.d.ts.map +1 -0
  233. package/dist/runtime/definition/architecture.js +112 -0
  234. package/dist/runtime/definition/architecture.js.map +1 -0
  235. package/dist/runtime/definition/extract.d.ts +12 -0
  236. package/dist/runtime/definition/extract.d.ts.map +1 -0
  237. package/dist/runtime/definition/extract.js +151 -0
  238. package/dist/runtime/definition/extract.js.map +1 -0
  239. package/dist/runtime/error.d.ts +8 -0
  240. package/dist/runtime/error.d.ts.map +1 -0
  241. package/dist/runtime/error.js +11 -0
  242. package/dist/runtime/error.js.map +1 -0
  243. package/dist/runtime/geometry/attributes.d.ts +65 -0
  244. package/dist/runtime/geometry/attributes.d.ts.map +1 -0
  245. package/dist/runtime/geometry/attributes.js +201 -0
  246. package/dist/runtime/geometry/attributes.js.map +1 -0
  247. package/dist/runtime/geometry/builder.d.ts +57 -0
  248. package/dist/runtime/geometry/builder.d.ts.map +1 -0
  249. package/dist/runtime/geometry/builder.js +153 -0
  250. package/dist/runtime/geometry/builder.js.map +1 -0
  251. package/dist/runtime/geometry/copy.d.ts +36 -0
  252. package/dist/runtime/geometry/copy.d.ts.map +1 -0
  253. package/dist/runtime/geometry/copy.js +68 -0
  254. package/dist/runtime/geometry/copy.js.map +1 -0
  255. package/dist/runtime/geometry/generate.d.ts +43 -0
  256. package/dist/runtime/geometry/generate.d.ts.map +1 -0
  257. package/dist/runtime/geometry/generate.js +76 -0
  258. package/dist/runtime/geometry/generate.js.map +1 -0
  259. package/dist/runtime/geometry/groups.d.ts +18 -0
  260. package/dist/runtime/geometry/groups.d.ts.map +1 -0
  261. package/dist/runtime/geometry/groups.js +69 -0
  262. package/dist/runtime/geometry/groups.js.map +1 -0
  263. package/dist/runtime/geometry/index.d.ts +23 -0
  264. package/dist/runtime/geometry/index.d.ts.map +1 -0
  265. package/dist/runtime/geometry/index.js +23 -0
  266. package/dist/runtime/geometry/index.js.map +1 -0
  267. package/dist/runtime/geometry/matrix.d.ts +26 -0
  268. package/dist/runtime/geometry/matrix.d.ts.map +1 -0
  269. package/dist/runtime/geometry/matrix.js +27 -0
  270. package/dist/runtime/geometry/matrix.js.map +1 -0
  271. package/dist/runtime/geometry/merge.d.ts +33 -0
  272. package/dist/runtime/geometry/merge.d.ts.map +1 -0
  273. package/dist/runtime/geometry/merge.js +185 -0
  274. package/dist/runtime/geometry/merge.js.map +1 -0
  275. package/dist/runtime/geometry/primitives.d.ts +41 -0
  276. package/dist/runtime/geometry/primitives.d.ts.map +1 -0
  277. package/dist/runtime/geometry/primitives.js +131 -0
  278. package/dist/runtime/geometry/primitives.js.map +1 -0
  279. package/dist/runtime/geometry/promote.d.ts +44 -0
  280. package/dist/runtime/geometry/promote.d.ts.map +1 -0
  281. package/dist/runtime/geometry/promote.js +203 -0
  282. package/dist/runtime/geometry/promote.js.map +1 -0
  283. package/dist/runtime/geometry/resample.d.ts +29 -0
  284. package/dist/runtime/geometry/resample.d.ts.map +1 -0
  285. package/dist/runtime/geometry/resample.js +165 -0
  286. package/dist/runtime/geometry/resample.js.map +1 -0
  287. package/dist/runtime/geometry/svg.d.ts +91 -0
  288. package/dist/runtime/geometry/svg.d.ts.map +1 -0
  289. package/dist/runtime/geometry/svg.js +216 -0
  290. package/dist/runtime/geometry/svg.js.map +1 -0
  291. package/dist/runtime/geometry/transform.d.ts +18 -0
  292. package/dist/runtime/geometry/transform.d.ts.map +1 -0
  293. package/dist/runtime/geometry/transform.js +56 -0
  294. package/dist/runtime/geometry/transform.js.map +1 -0
  295. package/dist/runtime/index.d.ts +5 -0
  296. package/dist/runtime/index.d.ts.map +1 -0
  297. package/dist/runtime/index.js +4 -0
  298. package/dist/runtime/index.js.map +1 -0
  299. package/dist/runtime/node.d.ts +4 -0
  300. package/dist/runtime/node.d.ts.map +1 -0
  301. package/dist/runtime/node.js +12 -0
  302. package/dist/runtime/node.js.map +1 -0
  303. package/dist/runtime/runtime.d.ts +3 -0
  304. package/dist/runtime/runtime.d.ts.map +1 -0
  305. package/dist/runtime/runtime.js +1198 -0
  306. package/dist/runtime/runtime.js.map +1 -0
  307. package/dist/runtime/types.d.ts +241 -0
  308. package/dist/runtime/types.d.ts.map +1 -0
  309. package/dist/runtime/types.js +2 -0
  310. package/dist/runtime/types.js.map +1 -0
  311. package/dist/shell.d.ts +8 -0
  312. package/dist/shell.js +54 -0
  313. package/dist/shell.js.map +7 -0
  314. package/dist/stage.d.ts +7 -0
  315. package/dist/stage.js +84 -0
  316. package/dist/stage.js.map +7 -0
  317. package/dist/studio/panel.d.ts +48 -0
  318. package/doc/PROJECT_AUTHORING.md +360 -0
  319. package/package.json +126 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const nodeDefinitionSchema: {
2
+ readonly allOf: readonly [Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>];
3
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
4
+ readonly $id: "https://cascade.dev/schema/node-definition-v1.json";
5
+ };
6
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAqEA,eAAO,MAAM,oBAAoB;;;;CAiCvB,CAAC"}
@@ -0,0 +1,85 @@
1
+ import { CORE_TYPES } from "./values.js";
2
+ function object(properties, required = []) {
3
+ return {
4
+ type: "object",
5
+ ...(required.length ? { required } : {}),
6
+ properties,
7
+ additionalProperties: false,
8
+ };
9
+ }
10
+ function record(value) {
11
+ return {
12
+ type: "object",
13
+ propertyNames: { pattern: "^[A-Za-z][A-Za-z0-9_]*$" },
14
+ additionalProperties: value,
15
+ };
16
+ }
17
+ const description = { type: "string" };
18
+ const cascadeType = {
19
+ anyOf: [
20
+ { enum: CORE_TYPES },
21
+ { type: "string", pattern: "^[a-z][a-z0-9-]*(?:\\.[A-Za-z][A-Za-z0-9_]*)+$" },
22
+ ],
23
+ };
24
+ const control = {
25
+ enum: ["number", "slider", "range", "int", "boolean", "text", "textarea", "select", "vector", "matrix", "color", "image", "asset"],
26
+ };
27
+ const trigger = object({ kind: { const: "trigger" }, description }, ["kind"]);
28
+ const dataProperties = {
29
+ kind: { const: "data" },
30
+ type: cascadeType,
31
+ default: {},
32
+ description,
33
+ variadic: { type: "boolean" },
34
+ min: { type: "number" },
35
+ max: { type: "number" },
36
+ step: { type: "number", exclusiveMinimum: 0 },
37
+ accept: { type: "array", items: { type: "string", minLength: 1 } },
38
+ control,
39
+ options: { type: "array" },
40
+ };
41
+ const data = object(dataProperties, ["kind", "type"]);
42
+ const output = object({ kind: dataProperties.kind, type: dataProperties.type, description }, ["kind", "type"]);
43
+ const { kind: _kind, variadic: _variadic, ...propProperties } = dataProperties;
44
+ const prop = object({ ...propProperties, label: { type: "string" } }, [
45
+ "type",
46
+ "default",
47
+ ]);
48
+ function environmentCapabilities(runsOn, capabilities) {
49
+ return {
50
+ if: { properties: { runsOn: { const: runsOn } } },
51
+ then: { properties: { capabilities: { items: { enum: capabilities } } } },
52
+ };
53
+ }
54
+ export const nodeDefinitionSchema = {
55
+ $schema: "https://json-schema.org/draft/2020-12/schema",
56
+ $id: "https://cascade.dev/schema/node-definition-v1.json",
57
+ ...object({
58
+ apiVersion: { const: 1 },
59
+ runsOn: { enum: ["portable", "browser", "server"] },
60
+ container: { const: "subnet" },
61
+ capabilities: {
62
+ type: "array",
63
+ items: { type: "string" },
64
+ uniqueItems: true,
65
+ },
66
+ label: description,
67
+ description,
68
+ icon: description,
69
+ inputs: record({ anyOf: [trigger, data] }),
70
+ outputs: record({ anyOf: [trigger, output] }),
71
+ props: record(prop),
72
+ }, ["apiVersion", "runsOn"]),
73
+ allOf: [
74
+ environmentCapabilities("portable", ["assets", "media"]),
75
+ environmentCapabilities("browser", ["assets", "media", "webgl"]),
76
+ environmentCapabilities("server", [
77
+ "files",
78
+ "assets",
79
+ "media",
80
+ "python",
81
+ "shell",
82
+ ]),
83
+ ],
84
+ };
85
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { NodeDefinition } from "./definition.js";
2
+ export interface Diagnostic {
3
+ readonly phase: string;
4
+ readonly code: string;
5
+ readonly message: string;
6
+ readonly path?: string;
7
+ readonly file?: string;
8
+ readonly line?: number;
9
+ readonly column?: number;
10
+ }
11
+ export declare function validateNodeDefinition(value: unknown): readonly Diagnostic[];
12
+ export declare function assertNodeDefinition(value: unknown): asserts value is NodeDefinition;
13
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,iBAAiB,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAuFD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,UAAU,EAAE,CA4L5E;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,cAAc,CAMjC"}
@@ -0,0 +1,202 @@
1
+ import { isGeometrySerialized } from "./geometry.js";
2
+ import { CORE_TYPES } from "./values.js";
3
+ const IDENTIFIER = /^[A-Za-z][A-Za-z0-9_]*$/;
4
+ const NAMESPACED = /^[a-z][a-z0-9-]*(?:\.[A-Za-z][A-Za-z0-9_]*)+$/;
5
+ const RESERVED = new Set(["__proto__", "prototype", "constructor"]);
6
+ const CORE = new Set(CORE_TYPES);
7
+ const CONTROLS = new Set(["number", "slider", "range", "int", "boolean", "text", "textarea", "select", "vector", "matrix", "color", "image", "asset"]);
8
+ const ALLOWED = {
9
+ portable: ["assets", "media"],
10
+ browser: ["assets", "media", "webgl"],
11
+ server: ["files", "assets", "media", "python", "shell"],
12
+ };
13
+ const fields = (names) => new Set(names.split(" "));
14
+ const TOP_FIELDS = fields("apiVersion runsOn container capabilities label description icon inputs outputs props");
15
+ const DATA_FIELDS = fields("kind type default description variadic min max step accept control options");
16
+ const OUTPUT_FIELDS = fields("kind type description");
17
+ const PROP_FIELDS = fields("type default label description min max step accept control options");
18
+ function diagnostic(code, message, path) {
19
+ return { phase: "definition", code: `definition/${code}`, message, path };
20
+ }
21
+ function isRecord(value) {
22
+ return typeof value === "object" && value !== null && !Array.isArray(value);
23
+ }
24
+ function validType(type) {
25
+ return typeof type === "string" && (CORE.has(type) || NAMESPACED.test(type));
26
+ }
27
+ function finiteJson(value) {
28
+ if (value === null || typeof value === "string" || typeof value === "boolean")
29
+ return true;
30
+ if (typeof value === "number")
31
+ return Number.isFinite(value);
32
+ if (Array.isArray(value))
33
+ return value.every(finiteJson);
34
+ return isRecord(value) && Object.values(value).every(finiteJson);
35
+ }
36
+ function unknownFields(value, allowed, path) {
37
+ return Object.keys(value)
38
+ .filter((key) => !allowed.has(key))
39
+ .map((key) => diagnostic("unknown-field", `${path}.${key} is not allowed`, `${path}.${key}`));
40
+ }
41
+ function defaultMatches(type, value) {
42
+ if (!finiteJson(value))
43
+ return false;
44
+ // Without this case a geometry default falls through the length table below
45
+ // and any JSON value at all passes, which is the hole the four scalar cases
46
+ // exist to close. A default that cannot be validated is not a default.
47
+ if (type === "geometry")
48
+ return isGeometrySerialized(value);
49
+ if (type === "float")
50
+ return typeof value === "number";
51
+ if (type === "int")
52
+ return typeof value === "number";
53
+ if (type === "bool")
54
+ return typeof value === "boolean";
55
+ if (type === "string")
56
+ return typeof value === "string";
57
+ const lengths = {
58
+ vec2: 2,
59
+ vec3: 3,
60
+ vec4: 4,
61
+ vec2i: 2,
62
+ vec3i: 3,
63
+ vec4i: 4,
64
+ mat2: 4,
65
+ mat3: 9,
66
+ mat4: 16,
67
+ color: 4,
68
+ };
69
+ const length = lengths[type];
70
+ return (length === undefined ||
71
+ (Array.isArray(value) &&
72
+ value.length === length &&
73
+ value.every((item) => type.endsWith("i") ? Number.isInteger(item) : typeof item === "number")));
74
+ }
75
+ export function validateNodeDefinition(value) {
76
+ if (!isRecord(value))
77
+ return [diagnostic("not-object", "Definition must be an object")];
78
+ const result = unknownFields(value, TOP_FIELDS, "definition");
79
+ const add = (code, message, path) => result.push(diagnostic(code, message, path));
80
+ const environment = value.runsOn;
81
+ if (value.apiVersion !== 1)
82
+ add("api-version", "apiVersion must be 1", "apiVersion");
83
+ if (!Object.prototype.hasOwnProperty.call(ALLOWED, String(environment)))
84
+ add("environment", "runsOn must be portable, browser, or server", "runsOn");
85
+ if (value.container !== undefined && value.container !== "subnet")
86
+ add("invalid-container", "container must be subnet", "container");
87
+ const allowed = ALLOWED[environment] ?? [];
88
+ if (value.capabilities !== undefined && !Array.isArray(value.capabilities))
89
+ add("invalid-capabilities", "capabilities must be an array", "capabilities");
90
+ const seen = new Set();
91
+ for (const [index, capability] of (Array.isArray(value.capabilities)
92
+ ? value.capabilities
93
+ : []).entries()) {
94
+ const path = `capabilities.${index}`;
95
+ if (!seen.has(capability) &&
96
+ !allowed.includes(capability))
97
+ add("capability-not-allowed", `${String(capability)} is not available on ${String(environment)}`, path);
98
+ if (seen.has(capability))
99
+ add("duplicate-capability", `${String(capability)} is duplicated`, path);
100
+ seen.add(capability);
101
+ }
102
+ // Two namespaces, not one. An output is addressed in the other direction from
103
+ // an input, so `geometry` in and `geometry` out is not ambiguous anywhere: the
104
+ // document format names the two endpoints of a connection separately, the
105
+ // runtime keys them as `source.outputName` and `target.inputName`, and
106
+ // `NodeExecutionContext` hands a node `context.inputs` and `context.outputs`
107
+ // as separate records. One shared namespace made "geometry in, geometry out"
108
+ // inexpressible and forced every geometry operator to call its input `input`,
109
+ // which Marcus overruled 2026-09-04: *"sounds weird, we need to allow this
110
+ // case."*
111
+ //
112
+ // Inputs and props still share one namespace. Both feed a value *into* the
113
+ // node from the same side, an unconnected input with a default is the same
114
+ // control as a prop to whoever is looking at the node, and there is no
115
+ // direction to tell them apart by. That one stays a collision.
116
+ const inward = new Map();
117
+ const outward = new Map();
118
+ for (const section of ["inputs", "outputs", "props"]) {
119
+ const entries = value[section];
120
+ if (entries === undefined)
121
+ continue;
122
+ if (!isRecord(entries)) {
123
+ add("invalid-section", `${section} must be an object`, section);
124
+ continue;
125
+ }
126
+ for (const [name, raw] of Object.entries(entries)) {
127
+ const path = `${section}.${name}`;
128
+ if (!IDENTIFIER.test(name))
129
+ add("invalid-name", `${name} is not a valid identifier`, path);
130
+ if (RESERVED.has(name))
131
+ add("reserved-name", `${name} is reserved`, path);
132
+ const names = section === "outputs" ? outward : inward;
133
+ const previous = names.get(name);
134
+ if (previous)
135
+ add("name-collision", `${name} is declared in ${previous} and ${section}`, path);
136
+ else
137
+ names.set(name, section);
138
+ if (!isRecord(raw)) {
139
+ add("invalid-entry", `${path} must be an object`, path);
140
+ continue;
141
+ }
142
+ const fields = section === "props"
143
+ ? PROP_FIELDS
144
+ : section === "outputs"
145
+ ? OUTPUT_FIELDS
146
+ : DATA_FIELDS;
147
+ if (section !== "props" &&
148
+ raw.kind !== "data" &&
149
+ raw.kind !== "trigger") {
150
+ add("invalid-kind", `${path}.kind must be data or trigger`, `${path}.kind`);
151
+ result.push(...unknownFields(raw, fields, path));
152
+ continue;
153
+ }
154
+ if (section !== "props" && raw.kind === "trigger") {
155
+ if (Object.keys(raw).some((key) => key !== "kind" && key !== "description"))
156
+ add("trigger-extra", "Trigger ports allow only kind and description", path);
157
+ continue;
158
+ }
159
+ result.push(...unknownFields(raw, fields, path));
160
+ if ("control" in raw &&
161
+ (typeof raw.control !== "string" || !CONTROLS.has(raw.control)))
162
+ add("invalid-control", `${String(raw.control)} is not a Cascade control`, `${path}.control`);
163
+ if ("options" in raw && raw.control !== "select")
164
+ add("options-without-select", "options require the select control", `${path}.options`);
165
+ const type = raw.type;
166
+ if (!validType(type)) {
167
+ add("invalid-type", `${String(type)} is not a Cascade type`, `${path}.type`);
168
+ continue;
169
+ }
170
+ if (type === "texture" && environment !== "browser")
171
+ add("texture-not-portable", "texture is browser-only", `${path}.type`);
172
+ if (type === "texture" && "default" in raw)
173
+ add("texture-default", "texture cannot have a default", `${path}.default`);
174
+ if (section === "props" && !("default" in raw))
175
+ add("missing-default", "Props require defaults", `${path}.default`);
176
+ if ("default" in raw && !finiteJson(raw.default))
177
+ add("invalid-default", "Default must be finite JSON", `${path}.default`);
178
+ else if ("default" in raw && !defaultMatches(type, raw.default))
179
+ add("default-type", `Default does not match ${type}`, `${path}.default`);
180
+ if (type === "int" &&
181
+ "default" in raw &&
182
+ (!Number.isFinite(raw.default) || !Number.isInteger(raw.default)))
183
+ add("non-integer", "Integer defaults must be finite integers", `${path}.default`);
184
+ if ("step" in raw &&
185
+ (typeof raw.step !== "number" ||
186
+ !Number.isFinite(raw.step) ||
187
+ raw.step <= 0))
188
+ add("invalid-step", "step must be greater than zero", `${path}.step`);
189
+ if (typeof raw.min === "number" &&
190
+ typeof raw.max === "number" &&
191
+ raw.min > raw.max)
192
+ add("invalid-range", "min must not exceed max", path);
193
+ }
194
+ }
195
+ return result;
196
+ }
197
+ export function assertNodeDefinition(value) {
198
+ const diagnostics = validateNodeDefinition(value);
199
+ if (diagnostics.length)
200
+ throw new TypeError(diagnostics.map((item) => `${item.code}: ${item.message}`).join("\n"));
201
+ }
202
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import type { Color } from "./color.js";
2
+ import type { Geometry, GeometryFileRef, GeometryJson, GeometrySerialized } from "./geometry.js";
3
+ export declare const CORE_TYPES: readonly ["float", "int", "bool", "string", "vec2", "vec3", "vec4", "vec2i", "vec3i", "vec4i", "mat2", "mat3", "mat4", "image", "texture", "geometry", "points", "lines", "polyline", "mesh", "rects", "color", "asset", "array", "object", "any"];
4
+ export type CoreType = (typeof CORE_TYPES)[number];
5
+ export type NamespacedType = `${string}.${string}`;
6
+ export type CascadeType = CoreType | NamespacedType;
7
+ export declare const IMPLICIT_TYPE_CONVERSIONS: Readonly<Record<string, readonly string[]>>;
8
+ /** Canonicalize compatibility spellings before validation or connection checks. */
9
+ export declare function normalizeCascadeType(type: string | undefined): string;
10
+ /** Shared widening rules for Studio, headless runtimes, and graph tooling. */
11
+ export declare function canConnectTypes(source: string, target: string): boolean;
12
+ export type JsonPrimitive = string | number | boolean | null;
13
+ export type JsonValue = JsonPrimitive | {
14
+ readonly [key: string]: JsonValue;
15
+ } | readonly JsonValue[];
16
+ export type Vec2 = readonly [number, number];
17
+ export type Vec3 = readonly [number, number, number];
18
+ export type Vec4 = readonly [number, number, number, number];
19
+ export type Vec2i = Vec2;
20
+ export type Vec3i = Vec3;
21
+ export type Vec4i = Vec4;
22
+ export type Mat2 = readonly [number, number, number, number];
23
+ export type Mat3 = readonly [
24
+ number,
25
+ number,
26
+ number,
27
+ number,
28
+ number,
29
+ number,
30
+ number,
31
+ number,
32
+ number
33
+ ];
34
+ export type Mat4 = readonly [
35
+ number,
36
+ number,
37
+ number,
38
+ number,
39
+ number,
40
+ number,
41
+ number,
42
+ number,
43
+ number,
44
+ number,
45
+ number,
46
+ number,
47
+ number,
48
+ number,
49
+ number,
50
+ number
51
+ ];
52
+ export interface ImageRef {
53
+ readonly path: string;
54
+ readonly size: Vec2i;
55
+ readonly channels: "r" | "a" | "rg" | "rgb" | "rgba";
56
+ readonly depth: "u8" | "u16" | "f16" | "f32";
57
+ readonly space: "srgb" | "linear";
58
+ }
59
+ declare const textureHandleBrand: unique symbol;
60
+ export interface TextureHandle {
61
+ readonly [textureHandleBrand]: true;
62
+ }
63
+ export type Point = readonly [number, number] | readonly [number, number, number];
64
+ export interface PointSet {
65
+ readonly points: readonly Point[];
66
+ }
67
+ export type LineSegment = readonly [Point, Point];
68
+ export interface LineSegments {
69
+ readonly segments: readonly LineSegment[];
70
+ }
71
+ export interface Polyline {
72
+ readonly points: readonly Point[];
73
+ readonly closed?: boolean;
74
+ readonly weight?: number;
75
+ }
76
+ export interface Mesh {
77
+ readonly positions: readonly number[];
78
+ readonly indices: readonly number[];
79
+ readonly normals?: readonly number[];
80
+ readonly uvs?: readonly number[];
81
+ }
82
+ export interface Rect {
83
+ readonly x: number;
84
+ readonly y: number;
85
+ readonly width: number;
86
+ readonly height: number;
87
+ readonly tag?: string;
88
+ }
89
+ export interface Rects {
90
+ readonly rects: readonly Rect[];
91
+ }
92
+ export interface AssetRef {
93
+ readonly path: string;
94
+ readonly mediaType?: string;
95
+ }
96
+ export type SerializableValue = JsonValue | AssetRef | ImageRef | GeometryJson | GeometryFileRef;
97
+ export type ValueForType<T extends CascadeType> = T extends "float" | "int" ? number : T extends "bool" ? boolean : T extends "string" ? string : T extends "vec2" ? Vec2 : T extends "vec3" ? Vec3 : T extends "vec4" ? Vec4 : T extends "vec2i" ? Vec2i : T extends "vec3i" ? Vec3i : T extends "vec4i" ? Vec4i : T extends "mat2" ? Mat2 : T extends "mat3" ? Mat3 : T extends "mat4" ? Mat4 : T extends "color" ? Color : T extends "image" ? ImageRef : T extends "texture" ? TextureHandle : T extends "geometry" ? Geometry : T extends "points" ? PointSet : T extends "lines" ? LineSegments : T extends "polyline" ? Polyline : T extends "mesh" ? Mesh : T extends "rects" ? Rects : T extends "asset" ? AssetRef : T extends "array" ? readonly unknown[] : T extends "object" ? Readonly<Record<string, unknown>> : unknown;
98
+ export type SerializableValueForType<T extends CascadeType> = T extends "texture" ? never : T extends "geometry" ? GeometrySerialized : T extends "array" ? readonly JsonValue[] : T extends "object" ? Readonly<Record<string, JsonValue>> : T extends "any" | NamespacedType ? JsonValue : ValueForType<T>;
99
+ export {};
100
+ //# sourceMappingURL=values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ export const CORE_TYPES = [
2
+ "float",
3
+ "int",
4
+ "bool",
5
+ "string",
6
+ "vec2",
7
+ "vec3",
8
+ "vec4",
9
+ "vec2i",
10
+ "vec3i",
11
+ "vec4i",
12
+ "mat2",
13
+ "mat3",
14
+ "mat4",
15
+ "image",
16
+ "texture",
17
+ "geometry",
18
+ "points",
19
+ "lines",
20
+ "polyline",
21
+ "mesh",
22
+ "rects",
23
+ "color",
24
+ "asset",
25
+ "array",
26
+ "object",
27
+ "any",
28
+ ];
29
+ const TYPE_ALIASES = {
30
+ number: "float",
31
+ boolean: "bool",
32
+ curves: "polyline",
33
+ };
34
+ export const IMPLICIT_TYPE_CONVERSIONS = {
35
+ int: ["float", "string"],
36
+ float: ["string"],
37
+ bool: ["int", "float", "string"],
38
+ vec2i: ["vec2"],
39
+ vec3i: ["vec3"],
40
+ vec4i: ["vec4"],
41
+ vec4: ["color"],
42
+ color: ["vec4"],
43
+ };
44
+ /** Canonicalize compatibility spellings before validation or connection checks. */
45
+ export function normalizeCascadeType(type) {
46
+ if (!type)
47
+ return "any";
48
+ return TYPE_ALIASES[type] ?? type;
49
+ }
50
+ /** Shared widening rules for Studio, headless runtimes, and graph tooling. */
51
+ export function canConnectTypes(source, target) {
52
+ const from = normalizeCascadeType(source);
53
+ const to = normalizeCascadeType(target);
54
+ return (from === to ||
55
+ from === "any" ||
56
+ to === "any" ||
57
+ (IMPLICIT_TYPE_CONVERSIONS[from]?.includes(to) ?? false));
58
+ }
59
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO;IACP,KAAK;IACL,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,UAAU;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,KAAK;CACG,CAAC;AAMX,MAAM,YAAY,GAAuC;IACvD,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,UAAU;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAgD;IACpF,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACxB,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;IAChC,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,KAAK,EAAE,CAAC,MAAM,CAAC;CAChB,CAAC;AAEF,mFAAmF;AACnF,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACpC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,MAAc;IAC5D,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,CACL,IAAI,KAAK,EAAE;QACX,IAAI,KAAK,KAAK;QACd,EAAE,KAAK,KAAK;QACZ,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CACzD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,128 @@
1
+ {
2
+ "version": "0.1",
3
+ "metadata": {
4
+ "name": "Cascade Graph",
5
+ "created": "2025-11-30T18:08:34.327Z",
6
+ "modified": "2025-11-30T18:08:34.327Z"
7
+ },
8
+ "annotations": [
9
+ {
10
+ "id": "ann_headline_default",
11
+ "type": "text",
12
+ "position": [0, 0],
13
+ "content": "Hello World - Connections Test",
14
+ "size": {
15
+ "width": 500,
16
+ "height": 40
17
+ },
18
+ "style": {
19
+ "fontSize": 32,
20
+ "fontWeight": "700",
21
+ "fontStyle": "normal",
22
+ "textAlign": "left",
23
+ "color": "rgb(255,255,255)",
24
+ "padding": 0,
25
+ "borderRadius": 0
26
+ }
27
+ },
28
+ {
29
+ "id": "ann_copy_default",
30
+ "type": "text",
31
+ "position": [0, 120],
32
+ "content": "Cascade is a visual programming framework designed for creative coders who want to build interactive experiences without sacrificing the power of code. Every node is just a TypeScript function, fully inspectable and editable. The visual graph and code are equal partners, not abstractions of each other. This allows you to work visually when it makes sense, and dive into code when you need precision and control.",
33
+ "size": {
34
+ "width": 500,
35
+ "height": 200
36
+ },
37
+ "style": {
38
+ "fontSize": 14,
39
+ "fontWeight": "normal",
40
+ "fontStyle": "normal",
41
+ "textAlign": "left",
42
+ "color": "rgb(255,255,255)",
43
+ "padding": 0,
44
+ "borderRadius": 0
45
+ }
46
+ },
47
+ {
48
+ "id": "ann_image_cascade",
49
+ "type": "image",
50
+ "position": [-445.93601032083075, 254.9487664542571],
51
+ "src": "public/assets/cascade.jpg",
52
+ "size": {
53
+ "width": 200,
54
+ "height": 150
55
+ }
56
+ }
57
+ ],
58
+ "nodes": [
59
+ {
60
+ "id": "Color1",
61
+ "type": "cascade.lens.Color",
62
+ "position": [200, 250],
63
+ "props": {
64
+ "color": [1, 1, 1, 1],
65
+ "resolution": [512, 512]
66
+ }
67
+ },
68
+ {
69
+ "id": "Checkers1",
70
+ "type": "cascade.lens.Checkers",
71
+ "position": [-200, 400],
72
+ "props": {
73
+ "color1": [1, 1, 1, 1],
74
+ "color2": [0, 0, 0, 1],
75
+ "mode": "size",
76
+ "size": 32,
77
+ "divisions": 16,
78
+ "resolution": [512, 512]
79
+ }
80
+ },
81
+ {
82
+ "id": "Composite1",
83
+ "type": "cascade.lens.Composite",
84
+ "position": [0, 550],
85
+ "props": {
86
+ "blendMode": "multiply",
87
+ "opacity": 1
88
+ }
89
+ },
90
+ {
91
+ "id": "Blur1",
92
+ "type": "cascade.lens.Blur",
93
+ "position": [0, 650],
94
+ "props": {
95
+ "radius": 5,
96
+ "wrapEdges": false
97
+ }
98
+ },
99
+ {
100
+ "id": "NormalMap1",
101
+ "type": "cascade.lens.NormalMap",
102
+ "position": [0, 748.1100174187586],
103
+ "props": {
104
+ "scale": 1,
105
+ "flipX": false,
106
+ "flipY": false
107
+ }
108
+ },
109
+ {
110
+ "id": "Composite2",
111
+ "type": "cascade.lens.Composite",
112
+ "position": [-136.19497734900557, 874.2393621153204],
113
+ "props": {
114
+ "blendMode": "multiply",
115
+ "opacity": 1
116
+ },
117
+ "cook": true
118
+ }
119
+ ],
120
+ "connections": [
121
+ [["Checkers1", 0], ["Composite1", 0]],
122
+ [["Color1", 0], ["Composite1", 1]],
123
+ [["Composite1", 0], ["Blur1", 0]],
124
+ [["Blur1", 0], ["NormalMap1", 0]],
125
+ [["ann_image_cascade", 0], ["Composite2", 0]],
126
+ [["NormalMap1", 0], ["Composite2", 1]]
127
+ ]
128
+ }