@velarscript/web 0.30.1 → 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
@@ -8,9 +8,16 @@
8
8
  *
9
9
  * What a path *means* — whether the type at a depth is a collection, which of
10
10
  * its calls mutate — stays with the analyzer and arrives as `ReactiveSubjectWrite`.
11
+ *
12
+ * D115 P4 R3c: the three refusals themselves — the frozen subject, the shape
13
+ * that computes rather than names, and the ring a body closes — join them over a
14
+ * `WatchCycleHost`, so the path readings and the rules that rest on them are one
15
+ * module. The type questions the rules ask now arrive through that host rather
16
+ * than as a callback.
11
17
  */
12
18
  import { type Span } from "@velarscript/compiler";
13
19
  import { type Expression, type Program, type Statement, type ValueType } from "@velarscript/compiler/extension";
20
+ import { type ReactiveNamesHost } from "./reactivity/host.ts";
14
21
  /**
15
22
  * D114 W: one step a reactive path takes below its root — a named field, or an
16
23
  * element under a key that names the same element on two evaluations. The steps
@@ -201,4 +208,99 @@ export declare function finallySelfWrite(subject: Expression, place: ReactivePat
201
208
  * read.
202
209
  */
203
210
  export declare function watchDerivedSourceWrite(subject: Expression, statement: Statement, derivations: ReadonlyMap<string, ReadonlySet<string> | null>, states: ReadonlyMap<string, boolean>, writesState: (name: string) => boolean): string | null;
211
+ /**
212
+ * What the watch refusals ask of the analyzer that hosts them: the three module
213
+ * tables the reactive graph is read out of, and the type questions a path walk
214
+ * asks. It extends `ReactiveNamesHost` because a subject is first a *name*, and
215
+ * whether that name is a resource or a derived value decides which of the three
216
+ * refusals answers.
217
+ *
218
+ * D115 P4 R3c. The three tables are replaced once per program, so they arrive
219
+ * through getters and a rule reading one mid-walk reads the live table.
220
+ */
221
+ export interface WatchCycleHost extends ReactiveNamesHost {
222
+ /** D114 P6 item 6 (ST-U2): each same-module `computed` and the names it reads on every evaluation. Replaced per program. */
223
+ readonly reactiveDerivations: ReadonlyMap<string, ReadonlySet<string> | null>;
224
+ /** Each `state` this module declares, false where the name is declared twice. Replaced per program. */
225
+ readonly reactiveStateNames: ReadonlyMap<string, boolean>;
226
+ /** D114 W A2(b): this module's `action` and `async def` bodies by name. Replaced per program. */
227
+ readonly reactiveWriters: ReadonlyMap<string, ReactiveWriterDeclaration | null>;
228
+ fieldsOf(identity: string): ReadonlyMap<string, ValueType> | null;
229
+ }
230
+ /**
231
+ * D69 rule 178: a `watch` body that can never run is a block of statements
232
+ * the compile silently drops — the same defect a bare `5` is already rejected
233
+ * for (VEL4030), reached from a position the rule could not see.
234
+ *
235
+ * D90 R15(a) adds the third refusal and fixes the order the three are asked
236
+ * in. A frozen subject is answered before the shape rule so that one shape
237
+ * never draws two messages: a subject built only from frozen parts has no
238
+ * reactive source at all, and telling its author to declare a `computed`
239
+ * would only buy him a dead one. What survives both is either a path — the
240
+ * name of a reactive binding, or a member/index read out of one — or a
241
+ * computation, and a computation has a spelling of its own.
242
+ *
243
+ * The three refusals are separate because their causes are: a reader that was
244
+ * not called names a value that never moves, a frozen value has no reactive
245
+ * source behind it at all, and a computed subject has one but hides which.
246
+ */
247
+ export declare function rejectFrozenWatchSubject(host: WatchCycleHost, expression: Expression, watched: ValueType, currentName: string | null, previousName: string | null): boolean;
248
+ /**
249
+ * D114 W: the three watch shapes a compile can prove re-trigger the watch
250
+ * itself. D90 R21 removed the analysis of *who writes what* across calls, and
251
+ * nothing here brings it back: two watches writing one state are still an
252
+ * ordinary program, a write reached through an ordinary helper is still
253
+ * silent, and a write under `if`, `match`, a loop, `try`, a nested `def` or an
254
+ * arrow is still the author's converging correction to make.
255
+ *
256
+ * What is refused is only what is decided at the top of the body, with no
257
+ * condition to end it:
258
+ *
259
+ * - **B** the body writes the watched place itself (`watch count: count =
260
+ * count + 1`), assignment, compound assignment, or a mutating collection
261
+ * call on the watched collection;
262
+ * - **A2(a)** the subject is a `resource` field and the body reloads that
263
+ * same resource — a reload writes exactly those fields, so every completed
264
+ * load re-triggers the watch;
265
+ * - **A2(b)** the body starts an `action` or an `async def` of this module
266
+ * whose own top level writes the watched place. One hop, one module, no
267
+ * condition on either end; anything further is the runtime budget's.
268
+ *
269
+ * One diagnostic per watch, at the first statement that earns it. A watch with
270
+ * two of these has two mistakes, and the second is read after the first is
271
+ * fixed, exactly as two errors on one line are.
272
+ */
273
+ export declare function rejectWatchCycle(host: WatchCycleHost, subject: Expression, watched: ValueType, body: readonly Statement[]): void;
274
+ /**
275
+ * Whether a write `steps` below the watched subject, made the given way, is a
276
+ * write of the subject — the one definition both the body scan (VEL5077) and
277
+ * the one-hop writer scan (VEL5079) read. An assignment to a place the walk
278
+ * can reach is a write; a call is one only when the type at that depth is a
279
+ * collection and the call is on its own mutating roster.
280
+ */
281
+ export declare function watchSubjectWrite(host: WatchCycleHost, watched: ValueType, steps: readonly ReactivePathStep[], method: string | null): boolean;
282
+ /**
283
+ * D114 0.28.0 H-D1: the type of the place `steps` below the watched subject,
284
+ * or null when the walk cannot reach one.
285
+ *
286
+ * Only the steps the reactive graph publishes as part of the subject are
287
+ * walked — a record field and a collection element — because those are the
288
+ * writes a watch on the containing value is woken by. A step that leaves them
289
+ * (a class instance, a capability handle, a field the record does not declare)
290
+ * is not provably part of the subject, and a refusal that must be right every
291
+ * time answers no there rather than guessing.
292
+ */
293
+ export declare function reactivePlaceType(host: WatchCycleHost, subject: ValueType, steps: readonly ReactivePathStep[]): ValueType | null;
294
+ /** A value that is read by calling it and takes no arguments to do so. */
295
+ export declare function zeroArgumentReader(host: WatchCycleHost, type: ValueType): boolean;
296
+ /**
297
+ * True only for subjects built entirely from values the compile can see are
298
+ * frozen: literals, and non-reactive bindings whose type is a primitive, so no
299
+ * deep-reactive object can be hiding behind the name. Every member access,
300
+ * index, and call is excluded on purpose — `alias.done` on a const bound to a
301
+ * reactive element does track, and a call can read anything.
302
+ */
303
+ export declare function frozenWatchSubject(host: WatchCycleHost, expression: Expression): boolean;
304
+ /** A primitive holds no reactive identity, so a non-reactive binding of one is a snapshot. */
305
+ export declare function frozenValueType(host: WatchCycleHost, type: ValueType): boolean;
204
306
  //# sourceMappingURL=watch-cycles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"watch-cycles.d.ts","sourceRoot":"","sources":["../../src/analysis/watch-cycles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch-cycles.d.ts","sourceRoot":"","sources":["../../src/analysis/watch-cycles.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,21 @@
8
8
  *
9
9
  * What a path *means* — whether the type at a depth is a collection, which of
10
10
  * its calls mutate — stays with the analyzer and arrives as `ReactiveSubjectWrite`.
11
+ *
12
+ * D115 P4 R3c: the three refusals themselves — the frozen subject, the shape
13
+ * that computes rather than names, and the ring a body closes — join them over a
14
+ * `WatchCycleHost`, so the path readings and the rules that rest on them are one
15
+ * module. The type questions the rules ask now arrive through that host rather
16
+ * than as a callback.
11
17
  */
12
18
  import {} from "@velarscript/compiler";
13
- import { mutatingCollectionMethods, } from "@velarscript/compiler/extension";
19
+ import { mutatingCollectionMethods, nonOptional, unknownType, } from "@velarscript/compiler/extension";
14
20
  import { isWebStatement } from "../ast.js";
21
+ import { watchedResourceSurfaceRefusal } from "./component-guidance.js";
22
+ import { isResourceBinding } from "./reactivity/bindings.js";
23
+ import {} from "./reactivity/host.js";
24
+ import { renderWatchSubject, watchSubjectPath } from "./watch-subject.js";
25
+ import { diagnostic } from "./web-types.js";
15
26
  /**
16
27
  * D114 W: a reactive place written as one comparable key, so "the write and the
17
28
  * subject name the same place" is one string equality.
@@ -344,4 +355,232 @@ export function watchDerivedSourceWrite(subject, statement, derivations, states,
344
355
  + ` so writing '${written}' re-triggers this watch and the runtime stops the task when it runs out of observer budget;`
345
356
  + ` write the condition that ends it, or watch '${written}' and derive what this body needs from it`;
346
357
  }
358
+ /**
359
+ * D69 rule 178: a `watch` body that can never run is a block of statements
360
+ * the compile silently drops — the same defect a bare `5` is already rejected
361
+ * for (VEL4030), reached from a position the rule could not see.
362
+ *
363
+ * D90 R15(a) adds the third refusal and fixes the order the three are asked
364
+ * in. A frozen subject is answered before the shape rule so that one shape
365
+ * never draws two messages: a subject built only from frozen parts has no
366
+ * reactive source at all, and telling its author to declare a `computed`
367
+ * would only buy him a dead one. What survives both is either a path — the
368
+ * name of a reactive binding, or a member/index read out of one — or a
369
+ * computation, and a computation has a spelling of its own.
370
+ *
371
+ * The three refusals are separate because their causes are: a reader that was
372
+ * not called names a value that never moves, a frozen value has no reactive
373
+ * source behind it at all, and a computed subject has one but hides which.
374
+ */
375
+ export function rejectFrozenWatchSubject(host, expression, watched, currentName, previousName) {
376
+ const name = expression.kind === "IdentifierExpression" ? expression.name : null;
377
+ if (name !== null && host.reactiveBindingKind(name) === null && zeroArgumentReader(host, watched)) {
378
+ host.diagnostics.push(diagnostic("VEL5064", `'${name}' is the reader itself, so watching it watches a value that never changes; declare the derived value — 'computed name = ${name}()' — then 'watch name:'`, expression.span));
379
+ return false;
380
+ }
381
+ // ST-D1: the resource surface is answered ahead of the frozen rule, because it is a reactive value whose *own* handle never moves.
382
+ if (name !== null && isResourceBinding(host, name)) {
383
+ host.diagnostics.push(diagnostic("VEL5064", watchedResourceSurfaceRefusal(name), expression.span));
384
+ return false;
385
+ }
386
+ if (frozenWatchSubject(host, expression)) {
387
+ host.diagnostics.push(diagnostic("VEL5064", `This watch subject never changes, so its body can never run${name === null ? "" : ` — '${name}' is not a reactive source`}; watch a 'state', a 'computed', a prop, or a resource field, or move these statements to where they should run`, expression.span));
388
+ return false;
389
+ }
390
+ if (watchSubjectPath(expression))
391
+ return true;
392
+ // D69's own shape, `watch total()`, is a called `computed`, and VEL5063 has
393
+ // already named it with the one-character edit that makes this subject
394
+ // legal. Stacking the shape rule on top would report one mistake twice and
395
+ // would hand the author 'computed value = total()' — a line that reports
396
+ // VEL5063 in its turn. The same reason the frozen rule is asked first.
397
+ if (host.diagnostics.some((item) => item.code === "VEL5063"
398
+ && item.span.start === expression.span.start && item.span.end === expression.span.end))
399
+ return false;
400
+ const derived = currentName ?? "value";
401
+ const watchLine = currentName === null
402
+ ? `watch ${derived}:`
403
+ : `watch ${derived} as current${previousName === null ? "" : `, ${previousName}`}:`;
404
+ const rendered = renderWatchSubject(expression);
405
+ host.diagnostics.push(diagnostic("VEL5071", rendered === null
406
+ ? `A watch subject names what to watch, not what to compute. Declare the value — 'computed ${derived} = ...' — then '${watchLine}'`
407
+ : `A watch subject names what to watch, not what to compute: '${rendered}' computes a value. Declare it — 'computed ${derived} = ${rendered}' — then '${watchLine}'`, expression.span));
408
+ return false;
409
+ }
410
+ /**
411
+ * D114 W: the three watch shapes a compile can prove re-trigger the watch
412
+ * itself. D90 R21 removed the analysis of *who writes what* across calls, and
413
+ * nothing here brings it back: two watches writing one state are still an
414
+ * ordinary program, a write reached through an ordinary helper is still
415
+ * silent, and a write under `if`, `match`, a loop, `try`, a nested `def` or an
416
+ * arrow is still the author's converging correction to make.
417
+ *
418
+ * What is refused is only what is decided at the top of the body, with no
419
+ * condition to end it:
420
+ *
421
+ * - **B** the body writes the watched place itself (`watch count: count =
422
+ * count + 1`), assignment, compound assignment, or a mutating collection
423
+ * call on the watched collection;
424
+ * - **A2(a)** the subject is a `resource` field and the body reloads that
425
+ * same resource — a reload writes exactly those fields, so every completed
426
+ * load re-triggers the watch;
427
+ * - **A2(b)** the body starts an `action` or an `async def` of this module
428
+ * whose own top level writes the watched place. One hop, one module, no
429
+ * condition on either end; anything further is the runtime budget's.
430
+ *
431
+ * One diagnostic per watch, at the first statement that earns it. A watch with
432
+ * two of these has two mistakes, and the second is read after the first is
433
+ * fixed, exactly as two errors on one line are.
434
+ */
435
+ export function rejectWatchCycle(host, subject, watched, body) {
436
+ const root = reactivePathRoot(subject);
437
+ if (root === null)
438
+ return;
439
+ const place = reactivePathOf(subject);
440
+ const writes = (steps, method) => watchSubjectWrite(host, watched, steps, method);
441
+ // A resource publishes `value`, `loading`, `ready` and `error`, and
442
+ // `reload` is the one member of the five that is not one of them. Asking it
443
+ // that way keeps `analyzeResourceDeclaration`'s field map the only roster:
444
+ // a field added there is a field this recognises, with nothing to update.
445
+ const resource = subject.kind === "MemberExpression" && !subject.optional
446
+ && subject.object.kind === "IdentifierExpression" && subject.property !== "reload"
447
+ && isResourceBinding(host, subject.object.name)
448
+ ? subject.object.name
449
+ : null;
450
+ for (const statement of body) {
451
+ if (statementBindsName(statement, root))
452
+ return;
453
+ const selfWrite = place === null ? null : watchSelfWrite(subject, place, statement, writes);
454
+ if (selfWrite !== null) {
455
+ host.diagnostics.push(diagnostic("VEL5077", selfWrite, statement.span));
456
+ return;
457
+ }
458
+ const inFinally = place === null ? null : finallySelfWrite(subject, place, statement, writes, root);
459
+ if (inFinally !== null) {
460
+ host.diagnostics.push(diagnostic("VEL5077", inFinally.message, inFinally.span));
461
+ return;
462
+ }
463
+ const hop = watchDerivedSourceWrite(subject, statement, host.reactiveDerivations, host.reactiveStateNames, (name) => host.reactiveBindingKind(name) === "state");
464
+ if (hop !== null) {
465
+ host.diagnostics.push(diagnostic("VEL5077", hop, statement.span));
466
+ return;
467
+ }
468
+ const call = topLevelCall(statement);
469
+ if (call === null)
470
+ continue;
471
+ if (resource !== null && call.callee.kind === "MemberExpression" && !call.callee.optional
472
+ && call.callee.property === "reload" && call.callee.object.kind === "IdentifierExpression"
473
+ && call.callee.object.name === resource) {
474
+ host.diagnostics.push(diagnostic("VEL5078", `This watch reloads '${resource}' — the resource it watches — so every completed load re-triggers it; watch the input the load reads instead, as 'watch userId:' with 'detach ${resource}.reload()' in its body`, call.span));
475
+ return;
476
+ }
477
+ if (place === null || call.callee.kind !== "IdentifierExpression")
478
+ continue;
479
+ const writer = host.reactiveWriters.get(call.callee.name) ?? null;
480
+ const written = writer === null ? null : writerWritesPath(writer, place, writes);
481
+ if (written === null)
482
+ continue;
483
+ // D114 0.28.0 H-D1's other half, in the message family F1 gave VEL5077:
484
+ // a writer that reaches a *part* of the subject names the part it wrote
485
+ // and the subject it belongs to, because those are two different places
486
+ // and the author has to find the one the helper touches.
487
+ const reached = written.text === place.text
488
+ ? `'${place.text}' — the reactive value this watch is on`
489
+ : `'${written.text}', a part of its subject '${place.text}'`;
490
+ host.diagnostics.push(diagnostic("VEL5079", `This watch starts '${call.callee.name}', which writes ${reached} — so each completed run re-triggers the watch; make the write conditional, or watch the input '${call.callee.name}' reads`, call.span));
491
+ return;
492
+ }
493
+ }
494
+ /**
495
+ * Whether a write `steps` below the watched subject, made the given way, is a
496
+ * write of the subject — the one definition both the body scan (VEL5077) and
497
+ * the one-hop writer scan (VEL5079) read. An assignment to a place the walk
498
+ * can reach is a write; a call is one only when the type at that depth is a
499
+ * collection and the call is on its own mutating roster.
500
+ */
501
+ export function watchSubjectWrite(host, watched, steps, method) {
502
+ const written = reactivePlaceType(host, watched, steps);
503
+ if (written === null)
504
+ return false;
505
+ if (method === null)
506
+ return true;
507
+ const mutating = collectionMutators(nonOptional(host.expandAliases(written)));
508
+ return mutating !== null && mutating.has(method);
509
+ }
510
+ /**
511
+ * D114 0.28.0 H-D1: the type of the place `steps` below the watched subject,
512
+ * or null when the walk cannot reach one.
513
+ *
514
+ * Only the steps the reactive graph publishes as part of the subject are
515
+ * walked — a record field and a collection element — because those are the
516
+ * writes a watch on the containing value is woken by. A step that leaves them
517
+ * (a class instance, a capability handle, a field the record does not declare)
518
+ * is not provably part of the subject, and a refusal that must be right every
519
+ * time answers no there rather than guessing.
520
+ */
521
+ export function reactivePlaceType(host, subject, steps) {
522
+ let current = subject;
523
+ for (const step of steps) {
524
+ const owner = nonOptional(host.expandAliases(current));
525
+ const next = step.kind === "field"
526
+ ? (owner.kind === "object" ? owner.fields.get(step.name) ?? null
527
+ : owner.kind === "record" ? owner.value
528
+ : owner.kind === "named" ? host.fieldsOf(owner.identity ?? owner.name)?.get(step.name) ?? null
529
+ : null)
530
+ : (owner.kind === "list" || owner.kind === "set" ? owner.element
531
+ : owner.kind === "map" || owner.kind === "record" ? owner.value
532
+ : null);
533
+ if (next === null)
534
+ return null;
535
+ current = next;
536
+ }
537
+ return current;
538
+ }
539
+ /** A value that is read by calling it and takes no arguments to do so. */
540
+ export function zeroArgumentReader(host, type) {
541
+ const expanded = host.expandAliases(type);
542
+ return (expanded.kind === "function" || expanded.kind === "intrinsic") && expanded.requiredParameters === 0;
543
+ }
544
+ /**
545
+ * True only for subjects built entirely from values the compile can see are
546
+ * frozen: literals, and non-reactive bindings whose type is a primitive, so no
547
+ * deep-reactive object can be hiding behind the name. Every member access,
548
+ * index, and call is excluded on purpose — `alias.done` on a const bound to a
549
+ * reactive element does track, and a call can read anything.
550
+ */
551
+ export function frozenWatchSubject(host, expression) {
552
+ switch (expression.kind) {
553
+ case "LiteralExpression":
554
+ return true;
555
+ case "FStringExpression":
556
+ return expression.parts.every((part) => part.kind === "text" || frozenWatchSubject(host, part.value));
557
+ case "IdentifierExpression":
558
+ return host.reactiveBindingKind(expression.name) === null
559
+ && !host.derivedReactiveNames.has(expression.name)
560
+ && frozenValueType(host, host.lookup(expression.name)?.type ?? unknownType);
561
+ case "UnaryExpression":
562
+ return expression.operator !== "await" && frozenWatchSubject(host, expression.operand);
563
+ case "BinaryExpression":
564
+ return frozenWatchSubject(host, expression.left) && frozenWatchSubject(host, expression.right);
565
+ case "ComparisonChainExpression":
566
+ return expression.operands.every((operand) => frozenWatchSubject(host, operand));
567
+ case "ConditionalExpression":
568
+ return frozenWatchSubject(host, expression.condition) && frozenWatchSubject(host, expression.thenValue)
569
+ && frozenWatchSubject(host, expression.elseValue);
570
+ case "IsExpression":
571
+ return frozenWatchSubject(host, expression.value);
572
+ default:
573
+ return false;
574
+ }
575
+ }
576
+ /** A primitive holds no reactive identity, so a non-reactive binding of one is a snapshot. */
577
+ export function frozenValueType(host, type) {
578
+ const expanded = host.expandAliases(type);
579
+ if (expanded.kind === "optional")
580
+ return frozenValueType(host, expanded.inner);
581
+ if (expanded.kind === "union")
582
+ return expanded.members.every((member) => frozenValueType(host, member));
583
+ return expanded.kind === "number" || expanded.kind === "string" || expanded.kind === "bool"
584
+ || expanded.kind === "null" || expanded.kind === "enum";
585
+ }
347
586
  //# sourceMappingURL=watch-cycles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watch-cycles.js","sourceRoot":"","sources":["../../src/analysis/watch-cycles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch-cycles.js","sourceRoot":"","sources":["../../src/analysis/watch-cycles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * A watch subject as the author wrote it: the allowlist of shapes a subject may
3
+ * be, and the reconstruction of one back into the source text a refusal quotes.
4
+ *
5
+ * D115 P4 R3a: the reconstruction is a total function over an expression, so it
6
+ * reads as a module. Its per-kind renderers are named rather than inlined into
7
+ * one switch, because a reader who arrives asking how a call or an f-string is
8
+ * printed should be able to be sent to the answer.
9
+ */
10
+ import { type Expression } from "@velarscript/compiler/extension";
11
+ /**
12
+ * D90 R15(a): a watch subject names a place in the reactive graph — the name of
13
+ * a `state` or a `computed`, or a read path out of one — and never computes a
14
+ * value. The rule is written positively, as this allowlist, because that is
15
+ * what makes the relation between a watch and its source *declared* rather than
16
+ * inferred; every earlier attempt to infer it was defeated by one more
17
+ * indirection. A path is legal at any depth and with any index expression:
18
+ * `rows[i].cells[j]` still selects a place, and whether `i` is a constant or
19
+ * another state changes nothing about that. An operator or a call derives a new
20
+ * value instead, and a derived value already has a spelling that names it,
21
+ * caches it, and declares its dependencies. The conditional is an operator by
22
+ * the charter's own vocabulary, and an f-string builds a new string, so neither
23
+ * needs a clause of its own — they simply are not paths.
24
+ *
25
+ * Whether the root of a legal path is reactive is a different question, and
26
+ * `frozenWatchSubject` keeps it: this answers shape only.
27
+ */
28
+ export declare function watchSubjectPath(expression: Expression): boolean;
29
+ /**
30
+ * The subject as the author wrote it, reconstructed from the AST for exactly
31
+ * the node kinds a subject can be. The analyzer never sees the module text, and
32
+ * a refusal that cannot quote what it refused teaches nothing — so the message
33
+ * quotes this. It is a reconstruction and stays one: it is used in the message
34
+ * only, never in a `fix`, because rewriting an author's source from a
35
+ * reconstruction is a worse defect than the one being reported. Null means
36
+ * "cannot say faithfully", and the message drops the echo rather than guess.
37
+ *
38
+ * Faithfulness is the whole point, so grouping is carried across rather than
39
+ * re-derived: the three nodes that record the author's own parentheses are
40
+ * printed with them, and the low-precedence nodes that record nothing are
41
+ * parenthesized wherever a bare printing would re-associate. The reconstruction
42
+ * therefore parses back to the tree it came from.
43
+ */
44
+ export declare function renderWatchSubject(expression: Expression): string | null;
45
+ //# sourceMappingURL=watch-subject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-subject.d.ts","sourceRoot":"","sources":["../../src/analysis/watch-subject.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAUhE;AAiKD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CA6CxE"}