sygnal 5.3.7 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/CHANGELOG.md +646 -0
  2. package/README.md +77 -47
  3. package/dist/astro/client.cjs.js +33 -8114
  4. package/dist/astro/client.cjs.js.map +1 -0
  5. package/dist/astro/client.mjs +33 -8114
  6. package/dist/astro/client.mjs.map +1 -0
  7. package/dist/astro/index.cjs.js +1039 -9
  8. package/dist/astro/index.cjs.js.map +1 -0
  9. package/dist/astro/index.mjs +1038 -9
  10. package/dist/astro/index.mjs.map +1 -0
  11. package/dist/astro/server.cjs.js +3400 -166
  12. package/dist/astro/server.cjs.js.map +1 -0
  13. package/dist/astro/server.mjs +3400 -166
  14. package/dist/astro/server.mjs.map +1 -0
  15. package/dist/devtools.cjs.js +1431 -0
  16. package/dist/devtools.cjs.js.map +1 -0
  17. package/dist/devtools.esm.js +1419 -0
  18. package/dist/devtools.esm.js.map +1 -0
  19. package/dist/diagnostics.cjs.js +4033 -0
  20. package/dist/diagnostics.cjs.js.map +1 -0
  21. package/dist/diagnostics.esm.js +4003 -0
  22. package/dist/diagnostics.esm.js.map +1 -0
  23. package/dist/element.cjs.js +230 -0
  24. package/dist/element.cjs.js.map +1 -0
  25. package/dist/element.esm.js +228 -0
  26. package/dist/element.esm.js.map +1 -0
  27. package/dist/guide/accessibility.md +257 -0
  28. package/dist/guide/adapters.md +221 -0
  29. package/dist/guide/behaviors.md +312 -0
  30. package/dist/guide/browser-sources.md +203 -0
  31. package/dist/guide/drag-and-drop.md +342 -0
  32. package/dist/guide/element-commands.md +306 -0
  33. package/dist/guide/error-boundaries.md +169 -0
  34. package/dist/guide/forms-reference.md +381 -0
  35. package/dist/guide/forms.md +250 -0
  36. package/dist/guide/http.md +299 -0
  37. package/dist/guide/inputs.md +173 -0
  38. package/dist/guide/persistence.md +245 -0
  39. package/dist/guide/recipes/carousel.md +155 -0
  40. package/dist/guide/recipes/charts.md +177 -0
  41. package/dist/guide/recipes/code-editor.md +135 -0
  42. package/dist/guide/recipes/data-grid.md +155 -0
  43. package/dist/guide/recipes/data-table.md +196 -0
  44. package/dist/guide/recipes/i18n.md +222 -0
  45. package/dist/guide/recipes/icons.md +115 -0
  46. package/dist/guide/recipes/overview.md +33 -0
  47. package/dist/guide/recipes/rich-text.md +154 -0
  48. package/dist/guide/resources.md +471 -0
  49. package/dist/guide/ssr.md +255 -0
  50. package/dist/guide/timers.md +178 -0
  51. package/dist/guide/ui/accordion.md +93 -0
  52. package/dist/guide/ui/combobox.md +144 -0
  53. package/dist/guide/ui/dialog.md +124 -0
  54. package/dist/guide/ui/disclosure.md +60 -0
  55. package/dist/guide/ui/menu.md +125 -0
  56. package/dist/guide/ui/overview.md +166 -0
  57. package/dist/guide/ui/popover.md +101 -0
  58. package/dist/guide/ui/select.md +114 -0
  59. package/dist/guide/ui/tabs.md +161 -0
  60. package/dist/guide/ui/toaster.md +152 -0
  61. package/dist/guide/ui/tooltip.md +103 -0
  62. package/dist/guide/undo.md +178 -0
  63. package/dist/guide/virtual-collections.md +183 -0
  64. package/dist/guide/web-components.md +179 -0
  65. package/dist/guide/widgets.md +217 -0
  66. package/dist/index.cjs.js +15283 -6279
  67. package/dist/index.cjs.js.map +1 -0
  68. package/dist/index.d.ts +3739 -370
  69. package/dist/index.esm.js +15230 -6274
  70. package/dist/index.esm.js.map +1 -0
  71. package/dist/jsx-dev-runtime.cjs.js +27 -329
  72. package/dist/jsx-dev-runtime.cjs.js.map +1 -0
  73. package/dist/jsx-dev-runtime.esm.js +20 -322
  74. package/dist/jsx-dev-runtime.esm.js.map +1 -0
  75. package/dist/jsx-runtime.cjs.js +27 -329
  76. package/dist/jsx-runtime.cjs.js.map +1 -0
  77. package/dist/jsx-runtime.esm.js +20 -322
  78. package/dist/jsx-runtime.esm.js.map +1 -0
  79. package/dist/jsx.cjs.js +11 -309
  80. package/dist/jsx.cjs.js.map +1 -0
  81. package/dist/jsx.esm.js +9 -310
  82. package/dist/jsx.esm.js.map +1 -0
  83. package/dist/react.cjs.js +117 -0
  84. package/dist/react.cjs.js.map +1 -0
  85. package/dist/react.esm.js +115 -0
  86. package/dist/react.esm.js.map +1 -0
  87. package/dist/shims/globalthis.cjs +20 -0
  88. package/dist/sygnal.min.js +2 -1
  89. package/dist/sygnal.min.js.map +1 -0
  90. package/dist/ui-combobox.cjs.js +169 -0
  91. package/dist/ui-combobox.cjs.js.map +1 -0
  92. package/dist/ui-combobox.esm.js +148 -0
  93. package/dist/ui-combobox.esm.js.map +1 -0
  94. package/dist/ui-menu.cjs.js +87 -0
  95. package/dist/ui-menu.cjs.js.map +1 -0
  96. package/dist/ui-menu.esm.js +66 -0
  97. package/dist/ui-menu.esm.js.map +1 -0
  98. package/dist/ui-select.cjs.js +104 -0
  99. package/dist/ui-select.cjs.js.map +1 -0
  100. package/dist/ui-select.esm.js +83 -0
  101. package/dist/ui-select.esm.js.map +1 -0
  102. package/dist/ui.cjs.js +738 -0
  103. package/dist/ui.cjs.js.map +1 -0
  104. package/dist/ui.esm.js +727 -0
  105. package/dist/ui.esm.js.map +1 -0
  106. package/dist/vike/ClientOnly.cjs.js +5 -14
  107. package/dist/vike/ClientOnly.cjs.js.map +1 -0
  108. package/dist/vike/ClientOnly.mjs +5 -14
  109. package/dist/vike/ClientOnly.mjs.map +1 -0
  110. package/dist/vike/{+config.js → config/+config.js} +10 -1
  111. package/dist/vike/config/+config.js.map +1 -0
  112. package/dist/vike/config/package.json +6 -0
  113. package/dist/vike/onRenderClient.cjs.js +166 -95
  114. package/dist/vike/onRenderClient.cjs.js.map +1 -0
  115. package/dist/vike/onRenderClient.mjs +166 -95
  116. package/dist/vike/onRenderClient.mjs.map +1 -0
  117. package/dist/vike/onRenderHtml.cjs.js +60 -24
  118. package/dist/vike/onRenderHtml.cjs.js.map +1 -0
  119. package/dist/vike/onRenderHtml.mjs +61 -25
  120. package/dist/vike/onRenderHtml.mjs.map +1 -0
  121. package/dist/vite/plugin.cjs.js +926 -65
  122. package/dist/vite/plugin.cjs.js.map +1 -0
  123. package/dist/vite/plugin.mjs +925 -65
  124. package/dist/vite/plugin.mjs.map +1 -0
  125. package/dist/zag.cjs.js +408 -0
  126. package/dist/zag.cjs.js.map +1 -0
  127. package/dist/zag.esm.js +405 -0
  128. package/dist/zag.esm.js.map +1 -0
  129. package/llms.txt +313 -0
  130. package/package.json +109 -16
  131. package/src/astro/client.ts +40 -18
  132. package/src/astro/index.d.ts +48 -1
  133. package/src/astro/index.ts +106 -9
  134. package/src/astro/server.ts +11 -3
  135. package/src/collection.ts +6 -90
  136. package/src/core/actions.ts +134 -0
  137. package/src/core/cell.ts +202 -0
  138. package/src/core/debug.ts +23 -0
  139. package/src/core/define.ts +242 -0
  140. package/src/core/hooks.ts +314 -0
  141. package/src/core/hosts/collection.ts +325 -0
  142. package/src/core/hosts/switchable.ts +146 -0
  143. package/src/core/instance.ts +592 -0
  144. package/src/core/markers/clientonly.ts +13 -0
  145. package/src/core/markers/lazy.ts +40 -0
  146. package/src/core/markers/portal.ts +96 -0
  147. package/src/core/markers/suspense.ts +41 -0
  148. package/src/core/markers/transition.ts +70 -0
  149. package/src/core/registry.ts +25 -0
  150. package/src/core/runtime.ts +573 -0
  151. package/src/core/statics.ts +104 -0
  152. package/src/core/teardown.ts +60 -0
  153. package/src/core/view.ts +37 -0
  154. package/src/cycle/dom/DocumentDOMSource.ts +13 -8
  155. package/src/cycle/dom/ElementFinder.ts +7 -9
  156. package/src/cycle/dom/EventDelegator.ts +174 -223
  157. package/src/cycle/dom/IsolateModule.ts +65 -35
  158. package/src/cycle/dom/MainDOMSource.ts +13 -2
  159. package/src/cycle/dom/PriorityQueue.ts +4 -2
  160. package/src/cycle/dom/SymbolTree.ts +18 -47
  161. package/src/cycle/dom/classNameModule.ts +76 -0
  162. package/src/cycle/dom/controlledInputModule.ts +50 -0
  163. package/src/cycle/dom/enrichEventStream.ts +29 -45
  164. package/src/cycle/dom/fragment.ts +7 -0
  165. package/src/cycle/dom/isolate.ts +30 -27
  166. package/src/cycle/dom/makeDOMDriver.ts +115 -57
  167. package/src/cycle/dom/mockDOMSource.ts +83 -9
  168. package/src/cycle/dom/modules.ts +21 -4
  169. package/src/cycle/dom/propsModule.ts +65 -0
  170. package/src/cycle/dom/selectModule.ts +22 -17
  171. package/src/cycle/dom/snabbdom.ts +1 -6
  172. package/src/cycle/dom/thunk.ts +3 -0
  173. package/src/cycle/dom/utils.ts +98 -0
  174. package/src/cycle/dom/viewTransition.ts +43 -0
  175. package/src/cycle/state/StateSource.ts +20 -4
  176. package/src/cycle/state/objIsEqual.ts +50 -0
  177. package/src/cycle/state/types.ts +0 -10
  178. package/src/defineComponent.ts +34 -0
  179. package/src/devtools.d.ts +151 -0
  180. package/src/devtools.ts +34 -0
  181. package/src/element.d.ts +59 -0
  182. package/src/element.ts +235 -0
  183. package/src/extra/backoff.ts +9 -0
  184. package/src/extra/behaviors.ts +169 -0
  185. package/src/extra/browserSignals.ts +23 -0
  186. package/src/extra/browserSources.ts +326 -0
  187. package/src/extra/command.ts +3 -3
  188. package/src/extra/controls.ts +47 -0
  189. package/src/extra/copyAsTest.ts +286 -0
  190. package/src/extra/devtools.ts +109 -31
  191. package/src/extra/devtoolsActions.ts +379 -0
  192. package/src/extra/devtoolsHook.ts +9 -0
  193. package/src/extra/devtoolsNext.ts +83 -0
  194. package/src/extra/diagnostics/checks/actionLog.ts +108 -0
  195. package/src/extra/diagnostics/checks/behaviors.ts +49 -0
  196. package/src/extra/diagnostics/checks/browserSources.ts +96 -0
  197. package/src/extra/diagnostics/checks/collections.ts +67 -0
  198. package/src/extra/diagnostics/checks/controls.ts +148 -0
  199. package/src/extra/diagnostics/checks/dataset.ts +57 -0
  200. package/src/extra/diagnostics/checks/dom.ts +250 -0
  201. package/src/extra/diagnostics/checks/elementCommands.ts +175 -0
  202. package/src/extra/diagnostics/checks/events.ts +83 -0
  203. package/src/extra/diagnostics/checks/fetch.ts +135 -0
  204. package/src/extra/diagnostics/checks/forms.ts +163 -0
  205. package/src/extra/diagnostics/checks/index.ts +202 -0
  206. package/src/extra/diagnostics/checks/inspect.ts +427 -0
  207. package/src/extra/diagnostics/checks/next.ts +417 -0
  208. package/src/extra/diagnostics/checks/persist.ts +54 -0
  209. package/src/extra/diagnostics/checks/props.ts +56 -0
  210. package/src/extra/diagnostics/checks/public.d.ts +302 -0
  211. package/src/extra/diagnostics/checks/replies.ts +128 -0
  212. package/src/extra/diagnostics/checks/router.ts +100 -0
  213. package/src/extra/diagnostics/checks/rxjsHints.ts +88 -0
  214. package/src/extra/diagnostics/checks/shared.ts +203 -0
  215. package/src/extra/diagnostics/checks/shorthand.ts +115 -0
  216. package/src/extra/diagnostics/checks/sortable.ts +129 -0
  217. package/src/extra/diagnostics/checks/state.ts +148 -0
  218. package/src/extra/diagnostics/checks/statics.ts +48 -0
  219. package/src/extra/diagnostics/checks/strict.ts +55 -0
  220. package/src/extra/diagnostics/checks/timers.ts +80 -0
  221. package/src/extra/diagnostics/checks/viewTransitions.ts +47 -0
  222. package/src/extra/diagnostics/checks/virtual.ts +73 -0
  223. package/src/extra/diagnostics/checks/widgets.ts +109 -0
  224. package/src/extra/diagnostics/checks/wiring.ts +121 -0
  225. package/src/extra/diagnostics/codes.ts +477 -0
  226. package/src/extra/diagnostics/index.ts +353 -0
  227. package/src/extra/diagnostics/legacy.ts +76 -0
  228. package/src/extra/driverFactories.ts +172 -60
  229. package/src/extra/elementCommands.ts +53 -0
  230. package/src/extra/eventDriver.ts +4 -0
  231. package/src/extra/fetchDriver.ts +519 -0
  232. package/src/extra/flatten.ts +75 -0
  233. package/src/extra/focusWithin.ts +27 -0
  234. package/src/extra/form.ts +268 -0
  235. package/src/extra/formHelpers.ts +139 -0
  236. package/src/extra/head.ts +106 -0
  237. package/src/extra/hmr.ts +2 -3
  238. package/src/extra/owned.ts +24 -0
  239. package/src/extra/pager.ts +50 -0
  240. package/src/extra/persist.ts +133 -0
  241. package/src/extra/pwa.ts +1 -1
  242. package/src/extra/queryCache.ts +107 -0
  243. package/src/extra/reducers.ts +13 -6
  244. package/src/extra/reduxDevtools.ts +92 -0
  245. package/src/extra/replies.ts +54 -0
  246. package/src/extra/router.ts +323 -0
  247. package/src/extra/run.ts +94 -210
  248. package/src/extra/selection.ts +76 -0
  249. package/src/extra/socketDriver.ts +265 -0
  250. package/src/extra/sortable.ts +377 -0
  251. package/src/extra/ssr.ts +427 -160
  252. package/src/extra/standardSchema.ts +27 -0
  253. package/src/extra/testing.ts +3158 -190
  254. package/src/extra/timers.ts +95 -0
  255. package/src/extra/undo.ts +261 -0
  256. package/src/extra/viewTransitions.ts +38 -0
  257. package/src/extra/virtual.ts +513 -0
  258. package/src/extra/widget.ts +201 -0
  259. package/src/extra/xstreamExtras.ts +269 -0
  260. package/src/index.d.ts +3012 -87
  261. package/src/index.ts +32 -10
  262. package/src/jsx-runtime.ts +15 -1
  263. package/src/jsx.ts +2 -1
  264. package/src/lazy.ts +50 -7
  265. package/src/portal.ts +3 -1
  266. package/src/pragma/index.ts +262 -134
  267. package/src/react-peers.d.ts +5 -0
  268. package/src/react.d.ts +43 -0
  269. package/src/react.ts +110 -0
  270. package/src/shared.ts +48 -0
  271. package/src/slot.ts +1 -1
  272. package/src/suspense.ts +3 -1
  273. package/src/switchable.ts +6 -119
  274. package/src/transition.ts +3 -1
  275. package/src/ui/accordion.ts +64 -0
  276. package/src/ui/dialog.ts +129 -0
  277. package/src/ui/disclosure.ts +35 -0
  278. package/src/ui/popover.ts +45 -0
  279. package/src/ui/shared.ts +94 -0
  280. package/src/ui/tabs.ts +82 -0
  281. package/src/ui/toaster.ts +198 -0
  282. package/src/ui/tooltip.ts +70 -0
  283. package/src/ui/zag/combobox.ts +115 -0
  284. package/src/ui/zag/menu.ts +40 -0
  285. package/src/ui/zag/select.ts +54 -0
  286. package/src/ui/zag/shared.ts +43 -0
  287. package/src/ui-combobox.d.ts +20 -0
  288. package/src/ui-combobox.ts +6 -0
  289. package/src/ui-menu.d.ts +30 -0
  290. package/src/ui-menu.ts +6 -0
  291. package/src/ui-select.d.ts +17 -0
  292. package/src/ui-select.ts +6 -0
  293. package/src/ui-zag-types.d.ts +42 -0
  294. package/src/ui.d.ts +208 -0
  295. package/src/ui.ts +15 -0
  296. package/src/vike/+config.ts +9 -1
  297. package/src/vike/ClientOnly.ts +1 -1
  298. package/src/vike/onRenderClient.ts +144 -96
  299. package/src/vike/onRenderHtml.ts +69 -26
  300. package/src/vike/types.ts +27 -4
  301. package/src/vite/globalthis-shim.ts +18 -0
  302. package/src/vite/globalthis.ts +56 -0
  303. package/src/vite/plugin.d.ts +114 -2
  304. package/src/vite/plugin.ts +920 -56
  305. package/src/zag.d.ts +64 -0
  306. package/src/zag.ts +238 -0
  307. package/dist/astro/astro/client.d.ts +0 -5
  308. package/dist/astro/astro/index.d.ts +0 -16
  309. package/dist/astro/astro/server.d.ts +0 -12
  310. package/dist/astro/client.d.ts +0 -5
  311. package/dist/astro/client.esm.js +0 -4665
  312. package/dist/astro/collection.d.ts +0 -12
  313. package/dist/astro/component.d.ts +0 -22
  314. package/dist/astro/cycle/dom/BodyDOMSource.d.ts +0 -10
  315. package/dist/astro/cycle/dom/DOMSource.d.ts +0 -11
  316. package/dist/astro/cycle/dom/DocumentDOMSource.d.ts +0 -12
  317. package/dist/astro/cycle/dom/ElementFinder.d.ts +0 -8
  318. package/dist/astro/cycle/dom/EventDelegator.d.ts +0 -34
  319. package/dist/astro/cycle/dom/IsolateModule.d.ts +0 -23
  320. package/dist/astro/cycle/dom/MainDOMSource.d.ts +0 -32
  321. package/dist/astro/cycle/dom/PriorityQueue.d.ts +0 -7
  322. package/dist/astro/cycle/dom/ScopeChecker.d.ts +0 -9
  323. package/dist/astro/cycle/dom/SymbolTree.d.ts +0 -9
  324. package/dist/astro/cycle/dom/VNodeWrapper.d.ts +0 -8
  325. package/dist/astro/cycle/dom/enrichEventStream.d.ts +0 -24
  326. package/dist/astro/cycle/dom/fromEvent.d.ts +0 -6
  327. package/dist/astro/cycle/dom/index.d.ts +0 -8
  328. package/dist/astro/cycle/dom/isolate.d.ts +0 -9
  329. package/dist/astro/cycle/dom/makeDOMDriver.d.ts +0 -11
  330. package/dist/astro/cycle/dom/mockDOMSource.d.ts +0 -17
  331. package/dist/astro/cycle/dom/modules.d.ts +0 -5
  332. package/dist/astro/cycle/dom/snabbdom.d.ts +0 -22
  333. package/dist/astro/cycle/dom/styleModule.d.ts +0 -13
  334. package/dist/astro/cycle/dom/thunk.d.ts +0 -11
  335. package/dist/astro/cycle/dom/utils.d.ts +0 -8
  336. package/dist/astro/cycle/isolate/index.d.ts +0 -42
  337. package/dist/astro/cycle/run/adapt.d.ts +0 -6
  338. package/dist/astro/cycle/run/index.d.ts +0 -36
  339. package/dist/astro/cycle/run/internals.d.ts +0 -8
  340. package/dist/astro/cycle/run/types.d.ts +0 -49
  341. package/dist/astro/cycle/state/Collection.d.ts +0 -29
  342. package/dist/astro/cycle/state/StateSource.d.ts +0 -20
  343. package/dist/astro/cycle/state/index.d.ts +0 -5
  344. package/dist/astro/cycle/state/pickCombine.d.ts +0 -3
  345. package/dist/astro/cycle/state/pickMerge.d.ts +0 -3
  346. package/dist/astro/cycle/state/types.d.ts +0 -18
  347. package/dist/astro/cycle/state/withState.d.ts +0 -17
  348. package/dist/astro/extra/classes.d.ts +0 -7
  349. package/dist/astro/extra/devtools.d.ts +0 -78
  350. package/dist/astro/extra/dragDriver.d.ts +0 -20
  351. package/dist/astro/extra/driverFactories.d.ts +0 -12
  352. package/dist/astro/extra/eventDriver.d.ts +0 -9
  353. package/dist/astro/extra/exactState.d.ts +0 -1
  354. package/dist/astro/extra/hmr.d.ts +0 -17
  355. package/dist/astro/extra/logDriver.d.ts +0 -2
  356. package/dist/astro/extra/processDrag.d.ts +0 -19
  357. package/dist/astro/extra/processForm.d.ts +0 -15
  358. package/dist/astro/extra/run.d.ts +0 -13
  359. package/dist/astro/extra/xstreamCompat.d.ts +0 -5
  360. package/dist/astro/index.d.ts +0 -19
  361. package/dist/astro/index.esm.js +0 -27
  362. package/dist/astro/jsx-dev-runtime.d.ts +0 -1
  363. package/dist/astro/jsx-runtime.d.ts +0 -4
  364. package/dist/astro/jsx.d.ts +0 -2
  365. package/dist/astro/pragma/fn.d.ts +0 -7
  366. package/dist/astro/pragma/index.d.ts +0 -7
  367. package/dist/astro/pragma/is.d.ts +0 -10
  368. package/dist/astro/server.d.ts +0 -12
  369. package/dist/astro/server.esm.js +0 -25
  370. package/dist/astro/switchable.d.ts +0 -7
  371. package/dist/collection.d.ts +0 -12
  372. package/dist/component.d.ts +0 -22
  373. package/dist/cycle/dom/BodyDOMSource.d.ts +0 -10
  374. package/dist/cycle/dom/DOMSource.d.ts +0 -11
  375. package/dist/cycle/dom/DocumentDOMSource.d.ts +0 -12
  376. package/dist/cycle/dom/ElementFinder.d.ts +0 -8
  377. package/dist/cycle/dom/EventDelegator.d.ts +0 -34
  378. package/dist/cycle/dom/IsolateModule.d.ts +0 -23
  379. package/dist/cycle/dom/MainDOMSource.d.ts +0 -32
  380. package/dist/cycle/dom/PriorityQueue.d.ts +0 -7
  381. package/dist/cycle/dom/ScopeChecker.d.ts +0 -9
  382. package/dist/cycle/dom/SymbolTree.d.ts +0 -9
  383. package/dist/cycle/dom/VNodeWrapper.d.ts +0 -8
  384. package/dist/cycle/dom/enrichEventStream.d.ts +0 -24
  385. package/dist/cycle/dom/fromEvent.d.ts +0 -6
  386. package/dist/cycle/dom/index.d.ts +0 -8
  387. package/dist/cycle/dom/isolate.d.ts +0 -9
  388. package/dist/cycle/dom/makeDOMDriver.d.ts +0 -11
  389. package/dist/cycle/dom/mockDOMSource.d.ts +0 -17
  390. package/dist/cycle/dom/modules.d.ts +0 -5
  391. package/dist/cycle/dom/snabbdom.d.ts +0 -22
  392. package/dist/cycle/dom/styleModule.d.ts +0 -13
  393. package/dist/cycle/dom/thunk.d.ts +0 -11
  394. package/dist/cycle/dom/utils.d.ts +0 -8
  395. package/dist/cycle/isolate/index.d.ts +0 -42
  396. package/dist/cycle/run/adapt.d.ts +0 -6
  397. package/dist/cycle/run/index.d.ts +0 -36
  398. package/dist/cycle/run/internals.d.ts +0 -8
  399. package/dist/cycle/run/types.d.ts +0 -49
  400. package/dist/cycle/state/Collection.d.ts +0 -29
  401. package/dist/cycle/state/StateSource.d.ts +0 -20
  402. package/dist/cycle/state/index.d.ts +0 -5
  403. package/dist/cycle/state/pickCombine.d.ts +0 -3
  404. package/dist/cycle/state/pickMerge.d.ts +0 -3
  405. package/dist/cycle/state/types.d.ts +0 -18
  406. package/dist/cycle/state/withState.d.ts +0 -17
  407. package/dist/extra/classes.d.ts +0 -7
  408. package/dist/extra/devtools.d.ts +0 -78
  409. package/dist/extra/dragDriver.d.ts +0 -20
  410. package/dist/extra/driverFactories.d.ts +0 -12
  411. package/dist/extra/eventDriver.d.ts +0 -9
  412. package/dist/extra/exactState.d.ts +0 -1
  413. package/dist/extra/hmr.d.ts +0 -17
  414. package/dist/extra/logDriver.d.ts +0 -2
  415. package/dist/extra/processDrag.d.ts +0 -19
  416. package/dist/extra/processForm.d.ts +0 -15
  417. package/dist/extra/run.d.ts +0 -13
  418. package/dist/extra/xstreamCompat.d.ts +0 -5
  419. package/dist/jsx-dev-runtime.d.ts +0 -1
  420. package/dist/jsx-dev-runtime.js +0 -224
  421. package/dist/jsx-runtime.d.ts +0 -4
  422. package/dist/jsx-runtime.js +0 -224
  423. package/dist/jsx.d.ts +0 -2
  424. package/dist/pragma/fn.d.ts +0 -7
  425. package/dist/pragma/index.d.ts +0 -7
  426. package/dist/pragma/is.d.ts +0 -10
  427. package/dist/switchable.d.ts +0 -7
  428. package/dist/vike/+config.cjs.js +0 -65
  429. package/src/component.ts +0 -2256
  430. package/src/cycle/isolate/index.ts +0 -196
  431. package/src/cycle/run/index.ts +0 -151
  432. package/src/cycle/run/internals.ts +0 -143
  433. package/src/cycle/state/Collection.ts +0 -174
  434. package/src/cycle/state/index.ts +0 -5
  435. package/src/cycle/state/pickCombine.ts +0 -167
  436. package/src/cycle/state/pickMerge.ts +0 -122
  437. package/src/cycle/state/withState.ts +0 -47
  438. package/src/pragma/fn.ts +0 -55
@@ -0,0 +1,353 @@
1
+ /**
2
+ * Sygnal diagnostics core.
3
+ *
4
+ * ===========================================================================
5
+ * FROZEN INTERFACE (PLAN-1 workstream 0B). Changes after the 0B merge go
6
+ * through the coordinator. Later workstreams add checks (registerCheck) and
7
+ * codes (./codes.ts, inside their reserved range) — they do not change these
8
+ * signatures.
9
+ * ===========================================================================
10
+ *
11
+ * --- Reporting ------------------------------------------------------------
12
+ *
13
+ * report(code: string, details: {
14
+ * component?: string | { name?: string } // component name or instance
15
+ * message: string // what is wrong
16
+ * fix?: string // how to fix it
17
+ * data?: any // structured payload
18
+ * severity?: 'error' | 'warn' | 'info' // override the code's default
19
+ * }): Diagnostic | undefined
20
+ *
21
+ * - mode 'off' → no-op, returns undefined (nothing collected/printed)
22
+ * - code in ignore list → no-op, returns undefined
23
+ * - mode 'collect' → collected, no console output
24
+ * - mode 'warn' → collected; 'warn' → console.warn, 'error' → console.error,
25
+ * 'info' → collected only
26
+ * - mode 'error' → collected; 'warn'/'error' severities throw a
27
+ * DiagnosticError (err.diagnostic holds the Diagnostic);
28
+ * 'info' collected only. Called directly this throws
29
+ * synchronously; raised during a hook (i.e. from a
30
+ * check) it is rethrown asynchronously — see Hooks.
31
+ *
32
+ * `diagnostic.text` is formatted lazily (getter) on first read.
33
+ *
34
+ * formatDiagnostic(code, details): string
35
+ * → `[Sygnal SYG123] <Component>: <message>. <fix> <docsUrl>`
36
+ * (works in every mode; for call sites that must keep printing in 'off')
37
+ *
38
+ * getDiagnostics(): Diagnostic[] // copy of the collected list
39
+ * clearDiagnostics(): void
40
+ * onDiagnostic(cb: (d: Diagnostic) => void): () => void // returns unsubscribe
41
+ *
42
+ * --- Configuration --------------------------------------------------------
43
+ *
44
+ * configureDiagnostics({ mode?: DiagnosticsMode | undefined, ignore?: string[] }): void
45
+ * getDiagnosticsMode(): 'off' | 'collect' | 'warn' | 'error'
46
+ * isDiagnosticsEnabled(): boolean
47
+ *
48
+ * Mode resolution — first defined wins:
49
+ * 1. explicit mode: run(App, drivers, { diagnostics }) or configureDiagnostics({ mode })
50
+ * 2. globalThis.__SYGNAL_DEV__ (=== true → 'warn'; injected by the Vite plugin in serve)
51
+ * 3. 'off'
52
+ * The mode is resolved at module load, on every run() call and on every
53
+ * configureDiagnostics() call. `configureDiagnostics({ mode: undefined })`
54
+ * clears the explicit mode and falls back to steps 2-3.
55
+ * A run() call with the `diagnostics` option sets both the explicit mode and
56
+ * the ignore list from it. run() WITHOUT the option resets them to the
57
+ * defaults (no explicit mode, empty ignore list), so a setting from an earlier
58
+ * run()/configureDiagnostics() does not leak in, unless another app is still
59
+ * running (G-212: a second app or a custom element keeps the host's mode).
60
+ *
61
+ * --- Checks ---------------------------------------------------------------
62
+ *
63
+ * registerCheck(check: DiagnosticCheck): () => void // returns unregister
64
+ *
65
+ * interface DiagnosticCheck {
66
+ * id: string
67
+ * onIntent?(component, actionNames: string[], selectorsUsed: string[] | undefined): void
68
+ * onModel?(component, modelMap: Record<string, string[]>): void
69
+ * onRender?(component, rootVnode: any): void
70
+ * onReducer?(component, action: string, prevState: any, nextState: any, sinkName: string): void
71
+ * onDispose?(component): void
72
+ * }
73
+ *
74
+ * A check that throws (other than a DiagnosticError from 'error' mode) is
75
+ * isolated: the exception is reported as SYG900 and other checks still run.
76
+ *
77
+ * --- Hooks (dispatched by checks/next.ts from the core's hook layer) ----
78
+ *
79
+ * onIntent(component, actionNames, selectorsUsed?)
80
+ * after intent is built. actionNames = keys of the intent object ([] for a
81
+ * single-stream intent). selectorsUsed is currently always undefined —
82
+ * TODO(1A): collect via MainDOMSource.select instrumentation in src/cycle/dom.
83
+ * onModel(component, modelMap)
84
+ * after the model is normalized; modelMap = action → sink names, shorthand
85
+ * ('A | SINK') expanded, plain functions mapped to the state sink,
86
+ * includes built-ins such as INITIALIZE.
87
+ * onRender(component, rootVnode)
88
+ * after each render of the component (fully injected vnode, before the DOM
89
+ * driver patches it; `rootVnode.elm` is populated after the patch, so DOM
90
+ * checks should defer, e.g. with a microtask/timeout).
91
+ * onReducer(component, action, prevState, nextState, sinkName)
92
+ * after each STATE reducer returns (not for ABORT, not when the reducer
93
+ * throws). nextState is the raw reducer return value (before calculated
94
+ * field cleanup). Currently only fired for the state sink; sinkName is the
95
+ * component's state source name.
96
+ * onDispose(component)
97
+ * at the start of component disposal.
98
+ *
99
+ * onSelector(domSource, selector) (additive, 1A)
100
+ * from MainDOMSource.select() in src/cycle/dom, for every CSS selector
101
+ * (not 'document' / 'body' / ':root'). domSource is the source select()
102
+ * was called on (its `.namespace` holds the isolation scopes and any
103
+ * earlier selectors; `._isolateModule` the DOM driver's isolate module).
104
+ * onBusEmit(type, emitterName?) (additive, 1A)
105
+ * from the EVENTS driver (src/extra/eventDriver.ts) for every bus event.
106
+ * onBusSelect(type) (additive, 1A)
107
+ * from EVENTS.select(type); type is the raw argument (string, string[]
108
+ * or undefined for "all events").
109
+ *
110
+ * Checks live in the separate 'sygnal/diagnostics' entry
111
+ * (src/extra/diagnostics/checks). That bundle reaches THIS module instance
112
+ * through globalThis.__SYGNAL_DIAGNOSTICS__ = { registerCheck, report }
113
+ * (set below), so it never carries a second copy of the core state.
114
+ *
115
+ * onIntent and onModel are each called exactly once per component instance,
116
+ * in that order, during construction (also when the component has no
117
+ * intent → actionNames [], or no model → modelMap {}).
118
+ *
119
+ * `component` is the internal Component instance (stable identity per
120
+ * instance; `.name` is the component name).
121
+ *
122
+ * In mode 'off' a hook only runs the checks registered with `always: true`
123
+ * (internal: renderComponent's own bookkeeping, R2-3); none are registered
124
+ * in an app, so the hooks do nothing.
125
+ *
126
+ * Hooks NEVER throw synchronously into Sygnal's stream pipeline (a throw
127
+ * there would kill the state/view stream for good). Every exception from a
128
+ * check is caught. In 'error' mode a DiagnosticError raised during a hook —
129
+ * by a check's report() call, or by the SYG900 report for a check that
130
+ * threw a plain Error — is rethrown ASYNCHRONOUSLY (queueMicrotask, falling
131
+ * back to setTimeout), so test runners still see an uncaught error while
132
+ * the app's streams keep running. The remaining checks still run.
133
+ * `_setAsyncThrow(fn?)` replaces the async rethrow (test seam; no argument
134
+ * restores the default; `_resetDiagnostics()` also restores it).
135
+ *
136
+ * (This comment is attached to the type-only import below so the TypeScript
137
+ * emit drops it — keeps it out of the published bundle and the size gate.)
138
+ */
139
+ import type { DiagnosticSeverity } from './codes'
140
+ import { CODE_SEVERITY, docsUrlFor } from './codes'
141
+
142
+
143
+ export type DiagnosticsMode = 'off' | 'collect' | 'warn' | 'error'
144
+
145
+ export interface DiagnosticDetails {
146
+ component?: string | { name?: string }
147
+ message: string
148
+ fix?: string
149
+ data?: any
150
+ severity?: DiagnosticSeverity
151
+ }
152
+
153
+ export interface Diagnostic {
154
+ code: string
155
+ severity: DiagnosticSeverity
156
+ component?: string
157
+ message: string
158
+ fix?: string
159
+ data?: any
160
+ docsUrl: string
161
+ text: string
162
+ timestamp: number
163
+ }
164
+
165
+ export interface DiagnosticsOptions {
166
+ mode?: DiagnosticsMode
167
+ ignore?: string[]
168
+ }
169
+
170
+ export interface DiagnosticCheck {
171
+ id: string
172
+ /** internal: also runs when diagnostics are 'off' (renderComponent's harness hooks) */
173
+ always?: boolean
174
+ onIntent?: (component: any, actionNames: string[], selectorsUsed: string[] | undefined) => void
175
+ onModel?: (component: any, modelMap: Record<string, string[]>) => void
176
+ onRender?: (component: any, rootVnode: any) => void
177
+ onReducer?: (component: any, action: string, prevState: any, nextState: any, sinkName: string) => void
178
+ onDispose?: (component: any) => void
179
+ onSelector?: (domSource: any, selector: string) => void
180
+ onBusEmit?: (type: string, emitterName?: string) => void
181
+ onBusSelect?: (type: string | string[] | undefined) => void
182
+ /**
183
+ * (additive, PLAN-2 E2) Called before a component's intent runs. May return a replacement
184
+ * for `sources` (e.g. a Proxy that reports or fakes a source with no driver); the intent
185
+ * gets the last one returned. See sourcesFor().
186
+ */
187
+ sources?: (component: any, sources: any) => any
188
+ }
189
+
190
+ export class DiagnosticError extends Error {
191
+ diagnostic: Diagnostic
192
+ constructor(diagnostic: Diagnostic) {
193
+ super(diagnostic.text)
194
+ this.diagnostic = diagnostic
195
+ }
196
+ }
197
+
198
+ let explicitMode: DiagnosticsMode | undefined
199
+ let mode: DiagnosticsMode = 'off'
200
+ let enabled = false
201
+ let ignored = new Set<string>()
202
+ let collected: Diagnostic[] = []
203
+ let listeners: Array<(d: Diagnostic) => void> = []
204
+ let checks: DiagnosticCheck[] = []
205
+
206
+ export function resolveDiagnosticsMode(): DiagnosticsMode {
207
+ mode = explicitMode || ((globalThis as any).__SYGNAL_DEV__ === true ? 'warn' : 'off')
208
+ enabled = mode !== 'off'
209
+ return mode
210
+ }
211
+
212
+ export function configureDiagnostics(options: DiagnosticsOptions = {}): void {
213
+ if ('mode' in options) explicitMode = options.mode
214
+ if (options.ignore) ignored = new Set(options.ignore)
215
+ resolveDiagnosticsMode()
216
+ }
217
+
218
+ /** Internal: the explicit configuration (not the resolved mode), so it can be restored exactly. */
219
+ export function _getDiagnosticsConfig(): { mode: DiagnosticsMode | undefined, ignore: string[] } {
220
+ return { mode: explicitMode, ignore: [...ignored] }
221
+ }
222
+
223
+ export function getDiagnosticsMode(): DiagnosticsMode {
224
+ return mode
225
+ }
226
+
227
+ export function isDiagnosticsEnabled(): boolean {
228
+ return enabled
229
+ }
230
+
231
+ const nameOf = (c: DiagnosticDetails['component']) => (c && typeof c === 'object' ? c.name : c) || undefined
232
+ const sentence = (s: string) => /[.!?]$/.test(s) ? s : s + '.'
233
+
234
+ export function formatDiagnostic(code: string, details: DiagnosticDetails): string {
235
+ const name = nameOf(details.component)
236
+ return `[Sygnal ${code}] ${name ? name + ': ' : ''}${sentence(details.message)}` +
237
+ (details.fix ? ' ' + sentence(details.fix) : '') + ' ' + docsUrlFor(code)
238
+ }
239
+
240
+ export function report(code: string, details: DiagnosticDetails): Diagnostic | undefined {
241
+ if (!enabled || ignored.has(code)) return
242
+ const severity = details.severity || CODE_SEVERITY[code] || 'warn'
243
+ const d: Diagnostic = {
244
+ code,
245
+ severity,
246
+ component: nameOf(details.component),
247
+ message: details.message,
248
+ fix: details.fix,
249
+ data: details.data,
250
+ docsUrl: docsUrlFor(code),
251
+ get text() { return formatDiagnostic(code, this) },
252
+ timestamp: Date.now(),
253
+ }
254
+ if (collected.push(d) > 500) collected.shift()
255
+ listeners.forEach(cb => { try { cb(d) } catch (_) {} })
256
+ if (severity !== 'info') {
257
+ if (mode === 'error') throw new DiagnosticError(d)
258
+ if (mode === 'warn') console[severity](d.text)
259
+ }
260
+ return d
261
+ }
262
+
263
+ export function getDiagnostics(): Diagnostic[] {
264
+ return collected.slice()
265
+ }
266
+
267
+ export function clearDiagnostics(): void {
268
+ collected = []
269
+ }
270
+
271
+ export function onDiagnostic(cb: (d: Diagnostic) => void): () => void {
272
+ listeners = [...listeners, cb]
273
+ return () => { listeners = listeners.filter(l => l !== cb) }
274
+ }
275
+
276
+ export function registerCheck(check: DiagnosticCheck): () => void {
277
+ checks = [...checks, check]
278
+ return () => { checks = checks.filter(c => c !== check) }
279
+ }
280
+
281
+ type HookName = Exclude<keyof DiagnosticCheck, 'id'>
282
+
283
+ const defaultAsyncThrow = (err: any): void => {
284
+ const raise = () => { throw err }
285
+ typeof queueMicrotask === 'function' ? queueMicrotask(raise) : setTimeout(raise)
286
+ }
287
+ let asyncThrow = defaultAsyncThrow
288
+
289
+ /** Test seam: replace the async rethrow used for 'error'-mode diagnostics raised in hooks. */
290
+ export function _setAsyncThrow(fn?: (err: any) => void): void {
291
+ asyncThrow = fn || defaultAsyncThrow
292
+ }
293
+
294
+ const hook = (name: HookName) => (component: any, ...args: any[]): void => {
295
+ for (const check of checks) {
296
+ if (!enabled && !check.always) continue
297
+ try {
298
+ (check[name] as any)?.(component, ...args)
299
+ } catch (err: any) {
300
+ // Never throw into the stream pipeline: 'error'-mode diagnostics (also a
301
+ // SYG900 escalated by 'error' mode) are rethrown asynchronously.
302
+ try {
303
+ if (err instanceof DiagnosticError) throw err
304
+ report('SYG900', {
305
+ component,
306
+ message: `Diagnostics check '${check.id}' threw in ${name}: ${err?.message}`,
307
+ data: { check: check.id, hook: name, error: err },
308
+ })
309
+ } catch (e) {
310
+ asyncThrow(e)
311
+ }
312
+ }
313
+ }
314
+ }
315
+
316
+ export const onIntent: (component: any, actionNames: string[], selectorsUsed?: string[]) => void = hook('onIntent')
317
+ export const onModel: (component: any, modelMap: Record<string, string[]>) => void = hook('onModel')
318
+ export const onRender: (component: any, rootVnode: any) => void = hook('onRender')
319
+ export const onReducer: (component: any, action: string, prevState: any, nextState: any, sinkName: string) => void = hook('onReducer')
320
+ export const onDispose: (component: any) => void = hook('onDispose')
321
+ export const onSelector: (domSource: any, selector: string) => void = hook('onSelector')
322
+ export const onBusEmit: (type: string, emitterName?: string) => void = hook('onBusEmit')
323
+ export const onBusSelect: (type: string | string[] | undefined) => void = hook('onBusSelect')
324
+
325
+ /**
326
+ * (PLAN-2 E2) The sources object a component's intent is called with: `component.sources`,
327
+ * wrapped by every active check with a `sources` hook (the dev entry's SYG609 check,
328
+ * renderComponent's fake sources). Without such a check it is `component.sources` itself.
329
+ */
330
+ export function sourcesFor(component: any): any {
331
+ let s = component.sources
332
+ for (const check of checks) {
333
+ if (!check.sources || (!enabled && !check.always)) continue
334
+ try { s = check.sources(component, s) || s } catch (_) {}
335
+ }
336
+ return s
337
+ }
338
+
339
+ // Bridge for the separately bundled 'sygnal/diagnostics' checks entry.
340
+ // PLAN-4.6 R4: the hook dispatchers too, for the dev entry's core adapter (checks/next.ts)
341
+ ;(globalThis as any).__SYGNAL_DIAGNOSTICS__ = { registerCheck, report, hooks: { onIntent, onModel, onRender, onReducer, onDispose, sourcesFor, on: isDiagnosticsEnabled } }
342
+
343
+ export function _resetDiagnostics(): void {
344
+ explicitMode = undefined
345
+ ignored = new Set()
346
+ collected = []
347
+ listeners = []
348
+ checks = []
349
+ asyncThrow = defaultAsyncThrow
350
+ resolveDiagnosticsMode()
351
+ }
352
+
353
+ resolveDiagnosticsMode()
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Coded console output for Sygnal's pre-existing warnings and errors
3
+ * (PLAN-1 workstream 1E).
4
+ *
5
+ * warn(code, component, message, fix?, extra?)
6
+ * error(code, component, message, fix?, extra?)
7
+ * fail(code, component, message, fix?): never
8
+ *
9
+ * `component` is a component instance (anything with `.name`), a name string,
10
+ * or undefined. `extra` (an Error, the offending value, ...) is passed to the
11
+ * console after the formatted text, as the old messages did.
12
+ *
13
+ * Unlike report(), warn()/error() keep printing when diagnostics are 'off',
14
+ * so production apps see the same messages as before (now with a code):
15
+ * - 'off' → console.warn/error(formatDiagnostic(...), extra?)
16
+ * - 'collect' → report(): collected; error severity is also printed with
17
+ * console.error (so exceptions stay visible in tests), warn isn't
18
+ * - 'warn' → report(): collected and printed once by report(); `extra`
19
+ * (e.g. the caught Error with its stack) printed after it
20
+ * - 'error' → report() throws a DiagnosticError; it is rethrown
21
+ * asynchronously so the stream pipeline that hit the problem
22
+ * keeps running (same contract as the hooks in ./index)
23
+ * - code in the ignore list → nothing printed
24
+ *
25
+ * fail() always throws an Error whose message is the formatted text and whose
26
+ * `.code` is the diagnostic code. It does not go through report(): the throw
27
+ * itself is the signal, in every mode.
28
+ *
29
+ * A call site that catches an exception and keeps running reports it with the
30
+ * core's caught() (src/core/runtime.ts: an error thrown by fail() under ITS code,
31
+ * G-027 / G-044), then the app's onError hook (callHook, PLAN-4 GS-11).
32
+ *
33
+ * `error` is also published on the core bridge
34
+ * (globalThis.__SYGNAL_DIAGNOSTICS__.error) for the separately bundled JSX
35
+ * runtime (SYG420).
36
+ *
37
+ * (This comment is attached to the type-only import below so the TypeScript
38
+ * emit drops it.)
39
+ */
40
+ import type { DiagnosticSeverity } from './codes'
41
+ import { report, formatDiagnostic, getDiagnosticsMode } from './index'
42
+
43
+ const emit = (severity: Extract<DiagnosticSeverity, 'warn' | 'error'>) =>
44
+ (code: string, component: any, message: string, fix?: string, ...extra: any[]): void => {
45
+ const details = { component, message, fix, severity, data: extra[0] }
46
+ const mode = getDiagnosticsMode()
47
+ if (mode === 'off') {
48
+ console[severity](formatDiagnostic(code, details), ...extra)
49
+ return
50
+ }
51
+ try {
52
+ const d = report(code, details)
53
+ if (d && mode === 'collect' && severity === 'error') console.error(d.text, ...extra)
54
+ else if (d && mode === 'warn' && extra.length) console[severity](...extra)
55
+ } catch (err) {
56
+ setTimeout(() => { throw err })
57
+ }
58
+ }
59
+
60
+ export const warn = emit('warn')
61
+ export const error = emit('error')
62
+
63
+ export function fail(code: string, component: any, message: string, fix?: string): never {
64
+ const err: any = new Error(formatDiagnostic(code, { component, message, fix }))
65
+ err.code = code
66
+ err.sygnal = [component, message, fix]
67
+ throw err
68
+ }
69
+
70
+ // PLAN-4 GS-11: the app's error hook (run(App, drivers, { onError })), reporting only (each app
71
+ // has its own). A throwing hook is logged once and swallowed
72
+ export const callHook = (hook: any, err: any, info: any): void => {
73
+ try { hook && hook(err, info) } catch (e) { console.error(e) }
74
+ }
75
+
76
+ ;(globalThis as any).__SYGNAL_DIAGNOSTICS__.error = error