@velarscript/web 0.31.0 → 0.32.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 (385) 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 +12 -0
  19. package/dist/analysis/calls/intrinsics/storage.d.ts.map +1 -0
  20. package/dist/analysis/calls/intrinsics/storage.js +86 -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 +67 -0
  55. package/dist/analysis/inference.d.ts.map +1 -0
  56. package/dist/analysis/inference.js +236 -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 +168 -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 +25 -0
  99. package/dist/analysis/look/edits.d.ts.map +1 -0
  100. package/dist/analysis/look/edits.js +57 -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 +151 -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 +54 -0
  123. package/dist/analysis/look-sites.d.ts.map +1 -0
  124. package/dist/analysis/look-sites.js +104 -0
  125. package/dist/analysis/look-sites.js.map +1 -0
  126. package/dist/analysis/look-vocabulary-guidance.d.ts +76 -0
  127. package/dist/analysis/look-vocabulary-guidance.d.ts.map +1 -0
  128. package/dist/analysis/look-vocabulary-guidance.js +338 -0
  129. package/dist/analysis/look-vocabulary-guidance.js.map +1 -0
  130. package/dist/analysis/media-conditions.d.ts +33 -0
  131. package/dist/analysis/media-conditions.d.ts.map +1 -0
  132. package/dist/analysis/media-conditions.js +92 -0
  133. package/dist/analysis/media-conditions.js.map +1 -0
  134. package/dist/analysis/program-passes.d.ts +106 -0
  135. package/dist/analysis/program-passes.d.ts.map +1 -0
  136. package/dist/analysis/program-passes.js +149 -0
  137. package/dist/analysis/program-passes.js.map +1 -0
  138. package/dist/analysis/reactivity/bindings.d.ts +37 -0
  139. package/dist/analysis/reactivity/bindings.d.ts.map +1 -0
  140. package/dist/analysis/reactivity/bindings.js +88 -0
  141. package/dist/analysis/reactivity/bindings.js.map +1 -0
  142. package/dist/analysis/reactivity/derived.d.ts +39 -0
  143. package/dist/analysis/reactivity/derived.d.ts.map +1 -0
  144. package/dist/analysis/reactivity/derived.js +80 -0
  145. package/dist/analysis/reactivity/derived.js.map +1 -0
  146. package/dist/analysis/reactivity/host.d.ts +38 -0
  147. package/dist/analysis/reactivity/host.d.ts.map +1 -0
  148. package/dist/analysis/reactivity/host.js +14 -0
  149. package/dist/analysis/reactivity/host.js.map +1 -0
  150. package/dist/analysis/reactivity/retired-accessors.d.ts +82 -0
  151. package/dist/analysis/reactivity/retired-accessors.d.ts.map +1 -0
  152. package/dist/analysis/reactivity/retired-accessors.js +118 -0
  153. package/dist/analysis/reactivity/retired-accessors.js.map +1 -0
  154. package/dist/analysis/renderable.d.ts +47 -0
  155. package/dist/analysis/renderable.d.ts.map +1 -0
  156. package/dist/analysis/renderable.js +105 -0
  157. package/dist/analysis/renderable.js.map +1 -0
  158. package/dist/analysis/routes.d.ts +64 -0
  159. package/dist/analysis/routes.d.ts.map +1 -0
  160. package/dist/analysis/routes.js +182 -0
  161. package/dist/analysis/routes.js.map +1 -0
  162. package/dist/analysis/url-attributes.d.ts +12 -0
  163. package/dist/analysis/url-attributes.d.ts.map +1 -0
  164. package/dist/analysis/url-attributes.js +48 -0
  165. package/dist/analysis/url-attributes.js.map +1 -0
  166. package/dist/analysis/watch-cycles.d.ts +102 -0
  167. package/dist/analysis/watch-cycles.d.ts.map +1 -1
  168. package/dist/analysis/watch-cycles.js +240 -1
  169. package/dist/analysis/watch-cycles.js.map +1 -1
  170. package/dist/analysis/watch-subject.d.ts +45 -0
  171. package/dist/analysis/watch-subject.d.ts.map +1 -0
  172. package/dist/analysis/watch-subject.js +272 -0
  173. package/dist/analysis/watch-subject.js.map +1 -0
  174. package/dist/analysis/web-types.d.ts +27 -0
  175. package/dist/analysis/web-types.d.ts.map +1 -0
  176. package/dist/analysis/web-types.js +170 -0
  177. package/dist/analysis/web-types.js.map +1 -0
  178. package/dist/analyzer.d.ts +18 -617
  179. package/dist/analyzer.d.ts.map +1 -1
  180. package/dist/analyzer.js +208 -4853
  181. package/dist/analyzer.js.map +1 -1
  182. package/dist/compiler.d.ts +20 -0
  183. package/dist/compiler.d.ts.map +1 -1
  184. package/dist/compiler.js +29 -864
  185. package/dist/compiler.js.map +1 -1
  186. package/dist/documentation.d.ts +28 -0
  187. package/dist/documentation.d.ts.map +1 -0
  188. package/dist/documentation.js +67 -0
  189. package/dist/documentation.js.map +1 -0
  190. package/dist/editor/completions.d.ts +12 -0
  191. package/dist/editor/completions.d.ts.map +1 -0
  192. package/dist/editor/completions.js +6 -0
  193. package/dist/editor/completions.js.map +1 -0
  194. package/dist/editor/jsx-completion.d.ts +12 -0
  195. package/dist/editor/jsx-completion.d.ts.map +1 -0
  196. package/dist/editor/jsx-completion.js +137 -0
  197. package/dist/editor/jsx-completion.js.map +1 -0
  198. package/dist/editor/look-completion.d.ts +29 -0
  199. package/dist/editor/look-completion.d.ts.map +1 -0
  200. package/dist/editor/look-completion.js +159 -0
  201. package/dist/editor/look-completion.js.map +1 -0
  202. package/dist/editor.d.ts.map +1 -1
  203. package/dist/editor.js +12 -288
  204. package/dist/editor.js.map +1 -1
  205. package/dist/emit/components.d.ts +33 -0
  206. package/dist/emit/components.d.ts.map +1 -0
  207. package/dist/emit/components.js +135 -0
  208. package/dist/emit/components.js.map +1 -0
  209. package/dist/emit/jsx.d.ts +57 -0
  210. package/dist/emit/jsx.d.ts.map +1 -0
  211. package/dist/emit/jsx.js +384 -0
  212. package/dist/emit/jsx.js.map +1 -0
  213. package/dist/emit/look-css.d.ts +44 -0
  214. package/dist/emit/look-css.d.ts.map +1 -0
  215. package/dist/emit/look-css.js +177 -0
  216. package/dist/emit/look-css.js.map +1 -0
  217. package/dist/emit/look.d.ts +39 -0
  218. package/dist/emit/look.d.ts.map +1 -0
  219. package/dist/emit/look.js +218 -0
  220. package/dist/emit/look.js.map +1 -0
  221. package/dist/emit/runtime-imports.d.ts +40 -0
  222. package/dist/emit/runtime-imports.d.ts.map +1 -0
  223. package/dist/emit/runtime-imports.js +184 -0
  224. package/dist/emit/runtime-imports.js.map +1 -0
  225. package/dist/emitter.d.ts +15 -68
  226. package/dist/emitter.d.ts.map +1 -1
  227. package/dist/emitter.js +79 -1008
  228. package/dist/emitter.js.map +1 -1
  229. package/dist/look/animation.d.ts +7 -0
  230. package/dist/look/animation.d.ts.map +1 -0
  231. package/dist/look/animation.js +13 -0
  232. package/dist/look/animation.js.map +1 -0
  233. package/dist/look/builders.d.ts +35 -0
  234. package/dist/look/builders.d.ts.map +1 -0
  235. package/dist/look/builders.js +74 -0
  236. package/dist/look/builders.js.map +1 -0
  237. package/dist/look/css-functions.d.ts +28 -0
  238. package/dist/look/css-functions.d.ts.map +1 -0
  239. package/dist/look/css-functions.js +54 -0
  240. package/dist/look/css-functions.js.map +1 -0
  241. package/dist/look/keyword-sets.d.ts +41 -0
  242. package/dist/look/keyword-sets.d.ts.map +1 -0
  243. package/dist/look/keyword-sets.js +117 -0
  244. package/dist/look/keyword-sets.js.map +1 -0
  245. package/dist/look/keywords.d.ts +55 -0
  246. package/dist/look/keywords.d.ts.map +1 -0
  247. package/dist/look/keywords.js +387 -0
  248. package/dist/look/keywords.js.map +1 -0
  249. package/dist/look/media.d.ts +19 -0
  250. package/dist/look/media.d.ts.map +1 -0
  251. package/dist/look/media.js +27 -0
  252. package/dist/look/media.js.map +1 -0
  253. package/dist/look/naming.d.ts +9 -0
  254. package/dist/look/naming.d.ts.map +1 -0
  255. package/dist/look/naming.js +45 -0
  256. package/dist/look/naming.js.map +1 -0
  257. package/dist/look/properties.d.ts +16 -0
  258. package/dist/look/properties.d.ts.map +1 -0
  259. package/dist/look/properties.js +52 -0
  260. package/dist/look/properties.js.map +1 -0
  261. package/dist/look/shorthands.d.ts +25 -0
  262. package/dist/look/shorthands.d.ts.map +1 -0
  263. package/dist/look/shorthands.js +130 -0
  264. package/dist/look/shorthands.js.map +1 -0
  265. package/dist/look/tokens.d.ts +38 -0
  266. package/dist/look/tokens.d.ts.map +1 -0
  267. package/dist/look/tokens.js +59 -0
  268. package/dist/look/tokens.js.map +1 -0
  269. package/dist/look/units.d.ts +24 -0
  270. package/dist/look/units.d.ts.map +1 -0
  271. package/dist/look/units.js +33 -0
  272. package/dist/look/units.js.map +1 -0
  273. package/dist/look.d.ts +32 -227
  274. package/dist/look.d.ts.map +1 -1
  275. package/dist/look.js +28 -933
  276. package/dist/look.js.map +1 -1
  277. package/dist/module-roster.d.ts +16 -0
  278. package/dist/module-roster.d.ts.map +1 -0
  279. package/dist/module-roster.js +28 -0
  280. package/dist/module-roster.js.map +1 -0
  281. package/dist/modules/app.d.ts +9 -0
  282. package/dist/modules/app.d.ts.map +1 -0
  283. package/dist/modules/app.js +20 -0
  284. package/dist/modules/app.js.map +1 -0
  285. package/dist/modules/browser-test.d.ts +9 -0
  286. package/dist/modules/browser-test.d.ts.map +1 -0
  287. package/dist/modules/browser-test.js +67 -0
  288. package/dist/modules/browser-test.js.map +1 -0
  289. package/dist/modules/browser.d.ts +10 -0
  290. package/dist/modules/browser.d.ts.map +1 -0
  291. package/dist/modules/browser.js +89 -0
  292. package/dist/modules/browser.js.map +1 -0
  293. package/dist/modules/config.d.ts +9 -0
  294. package/dist/modules/config.d.ts.map +1 -0
  295. package/dist/modules/config.js +14 -0
  296. package/dist/modules/config.js.map +1 -0
  297. package/dist/modules/files.d.ts +9 -0
  298. package/dist/modules/files.d.ts.map +1 -0
  299. package/dist/modules/files.js +16 -0
  300. package/dist/modules/files.js.map +1 -0
  301. package/dist/modules/forms.d.ts +9 -0
  302. package/dist/modules/forms.d.ts.map +1 -0
  303. package/dist/modules/forms.js +26 -0
  304. package/dist/modules/forms.js.map +1 -0
  305. package/dist/modules/http.d.ts +9 -0
  306. package/dist/modules/http.d.ts.map +1 -0
  307. package/dist/modules/http.js +127 -0
  308. package/dist/modules/http.js.map +1 -0
  309. package/dist/modules/look.d.ts +9 -0
  310. package/dist/modules/look.d.ts.map +1 -0
  311. package/dist/modules/look.js +58 -0
  312. package/dist/modules/look.js.map +1 -0
  313. package/dist/modules/realtime.d.ts +9 -0
  314. package/dist/modules/realtime.d.ts.map +1 -0
  315. package/dist/modules/realtime.js +163 -0
  316. package/dist/modules/realtime.js.map +1 -0
  317. package/dist/modules/storage.d.ts +9 -0
  318. package/dist/modules/storage.d.ts.map +1 -0
  319. package/dist/modules/storage.js +59 -0
  320. package/dist/modules/storage.js.map +1 -0
  321. package/dist/modules/types.d.ts +78 -0
  322. package/dist/modules/types.d.ts.map +1 -0
  323. package/dist/modules/types.js +154 -0
  324. package/dist/modules/types.js.map +1 -0
  325. package/dist/modules/web.d.ts +9 -0
  326. package/dist/modules/web.d.ts.map +1 -0
  327. package/dist/modules/web.js +63 -0
  328. package/dist/modules/web.js.map +1 -0
  329. package/dist/modules/websocket.d.ts +11 -0
  330. package/dist/modules/websocket.d.ts.map +1 -0
  331. package/dist/modules/websocket.js +75 -0
  332. package/dist/modules/websocket.js.map +1 -0
  333. package/dist/parser/expressions/jsx.d.ts +17 -0
  334. package/dist/parser/expressions/jsx.d.ts.map +1 -0
  335. package/dist/parser/expressions/jsx.js +43 -0
  336. package/dist/parser/expressions/jsx.js.map +1 -0
  337. package/dist/parser/expressions/keyframes.d.ts +15 -0
  338. package/dist/parser/expressions/keyframes.d.ts.map +1 -0
  339. package/dist/parser/expressions/keyframes.js +33 -0
  340. package/dist/parser/expressions/keyframes.js.map +1 -0
  341. package/dist/parser/expressions/look.d.ts +16 -0
  342. package/dist/parser/expressions/look.d.ts.map +1 -0
  343. package/dist/parser/expressions/look.js +37 -0
  344. package/dist/parser/expressions/look.js.map +1 -0
  345. package/dist/parser/expressions/visual-block.d.ts +17 -0
  346. package/dist/parser/expressions/visual-block.d.ts.map +1 -0
  347. package/dist/parser/expressions/visual-block.js +21 -0
  348. package/dist/parser/expressions/visual-block.js.map +1 -0
  349. package/dist/parser/keyframes-source.d.ts +24 -0
  350. package/dist/parser/keyframes-source.d.ts.map +1 -0
  351. package/dist/parser/keyframes-source.js +133 -0
  352. package/dist/parser/keyframes-source.js.map +1 -0
  353. package/dist/parser/look-source.d.ts +25 -0
  354. package/dist/parser/look-source.d.ts.map +1 -0
  355. package/dist/parser/look-source.js +189 -0
  356. package/dist/parser/look-source.js.map +1 -0
  357. package/dist/parser/spans.d.ts +24 -0
  358. package/dist/parser/spans.d.ts.map +1 -0
  359. package/dist/parser/spans.js +113 -0
  360. package/dist/parser/spans.js.map +1 -0
  361. package/dist/parser/statements/components.d.ts +37 -0
  362. package/dist/parser/statements/components.d.ts.map +1 -0
  363. package/dist/parser/statements/components.js +185 -0
  364. package/dist/parser/statements/components.js.map +1 -0
  365. package/dist/parser/statements/heads.d.ts +38 -0
  366. package/dist/parser/statements/heads.d.ts.map +1 -0
  367. package/dist/parser/statements/heads.js +55 -0
  368. package/dist/parser/statements/heads.js.map +1 -0
  369. package/dist/parser/statements/imports.d.ts +9 -0
  370. package/dist/parser/statements/imports.d.ts.map +1 -0
  371. package/dist/parser/statements/imports.js +31 -0
  372. package/dist/parser/statements/imports.js.map +1 -0
  373. package/dist/parser/statements/reactive.d.ts +31 -0
  374. package/dist/parser/statements/reactive.d.ts.map +1 -0
  375. package/dist/parser/statements/reactive.js +68 -0
  376. package/dist/parser/statements/reactive.js.map +1 -0
  377. package/dist/parser/statements/unsafe-css.d.ts +21 -0
  378. package/dist/parser/statements/unsafe-css.d.ts.map +1 -0
  379. package/dist/parser/statements/unsafe-css.js +42 -0
  380. package/dist/parser/statements/unsafe-css.js.map +1 -0
  381. package/dist/parser.d.ts +37 -50
  382. package/dist/parser.d.ts.map +1 -1
  383. package/dist/parser.js +98 -882
  384. package/dist/parser.js.map +1 -1
  385. package/package.json +2 -2
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @velarscript/web
2
2
 
3
- **VelarScript 0.31.0 · Web surface `web@0.14`.** The counter is what a project
3
+ **VelarScript 0.32.0 · Web surface `web@0.14`.** The counter is what a project
4
4
  declares in `velar.json`'s `surfaces` and what a mismatch is refused by; the
5
5
  release number every toolchain package steps to says only what you installed.
6
6
 
@@ -0,0 +1,10 @@
1
+ /**
2
+ * What 'velar/config' calls answer: the published shape a project's public
3
+ * configuration was declared with.
4
+ *
5
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
6
+ * names.
7
+ */
8
+ import { type CompilerIntrinsicAnalysisContext, type ValueType } from "@velarscript/compiler/extension";
9
+ export declare function inferConfigIntrinsic(context: CompilerIntrinsicAnalysisContext): ValueType | undefined;
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,gCAAgC,EAAE,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAExG,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gCAAgC,GAAG,SAAS,GAAG,SAAS,CASrG"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * What 'velar/config' calls answer: the published shape a project's public
3
+ * configuration was declared with.
4
+ *
5
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
6
+ * names.
7
+ */
8
+ import {} from "@velarscript/compiler/extension";
9
+ export function inferConfigIntrinsic(context) {
10
+ const { intrinsic, arity, runtimeTypeAt } = context;
11
+ switch (intrinsic.name) {
12
+ case "config.public":
13
+ arity(1, 1);
14
+ return runtimeTypeAt(0);
15
+ default:
16
+ return undefined;
17
+ }
18
+ }
19
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAyD,MAAM,iCAAiC,CAAC;AAExG,MAAM,UAAU,oBAAoB,CAAC,OAAyC;IAC5E,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IACpD,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,eAAe;YAClB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACZ,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1B;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * What 'velar/forms' calls answer: a form read is typed by the record it fills,
3
+ * and the fields of that record become the descriptors the emitter reads.
4
+ *
5
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
6
+ * names.
7
+ */
8
+ import { type CompilerIntrinsicAnalysisContext, type ValueType } from "@velarscript/compiler/extension";
9
+ export declare function inferFormsIntrinsic(context: CompilerIntrinsicAnalysisContext): ValueType | undefined;
10
+ //# sourceMappingURL=forms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/forms.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,gCAAgC,EAAsB,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5H,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gCAAgC,GAAG,SAAS,GAAG,SAAS,CAyBpG"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * What 'velar/forms' calls answer: a form read is typed by the record it fills,
3
+ * and the fields of that record become the descriptors the emitter reads.
4
+ *
5
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
6
+ * names.
7
+ */
8
+ import {} from "@velarscript/compiler/extension";
9
+ export function inferFormsIntrinsic(context) {
10
+ const { intrinsic, argumentAt, callSpan, arity, inferAt, runtimeTypeAt } = context;
11
+ switch (intrinsic.name) {
12
+ case "forms.read": {
13
+ arity(2, 2);
14
+ inferAt(0, { kind: "named", name: "Element" });
15
+ const parsed = runtimeTypeAt(1);
16
+ if (parsed.kind === "any" || parsed.kind === "unknown")
17
+ return parsed;
18
+ const expanded = context.expandAliases(parsed);
19
+ const fields = expanded.kind === "named" ? context.declaredFieldsOf(expanded.identity ?? expanded.name) : null;
20
+ if (!fields) {
21
+ context.typeError("Form reading requires a record declared with 'type Name:'", argumentAt(1)?.span ?? callSpan);
22
+ return parsed;
23
+ }
24
+ const descriptors = [];
25
+ for (const [name, field] of fields) {
26
+ const descriptor = context.formReadField(name, field, argumentAt(1)?.span ?? callSpan);
27
+ if (descriptor)
28
+ descriptors.push(descriptor);
29
+ }
30
+ if (descriptors.length === fields.size)
31
+ context.recordFormRead(callSpan, descriptors);
32
+ return parsed;
33
+ }
34
+ default:
35
+ return undefined;
36
+ }
37
+ }
38
+ //# sourceMappingURL=forms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/forms.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAA6E,MAAM,iCAAiC,CAAC;AAE5H,MAAM,UAAU,mBAAmB,CAAC,OAAyC;IAC3E,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IACnF,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,YAAY,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACZ,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;YACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/G,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,SAAS,CAAC,2DAA2D,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC;gBAChH,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,WAAW,GAAoB,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;gBACnC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC;gBACvF,IAAI,UAAU;oBAAE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI;gBAAE,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACtF,OAAO,MAAM,CAAC;QAChB,CAAC;QACD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * What 'velar/http' calls answer, and the one thing an HTTP request's options
3
+ * are checked for: a body the surface can actually serialize.
4
+ *
5
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
6
+ * names.
7
+ */
8
+ import { type CompilerIntrinsicAnalysisContext, type ValueType } from "@velarscript/compiler/extension";
9
+ export declare function inferHttpIntrinsic(context: CompilerIntrinsicAnalysisContext): ValueType | undefined;
10
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAgB,KAAK,gCAAgC,EAAE,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEtH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gCAAgC,GAAG,SAAS,GAAG,SAAS,CA0BnG"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * What 'velar/http' calls answer, and the one thing an HTTP request's options
3
+ * are checked for: a body the surface can actually serialize.
4
+ *
5
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
6
+ * names.
7
+ */
8
+ import { describeType } from "@velarscript/compiler/extension";
9
+ export function inferHttpIntrinsic(context) {
10
+ const { intrinsic, argumentAt, callSpan, arity, inferAt } = context;
11
+ switch (intrinsic.name) {
12
+ case "http.request": {
13
+ arity();
14
+ let options = null;
15
+ for (const [index, expected] of intrinsic.parameters.entries()) {
16
+ const actual = inferAt(index, expected);
17
+ if (index === intrinsic.parameters.length - 1 && argumentAt(index))
18
+ options = actual;
19
+ }
20
+ const fields = options?.kind === "object" ? options.fields : null;
21
+ const body = fields?.get("body");
22
+ const expandedBody = body ? context.expandAliases(body) : null;
23
+ const blob = expandedBody?.kind === "named" && expandedBody.name === "Blob";
24
+ if (body && !context.isHttpFormBody(body) && !blob && context.jsonSerializable(body) === false) {
25
+ const optionsExpression = argumentAt(intrinsic.parameters.length - 1);
26
+ const bodyExpression = optionsExpression?.kind === "ObjectExpression"
27
+ ? optionsExpression.properties.find((property) => property.kind === "ObjectProperty" && property.name === "body")?.value
28
+ : null;
29
+ context.typeError(`HTTP JSON bodies accept only records, Lists, enums, primitives, and optionals; received ${describeType(body)}`, bodyExpression?.span ?? optionsExpression?.span ?? callSpan);
30
+ }
31
+ return intrinsic.result;
32
+ }
33
+ default:
34
+ return undefined;
35
+ }
36
+ }
37
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAyD,MAAM,iCAAiC,CAAC;AAEtH,MAAM,UAAU,kBAAkB,CAAC,OAAyC;IAC1E,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACpE,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,cAAc,EAAE,CAAC;YACpB,KAAK,EAAE,CAAC;YACR,IAAI,OAAO,GAAqB,IAAI,CAAC;YACrC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACxC,IAAI,KAAK,KAAK,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC;oBAAE,OAAO,GAAG,MAAM,CAAC;YACvF,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,MAAM,IAAI,GAAG,YAAY,EAAE,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC;YAC5E,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC/F,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACtE,MAAM,cAAc,GAAG,iBAAiB,EAAE,IAAI,KAAK,kBAAkB;oBACnE,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,gBAAgB,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,KAAK;oBACxH,CAAC,CAAC,IAAI,CAAC;gBACT,OAAO,CAAC,SAAS,CAAC,2FAA2F,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,IAAI,iBAAiB,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC;YAClM,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;QACD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The one reactive intrinsic the Web surface still types: a call written around
3
+ * the retired 'computed(...)'.
4
+ *
5
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
6
+ * names.
7
+ */
8
+ import { type CompilerIntrinsicAnalysisContext, type ValueType } from "@velarscript/compiler/extension";
9
+ export declare function inferReactiveIntrinsic(context: CompilerIntrinsicAnalysisContext): ValueType | undefined;
10
+ //# sourceMappingURL=reactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/reactive.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAwB,KAAK,gCAAgC,EAAE,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG9H,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gCAAgC,GAAG,SAAS,GAAG,SAAS,CAmBvG"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The one reactive intrinsic the Web surface still types: a call written around
3
+ * the retired 'computed(...)'.
4
+ *
5
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
6
+ * names.
7
+ */
8
+ import { anyType, unknownType } from "@velarscript/compiler/extension";
9
+ import { RETIRED_ACCESSOR_INTRINSIC } from "../../reactivity/retired-accessors.js";
10
+ export function inferReactiveIntrinsic(context) {
11
+ const { intrinsic, arity, callbackAt } = context;
12
+ switch (intrinsic.name) {
13
+ case RETIRED_ACCESSOR_INTRINSIC: {
14
+ // A call around the retired `computed(...)` returns the reader it
15
+ // always returned, carrying the callback's own result so an annotated
16
+ // declaration reads its migration message and nothing else. Nothing else
17
+ // is checked here — the shape is already refused, and a second complaint
18
+ // about a spelling that no longer exists teaches the author nothing.
19
+ arity(1, 1);
20
+ const callback = callbackAt(0, [], unknownType);
21
+ const result = callback.kind === "function" || callback.kind === "intrinsic" || callback.kind === "action"
22
+ ? callback.result
23
+ : callback.kind === "any" ? anyType : unknownType;
24
+ return { kind: "function", parameters: [], requiredParameters: 0, result };
25
+ }
26
+ default:
27
+ return undefined;
28
+ }
29
+ }
30
+ //# sourceMappingURL=reactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive.js","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/reactive.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAyD,MAAM,iCAAiC,CAAC;AAC9H,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAEnF,MAAM,UAAU,sBAAsB,CAAC,OAAyC;IAC9E,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACjD,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,0BAA0B,EAAE,CAAC;YAChC,kEAAkE;YAClE,sEAAsE;YACtE,yEAAyE;YACzE,yEAAyE;YACzE,qEAAqE;YACrE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACZ,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ;gBACxG,CAAC,CAAC,QAAQ,CAAC,MAAM;gBACjB,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;YACpD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QAC7E,CAAC;QACD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * What 'velar/storage' calls answer: a read is typed by the runtime type it
3
+ * validates against, and a write is checked for a value the surface can
4
+ * serialize.
5
+ *
6
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
7
+ * names — with the sentence a read without its type reads, which nothing else
8
+ * asks for.
9
+ */
10
+ import { type CompilerIntrinsicAnalysisContext, type ValueType } from "@velarscript/compiler/extension";
11
+ export declare function inferStorageIntrinsic(context: CompilerIntrinsicAnalysisContext): ValueType | undefined;
12
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAOL,KAAK,gCAAgC,EACrC,KAAK,SAAS,EACf,MAAM,iCAAiC,CAAC;AAczC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gCAAgC,GAAG,SAAS,GAAG,SAAS,CAqDtG"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * What 'velar/storage' calls answer: a read is typed by the runtime type it
3
+ * validates against, and a write is checked for a value the surface can
4
+ * serialize.
5
+ *
6
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
7
+ * names — with the sentence a read without its type reads, which nothing else
8
+ * asks for.
9
+ */
10
+ import { describeType, nullType, numberType, optionalOf, stringType, unknownType, } from "@velarscript/compiler/extension";
11
+ /**
12
+ * The whole read, from the module name to a working line. A blind model needed
13
+ * five guesses to get here because each diagnostic answered only the step it
14
+ * was standing on: the export name, then the argument count, then that the
15
+ * second argument is a runtime type, then that a primitive spelling is not a
16
+ * value. Storage already parses and validates the stored JSON, so the one thing
17
+ * still missing is the named type to validate against.
18
+ */
19
+ function storageReadGuidance(call) {
20
+ return `${call} validates what it reads and parses the stored JSON itself, so its second argument is a named runtime type: declare one — 'type SavedItems = List<Item>' — then read with 'storage.get("items", SavedItems, [])', whose third argument is the fallback for missing or invalid data, and write it back with 'storage.set("items", items)'. A primitive spelling ('string') and a generic spelling ('List<Item>') are types, not values; only a declared type, enum, or alias name is one.`;
21
+ }
22
+ export function inferStorageIntrinsic(context) {
23
+ const { intrinsic, argumentAt, callSpan, arity, inferAt, callbackAt, runtimeTypeAt } = context;
24
+ switch (intrinsic.name) {
25
+ case "storage.set": {
26
+ arity(2, 3);
27
+ inferAt(0, stringType);
28
+ const value = inferAt(1);
29
+ if (argumentAt(2))
30
+ inferAt(2, numberType);
31
+ const valueExpression = argumentAt(1);
32
+ if (context.jsonSerializable(value) === false && valueExpression) {
33
+ context.typeError(`Storage values accept only records, Lists, enums, primitives, and optionals; received ${describeType(value)}`, valueExpression.span);
34
+ }
35
+ return intrinsic.result;
36
+ }
37
+ case "storage.get": {
38
+ if (!argumentAt(1)) {
39
+ context.typeError(storageReadGuidance("storage.get(key, Type)"), callSpan);
40
+ return unknownType;
41
+ }
42
+ arity(2, 4);
43
+ inferAt(0, stringType);
44
+ const parsed = runtimeTypeAt(1);
45
+ if (argumentAt(3))
46
+ inferAt(3, numberType);
47
+ if (argumentAt(2)) {
48
+ inferAt(2, parsed);
49
+ return parsed;
50
+ }
51
+ return optionalOf(parsed);
52
+ }
53
+ case "storage.databaseGet": {
54
+ if (!argumentAt(1)) {
55
+ context.typeError(storageReadGuidance("database(name).get(key, Type)"), callSpan);
56
+ return { kind: "promise", value: unknownType };
57
+ }
58
+ arity(2, 4);
59
+ inferAt(0, stringType);
60
+ const parsed = runtimeTypeAt(1);
61
+ if (argumentAt(3))
62
+ inferAt(3, numberType);
63
+ if (argumentAt(2)) {
64
+ inferAt(2, parsed);
65
+ return { kind: "promise", value: parsed };
66
+ }
67
+ return { kind: "promise", value: optionalOf(parsed) };
68
+ }
69
+ case "storage.watch": {
70
+ if (!argumentAt(1)) {
71
+ context.typeError(storageReadGuidance("storage.watch(key, Type, callback)"), callSpan);
72
+ return { kind: "function", parameters: [], requiredParameters: 0, result: nullType };
73
+ }
74
+ arity(3, 4);
75
+ inferAt(0, stringType);
76
+ const parsed = runtimeTypeAt(1);
77
+ callbackAt(2, [optionalOf(parsed), optionalOf(parsed)], unknownType);
78
+ if (argumentAt(3))
79
+ inferAt(3, numberType);
80
+ return { kind: "function", parameters: [], requiredParameters: 0, result: nullType };
81
+ }
82
+ default:
83
+ return undefined;
84
+ }
85
+ }
86
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * What 'velar/web' calls answer: a route record, and the component a lazy
3
+ * module load resolves to.
4
+ *
5
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
6
+ * names.
7
+ */
8
+ import { type CompilerIntrinsicAnalysisContext, type ValueType } from "@velarscript/compiler/extension";
9
+ export declare function inferWebModuleIntrinsic(context: CompilerIntrinsicAnalysisContext): ValueType | undefined;
10
+ //# sourceMappingURL=web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/web.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAKL,KAAK,gCAAgC,EACrC,KAAK,SAAS,EACf,MAAM,iCAAiC,CAAC;AAIzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gCAAgC,GAAG,SAAS,GAAG,SAAS,CAgFxG"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * What 'velar/web' calls answer: a route record, and the component a lazy
3
+ * module load resolves to.
4
+ *
5
+ * D115 P4 R3a: one family of 'inferWebIntrinsic', in the module that family
6
+ * names.
7
+ */
8
+ import { anyType, describeType, isInvalidType, stringType, } from "@velarscript/compiler/extension";
9
+ import { isWebComponentConstructor, isWebComponentType } from "../../../types.js";
10
+ import { checkRouteComponent, checkRoutePath } from "../../routes.js";
11
+ export function inferWebModuleIntrinsic(context) {
12
+ const { intrinsic, argumentAt, callSpan, arity, inferAt } = context;
13
+ switch (intrinsic.name) {
14
+ case "web.route": {
15
+ arity(2, 2);
16
+ inferAt(0, stringType);
17
+ const component = inferAt(1);
18
+ const path = argumentAt(0);
19
+ if (path?.kind === "LiteralExpression" && typeof path.value === "string")
20
+ checkRoutePath(path.value, path.span, context.typeError);
21
+ checkRouteComponent(component, argumentAt(1)?.span ?? callSpan, "A route", context);
22
+ return { kind: "object", fields: new Map([["path", stringType], ["component", component]]) };
23
+ }
24
+ case "web.lazy": {
25
+ arity(2, 4);
26
+ const loader = inferAt(0);
27
+ inferAt(1, stringType);
28
+ const loadingFallback = inferAt(2);
29
+ const failedFallback = inferAt(3);
30
+ const loaderExpression = argumentAt(0);
31
+ if (loaderExpression?.kind !== "ArrowFunctionExpression" || loaderExpression.parameters.length !== 0 || loaderExpression.body.kind !== "DynamicImportExpression") {
32
+ context.typeError("A lazy loader must be written as () => import(\"./module.vel\")", loaderExpression?.span ?? callSpan);
33
+ return anyType;
34
+ }
35
+ if (isInvalidType(loader))
36
+ return loader;
37
+ // No `any` arm on either line: the gate above has already established
38
+ // that argument 0 is a zero-parameter arrow, and the core analyzer infers
39
+ // an arrow on one return path that always answers `kind: "function"`
40
+ // (`inferArrow`). The loader is therefore never `any`, and D90 R17 —
41
+ // which retired the JavaScript boundary that used to hand one back — left
42
+ // nothing that could make it one.
43
+ if (loader.kind !== "function") {
44
+ if (loaderExpression)
45
+ context.typeError(`Expected a module loader, received ${describeType(loader)}`, loaderExpression.span);
46
+ return anyType;
47
+ }
48
+ if (isInvalidType(loader.result))
49
+ return loader.result;
50
+ if (loader.parameters.length !== 0)
51
+ context.typeError("A lazy module loader cannot receive parameters", loaderExpression?.span ?? callSpan);
52
+ const moduleType = loader.result.kind === "promise" ? loader.result.value : null;
53
+ if (!moduleType) {
54
+ context.typeError("A lazy module loader must return import(\"./module.vel\")", loaderExpression?.span ?? callSpan);
55
+ return anyType;
56
+ }
57
+ const nameExpression = argumentAt(1);
58
+ const name = nameExpression?.kind === "LiteralExpression" && typeof nameExpression.value === "string" ? nameExpression.value : null;
59
+ if (!name) {
60
+ context.typeError("A lazy component export name must be a string literal", nameExpression?.span ?? callSpan);
61
+ return anyType;
62
+ }
63
+ if (moduleType.kind !== "object") {
64
+ context.typeError("A lazy loader must load a checked VelarScript module", loaderExpression?.span ?? callSpan);
65
+ return anyType;
66
+ }
67
+ const exported = moduleType.fields.get(name);
68
+ if (!exported) {
69
+ context.typeError(`Dynamically imported module has no export named '${name}'`, nameExpression?.span ?? callSpan);
70
+ return anyType;
71
+ }
72
+ if (!isWebComponentConstructor(exported)) {
73
+ context.typeError(`Dynamic export '${name}' is ${describeType(exported)}, not a component`, nameExpression?.span ?? callSpan);
74
+ return anyType;
75
+ }
76
+ const loadingExpression = argumentAt(2);
77
+ if (loadingExpression && !isInvalidType(loadingFallback) && loadingFallback.kind !== "null" && loadingFallback.kind !== "any") {
78
+ if (!isWebComponentType(loadingFallback))
79
+ context.typeError("A lazy loading fallback must be a component", loadingExpression.span);
80
+ else if (loadingFallback.requiredProperties.size > 0)
81
+ context.typeError("A lazy loading fallback cannot require props", loadingExpression.span);
82
+ }
83
+ const failedExpression = argumentAt(3);
84
+ if (failedExpression && !isInvalidType(failedFallback) && failedFallback.kind !== "null" && failedFallback.kind !== "any") {
85
+ if (!isWebComponentType(failedFallback))
86
+ context.typeError("A lazy failure fallback must be a component accepting error: Error", failedExpression.span);
87
+ else {
88
+ const error = failedFallback.properties.get("error");
89
+ if (!error || !context.isAssignable({ kind: "class", name: "Error" }, error) || [...failedFallback.requiredProperties].some((prop) => prop !== "error")) {
90
+ context.typeError("A lazy failure fallback must accept error: Error and require no other props", failedExpression.span);
91
+ }
92
+ }
93
+ }
94
+ return exported;
95
+ }
96
+ default:
97
+ return undefined;
98
+ }
99
+ }
100
+ //# sourceMappingURL=web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../../../src/analysis/calls/intrinsics/web.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The Web surface's intrinsic typing, dispatched to the 'velar/*' module family
3
+ * whose name the intrinsic carries.
4
+ *
5
+ * D115 P4 R3a: 'inferWebIntrinsic' was one 183-line switch over every intrinsic
6
+ * of every Web module. An intrinsic's name is 'family.member', so the family is
7
+ * what the switch was really keyed on, and each family now owns its own arms in
8
+ * its own module. The exported name and its signature are unchanged: this is
9
+ * the function 'compiler.ts' installs as the surface's 'inferIntrinsic'.
10
+ */
11
+ import { type CompilerIntrinsicAnalysisContext, type ValueType } from "@velarscript/compiler/extension";
12
+ export declare function inferWebIntrinsic(context: CompilerIntrinsicAnalysisContext): ValueType | undefined;
13
+ //# sourceMappingURL=intrinsics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../../../src/analysis/calls/intrinsics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,KAAK,gCAAgC,EAAE,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAQxG,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gCAAgC,GAAG,SAAS,GAAG,SAAS,CAYlG"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The Web surface's intrinsic typing, dispatched to the 'velar/*' module family
3
+ * whose name the intrinsic carries.
4
+ *
5
+ * D115 P4 R3a: 'inferWebIntrinsic' was one 183-line switch over every intrinsic
6
+ * of every Web module. An intrinsic's name is 'family.member', so the family is
7
+ * what the switch was really keyed on, and each family now owns its own arms in
8
+ * its own module. The exported name and its signature are unchanged: this is
9
+ * the function 'compiler.ts' installs as the surface's 'inferIntrinsic'.
10
+ */
11
+ import {} from "@velarscript/compiler/extension";
12
+ import { inferConfigIntrinsic } from "./intrinsics/config.js";
13
+ import { inferFormsIntrinsic } from "./intrinsics/forms.js";
14
+ import { inferHttpIntrinsic } from "./intrinsics/http.js";
15
+ import { inferReactiveIntrinsic } from "./intrinsics/reactive.js";
16
+ import { inferStorageIntrinsic } from "./intrinsics/storage.js";
17
+ import { inferWebModuleIntrinsic } from "./intrinsics/web.js";
18
+ export function inferWebIntrinsic(context) {
19
+ const name = context.intrinsic.name;
20
+ const dot = name.indexOf(".");
21
+ switch (dot < 0 ? name : name.slice(0, dot)) {
22
+ case "config": return inferConfigIntrinsic(context);
23
+ case "forms": return inferFormsIntrinsic(context);
24
+ case "http": return inferHttpIntrinsic(context);
25
+ case "reactive": return inferReactiveIntrinsic(context);
26
+ case "storage": return inferStorageIntrinsic(context);
27
+ case "web": return inferWebModuleIntrinsic(context);
28
+ default: return undefined;
29
+ }
30
+ }
31
+ //# sourceMappingURL=intrinsics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsics.js","sourceRoot":"","sources":["../../../src/analysis/calls/intrinsics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAyD,MAAM,iCAAiC,CAAC;AACxG,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,UAAU,iBAAiB,CAAC,OAAyC;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,QAAQ,EAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACpD,KAAK,OAAO,EAAE,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClD,KAAK,MAAM,EAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAChD,KAAK,UAAU,EAAE,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACxD,KAAK,SAAS,EAAE,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACtD,KAAK,KAAK,EAAE,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACpD,SAAS,OAAO,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The contracts a component declares and the ones it inherits: whether a prop's
3
+ * type carries a readonly view, whether a `exposes` Handle is a concrete record,
4
+ * how a component type read out of an annotation is normalized, and the one
5
+ * `host` element a multi-root render has to mark.
6
+ *
7
+ * D115 P4 R3c. `normalizeComponentContracts` takes no host at all: it is a
8
+ * structural rewrite of a type, and it runs from the `resolveAnnotation` seam,
9
+ * which the base analyzer may reach before the host object exists.
10
+ */
11
+ import { type Span } from "@velarscript/compiler";
12
+ import { type ValueType } from "@velarscript/compiler/extension";
13
+ import { type WebComponentDeclaration as ComponentDeclaration, type WebJsxElementExpression as JSXElementExpression } from "../../ast.ts";
14
+ import { type ComponentAnalysisHost } from "./host.ts";
15
+ export declare function containsReadonlyView(host: ComponentAnalysisHost, type: ValueType): boolean;
16
+ export declare function validateComponentHandleType(host: ComponentAnalysisHost, type: ValueType, sourceSpan: Span): void;
17
+ export declare function normalizeComponentContracts(type: ValueType): ValueType;
18
+ export declare function validateComponentHost(host: ComponentAnalysisHost, render: JSXElementExpression, component: ComponentDeclaration): void;
19
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/analysis/components/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,EAAE,KAAK,uBAAuB,IAAI,oBAAoB,EAAwC,KAAK,uBAAuB,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGhL,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAK1F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAMhH;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAoBtE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAgBtI"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * The contracts a component declares and the ones it inherits: whether a prop's
3
+ * type carries a readonly view, whether a `exposes` Handle is a concrete record,
4
+ * how a component type read out of an annotation is normalized, and the one
5
+ * `host` element a multi-root render has to mark.
6
+ *
7
+ * D115 P4 R3c. `normalizeComponentContracts` takes no host at all: it is a
8
+ * structural rewrite of a type, and it runs from the `resolveAnnotation` seam,
9
+ * which the base analyzer may reach before the host object exists.
10
+ */
11
+ import {} from "@velarscript/compiler";
12
+ import { describeType, isReadonlyView, optionalOf } from "@velarscript/compiler/extension";
13
+ import {} from "../../ast.js";
14
+ import { isWebComponentType, normalizeWebComponentType } from "../../types.js";
15
+ import { diagnostic } from "../web-types.js";
16
+ import {} from "./host.js";
17
+ export function containsReadonlyView(host, type) {
18
+ const resolved = host.expandAliases(type);
19
+ if (resolved.kind === "optional")
20
+ return containsReadonlyView(host, resolved.inner);
21
+ if (resolved.kind === "union")
22
+ return resolved.members.some((member) => containsReadonlyView(host, member));
23
+ return isReadonlyView(resolved);
24
+ }
25
+ export function validateComponentHandleType(host, type, sourceSpan) {
26
+ const expanded = host.expandAliases(type);
27
+ const fields = expanded.kind === "object"
28
+ ? expanded.fields
29
+ : expanded.kind === "named" ? host.fieldsOf(expanded.identity ?? expanded.name) : null;
30
+ if (!fields)
31
+ host.diagnostics.push(diagnostic("VEL5056", `A component Handle must be a concrete record type, received ${describeType(type)}`, sourceSpan));
32
+ }
33
+ export function normalizeComponentContracts(type) {
34
+ if (type.kind === "optional")
35
+ return optionalOf(normalizeComponentContracts(type.inner));
36
+ if (type.kind === "list" || type.kind === "set")
37
+ return { ...type, element: normalizeComponentContracts(type.element) };
38
+ if (type.kind === "map")
39
+ return { ...type, key: normalizeComponentContracts(type.key), value: normalizeComponentContracts(type.value) };
40
+ if (type.kind === "record")
41
+ return { ...type, value: normalizeComponentContracts(type.value) };
42
+ if (type.kind === "promise" || type.kind === "runtimeType")
43
+ return { ...type, value: normalizeComponentContracts(type.value) };
44
+ if (type.kind === "object")
45
+ return { ...type, fields: new Map([...type.fields].map(([name, value]) => [name, normalizeComponentContracts(value)])) };
46
+ if (type.kind === "function" || type.kind === "action" || type.kind === "intrinsic")
47
+ return {
48
+ ...type,
49
+ parameters: type.parameters.map((parameter) => normalizeComponentContracts(parameter)),
50
+ ...(type.rest ? { rest: normalizeComponentContracts(type.rest) } : {}),
51
+ result: normalizeComponentContracts(type.result),
52
+ };
53
+ if (type.kind === "union")
54
+ return { kind: "union", members: type.members.map((member) => normalizeComponentContracts(member)) };
55
+ if (!isWebComponentType(type))
56
+ return type;
57
+ return normalizeWebComponentType(type, (value) => normalizeComponentContracts(value), (value) => normalizeComponentContracts(value));
58
+ }
59
+ export function validateComponentHost(host, render, component) {
60
+ const hosts = [];
61
+ const visit = (element) => {
62
+ if (!/^[A-Z]/u.test(element.tag)) {
63
+ for (const attribute of element.attributes)
64
+ if (attribute.name === "host")
65
+ hosts.push(attribute);
66
+ }
67
+ for (const child of element.children)
68
+ if (child.kind === "ExtensionExpression:web:jsx")
69
+ visit(child);
70
+ };
71
+ visit(render);
72
+ if (hosts.length > 1)
73
+ host.diagnostics.push(diagnostic("VEL5043", `Component '${component.name}' declares more than one host element`, hosts[1].span));
74
+ for (const marker of hosts)
75
+ if (marker.value !== null)
76
+ host.diagnostics.push(diagnostic("VEL5043", "The host directive is a valueless marker", marker.span));
77
+ const directNativeRoot = render.tag !== "" && !/^[A-Z]/u.test(render.tag);
78
+ const delegatedComponentRoot = /^[A-Z]/u.test(render.tag);
79
+ if (!directNativeRoot && !delegatedComponentRoot && hosts.length === 0) {
80
+ host.diagnostics.push(diagnostic("VEL5043", `Component '${component.name}' has multiple roots and must mark exactly one native element with 'host'`, render.span));
81
+ }
82
+ }
83
+ //# sourceMappingURL=contracts.js.map