@velarscript/web 0.31.0 → 0.33.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 (393) hide show
  1. package/README.md +1 -1
  2. package/dist/analysis/calls/intrinsics/config.d.ts +10 -0
  3. package/dist/analysis/calls/intrinsics/config.d.ts.map +1 -0
  4. package/dist/analysis/calls/intrinsics/config.js +19 -0
  5. package/dist/analysis/calls/intrinsics/config.js.map +1 -0
  6. package/dist/analysis/calls/intrinsics/forms.d.ts +10 -0
  7. package/dist/analysis/calls/intrinsics/forms.d.ts.map +1 -0
  8. package/dist/analysis/calls/intrinsics/forms.js +38 -0
  9. package/dist/analysis/calls/intrinsics/forms.js.map +1 -0
  10. package/dist/analysis/calls/intrinsics/http.d.ts +10 -0
  11. package/dist/analysis/calls/intrinsics/http.d.ts.map +1 -0
  12. package/dist/analysis/calls/intrinsics/http.js +37 -0
  13. package/dist/analysis/calls/intrinsics/http.js.map +1 -0
  14. package/dist/analysis/calls/intrinsics/reactive.d.ts +10 -0
  15. package/dist/analysis/calls/intrinsics/reactive.d.ts.map +1 -0
  16. package/dist/analysis/calls/intrinsics/reactive.js +30 -0
  17. package/dist/analysis/calls/intrinsics/reactive.js.map +1 -0
  18. package/dist/analysis/calls/intrinsics/storage.d.ts +16 -0
  19. package/dist/analysis/calls/intrinsics/storage.d.ts.map +1 -0
  20. package/dist/analysis/calls/intrinsics/storage.js +91 -0
  21. package/dist/analysis/calls/intrinsics/storage.js.map +1 -0
  22. package/dist/analysis/calls/intrinsics/web.d.ts +10 -0
  23. package/dist/analysis/calls/intrinsics/web.d.ts.map +1 -0
  24. package/dist/analysis/calls/intrinsics/web.js +100 -0
  25. package/dist/analysis/calls/intrinsics/web.js.map +1 -0
  26. package/dist/analysis/calls/intrinsics.d.ts +13 -0
  27. package/dist/analysis/calls/intrinsics.d.ts.map +1 -0
  28. package/dist/analysis/calls/intrinsics.js +31 -0
  29. package/dist/analysis/calls/intrinsics.js.map +1 -0
  30. package/dist/analysis/components/contracts.d.ts +19 -0
  31. package/dist/analysis/components/contracts.d.ts.map +1 -0
  32. package/dist/analysis/components/contracts.js +83 -0
  33. package/dist/analysis/components/contracts.js.map +1 -0
  34. package/dist/analysis/components/declaration.d.ts +4 -0
  35. package/dist/analysis/components/declaration.d.ts.map +1 -0
  36. package/dist/analysis/components/declaration.js +163 -0
  37. package/dist/analysis/components/declaration.js.map +1 -0
  38. package/dist/analysis/components/host.d.ts +61 -0
  39. package/dist/analysis/components/host.d.ts.map +1 -0
  40. package/dist/analysis/components/host.js +22 -0
  41. package/dist/analysis/components/host.js.map +1 -0
  42. package/dist/analysis/components/lifecycle.d.ts +22 -0
  43. package/dist/analysis/components/lifecycle.d.ts.map +1 -0
  44. package/dist/analysis/components/lifecycle.js +33 -0
  45. package/dist/analysis/components/lifecycle.js.map +1 -0
  46. package/dist/analysis/components/ownership.d.ts +74 -0
  47. package/dist/analysis/components/ownership.d.ts.map +1 -0
  48. package/dist/analysis/components/ownership.js +106 -0
  49. package/dist/analysis/components/ownership.js.map +1 -0
  50. package/dist/analysis/declarations.d.ts +99 -0
  51. package/dist/analysis/declarations.d.ts.map +1 -0
  52. package/dist/analysis/declarations.js +176 -0
  53. package/dist/analysis/declarations.js.map +1 -0
  54. package/dist/analysis/inference.d.ts +75 -0
  55. package/dist/analysis/inference.d.ts.map +1 -0
  56. package/dist/analysis/inference.js +257 -0
  57. package/dist/analysis/inference.js.map +1 -0
  58. package/dist/analysis/jsx/attributes.d.ts +103 -0
  59. package/dist/analysis/jsx/attributes.d.ts.map +1 -0
  60. package/dist/analysis/jsx/attributes.js +601 -0
  61. package/dist/analysis/jsx/attributes.js.map +1 -0
  62. package/dist/analysis/jsx/elements.d.ts +17 -0
  63. package/dist/analysis/jsx/elements.d.ts.map +1 -0
  64. package/dist/analysis/jsx/elements.js +213 -0
  65. package/dist/analysis/jsx/elements.js.map +1 -0
  66. package/dist/analysis/jsx/host.d.ts +61 -0
  67. package/dist/analysis/jsx/host.d.ts.map +1 -0
  68. package/dist/analysis/jsx/host.js +15 -0
  69. package/dist/analysis/jsx/host.js.map +1 -0
  70. package/dist/analysis/jsx/keys.d.ts +15 -0
  71. package/dist/analysis/jsx/keys.d.ts.map +1 -0
  72. package/dist/analysis/jsx/keys.js +67 -0
  73. package/dist/analysis/jsx/keys.js.map +1 -0
  74. package/dist/analysis/jsx/security.d.ts +29 -0
  75. package/dist/analysis/jsx/security.d.ts.map +1 -0
  76. package/dist/analysis/jsx/security.js +61 -0
  77. package/dist/analysis/jsx/security.js.map +1 -0
  78. package/dist/analysis/jsx-detection.d.ts +49 -0
  79. package/dist/analysis/jsx-detection.d.ts.map +1 -0
  80. package/dist/analysis/jsx-detection.js +196 -0
  81. package/dist/analysis/jsx-detection.js.map +1 -0
  82. package/dist/analysis/keyed-rebuild.d.ts +148 -0
  83. package/dist/analysis/keyed-rebuild.d.ts.map +1 -0
  84. package/dist/analysis/keyed-rebuild.js +299 -0
  85. package/dist/analysis/keyed-rebuild.js.map +1 -0
  86. package/dist/analysis/keyframes-analysis.d.ts +6 -0
  87. package/dist/analysis/keyframes-analysis.d.ts.map +1 -0
  88. package/dist/analysis/keyframes-analysis.js +79 -0
  89. package/dist/analysis/keyframes-analysis.js.map +1 -0
  90. package/dist/analysis/look/builders.d.ts +29 -0
  91. package/dist/analysis/look/builders.d.ts.map +1 -0
  92. package/dist/analysis/look/builders.js +174 -0
  93. package/dist/analysis/look/builders.js.map +1 -0
  94. package/dist/analysis/look/conditions.d.ts +13 -0
  95. package/dist/analysis/look/conditions.d.ts.map +1 -0
  96. package/dist/analysis/look/conditions.js +84 -0
  97. package/dist/analysis/look/conditions.js.map +1 -0
  98. package/dist/analysis/look/edits.d.ts +36 -0
  99. package/dist/analysis/look/edits.d.ts.map +1 -0
  100. package/dist/analysis/look/edits.js +80 -0
  101. package/dist/analysis/look/edits.js.map +1 -0
  102. package/dist/analysis/look/entries.d.ts +56 -0
  103. package/dist/analysis/look/entries.d.ts.map +1 -0
  104. package/dist/analysis/look/entries.js +223 -0
  105. package/dist/analysis/look/entries.js.map +1 -0
  106. package/dist/analysis/look/host.d.ts +47 -0
  107. package/dist/analysis/look/host.d.ts.map +1 -0
  108. package/dist/analysis/look/host.js +16 -0
  109. package/dist/analysis/look/host.js.map +1 -0
  110. package/dist/analysis/look/tokens.d.ts +75 -0
  111. package/dist/analysis/look/tokens.d.ts.map +1 -0
  112. package/dist/analysis/look/tokens.js +156 -0
  113. package/dist/analysis/look/tokens.js.map +1 -0
  114. package/dist/analysis/look/values.d.ts +45 -0
  115. package/dist/analysis/look/values.d.ts.map +1 -0
  116. package/dist/analysis/look/values.js +148 -0
  117. package/dist/analysis/look/values.js.map +1 -0
  118. package/dist/analysis/look-conditions.d.ts +47 -0
  119. package/dist/analysis/look-conditions.d.ts.map +1 -0
  120. package/dist/analysis/look-conditions.js +157 -0
  121. package/dist/analysis/look-conditions.js.map +1 -0
  122. package/dist/analysis/look-sites.d.ts +62 -0
  123. package/dist/analysis/look-sites.d.ts.map +1 -0
  124. package/dist/analysis/look-sites.js +121 -0
  125. package/dist/analysis/look-sites.js.map +1 -0
  126. package/dist/analysis/look-values.d.ts +19 -0
  127. package/dist/analysis/look-values.d.ts.map +1 -1
  128. package/dist/analysis/look-values.js +38 -0
  129. package/dist/analysis/look-values.js.map +1 -1
  130. package/dist/analysis/look-vocabulary-guidance.d.ts +76 -0
  131. package/dist/analysis/look-vocabulary-guidance.d.ts.map +1 -0
  132. package/dist/analysis/look-vocabulary-guidance.js +338 -0
  133. package/dist/analysis/look-vocabulary-guidance.js.map +1 -0
  134. package/dist/analysis/media-conditions.d.ts +33 -0
  135. package/dist/analysis/media-conditions.d.ts.map +1 -0
  136. package/dist/analysis/media-conditions.js +92 -0
  137. package/dist/analysis/media-conditions.js.map +1 -0
  138. package/dist/analysis/program-passes.d.ts +106 -0
  139. package/dist/analysis/program-passes.d.ts.map +1 -0
  140. package/dist/analysis/program-passes.js +149 -0
  141. package/dist/analysis/program-passes.js.map +1 -0
  142. package/dist/analysis/reactivity/bindings.d.ts +37 -0
  143. package/dist/analysis/reactivity/bindings.d.ts.map +1 -0
  144. package/dist/analysis/reactivity/bindings.js +88 -0
  145. package/dist/analysis/reactivity/bindings.js.map +1 -0
  146. package/dist/analysis/reactivity/derived.d.ts +39 -0
  147. package/dist/analysis/reactivity/derived.d.ts.map +1 -0
  148. package/dist/analysis/reactivity/derived.js +80 -0
  149. package/dist/analysis/reactivity/derived.js.map +1 -0
  150. package/dist/analysis/reactivity/host.d.ts +38 -0
  151. package/dist/analysis/reactivity/host.d.ts.map +1 -0
  152. package/dist/analysis/reactivity/host.js +14 -0
  153. package/dist/analysis/reactivity/host.js.map +1 -0
  154. package/dist/analysis/reactivity/retired-accessors.d.ts +82 -0
  155. package/dist/analysis/reactivity/retired-accessors.d.ts.map +1 -0
  156. package/dist/analysis/reactivity/retired-accessors.js +118 -0
  157. package/dist/analysis/reactivity/retired-accessors.js.map +1 -0
  158. package/dist/analysis/renderable.d.ts +47 -0
  159. package/dist/analysis/renderable.d.ts.map +1 -0
  160. package/dist/analysis/renderable.js +105 -0
  161. package/dist/analysis/renderable.js.map +1 -0
  162. package/dist/analysis/routes.d.ts +64 -0
  163. package/dist/analysis/routes.d.ts.map +1 -0
  164. package/dist/analysis/routes.js +182 -0
  165. package/dist/analysis/routes.js.map +1 -0
  166. package/dist/analysis/url-attributes.d.ts +12 -0
  167. package/dist/analysis/url-attributes.d.ts.map +1 -0
  168. package/dist/analysis/url-attributes.js +48 -0
  169. package/dist/analysis/url-attributes.js.map +1 -0
  170. package/dist/analysis/watch-cycles.d.ts +102 -0
  171. package/dist/analysis/watch-cycles.d.ts.map +1 -1
  172. package/dist/analysis/watch-cycles.js +240 -1
  173. package/dist/analysis/watch-cycles.js.map +1 -1
  174. package/dist/analysis/watch-subject.d.ts +45 -0
  175. package/dist/analysis/watch-subject.d.ts.map +1 -0
  176. package/dist/analysis/watch-subject.js +272 -0
  177. package/dist/analysis/watch-subject.js.map +1 -0
  178. package/dist/analysis/web-types.d.ts +27 -0
  179. package/dist/analysis/web-types.d.ts.map +1 -0
  180. package/dist/analysis/web-types.js +170 -0
  181. package/dist/analysis/web-types.js.map +1 -0
  182. package/dist/analyzer.d.ts +18 -617
  183. package/dist/analyzer.d.ts.map +1 -1
  184. package/dist/analyzer.js +211 -4853
  185. package/dist/analyzer.js.map +1 -1
  186. package/dist/compiler.d.ts +20 -0
  187. package/dist/compiler.d.ts.map +1 -1
  188. package/dist/compiler.js +31 -864
  189. package/dist/compiler.js.map +1 -1
  190. package/dist/documentation.d.ts +28 -0
  191. package/dist/documentation.d.ts.map +1 -0
  192. package/dist/documentation.js +67 -0
  193. package/dist/documentation.js.map +1 -0
  194. package/dist/editor/completions.d.ts +12 -0
  195. package/dist/editor/completions.d.ts.map +1 -0
  196. package/dist/editor/completions.js +6 -0
  197. package/dist/editor/completions.js.map +1 -0
  198. package/dist/editor/jsx-completion.d.ts +12 -0
  199. package/dist/editor/jsx-completion.d.ts.map +1 -0
  200. package/dist/editor/jsx-completion.js +137 -0
  201. package/dist/editor/jsx-completion.js.map +1 -0
  202. package/dist/editor/look-completion.d.ts +29 -0
  203. package/dist/editor/look-completion.d.ts.map +1 -0
  204. package/dist/editor/look-completion.js +159 -0
  205. package/dist/editor/look-completion.js.map +1 -0
  206. package/dist/editor.d.ts.map +1 -1
  207. package/dist/editor.js +12 -288
  208. package/dist/editor.js.map +1 -1
  209. package/dist/emit/components.d.ts +33 -0
  210. package/dist/emit/components.d.ts.map +1 -0
  211. package/dist/emit/components.js +135 -0
  212. package/dist/emit/components.js.map +1 -0
  213. package/dist/emit/jsx.d.ts +57 -0
  214. package/dist/emit/jsx.d.ts.map +1 -0
  215. package/dist/emit/jsx.js +384 -0
  216. package/dist/emit/jsx.js.map +1 -0
  217. package/dist/emit/look-css.d.ts +44 -0
  218. package/dist/emit/look-css.d.ts.map +1 -0
  219. package/dist/emit/look-css.js +177 -0
  220. package/dist/emit/look-css.js.map +1 -0
  221. package/dist/emit/look.d.ts +39 -0
  222. package/dist/emit/look.d.ts.map +1 -0
  223. package/dist/emit/look.js +218 -0
  224. package/dist/emit/look.js.map +1 -0
  225. package/dist/emit/runtime-imports.d.ts +40 -0
  226. package/dist/emit/runtime-imports.d.ts.map +1 -0
  227. package/dist/emit/runtime-imports.js +188 -0
  228. package/dist/emit/runtime-imports.js.map +1 -0
  229. package/dist/emitter.d.ts +15 -68
  230. package/dist/emitter.d.ts.map +1 -1
  231. package/dist/emitter.js +79 -1008
  232. package/dist/emitter.js.map +1 -1
  233. package/dist/look/animation.d.ts +7 -0
  234. package/dist/look/animation.d.ts.map +1 -0
  235. package/dist/look/animation.js +13 -0
  236. package/dist/look/animation.js.map +1 -0
  237. package/dist/look/builders.d.ts +35 -0
  238. package/dist/look/builders.d.ts.map +1 -0
  239. package/dist/look/builders.js +74 -0
  240. package/dist/look/builders.js.map +1 -0
  241. package/dist/look/css-functions.d.ts +28 -0
  242. package/dist/look/css-functions.d.ts.map +1 -0
  243. package/dist/look/css-functions.js +54 -0
  244. package/dist/look/css-functions.js.map +1 -0
  245. package/dist/look/keyword-sets.d.ts +41 -0
  246. package/dist/look/keyword-sets.d.ts.map +1 -0
  247. package/dist/look/keyword-sets.js +117 -0
  248. package/dist/look/keyword-sets.js.map +1 -0
  249. package/dist/look/keywords.d.ts +55 -0
  250. package/dist/look/keywords.d.ts.map +1 -0
  251. package/dist/look/keywords.js +387 -0
  252. package/dist/look/keywords.js.map +1 -0
  253. package/dist/look/media.d.ts +19 -0
  254. package/dist/look/media.d.ts.map +1 -0
  255. package/dist/look/media.js +27 -0
  256. package/dist/look/media.js.map +1 -0
  257. package/dist/look/naming.d.ts +9 -0
  258. package/dist/look/naming.d.ts.map +1 -0
  259. package/dist/look/naming.js +45 -0
  260. package/dist/look/naming.js.map +1 -0
  261. package/dist/look/properties.d.ts +16 -0
  262. package/dist/look/properties.d.ts.map +1 -0
  263. package/dist/look/properties.js +52 -0
  264. package/dist/look/properties.js.map +1 -0
  265. package/dist/look/shorthands.d.ts +25 -0
  266. package/dist/look/shorthands.d.ts.map +1 -0
  267. package/dist/look/shorthands.js +130 -0
  268. package/dist/look/shorthands.js.map +1 -0
  269. package/dist/look/tokens.d.ts +38 -0
  270. package/dist/look/tokens.d.ts.map +1 -0
  271. package/dist/look/tokens.js +59 -0
  272. package/dist/look/tokens.js.map +1 -0
  273. package/dist/look/units.d.ts +24 -0
  274. package/dist/look/units.d.ts.map +1 -0
  275. package/dist/look/units.js +33 -0
  276. package/dist/look/units.js.map +1 -0
  277. package/dist/look.d.ts +32 -227
  278. package/dist/look.d.ts.map +1 -1
  279. package/dist/look.js +28 -933
  280. package/dist/look.js.map +1 -1
  281. package/dist/module-roster.d.ts +16 -0
  282. package/dist/module-roster.d.ts.map +1 -0
  283. package/dist/module-roster.js +28 -0
  284. package/dist/module-roster.js.map +1 -0
  285. package/dist/modules/app.d.ts +9 -0
  286. package/dist/modules/app.d.ts.map +1 -0
  287. package/dist/modules/app.js +20 -0
  288. package/dist/modules/app.js.map +1 -0
  289. package/dist/modules/browser-test.d.ts +9 -0
  290. package/dist/modules/browser-test.d.ts.map +1 -0
  291. package/dist/modules/browser-test.js +67 -0
  292. package/dist/modules/browser-test.js.map +1 -0
  293. package/dist/modules/browser.d.ts +10 -0
  294. package/dist/modules/browser.d.ts.map +1 -0
  295. package/dist/modules/browser.js +89 -0
  296. package/dist/modules/browser.js.map +1 -0
  297. package/dist/modules/config.d.ts +9 -0
  298. package/dist/modules/config.d.ts.map +1 -0
  299. package/dist/modules/config.js +14 -0
  300. package/dist/modules/config.js.map +1 -0
  301. package/dist/modules/files.d.ts +9 -0
  302. package/dist/modules/files.d.ts.map +1 -0
  303. package/dist/modules/files.js +16 -0
  304. package/dist/modules/files.js.map +1 -0
  305. package/dist/modules/forms.d.ts +9 -0
  306. package/dist/modules/forms.d.ts.map +1 -0
  307. package/dist/modules/forms.js +26 -0
  308. package/dist/modules/forms.js.map +1 -0
  309. package/dist/modules/http.d.ts +9 -0
  310. package/dist/modules/http.d.ts.map +1 -0
  311. package/dist/modules/http.js +127 -0
  312. package/dist/modules/http.js.map +1 -0
  313. package/dist/modules/look.d.ts +9 -0
  314. package/dist/modules/look.d.ts.map +1 -0
  315. package/dist/modules/look.js +58 -0
  316. package/dist/modules/look.js.map +1 -0
  317. package/dist/modules/realtime.d.ts +9 -0
  318. package/dist/modules/realtime.d.ts.map +1 -0
  319. package/dist/modules/realtime.js +163 -0
  320. package/dist/modules/realtime.js.map +1 -0
  321. package/dist/modules/storage.d.ts +9 -0
  322. package/dist/modules/storage.d.ts.map +1 -0
  323. package/dist/modules/storage.js +59 -0
  324. package/dist/modules/storage.js.map +1 -0
  325. package/dist/modules/types.d.ts +78 -0
  326. package/dist/modules/types.d.ts.map +1 -0
  327. package/dist/modules/types.js +154 -0
  328. package/dist/modules/types.js.map +1 -0
  329. package/dist/modules/web.d.ts +9 -0
  330. package/dist/modules/web.d.ts.map +1 -0
  331. package/dist/modules/web.js +63 -0
  332. package/dist/modules/web.js.map +1 -0
  333. package/dist/modules/websocket.d.ts +11 -0
  334. package/dist/modules/websocket.d.ts.map +1 -0
  335. package/dist/modules/websocket.js +75 -0
  336. package/dist/modules/websocket.js.map +1 -0
  337. package/dist/parser/expressions/jsx.d.ts +17 -0
  338. package/dist/parser/expressions/jsx.d.ts.map +1 -0
  339. package/dist/parser/expressions/jsx.js +43 -0
  340. package/dist/parser/expressions/jsx.js.map +1 -0
  341. package/dist/parser/expressions/keyframes.d.ts +15 -0
  342. package/dist/parser/expressions/keyframes.d.ts.map +1 -0
  343. package/dist/parser/expressions/keyframes.js +33 -0
  344. package/dist/parser/expressions/keyframes.js.map +1 -0
  345. package/dist/parser/expressions/look.d.ts +16 -0
  346. package/dist/parser/expressions/look.d.ts.map +1 -0
  347. package/dist/parser/expressions/look.js +37 -0
  348. package/dist/parser/expressions/look.js.map +1 -0
  349. package/dist/parser/expressions/visual-block.d.ts +17 -0
  350. package/dist/parser/expressions/visual-block.d.ts.map +1 -0
  351. package/dist/parser/expressions/visual-block.js +21 -0
  352. package/dist/parser/expressions/visual-block.js.map +1 -0
  353. package/dist/parser/keyframes-source.d.ts +24 -0
  354. package/dist/parser/keyframes-source.d.ts.map +1 -0
  355. package/dist/parser/keyframes-source.js +133 -0
  356. package/dist/parser/keyframes-source.js.map +1 -0
  357. package/dist/parser/look-source.d.ts +25 -0
  358. package/dist/parser/look-source.d.ts.map +1 -0
  359. package/dist/parser/look-source.js +189 -0
  360. package/dist/parser/look-source.js.map +1 -0
  361. package/dist/parser/spans.d.ts +24 -0
  362. package/dist/parser/spans.d.ts.map +1 -0
  363. package/dist/parser/spans.js +113 -0
  364. package/dist/parser/spans.js.map +1 -0
  365. package/dist/parser/statements/components.d.ts +37 -0
  366. package/dist/parser/statements/components.d.ts.map +1 -0
  367. package/dist/parser/statements/components.js +185 -0
  368. package/dist/parser/statements/components.js.map +1 -0
  369. package/dist/parser/statements/heads.d.ts +38 -0
  370. package/dist/parser/statements/heads.d.ts.map +1 -0
  371. package/dist/parser/statements/heads.js +55 -0
  372. package/dist/parser/statements/heads.js.map +1 -0
  373. package/dist/parser/statements/imports.d.ts +9 -0
  374. package/dist/parser/statements/imports.d.ts.map +1 -0
  375. package/dist/parser/statements/imports.js +31 -0
  376. package/dist/parser/statements/imports.js.map +1 -0
  377. package/dist/parser/statements/reactive.d.ts +31 -0
  378. package/dist/parser/statements/reactive.d.ts.map +1 -0
  379. package/dist/parser/statements/reactive.js +68 -0
  380. package/dist/parser/statements/reactive.js.map +1 -0
  381. package/dist/parser/statements/unsafe-css.d.ts +21 -0
  382. package/dist/parser/statements/unsafe-css.d.ts.map +1 -0
  383. package/dist/parser/statements/unsafe-css.js +42 -0
  384. package/dist/parser/statements/unsafe-css.js.map +1 -0
  385. package/dist/parser.d.ts +37 -50
  386. package/dist/parser.d.ts.map +1 -1
  387. package/dist/parser.js +98 -882
  388. package/dist/parser.js.map +1 -1
  389. package/dist/runtime-sources.generated.d.ts +1 -1
  390. package/dist/runtime-sources.generated.d.ts.map +1 -1
  391. package/dist/runtime-sources.generated.js +4 -4
  392. package/dist/runtime-sources.generated.js.map +1 -1
  393. package/package.json +2 -2
@@ -0,0 +1,135 @@
1
+ import { spanIdentity } from "@velarscript/compiler/extension";
2
+ import { isWebJsx, webWatchSubjectLabel, } from "../ast.js";
3
+ export function emitComponent(host, statement, depth) {
4
+ const indentation = " ".repeat(depth);
5
+ const outerIndent = " ".repeat(depth + 1);
6
+ const bodyIndent = " ".repeat(depth + 2);
7
+ const previousScope = host.currentScope;
8
+ const previousJsxNamespace = host.currentJsxNamespace;
9
+ host.currentScope = "__velarComponentScope";
10
+ host.currentJsxNamespace = "__velarNamespace";
11
+ // Props are live reactive inputs: every parameter becomes a read-only
12
+ // handle over the per-instance props store, so prop reads lower through
13
+ // .get() exactly like state reads do.
14
+ const lines = [];
15
+ for (const parameter of statement.parameters) {
16
+ if (parameter.defaultValue) {
17
+ lines.push(`${bodyIndent}const ${parameter.name} = __velarProp(__velarProps, ${JSON.stringify(parameter.name)}, () => (${host.emitMappedExpression(parameter.defaultValue)}));`);
18
+ }
19
+ else {
20
+ lines.push(`${bodyIndent}const ${parameter.name} = __velarRequiredProp(__velarProps, ${JSON.stringify(parameter.name)}, ${JSON.stringify(statement.name)});`);
21
+ }
22
+ }
23
+ let render = null;
24
+ let expose = null;
25
+ let mountedBody = [];
26
+ let cleanupBody = [];
27
+ for (const item of statement.body) {
28
+ if (item.kind === "ExtensionStatement:web:state") {
29
+ lines.push(`${bodyIndent}const ${item.name} = __velarState(${host.emitMappedExpression(item.initializer)}, ${JSON.stringify(item.name)});`);
30
+ }
31
+ else if (item.kind === "ExtensionStatement:web:computed") {
32
+ lines.push(`${bodyIndent}const ${item.name} = __velarComputed(() => (${host.emitMappedExpression(item.initializer)}));`);
33
+ }
34
+ else if (item.kind === "ExtensionStatement:web:resource") {
35
+ lines.push(`${bodyIndent}const ${item.name} = __velarResource(() => ${host.emitMappedExpression(item.initializer)}, __velarComponentScope, ${JSON.stringify(item.name)});`);
36
+ }
37
+ else if (item.kind === "ExtensionStatement:web:action") {
38
+ const parameters = item.parameters.map((parameter) => host.emitParameter(parameter.name, parameter.defaultValue, parameter.rest)).join(", ");
39
+ const actionLines = [...host.emitStatementLines(item.body, depth + 3)];
40
+ if (!host.blockAlwaysReturns(item.body))
41
+ actionLines.push(`${" ".repeat(depth + 3)}return null;`);
42
+ const actionBody = actionLines.join("\n");
43
+ lines.push(`${bodyIndent}const ${item.name} = __velarAction(async (${parameters}) => {${actionBody ? `\n${actionBody}\n${bodyIndent}` : ""}}, __velarComponentScope, ${JSON.stringify(item.name)});`);
44
+ }
45
+ else if (item.kind === "ExtensionStatement:web:watch") {
46
+ const parameters = [item.currentName, item.previousName].filter((name) => name !== null).join(", ");
47
+ const watchLines = host.emitStatementLines(item.body, depth + 3).join("\n");
48
+ lines.push(`${bodyIndent}__velarWatch(() => ${host.emitMappedExpression(item.expression)}, (${parameters}) => {${watchLines ? `\n${watchLines}\n${bodyIndent}` : ""}}, __velarComponentScope, ${JSON.stringify(webWatchSubjectLabel(item.expression))});`);
49
+ }
50
+ else if (item.kind === "ExtensionStatement:web:expose") {
51
+ expose ??= item.value;
52
+ }
53
+ else if (item.kind === "ExtensionStatement:web:mounted") {
54
+ mountedBody = item.body;
55
+ }
56
+ else if (item.kind === "ExtensionStatement:web:cleanup") {
57
+ cleanupBody = item.body;
58
+ }
59
+ else if (item.kind === "ReturnStatement") {
60
+ render = item.value;
61
+ }
62
+ else {
63
+ lines.push(host.emitMappedStatement(item, depth + 2));
64
+ }
65
+ }
66
+ // A direct JSX root owns its own attribute/child observers and keeps a
67
+ // stable host. Every other WebNode expression is a live root position:
68
+ // evaluate it inside a dedicated child scope so conditions and helper
69
+ // calls can replace the root without rerunning component setup.
70
+ let renderedRoot = "__velarDomCreateComment(\"missing render\")";
71
+ if (render) {
72
+ if (isWebJsx(render))
73
+ renderedRoot = host.emitMappedExpression(render);
74
+ else {
75
+ const rootScope = host.currentScope;
76
+ host.currentScope = "__velarDynamicScope";
77
+ try {
78
+ renderedRoot = `__velarDynamicComponent((__velarDynamicScope) => ${host.emitMappedExpression(render)}, __velarComponentScope)`;
79
+ }
80
+ finally {
81
+ host.currentScope = rootScope;
82
+ }
83
+ }
84
+ }
85
+ lines.push(`${bodyIndent}const __velarRoot = ${renderedRoot};`);
86
+ lines.push(`${bodyIndent}const __velarHandle = ${expose ? `__velarComponentHandle(${host.emitMappedExpression(expose)}, ${JSON.stringify(statement.name)})` : "null"};`);
87
+ lines.push(`${bodyIndent}if (__velarProps.class !== undefined) __velarClassBindRoot(__velarRoot, () => __velarProps.class, __velarComponentScope);`);
88
+ lines.push(`${bodyIndent}if (__velarProps.look !== undefined) __velarLookBindRoot(__velarRoot, () => __velarProps.look, __velarComponentScope);`);
89
+ // 'class' and 'look' are fields a component may declare and read, so they
90
+ // arrive as props. The 'style:' slot is not: it is bound to the instance
91
+ // root by whoever wrote it, at the instantiation site, for every component
92
+ // alike -- see __velarInstantiate.
93
+ const mounted = host.emitStatementLines(mountedBody, depth + 3).join("\n");
94
+ const cleanup = cleanupBody.map((child) => {
95
+ if (["VariableDeclaration", "FunctionDeclaration", "ClassDeclaration", "TypeDeclaration", "EnumDeclaration"].includes(child.kind)) {
96
+ return host.emitMappedStatement(child, depth + 3);
97
+ }
98
+ const inner = host.emitMappedStatement(child, depth + 4);
99
+ if (!inner)
100
+ return "";
101
+ const cleanupIndent = " ".repeat(depth + 3);
102
+ return `${cleanupIndent}__velarCleanupStep(() => {\n${inner}\n${cleanupIndent}}, __velarComponentScope);`;
103
+ }).filter(Boolean).join("\n");
104
+ const cleanupBodyText = `() => {${cleanup ? `\n${cleanup}\n${bodyIndent}` : ""}}`;
105
+ const functionLines = [
106
+ `${outerIndent}const __velarComponentScope = __velarSetupBegin(__velarScope(${JSON.stringify(statement.name)}));`,
107
+ `${outerIndent}let __velarConstructionCleanup = () => {};`,
108
+ `${outerIndent}try {`,
109
+ `${bodyIndent}__velarConstructionCleanup = ${cleanupBodyText};`,
110
+ ...lines,
111
+ `${bodyIndent}return __velarSetupEnd(__velarComponent(__velarRoot, __velarComponentScope, async () => {${mounted ? `\n${mounted}\n${bodyIndent}` : ""}}, __velarConstructionCleanup, __velarHandle));`,
112
+ `${outerIndent}} catch (__velarConstructionError) {`,
113
+ `${bodyIndent}__velarSetupEnd(null);`,
114
+ `${bodyIndent}try { __velarConstructionCleanup(); } catch (__velarCleanupError) { __velarReport(__velarCleanupError, "cleanup", __velarComponentScope); }`,
115
+ `${bodyIndent}__velarDestroyScope(__velarComponentScope);`,
116
+ `${bodyIndent}throw __velarConstructionError;`,
117
+ `${outerIndent}}`,
118
+ ];
119
+ host.currentScope = previousScope;
120
+ host.currentJsxNamespace = previousJsxNamespace;
121
+ return `${indentation}${statement.exported ? "export " : ""}function ${statement.name}(__velarProps = {}, __velarNamespace = "html") {\n${functionLines.filter(Boolean).join("\n")}\n${indentation}}`;
122
+ }
123
+ export function emitReactiveAssignment(host, statement, depth) {
124
+ const indentation = " ".repeat(depth);
125
+ if (statement.target.kind === "IdentifierExpression"
126
+ && host.hints.reactiveReferences.get(spanIdentity(statement.target.span)) === "state") {
127
+ const state = statement.target.name;
128
+ const value = host.emitMappedExpression(statement.value);
129
+ if (statement.operator === "=")
130
+ return `${indentation}${state}.set(${value});`;
131
+ return `${indentation}${state}.set(${state}.get() ${statement.operator.slice(0, -1)} ${value});`;
132
+ }
133
+ return null;
134
+ }
135
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/emit/components.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * What JSX becomes: a component instance, a native element and its attributes,
3
+ * and the children each of them owns.
4
+ *
5
+ * D115 P4 R3d: the family owns every lowering that builds DOM, plus the two
6
+ * recognizers the analyzer shares with it — `jsxKeyedList` and
7
+ * `dynamicChildLeaves` — so the fast path emission takes and the fast path
8
+ * analysis diagnoses are one definition.
9
+ */
10
+ import type { Expression, LoweringHints, Span, Statement } from "@velarscript/compiler/extension";
11
+ import { type WebJsxAttribute as JSXAttribute, type WebJsxElementExpression as JSXElementExpression } from "../ast.ts";
12
+ /**
13
+ * What JSX emission reads and writes on the emitter. The three scope fields are
14
+ * live: a nested element is emitted while they name the scope it builds into,
15
+ * and every path restores what it found.
16
+ */
17
+ export interface JsxEmitHost {
18
+ currentJsxNamespace: string;
19
+ currentScope: string | null;
20
+ readonly hints: LoweringHints;
21
+ jsxId: number;
22
+ readonly moduleEvaluation: boolean;
23
+ emitMappedExpression(expression: Expression): string;
24
+ emitMappedJavaScript(sourceSpan: Span, render: () => string): string;
25
+ emitObjectKey(name: string): string;
26
+ emitStatement(statement: Statement, depth: number): string;
27
+ }
28
+ export declare function emitJsx(host: JsxEmitHost, expression: JSXElementExpression, scope: string, asChild: boolean, namespace: string, mapped?: boolean): string;
29
+ export interface JsxKeyedList {
30
+ readonly source: Expression;
31
+ readonly arrow: Extract<Expression, {
32
+ kind: "ArrowFunctionExpression";
33
+ }> & {
34
+ readonly body: JSXElementExpression;
35
+ };
36
+ readonly key: JSXAttribute | null;
37
+ }
38
+ export interface DynamicChildGuard {
39
+ readonly condition: Expression;
40
+ readonly thenBranch: boolean;
41
+ }
42
+ export interface DynamicChildLeaf {
43
+ readonly expression: Expression;
44
+ readonly list: JsxKeyedList | null;
45
+ readonly guards: readonly DynamicChildGuard[];
46
+ }
47
+ export declare function jsxKeyedList(expression: Expression): JsxKeyedList | null;
48
+ /**
49
+ * F1: the analyzer's verdict that an interpolation's checked type renders as
50
+ * exactly one text node. The emitter cannot re-derive it — the checked type is
51
+ * gone by lowering time — so the analyzer stamps the child expression's span
52
+ * and the emitter reads it back through the extension-hint channel that
53
+ * `LOOK_ARITHMETIC_HINT` already uses.
54
+ */
55
+ export declare const JSX_SCALAR_TEXT_HINT = "@velarscript/web:jsx-scalar-text";
56
+ export declare function dynamicChildLeaves(expression: Expression, guards?: readonly DynamicChildGuard[]): readonly DynamicChildLeaf[];
57
+ //# sourceMappingURL=jsx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../../src/emit/jsx.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAElG,OAAO,EACL,KAAK,eAAe,IAAI,YAAY,EACpC,KAAK,uBAAuB,IAAI,oBAAoB,EACrD,MAAM,WAAW,CAAC;AAInB;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC;IACrD,oBAAoB,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC;IACrE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5D;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,MAAM,CAGtJ;AA4UD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,yBAAyB,CAAA;KAAE,CAAC,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;KAAE,CAAC;IACnH,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC/C;AAOD,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAOxE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,qCAAqC,CAAC;AAoBvE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,GAAE,SAAS,iBAAiB,EAAO,GAAG,SAAS,gBAAgB,EAAE,CAUjI"}
@@ -0,0 +1,384 @@
1
+ import { spanIdentity } from "@velarscript/compiler/extension";
2
+ import {} from "../ast.js";
3
+ import { cssPropertyName } from "../look.js";
4
+ import { lookToken } from "./look-css.js";
5
+ export function emitJsx(host, expression, scope, asChild, namespace, mapped = true) {
6
+ const render = () => emitJsxCode(host, expression, scope, asChild, namespace);
7
+ return mapped ? host.emitMappedJavaScript(expression.span, render) : render();
8
+ }
9
+ /**
10
+ * A capitalized tag is a component instance; everything else is an element the
11
+ * emitter builds itself.
12
+ */
13
+ function emitJsxCode(host, expression, scope, asChild, namespace) {
14
+ return /^[A-Z]/u.test(expression.tag)
15
+ ? emitComponentElement(host, expression, scope, asChild, namespace)
16
+ : emitNativeElement(host, expression, scope, namespace);
17
+ }
18
+ /**
19
+ * `<App … />`: the props, Look and Style slots, children thunk and `ref` setter
20
+ * one component instantiation is handed, and which of the four instantiation
21
+ * forms the position calls for.
22
+ */
23
+ function emitComponentElement(host, expression, scope, asChild, namespace) {
24
+ const reactiveComponent = host.hints.reactiveReferences.has(spanIdentity(expression.tagSpan));
25
+ const componentScope = reactiveComponent ? "__velarDynamicScope" : scope;
26
+ const previousScope = host.currentScope;
27
+ if (reactiveComponent)
28
+ host.currentScope = componentScope;
29
+ try {
30
+ // Static component identity keeps the existing stable child fast path.
31
+ // A reactive Component value owns a dynamic region that remounts only
32
+ // when the constructor identity itself changes; ordinary prop updates
33
+ // continue through the child's live prop cells.
34
+ const properties = expression.attributes
35
+ .filter((attribute) => attribute.name !== "key" && attribute.name !== "ref" && attribute.name !== "look" && !attribute.name.startsWith("look:")
36
+ && attribute.name !== "style" && !attribute.name.startsWith("style:"))
37
+ .map((attribute) => host.emitMappedJavaScript(attribute.span, () => `${host.emitObjectKey(attribute.name)}: () => (${emitJsxAttributeValue(host, attribute)})`));
38
+ const lookValue = emitJsxLookValue(host, expression);
39
+ const lookAttribute = expression.attributes.find((attribute) => attribute.name === "look" || attribute.name.startsWith("look:"));
40
+ if (lookValue && lookAttribute) {
41
+ properties.push(host.emitMappedJavaScript(lookAttribute.span, () => `look: () => (${lookValue})`));
42
+ }
43
+ const styleValue = emitJsxStyleValue(host, expression);
44
+ const styleAttribute = expression.attributes.find((attribute) => attribute.name.startsWith("style:"));
45
+ if (styleValue && styleAttribute) {
46
+ properties.push(host.emitMappedJavaScript(styleAttribute.span, () => `__velarStyle: () => (${styleValue})`));
47
+ }
48
+ // Children stay a thunk so the charter's evaluation order holds at
49
+ // the runtime boundary: props left to right, then children, then the
50
+ // component function. The thunk takes the scope to build into, so the
51
+ // position that shows the slot owns what it built and destroys it when
52
+ // it stops showing it.
53
+ const children = hasMeaningfulChildren(expression.children)
54
+ ? `(__velarChildrenScope = ${componentScope}) => (${emitJsxChildrenCode(host, expression.children, namespace)})`
55
+ : "undefined";
56
+ const ref = expression.attributes.find((attribute) => attribute.name === "ref")?.value;
57
+ const refSetter = ref && typeof ref !== "string" && ref.kind === "IdentifierExpression"
58
+ ? `(next, previous) => { if (previous === undefined || ${ref.name} === previous) ${ref.name} = next; }`
59
+ : null;
60
+ const component = reactiveComponent ? `${expression.tag}.get()` : expression.tag;
61
+ const arguments_ = `${component}, { ${properties.join(", ")} }, ${children}, ${componentScope}, ${namespace}${refSetter ? `, ${refSetter}` : ""}`;
62
+ if (reactiveComponent) {
63
+ return `__velarDynamicComponent((__velarDynamicScope) => __velarChild(${arguments_}), ${scope})`;
64
+ }
65
+ if (asChild)
66
+ return `__velarChild(${arguments_})`;
67
+ // D90 R4-b's designed site: `const root = <App />` builds its instance
68
+ // while the module evaluates, which is outside every transaction the
69
+ // runtime owns. The site stays legal and eager; only its failure moves,
70
+ // from an uncaught module-evaluation throw to the same no-blank-page
71
+ // machinery `mount` has always run.
72
+ return `${host.moduleEvaluation ? "__velarModuleInstantiate" : "__velarInstantiate"}(${arguments_})`;
73
+ }
74
+ finally {
75
+ host.currentScope = previousScope;
76
+ }
77
+ }
78
+ /**
79
+ * `<div … />`: the element, the attributes bound to it, and the children
80
+ * appended to it, all inside the immediately-invoked builder the position
81
+ * evaluates.
82
+ */
83
+ function emitNativeElement(host, expression, scope, namespace) {
84
+ const id = ++host.jsxId;
85
+ const element = `__velarElement${id}`;
86
+ const elementNamespace = expression.tag === "svg" ? '"svg"' : namespace;
87
+ const childNamespace = expression.tag === "foreignObject" ? '"html"' : elementNamespace;
88
+ const lines = [expression.tag
89
+ ? `const ${element} = __velarCreateElement(${JSON.stringify(expression.tag)}, ${elementNamespace});`
90
+ : `const ${element} = __velarDomCreateFragment();`];
91
+ let emittedLook = false;
92
+ let emittedStyle = false;
93
+ for (const attribute of expression.attributes) {
94
+ if (attribute.name === "key")
95
+ continue;
96
+ if (attribute.name === "look" || attribute.name.startsWith("look:")) {
97
+ if (!emittedLook) {
98
+ emittedLook = true;
99
+ const lookValue = emitJsxLookValue(host, expression);
100
+ if (lookValue)
101
+ lines.push(host.emitMappedJavaScript(attribute.span, () => `__velarLookBind(${element}, () => ${lookValue}, ${scope});`));
102
+ }
103
+ continue;
104
+ }
105
+ if (attribute.name.startsWith("style:")) {
106
+ if (!emittedStyle) {
107
+ emittedStyle = true;
108
+ const styleValue = emitJsxStyleValue(host, expression);
109
+ if (styleValue)
110
+ lines.push(host.emitMappedJavaScript(attribute.span, () => `__velarStyleBind(${element}, () => (${styleValue}), ${scope});`));
111
+ }
112
+ continue;
113
+ }
114
+ if (attribute.name === "style")
115
+ continue;
116
+ lines.push(host.emitMappedJavaScript(attribute.span, () => emitNativeAttribute(host, expression, attribute, element, scope)));
117
+ }
118
+ for (const child of expression.children) {
119
+ const line = emitNativeChild(host, child, element, scope, childNamespace);
120
+ if (line !== null)
121
+ lines.push(line);
122
+ }
123
+ lines.push(`return ${element};`);
124
+ return `(() => { ${lines.join(" ")} })()`;
125
+ }
126
+ /**
127
+ * One attribute of a native element, after the `key`, `look:` and `style:`
128
+ * slots the element itself answers. Each arm is the whole lowering of one
129
+ * attribute family, and the last two are the plain attribute: a literal written
130
+ * once, an expression bound to the scope.
131
+ */
132
+ function emitNativeAttribute(host, expression, attribute, element, scope) {
133
+ const value = attribute.value;
134
+ if (attribute.name === "ref" && value && typeof value !== "string" && value.kind === "IdentifierExpression") {
135
+ return `${value.name} = ${element}; __velarAppendOwned(${scope}.cleanups, () => { if (${value.name} === ${element}) ${value.name} = null; });`;
136
+ }
137
+ if (attribute.name.startsWith("on:") && value && typeof value !== "string") {
138
+ const [event, ...modifiers] = attribute.name.slice(3).split(".");
139
+ return `__velarOn(${element}, ${JSON.stringify(event)}, () => (${host.emitMappedExpression(value)}), ${scope}, ${JSON.stringify(modifiers)});`;
140
+ }
141
+ if (attribute.name === "bind:value" && value && typeof value !== "string") {
142
+ const numeric = expression.tag === "input" && expression.attributes.some((item) => item.name === "type" && item.value === "number");
143
+ const enumName = host.hints.enumValueBindings.get(attribute.span.start);
144
+ return `__velarBindValue(${element}, ${emitBindTarget(host, value)}, ${scope}, ${numeric}${enumName ? `, ${enumName}.parse` : ""});`;
145
+ }
146
+ if (attribute.name === "bind:checked" && value && typeof value !== "string") {
147
+ return `__velarBindChecked(${element}, ${emitBindTarget(host, value)}, ${scope});`;
148
+ }
149
+ if (attribute.name === "bind:group" && value && typeof value !== "string") {
150
+ const multiple = expression.attributes.some((item) => item.name === "type" && item.value === "checkbox");
151
+ const enumName = host.hints.enumValueBindings.get(attribute.span.start);
152
+ return `__velarBindGroup(${element}, ${emitBindTarget(host, value)}, ${scope}, ${multiple}${enumName ? `, ${enumName}.parse` : ""});`;
153
+ }
154
+ if (attribute.name.startsWith("class:") && value && typeof value !== "string") {
155
+ return `__velarClass(${element}, ${JSON.stringify(attribute.name.slice(6))}, () => ${host.emitMappedExpression(value)}, ${scope});`;
156
+ }
157
+ if (attribute.name === "host")
158
+ return `${element}.__velarHost = true;`;
159
+ if (attribute.name === "class" && value && typeof value !== "string") {
160
+ return `__velarClassBind(${element}, () => ${host.emitMappedExpression(value)}, ${scope});`;
161
+ }
162
+ if (attribute.name === "unsafe:html") {
163
+ const html = typeof value === "string" ? JSON.stringify(value) : value === null ? '""' : host.emitMappedExpression(value);
164
+ return `__velarHtml(${element}, () => ${html}, ${scope});`;
165
+ }
166
+ if (typeof value === "string" || value === null) {
167
+ return `__velarStaticAttr(${element}, ${JSON.stringify(attribute.name)}, ${value === null ? "true" : JSON.stringify(value)});`;
168
+ }
169
+ return `__velarAttr(${element}, ${JSON.stringify(attribute.name)}, () => ${host.emitMappedExpression(value)}, ${scope});`;
170
+ }
171
+ /**
172
+ * One child of a native element: static text, a nested element, or an
173
+ * interpolation that owns a region of its own. Whitespace-only text answers
174
+ * `null` — it appends nothing, and must not record a source-map span either.
175
+ */
176
+ function emitNativeChild(host, child, element, scope, childNamespace) {
177
+ if (child.kind === "JSXText") {
178
+ const text = normalizeJsxText(child.value);
179
+ return text ? host.emitMappedJavaScript(child.span, () => `__velarDomAppend(${element}, __velarDomCreateTextNode(${JSON.stringify(text)}));`) : null;
180
+ }
181
+ if (child.kind === "ExtensionExpression:web:jsx") {
182
+ return host.emitMappedJavaScript(child.span, () => `__velarAppend(${element}, ${emitJsx(host, child, scope, true, childNamespace)});`);
183
+ }
184
+ return host.emitMappedJavaScript(child.expression.span, () => emitDynamicChild(host, element, child.expression, scope, childNamespace));
185
+ }
186
+ function emitJsxChildren(host, children, scope, namespace) {
187
+ const fragmentSpan = children[0]?.span ?? { start: 0, end: 0 };
188
+ const fragment = { kind: "ExtensionExpression:web:jsx", tag: "", tagSpan: { start: fragmentSpan.start, end: fragmentSpan.start }, attributes: [], children, span: fragmentSpan };
189
+ return emitJsx(host, fragment, scope, true, namespace);
190
+ }
191
+ // The slot body builds into whichever scope the consuming position hands it,
192
+ // so every observer, ref and cleanup it registers dies with that position
193
+ // rather than accumulating on the caller for the component's whole lifetime.
194
+ function emitJsxChildrenCode(host, children, namespace) {
195
+ const previousScope = host.currentScope;
196
+ host.currentScope = "__velarChildrenScope";
197
+ try {
198
+ return emitJsxChildren(host, children, "__velarChildrenScope", namespace);
199
+ }
200
+ finally {
201
+ host.currentScope = previousScope;
202
+ }
203
+ }
204
+ function emitDynamicChild(host, parent, expression, scope, namespace) {
205
+ const leaves = dynamicChildLeaves(expression);
206
+ const previousScope = host.currentScope;
207
+ const previousJsxNamespace = host.currentJsxNamespace;
208
+ host.currentScope = "__velarChildScope";
209
+ host.currentJsxNamespace = namespace;
210
+ // A conditional splits into one region per branch leaf only when a keyed
211
+ // list is somewhere among them; each region gates itself on the shared
212
+ // branch conditions, so at most one region renders content at a time and
213
+ // the keyed list keeps identity-preserving children across the branch flip.
214
+ // Without a keyed leaf the interpolation stays one dynamic region -- unless
215
+ // its checked type can only ever be one text node, which is the whole tree
216
+ // of a conversation surface and is answered by one text node instead (F1).
217
+ const keyed = leaves.some((leaf) => leaf.list?.key);
218
+ const scalarText = !keyed && isScalarTextChild(host, expression);
219
+ // A scalar region owns no child scope, so nothing inside it may address
220
+ // one; the guard above proves nothing does.
221
+ if (scalarText)
222
+ host.currentScope = scope;
223
+ const statements = keyed
224
+ ? leaves.map((leaf) => emitDynamicChildLeaf(host, parent, leaf, scope, namespace))
225
+ : scalarText
226
+ ? [`__velarText(${parent}, () => ${host.emitMappedExpression(expression)}, ${scope});`]
227
+ : [`__velarDynamic(${parent}, (__velarChildScope) => ${host.emitMappedExpression(expression)}, ${scope});`];
228
+ host.currentScope = previousScope;
229
+ host.currentJsxNamespace = previousJsxNamespace;
230
+ return statements.join(" ");
231
+ }
232
+ /**
233
+ * The two conditions for the scalar-text fast path, both of which must hold:
234
+ * the analyzer proved the checked type renders as exactly one text node, and
235
+ * the expression builds no JSX of its own. Everything else keeps the full
236
+ * dynamic region, so a widening of the type rule can only ever be a
237
+ * deliberate edit to `VelarWebAnalyzer.isScalarTextType`.
238
+ */
239
+ function isScalarTextChild(host, expression) {
240
+ return host.hints.extensionCalls.get(spanIdentity(expression.span)) === JSX_SCALAR_TEXT_HINT
241
+ && !containsJsxExpression(expression);
242
+ }
243
+ function emitDynamicChildLeaf(host, parent, leaf, scope, namespace) {
244
+ const list = leaf.list;
245
+ if (list?.key) {
246
+ const source = emitGuardedExpression(host, leaf.guards, host.emitMappedExpression(list.source), "[]");
247
+ const parameter = list.arrow.parameters[0].name;
248
+ const key = emitJsxAttributeValue(host, list.key);
249
+ const render = emitJsx(host, list.arrow.body, "__velarChildScope", true, namespace);
250
+ return `__velarKeyed(${parent}, () => ${source}, (${parameter}) => ${key}, (${parameter}, __velarChildScope) => ${render}, ${scope});`;
251
+ }
252
+ const value = emitGuardedExpression(host, leaf.guards, host.emitMappedExpression(leaf.expression), "null");
253
+ return `__velarDynamic(${parent}, (__velarChildScope) => ${value}, ${scope});`;
254
+ }
255
+ // Wraps a leaf's expression in its branch conditions, innermost last, so the
256
+ // leaf evaluates only while its branch is active and yields the inactive
257
+ // placeholder ('[]' for keyed reads, 'null' for dynamic regions) otherwise.
258
+ function emitGuardedExpression(host, guards, inner, inactive) {
259
+ let output = inner;
260
+ for (let index = guards.length - 1; index >= 0; index -= 1) {
261
+ const guard = guards[index];
262
+ const condition = host.emitMappedExpression(guard.condition);
263
+ output = guard.thenBranch
264
+ ? `(${condition}) ? (${output}) : ${inactive}`
265
+ : `(${condition}) ? ${inactive} : (${output})`;
266
+ }
267
+ return output;
268
+ }
269
+ /**
270
+ * D47 rule 84(A): a bind target is a state cell, or a writable reactive
271
+ * location inside one. A member/index path lowers to the get/set pair the
272
+ * binding helpers already expect, so a field of state reads and writes through
273
+ * exactly the same statements the author would have written by hand.
274
+ */
275
+ function emitBindTarget(host, value) {
276
+ if (value.kind === "IdentifierExpression")
277
+ return value.name;
278
+ const next = { kind: "IdentifierExpression", name: "__velarBindNext", span: value.span };
279
+ const read = host.emitMappedExpression(value);
280
+ const assignment = { kind: "AssignmentStatement", target: value, value: next, operator: "=", span: value.span };
281
+ const write = host.emitStatement(assignment, 0).trim();
282
+ return `{ get: () => (${read}), set: (__velarBindNext) => { ${write} } }`;
283
+ }
284
+ function emitJsxAttributeValue(host, attribute) {
285
+ if (attribute.value === null)
286
+ return "true";
287
+ if (typeof attribute.value === "string")
288
+ return JSON.stringify(attribute.value);
289
+ return host.emitMappedExpression(attribute.value);
290
+ }
291
+ function emitJsxLookValue(host, expression) {
292
+ const base = expression.attributes.find((attribute) => attribute.name === "look");
293
+ const inline = expression.attributes.filter((attribute) => attribute.name.startsWith("look:"));
294
+ const baseValue = base?.value && typeof base.value !== "string" ? host.emitMappedExpression(base.value) : null;
295
+ if (inline.length === 0)
296
+ return baseValue;
297
+ const rules = inline.map((attribute) => {
298
+ const property = cssPropertyName(attribute.name.slice("look:".length));
299
+ const token = lookToken([], "", property);
300
+ const value = attribute.value === null ? "null"
301
+ : typeof attribute.value === "string" ? JSON.stringify(attribute.value)
302
+ : host.emitMappedExpression(attribute.value);
303
+ return `${JSON.stringify(token)}: ${value}`;
304
+ });
305
+ const anonymous = `{ rules: { ${rules.join(", ")} } }`;
306
+ return `__velarLook([${[baseValue, anonymous].filter(Boolean).join(", ")}])`;
307
+ }
308
+ function emitJsxStyleValue(host, expression) {
309
+ const inline = expression.attributes.filter((attribute) => attribute.name.startsWith("style:"));
310
+ if (inline.length === 0)
311
+ return null;
312
+ const properties = inline.map((attribute) => {
313
+ const property = cssPropertyName(attribute.name.slice("style:".length));
314
+ const value = attribute.value === null ? "null"
315
+ : typeof attribute.value === "string" ? JSON.stringify(attribute.value)
316
+ : host.emitMappedExpression(attribute.value);
317
+ return `${JSON.stringify(property)}: ${value}`;
318
+ });
319
+ return `{ ${properties.join(", ")} }`;
320
+ }
321
+ function normalizeJsxText(value) {
322
+ const normalized = value.replace(/\s+/gu, " ");
323
+ if (!value.includes("\n"))
324
+ return normalized;
325
+ return (/^\s*\n/u.test(value) ? normalized.trimStart() : normalized).replace(/\n\s*$/u.test(value) ? /\s+$/u : /$^/u, "");
326
+ }
327
+ function hasMeaningfulChildren(children) {
328
+ return children.some((child) => child.kind !== "JSXText" || child.value.trim().length > 0);
329
+ }
330
+ // The keyed-children fast path is syntactic: an interpolation leaf must be
331
+ // exactly `source.map(single-parameter arrow returning JSX)`, keyed when the
332
+ // arrow's root element carries a `key` attribute. The analyzer mirrors this
333
+ // recognizer through dynamicChildLeaves, so anything the emitter demotes to a
334
+ // rebuild-all dynamic region is diagnosed rather than silently forfeited.
335
+ export function jsxKeyedList(expression) {
336
+ if (expression.kind !== "CallExpression" || expression.callee.kind !== "MemberExpression" || expression.callee.property !== "map")
337
+ return null;
338
+ const callback = expression.arguments[0];
339
+ if (!callback || callback.kind !== "ArrowFunctionExpression" || callback.asynchronous || callback.parameters.length !== 1 || callback.body.kind !== "ExtensionExpression:web:jsx")
340
+ return null;
341
+ const arrow = callback;
342
+ const key = arrow.body.attributes.find((attribute) => attribute.name === "key") ?? null;
343
+ return { source: expression.callee.object, arrow, key };
344
+ }
345
+ /**
346
+ * F1: the analyzer's verdict that an interpolation's checked type renders as
347
+ * exactly one text node. The emitter cannot re-derive it — the checked type is
348
+ * gone by lowering time — so the analyzer stamps the child expression's span
349
+ * and the emitter reads it back through the extension-hint channel that
350
+ * `LOOK_ARITHMETIC_HINT` already uses.
351
+ */
352
+ export const JSX_SCALAR_TEXT_HINT = "@velarscript/web:jsx-scalar-text";
353
+ /**
354
+ * The one thing a scalar interpolation must not contain. `__velarText` owns no
355
+ * child scope, so a nested element inside the expression — legal where a
356
+ * function takes a `WebNode` and answers text — would have nothing to register
357
+ * its observers and cleanups against. The type says one text node; this says
358
+ * nothing was built to make it.
359
+ */
360
+ function containsJsxExpression(value) {
361
+ if (!value || typeof value !== "object")
362
+ return false;
363
+ const record = value;
364
+ if (record.kind === "ExtensionExpression:web:jsx")
365
+ return true;
366
+ return Object.values(record).some((child) => Array.isArray(child) ? child.some(containsJsxExpression) : containsJsxExpression(child));
367
+ }
368
+ // Flattens an interpolation into render leaves. A conditional contributes its
369
+ // branch leaves, each remembering the chain of branch conditions that keeps it
370
+ // active, so an empty-state ternary around a keyed list still reaches the
371
+ // keyed fast path instead of demoting every child to rebuild-all updates.
372
+ export function dynamicChildLeaves(expression, guards = []) {
373
+ const list = jsxKeyedList(expression);
374
+ if (list)
375
+ return [{ expression, list, guards }];
376
+ if (expression.kind === "ConditionalExpression") {
377
+ return [
378
+ ...dynamicChildLeaves(expression.thenValue, [...guards, { condition: expression.condition, thenBranch: true }]),
379
+ ...dynamicChildLeaves(expression.elseValue, [...guards, { condition: expression.condition, thenBranch: false }]),
380
+ ];
381
+ }
382
+ return [{ expression, list: null, guards }];
383
+ }
384
+ //# sourceMappingURL=jsx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx.js","sourceRoot":"","sources":["../../src/emit/jsx.ts"],"names":[],"mappings":"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"}