sygnal 5.3.7 → 5.4.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 (226) hide show
  1. package/README.md +53 -38
  2. package/dist/astro/client.cjs.js +18 -8106
  3. package/dist/astro/client.cjs.js.map +1 -0
  4. package/dist/astro/client.mjs +17 -8105
  5. package/dist/astro/client.mjs.map +1 -0
  6. package/dist/astro/index.cjs.js +768 -9
  7. package/dist/astro/index.cjs.js.map +1 -0
  8. package/dist/astro/index.mjs +768 -9
  9. package/dist/astro/index.mjs.map +1 -0
  10. package/dist/astro/server.cjs.js +4 -1
  11. package/dist/astro/server.cjs.js.map +1 -0
  12. package/dist/astro/server.mjs +4 -1
  13. package/dist/astro/server.mjs.map +1 -0
  14. package/dist/diagnostics.cjs.js +1297 -0
  15. package/dist/diagnostics.cjs.js.map +1 -0
  16. package/dist/diagnostics.esm.js +1267 -0
  17. package/dist/diagnostics.esm.js.map +1 -0
  18. package/dist/index.cjs.js +2981 -1386
  19. package/dist/index.cjs.js.map +1 -0
  20. package/dist/index.d.ts +848 -111
  21. package/dist/index.esm.js +2997 -1411
  22. package/dist/index.esm.js.map +1 -0
  23. package/dist/jsx-dev-runtime.cjs.js +15 -9
  24. package/dist/jsx-dev-runtime.cjs.js.map +1 -0
  25. package/dist/jsx-dev-runtime.esm.js +15 -9
  26. package/dist/jsx-dev-runtime.esm.js.map +1 -0
  27. package/dist/jsx-runtime.cjs.js +15 -9
  28. package/dist/jsx-runtime.cjs.js.map +1 -0
  29. package/dist/jsx-runtime.esm.js +15 -9
  30. package/dist/jsx-runtime.esm.js.map +1 -0
  31. package/dist/jsx.cjs.js +15 -9
  32. package/dist/jsx.cjs.js.map +1 -0
  33. package/dist/jsx.esm.js +15 -9
  34. package/dist/jsx.esm.js.map +1 -0
  35. package/dist/sygnal.min.js +2 -1
  36. package/dist/sygnal.min.js.map +1 -0
  37. package/dist/vike/+config.cjs.js +1 -0
  38. package/dist/vike/+config.cjs.js.map +1 -0
  39. package/dist/vike/+config.js +1 -0
  40. package/dist/vike/+config.js.map +1 -0
  41. package/dist/vike/ClientOnly.cjs.js +1 -0
  42. package/dist/vike/ClientOnly.cjs.js.map +1 -0
  43. package/dist/vike/ClientOnly.mjs +1 -0
  44. package/dist/vike/ClientOnly.mjs.map +1 -0
  45. package/dist/vike/onRenderClient.cjs.js +1 -0
  46. package/dist/vike/onRenderClient.cjs.js.map +1 -0
  47. package/dist/vike/onRenderClient.mjs +1 -0
  48. package/dist/vike/onRenderClient.mjs.map +1 -0
  49. package/dist/vike/onRenderHtml.cjs.js +1 -0
  50. package/dist/vike/onRenderHtml.cjs.js.map +1 -0
  51. package/dist/vike/onRenderHtml.mjs +1 -0
  52. package/dist/vike/onRenderHtml.mjs.map +1 -0
  53. package/dist/vite/plugin.cjs.js +670 -44
  54. package/dist/vite/plugin.cjs.js.map +1 -0
  55. package/dist/vite/plugin.mjs +670 -44
  56. package/dist/vite/plugin.mjs.map +1 -0
  57. package/llms.txt +250 -0
  58. package/package.json +15 -6
  59. package/src/astro/client.ts +13 -2
  60. package/src/astro/index.d.ts +24 -1
  61. package/src/astro/index.ts +40 -9
  62. package/src/astro/server.ts +3 -1
  63. package/src/collection.ts +5 -2
  64. package/src/component.ts +375 -330
  65. package/src/cycle/dom/MainDOMSource.ts +4 -0
  66. package/src/cycle/dom/classNameModule.ts +74 -0
  67. package/src/cycle/dom/controlledInputModule.ts +33 -0
  68. package/src/cycle/dom/enrichEventStream.ts +9 -3
  69. package/src/cycle/dom/makeDOMDriver.ts +1 -2
  70. package/src/cycle/dom/mockDOMSource.ts +62 -8
  71. package/src/cycle/dom/modules.ts +5 -1
  72. package/src/cycle/state/Collection.ts +13 -3
  73. package/src/cycle/state/StateSource.ts +1 -1
  74. package/src/cycle/state/pickCombine.ts +35 -1
  75. package/src/cycle/state/withState.ts +1 -1
  76. package/src/extra/devtools.ts +8 -0
  77. package/src/extra/diagnostics/checks/collections.ts +67 -0
  78. package/src/extra/diagnostics/checks/dom.ts +241 -0
  79. package/src/extra/diagnostics/checks/events.ts +68 -0
  80. package/src/extra/diagnostics/checks/index.ts +109 -0
  81. package/src/extra/diagnostics/checks/inspect.ts +319 -0
  82. package/src/extra/diagnostics/checks/props.ts +51 -0
  83. package/src/extra/diagnostics/checks/public.d.ts +211 -0
  84. package/src/extra/diagnostics/checks/rxjsHints.ts +88 -0
  85. package/src/extra/diagnostics/checks/shared.ts +119 -0
  86. package/src/extra/diagnostics/checks/state.ts +55 -0
  87. package/src/extra/diagnostics/checks/strict.ts +112 -0
  88. package/src/extra/diagnostics/checks/wiring.ts +65 -0
  89. package/src/extra/diagnostics/codes.ts +232 -0
  90. package/src/extra/diagnostics/index.ts +328 -0
  91. package/src/extra/diagnostics/legacy.ts +59 -0
  92. package/src/extra/driverFactories.ts +106 -58
  93. package/src/extra/eventDriver.ts +4 -0
  94. package/src/extra/flatten.ts +75 -0
  95. package/src/extra/reducers.ts +12 -5
  96. package/src/extra/run.ts +11 -0
  97. package/src/extra/testing.ts +890 -180
  98. package/src/extra/xstreamExtras.ts +269 -0
  99. package/src/index.d.ts +428 -17
  100. package/src/index.ts +7 -6
  101. package/src/pragma/index.ts +14 -9
  102. package/src/switchable.ts +10 -8
  103. package/src/vike/types.ts +21 -4
  104. package/src/vite/plugin.d.ts +95 -2
  105. package/src/vite/plugin.ts +720 -54
  106. package/dist/astro/astro/client.d.ts +0 -5
  107. package/dist/astro/astro/index.d.ts +0 -16
  108. package/dist/astro/astro/server.d.ts +0 -12
  109. package/dist/astro/client.d.ts +0 -5
  110. package/dist/astro/client.esm.js +0 -4665
  111. package/dist/astro/collection.d.ts +0 -12
  112. package/dist/astro/component.d.ts +0 -22
  113. package/dist/astro/cycle/dom/BodyDOMSource.d.ts +0 -10
  114. package/dist/astro/cycle/dom/DOMSource.d.ts +0 -11
  115. package/dist/astro/cycle/dom/DocumentDOMSource.d.ts +0 -12
  116. package/dist/astro/cycle/dom/ElementFinder.d.ts +0 -8
  117. package/dist/astro/cycle/dom/EventDelegator.d.ts +0 -34
  118. package/dist/astro/cycle/dom/IsolateModule.d.ts +0 -23
  119. package/dist/astro/cycle/dom/MainDOMSource.d.ts +0 -32
  120. package/dist/astro/cycle/dom/PriorityQueue.d.ts +0 -7
  121. package/dist/astro/cycle/dom/ScopeChecker.d.ts +0 -9
  122. package/dist/astro/cycle/dom/SymbolTree.d.ts +0 -9
  123. package/dist/astro/cycle/dom/VNodeWrapper.d.ts +0 -8
  124. package/dist/astro/cycle/dom/enrichEventStream.d.ts +0 -24
  125. package/dist/astro/cycle/dom/fromEvent.d.ts +0 -6
  126. package/dist/astro/cycle/dom/index.d.ts +0 -8
  127. package/dist/astro/cycle/dom/isolate.d.ts +0 -9
  128. package/dist/astro/cycle/dom/makeDOMDriver.d.ts +0 -11
  129. package/dist/astro/cycle/dom/mockDOMSource.d.ts +0 -17
  130. package/dist/astro/cycle/dom/modules.d.ts +0 -5
  131. package/dist/astro/cycle/dom/snabbdom.d.ts +0 -22
  132. package/dist/astro/cycle/dom/styleModule.d.ts +0 -13
  133. package/dist/astro/cycle/dom/thunk.d.ts +0 -11
  134. package/dist/astro/cycle/dom/utils.d.ts +0 -8
  135. package/dist/astro/cycle/isolate/index.d.ts +0 -42
  136. package/dist/astro/cycle/run/adapt.d.ts +0 -6
  137. package/dist/astro/cycle/run/index.d.ts +0 -36
  138. package/dist/astro/cycle/run/internals.d.ts +0 -8
  139. package/dist/astro/cycle/run/types.d.ts +0 -49
  140. package/dist/astro/cycle/state/Collection.d.ts +0 -29
  141. package/dist/astro/cycle/state/StateSource.d.ts +0 -20
  142. package/dist/astro/cycle/state/index.d.ts +0 -5
  143. package/dist/astro/cycle/state/pickCombine.d.ts +0 -3
  144. package/dist/astro/cycle/state/pickMerge.d.ts +0 -3
  145. package/dist/astro/cycle/state/types.d.ts +0 -18
  146. package/dist/astro/cycle/state/withState.d.ts +0 -17
  147. package/dist/astro/extra/classes.d.ts +0 -7
  148. package/dist/astro/extra/devtools.d.ts +0 -78
  149. package/dist/astro/extra/dragDriver.d.ts +0 -20
  150. package/dist/astro/extra/driverFactories.d.ts +0 -12
  151. package/dist/astro/extra/eventDriver.d.ts +0 -9
  152. package/dist/astro/extra/exactState.d.ts +0 -1
  153. package/dist/astro/extra/hmr.d.ts +0 -17
  154. package/dist/astro/extra/logDriver.d.ts +0 -2
  155. package/dist/astro/extra/processDrag.d.ts +0 -19
  156. package/dist/astro/extra/processForm.d.ts +0 -15
  157. package/dist/astro/extra/run.d.ts +0 -13
  158. package/dist/astro/extra/xstreamCompat.d.ts +0 -5
  159. package/dist/astro/index.d.ts +0 -19
  160. package/dist/astro/index.esm.js +0 -27
  161. package/dist/astro/jsx-dev-runtime.d.ts +0 -1
  162. package/dist/astro/jsx-runtime.d.ts +0 -4
  163. package/dist/astro/jsx.d.ts +0 -2
  164. package/dist/astro/pragma/fn.d.ts +0 -7
  165. package/dist/astro/pragma/index.d.ts +0 -7
  166. package/dist/astro/pragma/is.d.ts +0 -10
  167. package/dist/astro/server.d.ts +0 -12
  168. package/dist/astro/server.esm.js +0 -25
  169. package/dist/astro/switchable.d.ts +0 -7
  170. package/dist/collection.d.ts +0 -12
  171. package/dist/component.d.ts +0 -22
  172. package/dist/cycle/dom/BodyDOMSource.d.ts +0 -10
  173. package/dist/cycle/dom/DOMSource.d.ts +0 -11
  174. package/dist/cycle/dom/DocumentDOMSource.d.ts +0 -12
  175. package/dist/cycle/dom/ElementFinder.d.ts +0 -8
  176. package/dist/cycle/dom/EventDelegator.d.ts +0 -34
  177. package/dist/cycle/dom/IsolateModule.d.ts +0 -23
  178. package/dist/cycle/dom/MainDOMSource.d.ts +0 -32
  179. package/dist/cycle/dom/PriorityQueue.d.ts +0 -7
  180. package/dist/cycle/dom/ScopeChecker.d.ts +0 -9
  181. package/dist/cycle/dom/SymbolTree.d.ts +0 -9
  182. package/dist/cycle/dom/VNodeWrapper.d.ts +0 -8
  183. package/dist/cycle/dom/enrichEventStream.d.ts +0 -24
  184. package/dist/cycle/dom/fromEvent.d.ts +0 -6
  185. package/dist/cycle/dom/index.d.ts +0 -8
  186. package/dist/cycle/dom/isolate.d.ts +0 -9
  187. package/dist/cycle/dom/makeDOMDriver.d.ts +0 -11
  188. package/dist/cycle/dom/mockDOMSource.d.ts +0 -17
  189. package/dist/cycle/dom/modules.d.ts +0 -5
  190. package/dist/cycle/dom/snabbdom.d.ts +0 -22
  191. package/dist/cycle/dom/styleModule.d.ts +0 -13
  192. package/dist/cycle/dom/thunk.d.ts +0 -11
  193. package/dist/cycle/dom/utils.d.ts +0 -8
  194. package/dist/cycle/isolate/index.d.ts +0 -42
  195. package/dist/cycle/run/adapt.d.ts +0 -6
  196. package/dist/cycle/run/index.d.ts +0 -36
  197. package/dist/cycle/run/internals.d.ts +0 -8
  198. package/dist/cycle/run/types.d.ts +0 -49
  199. package/dist/cycle/state/Collection.d.ts +0 -29
  200. package/dist/cycle/state/StateSource.d.ts +0 -20
  201. package/dist/cycle/state/index.d.ts +0 -5
  202. package/dist/cycle/state/pickCombine.d.ts +0 -3
  203. package/dist/cycle/state/pickMerge.d.ts +0 -3
  204. package/dist/cycle/state/types.d.ts +0 -18
  205. package/dist/cycle/state/withState.d.ts +0 -17
  206. package/dist/extra/classes.d.ts +0 -7
  207. package/dist/extra/devtools.d.ts +0 -78
  208. package/dist/extra/dragDriver.d.ts +0 -20
  209. package/dist/extra/driverFactories.d.ts +0 -12
  210. package/dist/extra/eventDriver.d.ts +0 -9
  211. package/dist/extra/exactState.d.ts +0 -1
  212. package/dist/extra/hmr.d.ts +0 -17
  213. package/dist/extra/logDriver.d.ts +0 -2
  214. package/dist/extra/processDrag.d.ts +0 -19
  215. package/dist/extra/processForm.d.ts +0 -15
  216. package/dist/extra/run.d.ts +0 -13
  217. package/dist/extra/xstreamCompat.d.ts +0 -5
  218. package/dist/jsx-dev-runtime.d.ts +0 -1
  219. package/dist/jsx-dev-runtime.js +0 -224
  220. package/dist/jsx-runtime.d.ts +0 -4
  221. package/dist/jsx-runtime.js +0 -224
  222. package/dist/jsx.d.ts +0 -2
  223. package/dist/pragma/fn.d.ts +0 -7
  224. package/dist/pragma/index.d.ts +0 -7
  225. package/dist/pragma/is.d.ts +0 -10
  226. package/dist/switchable.d.ts +0 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../src/vite/plugin.ts","../../src/astro/index.ts"],"sourcesContent":["/**\n * Sygnal Vite Plugin\n *\n * Auto-configures JSX, wires up HMR with state preservation and, in dev,\n * turns on Sygnal's diagnostics (runtime checks and the static checker).\n * Nothing it adds in dev reaches a production build.\n *\n * Usage:\n * import sygnal from 'sygnal/vite'\n * export default defineConfig({ plugins: [sygnal()] })\n *\n * What it does:\n * 1. Configures the automatic JSX transform with sygnal as the import source:\n * `oxc` (Vite 8), plus `esbuild` under Vite 7 and older\n * 2. Detects files that call `run()` from sygnal and auto-injects HMR wiring\n * 3. Dev mode (`vite` / `vite dev` only; never `vite build`). Into every\n * file that imports `run` from sygnal (including entries with manual HMR\n * wiring or `disableHmr`) it inserts, on an existing line:\n *\n * if (globalThis.__SYGNAL_DEV__ === undefined) globalThis.__SYGNAL_DEV__ = true;\n * import 'sygnal/diagnostics';import 'virtual:sygnal/dev';\n *\n * The flag turns on runtime diagnostics in 'warn' mode; 'sygnal/diagnostics'\n * registers the runtime checks (SYG101-106, 201, 202, 301, 401, ...);\n * 'virtual:sygnal/dev' logs static-check results in the browser console\n * (see 5). With `diagnostics: { strict: true }` the snippet also sets\n * `globalThis.__SYGNAL_STRICT__ = true` (same guard), which turns on the\n * strict (SYG5xx) runtime checks of 'sygnal/diagnostics'. The snippet goes\n * after any shebang line and directive prologue ('use strict',\n * 'use client'); line numbers are unchanged and the transform returns a\n * sourcemap. Opt out per app with `run(App, drivers, { diagnostics: 'off' })`\n * or for the whole dev server with `sygnal({ diagnostics: 'off' })`.\n * 4. `diagnostics` option. The runtime core only understands\n * `__SYGNAL_DEV__ === true` ('warn'), so another mode or an ignore list\n * is passed as run()'s own `diagnostics` option: imports of 'sygnal'\n * from the entry files above resolve to a dev-only wrapper module\n * ('\\0sygnal-dev:runtime') that re-exports sygnal with a run() that adds\n * `diagnostics: { mode, ignore }` unless the call sets `diagnostics`\n * itself. With the default ('warn', no ignore list) there is no wrapper.\n * 5. `check` option: runs sygnal-check (an optional dependency, loaded\n * lazily from the project; `strict` defaults to `diagnostics.strict`)\n * over `include` (default: the existing ones of src/, pages/ and\n * renderer/, else the project root, with a notice) when the dev\n * server starts and again after every source file change. Results go to\n * the terminal in sygnal-check's format, and to the browser as a\n * 'sygnal:check' HMR event that the dev client ('virtual:sygnal/dev')\n * logs with console.warn (non-disruptive). The dev client asks for the\n * current findings when the page loads ('sygnal:check:request'), and only\n * that client is answered; after a source change the new findings go to\n * every connected client, and only when they changed. Error-severity\n * findings also open Vite's error overlay (`overlay: false`: never).\n * sygnal-check's codes are currently all warnings or info, so in practice\n * everything goes to the console. Warnings never use the overlay: while\n * one is open Vite's client reloads the page on the next HMR update\n * (`overlay: 'warn'` is treated as 'error', with a notice). The dev\n * client closes a sygnal-check overlay before each update, and the\n * server sends it again after the re-check, so it never causes a reload\n * and doesn't go stale. A missing sygnal-check is skipped silently; a\n * checker that throws only logs a warning.\n * 6. Vitest (process.env.VITEST): appends the package's 'sygnal/diagnostics'\n * ESM file to `test.setupFiles` (merged with a string or array value;\n * not added twice), so renderComponent tests get the runtime checks.\n * Its directory is added to the resolved `server.fs.allow` (G-050):\n * in jsdom / happy-dom environments Vitest loads setup files through\n * Vite's /@fs/ URLs, which a linked sygnal outside the workspace would\n * otherwise fail. Opt out with `vitestSetup: false`. Under Vitest the transform adds\n * nothing (no flags, HMR wiring, run() wrapper, dev client or checker):\n * a __SYGNAL_DEV__ / __SYGNAL_STRICT__ flag set by one test file would\n * leak into later test files of the same worker, and renderComponent()\n * manages the diagnostics modes itself.\n * 7. Vike and Astro (G-014): the app is started by sygnal's own client\n * entry, which user code doesn't import. Client-side imports of\n * 'sygnal/vike/onRenderClient' resolve to a dev wrapper that sets the\n * flag and loads the checks first. Astro resolves its renderer entry on\n * the server and the browser loads the file itself, so the same snippet\n * is added to sygnal's 'astro/client' file by the transform. That file\n * imports the public 'sygnal' entry (one shared core, B-019), so its\n * 'sygnal' import gets the run() wrapper too: every `diagnostics` mode\n * and ignore list works for islands. The sygnal/astro integration adds\n * this plugin in `astro dev`.\n *\n * Why not Vite's `define`? Vite's dependency optimizer does not apply user\n * `define` replacements to pre-bundled dependencies (only process.env.NODE_ENV),\n * so a `define` would never reach sygnal's own code when sygnal is pre-bundled.\n * Vite's client does copy `define` entries onto globalThis at runtime, but only\n * when `/@vite/client` is loaded (not under SSR or Vitest, where it would also\n * switch diagnostics on for every test run). Injecting the flag into the\n * entry file that calls run() is deterministic and scoped to the dev app; it\n * runs before run() is called, which is when the diagnostics mode is resolved.\n *\n * The HMR transform finds the pattern:\n * import { run } from 'sygnal'\n * import App from './App.jsx'\n * run(App)\n *\n * And appends:\n * if (import.meta.hot) {\n * import.meta.hot.accept('./App.jsx', __sygnal.hmr)\n * import.meta.hot.dispose(__sygnal.dispose)\n * }\n *\n * HMR wiring is only added for a recognized top-level (column 0) run()\n * statement whose result reference is actually defined (see RUN_CALL_RE). It\n * is skipped — the dev flag is still injected — for any other shape (e.g.\n * `app = run(App)`, nested or indented calls), for test files (*.test.*,\n * *.spec.*) and under Vitest (process.env.VITEST).\n */\n// Node built-ins (the plugin runs in Node). The package has no @types/node.\n// @ts-ignore\nimport fs from 'node:fs'\n// @ts-ignore\nimport path from 'node:path'\n// @ts-ignore\nimport { createRequire } from 'node:module'\n// @ts-ignore\nimport { pathToFileURL } from 'node:url'\n\nconst nodeProcess: any = (globalThis as any).process\n\nexport type DiagnosticsMode = 'off' | 'collect' | 'warn' | 'error'\n\nexport interface DiagnosticsPluginOptions {\n /** Runtime diagnostics mode in dev. @default 'warn' */\n mode?: DiagnosticsMode\n /** Strict (canonical-form, SYG5xx) runtime checks: sets globalThis.__SYGNAL_STRICT__. @default false */\n strict?: boolean\n /** Diagnostic codes to drop, e.g. ['SYG105'] */\n ignore?: string[]\n}\n\nexport interface CheckPluginOptions {\n /** Also run sygnal-check's strict (SYG5xx) rules. @default `diagnostics.strict` */\n strict?: boolean\n /**\n * Files, directories or globs to check, relative to the Vite root.\n * @default the existing ones of ['src', 'pages', 'renderer'], else the project root\n */\n include?: string[]\n /** Codes to drop. @default the `diagnostics` ignore list */\n ignore?: string[]\n /**\n * Error-severity findings also open Vite's error overlay ('error', the\n * default); false: never. All findings are logged in the terminal and the\n * browser console. Warnings never use the overlay (Vite reloads the page on\n * the next update while one is open): 'warn' is accepted but treated as\n * 'error'. sygnal-check currently reports no error-severity codes.\n * @default 'error'\n */\n overlay?: 'error' | 'warn' | false\n}\n\nexport interface SygnalPluginOptions {\n /**\n * Disable automatic JSX configuration.\n * Set to true if you want to configure JSX yourself.\n * @default false\n */\n disableJsx?: boolean\n\n /**\n * Disable automatic HMR wiring.\n * Set to true if you want to handle HMR manually.\n * @default false\n */\n disableHmr?: boolean\n\n /**\n * Runtime diagnostics in dev (`vite`, not `vite build`): a mode, or\n * { mode, strict, ignore }. 'off' injects nothing. A `diagnostics` option\n * passed to run() itself still wins.\n * @default 'warn'\n */\n diagnostics?: DiagnosticsMode | DiagnosticsPluginOptions\n\n /**\n * Run sygnal-check in dev on startup and on file changes. Skipped silently\n * when sygnal-check isn't installed.\n * @default true\n */\n check?: boolean | CheckPluginOptions\n\n /**\n * Under Vitest, add 'sygnal/diagnostics' to `test.setupFiles` so tests get\n * the runtime checks.\n * @default true\n */\n vitestSetup?: boolean\n}\n\n// Virtual modules (dev server only)\nconst DEV_CLIENT = 'virtual:sygnal/dev'\nconst DEV_CLIENT_ID = '\\0' + DEV_CLIENT\nconst RUNTIME_ID = '\\0sygnal-dev:runtime'\nconst VIKE_CLIENT = 'sygnal/vike/onRenderClient'\nconst VIKE_CLIENT_ID = '\\0sygnal-dev:vike-client'\nconst CHECK_EVENT = 'sygnal:check'\n// Sent by the dev client when it loads: the server answers that client only\nconst CHECK_REQUEST = 'sygnal:check:request'\nconst OVERLAY_PLUGIN = 'sygnal-check'\n// Register the runtime checks with the core that loaded last (see the Vike wrapper)\nconst REINSTALL_IMPORT = `import { installChecks as __sygnalInstallChecks } from 'sygnal/diagnostics';`\nconst REINSTALL_CALL = 'try { __sygnalInstallChecks() } catch (e) { console.warn(e) }\\n'\n\nexport default function sygnal(options: SygnalPluginOptions = {}) {\n const { disableJsx = false, disableHmr = false, vitestSetup = true } = options\n const diagnostics = normalizeDiagnostics(options.diagnostics)\n const devOn = diagnostics.mode !== 'off'\n // A mode other than the flag's 'warn', or an ignore list, needs run()'s option\n const wrapRun = devOn && (diagnostics.mode !== 'warn' || diagnostics.ignore.length > 0)\n let isServe = false\n let isVitest = false\n let root: string = nodeProcess.cwd()\n // Files whose `import ... from 'sygnal'` resolves to the run() wrapper\n const runtimeImporters = new Set<string>()\n // Statements run before the app starts: dev flag (+ strict flag)\n const flags = DEV_FLAG + (diagnostics.strict ? STRICT_FLAG : '')\n const devImports = `import 'sygnal/diagnostics';import '${DEV_CLIENT}';`\n let astroClient: Set<string> | undefined\n\n return {\n name: 'vite-plugin-sygnal',\n\n config(this: any, config: any, env: { command: string }) {\n isServe = env.command === 'serve'\n isVitest = !!nodeProcess?.env?.VITEST\n root = config?.root ? path.resolve(config.root) : nodeProcess.cwd()\n\n const result: any = {\n // Ensure sygnal is bundled for SSR rather than externalized.\n // Without this, Node fails to resolve sygnal's exports from\n // Vike's server chunks in production builds.\n ssr: {\n noExternal: ['sygnal'],\n },\n }\n\n if (!disableJsx) {\n result.oxc = {\n jsx: {\n runtime: 'automatic' as const,\n importSource: 'sygnal',\n },\n }\n // Vite 7 and older (Astro 6, Vitest on Vite 7) compile JSX with\n // esbuild and ignore `oxc` (B-027); Vite 8 warns about `esbuild`\n // from a plugin, so it is only set below Vite 8.\n if (viteMajor(this, root) < 8) {\n result.esbuild = { jsx: 'automatic', jsxImportSource: 'sygnal' }\n }\n // Vite 8's dependency scanner doesn't use the `oxc` options: without\n // this it compiles JSX for React, fails to resolve\n // react/jsx-dev-runtime and skips pre-bundling (a reload on first load).\n if (isServe && !isVitest) {\n result.optimizeDeps = { rolldownOptions: { transform: { jsx: { runtime: 'automatic', importSource: 'sygnal' } } } }\n }\n }\n\n if (isVitest) {\n if (vitestSetup) {\n const setup = diagnosticsSetupFile(root)\n const existing = ([] as string[]).concat(config?.test?.setupFiles || [])\n const loaded = existing.some(f => typeof f === 'string' &&\n (f === 'sygnal/diagnostics' || (!!setup && path.resolve(root, f) === setup)))\n // Vite merges arrays (and a string with an array) by concatenation\n if (setup && !loaded) result.test = { setupFiles: [setup] }\n }\n } else if (isServe && devOn && sygnalInNodeModules(root)) {\n // The dependency scan reads the original sources, which don't import\n // the checks entry: pre-bundle it with sygnal so the first page load\n // doesn't trigger a re-optimization. Only for an installed sygnal: a\n // linked one is served from source, and pre-bundling the checks alone\n // would give them their own copy of the core.\n result.optimizeDeps = { ...result.optimizeDeps, include: ['sygnal/diagnostics'] }\n }\n\n return result\n },\n\n configResolved(config: any) {\n if (config?.root) root = config.root\n // G-050: Vitest loads setup files by URL (/@fs/...) in browser-like\n // environments (jsdom, happy-dom), and Vite refuses files outside\n // server.fs.allow, which is the project's workspace by default. A linked\n // (or hoisted) sygnal lives outside it, so allow its setup file's\n // directory. The resolved list already holds Vite's defaults.\n if (isVitest) {\n const setup = diagnosticsSetupFile(root)\n const allow = config?.server?.fs?.allow\n if (setup && Array.isArray(allow)) {\n const dir = path.dirname(setup)\n const inside = (base: string) => {\n const rel = path.relative(path.resolve(base), dir)\n return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel))\n }\n if (!allow.some(inside)) allow.push(dir)\n }\n }\n },\n\n resolveId: {\n order: 'pre' as const,\n async handler(this: any, source: string, importer: string | undefined, opts: any) {\n if (!isServe || isVitest) return null\n if (source === DEV_CLIENT) return DEV_CLIENT_ID\n if (source === 'sygnal' && importer && wrapRun && runtimeImporters.has(cleanId(importer))) {\n return RUNTIME_ID\n }\n if (source === VIKE_CLIENT && devOn && !opts?.ssr) {\n if (importer !== VIKE_CLIENT_ID) return VIKE_CLIENT_ID\n // The wrapper's own import of the real entry: resolve it normally.\n // The real Vike client's run() then gets the run() wrapper too, when\n // it is served unbundled (a pre-bundled copy stays in 'warn' mode).\n const real = await this.resolve(source, importer, { ...opts, skipSelf: true })\n if (real && wrapRun) runtimeImporters.add(cleanId(real.id))\n return real\n }\n return null\n },\n },\n\n load(id: string) {\n if (id === DEV_CLIENT_ID) return devClientModule()\n if (id === RUNTIME_ID) return runtimeModule(diagnostics)\n // The checks register again once the real entry has loaded: a\n // pre-bundled copy of it can carry its own copy of the Sygnal core\n // (e.g. with a linked sygnal), which then holds the diagnostics bridge.\n if (id === VIKE_CLIENT_ID) {\n return `${devImports}${REINSTALL_IMPORT}\\nexport * from '${VIKE_CLIENT}';\\n${flags}\\n${REINSTALL_CALL}`\n }\n return null\n },\n\n configureServer(server: any) {\n if (isVitest || options.check === false) return\n const checkOptions = typeof options.check === 'object' && options.check ? options.check : {}\n // Deferred: the dev server doesn't wait for the first check\n const checkDefaults = { strict: diagnostics.strict, ignore: diagnostics.ignore }\n setTimeout(() => {\n startChecker(server, root, checkOptions, checkDefaults, options.check !== undefined)\n .catch(err => server?.config?.logger?.warn?.(`[sygnal] sygnal-check could not start: ${err?.message || err}`))\n }, 0)\n },\n\n transform(code: string, id: string, opts?: { ssr?: boolean }) {\n if (!isServe) return null\n\n // sygnal/astro/client (Astro islands): flags + checks first. It imports\n // the public 'sygnal' entry (the app's core, B-019), which resolves to\n // the run() wrapper when the diagnostics option needs it.\n if (devOn && !isVitest && !opts?.ssr) {\n astroClient = astroClient || astroClientFiles(root)\n if (astroClient.has(cleanId(id))) {\n if (wrapRun) runtimeImporters.add(cleanId(id))\n return withSourcemap(code, [[0, flags + devImports]], '', id)\n }\n }\n\n // Only transform JS/TS/JSX/TSX files\n if (!/\\.[jt]sx?$/.test(id)) return null\n // Skip node_modules\n if (id.includes('node_modules')) return null\n // Must import run from sygnal\n if (!code.includes('sygnal')) return null\n\n // Match against the code with comments blanked out (same offsets), so\n // e.g. `// run(App)` or a commented-out import is never matched.\n const noComments = blankOut(code, false)\n\n // Find: import { run, ... } from 'sygnal'\n const runImportRe = /import\\s+\\{[^}]*\\brun\\b[^}]*\\}\\s+from\\s+['\"]sygnal['\"]/\n if (!runImportRe.test(noComments)) return null\n\n // Dev snippet: injected into every file that imports run() — also when\n // HMR wiring below is skipped. Inserted after any shebang line and\n // directive prologue, without adding a line. Nothing under Vitest: a\n // global flag set by one test file would leak dev/strict mode into the\n // later test files of the same worker; there the checks come from\n // test.setupFiles and renderComponent() manages the modes.\n const inserts: Array<[number, string]> = []\n if (devOn && !isVitest) {\n inserts.push(flagInsertion(code, flags + devImports))\n if (wrapRun) runtimeImporters.add(cleanId(id))\n }\n const done = (tail = '') => (inserts.length || tail ? withSourcemap(code, inserts, tail, id) : null)\n\n // Skip HMR wiring if disabled, in tests, or already manually wired\n if (disableHmr || isVitest || /\\.(test|spec)\\.[jt]sx?$/.test(id)) return done()\n if (noComments.includes('import.meta.hot')) return done()\n\n // Strings and template literals blanked out too: a statement-level match only\n const runCall = RUN_CALL_RE.exec(blankOut(code, true))\n if (!runCall) return done()\n const [, binding, componentName] = runCall\n\n // Find the import path for this component\n // Handles: import App from './App.jsx'\n // import App from \"./App\"\n const componentImportRe = new RegExp(\n `import\\\\s+${componentName.replace(/\\$/g, '\\\\$')}\\\\s+from\\\\s+['\"]([^'\"]+)['\"]`\n )\n const componentImportMatch = noComments.match(componentImportRe)\n if (!componentImportMatch) return done()\n const componentPath = componentImportMatch[1]\n\n // Pattern 3: bare run(App, ...) — no result captured → const __sygnal = run(\n if (!binding) {\n inserts.push([runCall.index, 'const __sygnal = '])\n return done(hmrBlock(componentPath, '__sygnal.hmr', '__sygnal.dispose'))\n }\n\n // Pattern 2: const app = run(App, ...)\n if (binding[0] !== '{') {\n return done(hmrBlock(componentPath, `${binding}.hmr`, `${binding}.dispose`))\n }\n\n // Pattern 1: const { hmr, dispose, ... } = run(App, ...) — only when both\n // are bound under their own names (a rename would leave them undefined)\n const names = binding.slice(1, -1).split(',').map(s => s.trim())\n if (names.includes('hmr') && names.includes('dispose')) {\n return done(hmrBlock(componentPath, 'hmr', 'dispose'))\n }\n return done()\n },\n }\n}\n\n/**\n * Major version of the running Vite: from the plugin context (this.meta,\n * Vite 7+), else from the vite package the project resolves. Infinity when\n * unknown (treated as Vite 8+: no `esbuild` option).\n */\nfunction viteMajor(ctx: any, root: string): number {\n const fromMeta = ctx?.meta?.viteVersion\n if (typeof fromMeta === 'string') return parseInt(fromMeta, 10)\n if (ctx?.meta?.rolldownVersion) return 8\n try {\n const req = createRequire(path.join(root, 'package.json'))\n const v = JSON.parse(fs.readFileSync(req.resolve('vite/package.json'), 'utf8')).version\n const major = parseInt(v, 10)\n if (major > 0) return major\n } catch (_) {}\n return Infinity\n}\n\ninterface NormalizedDiagnostics { mode: DiagnosticsMode, strict: boolean, ignore: string[] }\n\nconst MODES: DiagnosticsMode[] = ['off', 'collect', 'warn', 'error']\n\nfunction normalizeDiagnostics(value: SygnalPluginOptions['diagnostics']): NormalizedDiagnostics {\n const o: DiagnosticsPluginOptions = typeof value === 'string' ? { mode: value } : value || {}\n const mode = o.mode === undefined ? 'warn' : o.mode\n if (!MODES.includes(mode)) {\n throw new Error(`[vite-plugin-sygnal] diagnostics mode must be one of ${MODES.map(m => `'${m}'`).join(', ')}; got ${JSON.stringify(mode)}`)\n }\n return { mode, strict: !!o.strict, ignore: Array.isArray(o.ignore) ? o.ignore.map(String) : [] }\n}\n\n/** Module id without a query or hash. */\nfunction cleanId(id: string): string {\n return id.replace(/[?#].*$/, '')\n}\n\n/** 'virtual:sygnal/dev': logs sygnal-check results in the browser console. */\nfunction devClientModule(): string {\n // Vite's client reloads the page on the first HMR update while an error\n // overlay is open. A sygnal-check overlay is closed before each update (the\n // server sends it again after the re-check), so it never causes a reload.\n return `if (import.meta.hot) {\n let shown = 0;\n let ours = false;\n const closeOurs = () => {\n if (!ours || typeof document === 'undefined') return;\n document.querySelectorAll('vite-error-overlay').forEach((n) => n.close ? n.close() : n.remove());\n ours = false;\n };\n import.meta.hot.on('vite:error', (payload) => {\n ours = !!(payload && payload.err && payload.err.plugin === '${OVERLAY_PLUGIN}');\n });\n import.meta.hot.on('vite:beforeUpdate', closeOurs);\n import.meta.hot.on('${CHECK_EVENT}', (payload) => {\n const list = (payload && payload.diagnostics) || [];\n if (!list.some((d) => d.severity === 'error')) closeOurs();\n if (!list.length) {\n if (shown) console.info('[sygnal-check] all findings resolved');\n shown = 0;\n return;\n }\n shown = list.length;\n for (const d of list) console[d.severity === 'error' ? 'error' : 'warn']('[sygnal-check] ' + d.text);\n console.info('[sygnal-check] ' + payload.summary);\n });\n import.meta.hot.send('${CHECK_REQUEST}');\n}\n`\n}\n\n/** '\\0sygnal-dev:runtime': sygnal with a run() that adds the plugin's diagnostics option. */\nfunction runtimeModule(d: NormalizedDiagnostics): string {\n const option = JSON.stringify({ mode: d.mode, ignore: d.ignore })\n return `import { run as __run } from 'sygnal';\nexport * from 'sygnal';\nexport function run(app, drivers, options) {\n if (options && options.diagnostics !== undefined) return __run(app, drivers, options);\n return __run(app, drivers, Object.assign({}, options, { diagnostics: ${option} }));\n}\n`\n}\n\n/** Directory of the 'sygnal' package the project resolves, or undefined. */\nfunction sygnalPackageDir(root: string): string | undefined {\n try {\n const req = createRequire(path.join(root, 'package.json'))\n let dir = path.dirname(req.resolve('sygnal'))\n while (dir !== path.dirname(dir)) {\n const pkgFile = path.join(dir, 'package.json')\n if (fs.existsSync(pkgFile) && JSON.parse(fs.readFileSync(pkgFile, 'utf8')).name === 'sygnal') return dir\n dir = path.dirname(dir)\n }\n } catch (_) {}\n return undefined\n}\n\n/** Real paths of sygnal's 'astro/client' ESM file. */\nfunction astroClientFiles(root: string): Set<string> {\n const files = new Set<string>()\n const dir = sygnalPackageDir(root)\n if (!dir) return files\n try {\n const pkg = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8'))\n const entry = pkg.exports?.['./astro/client']\n const rel = typeof entry === 'string' ? entry : entry?.import\n if (typeof rel !== 'string') return files\n const file = path.resolve(dir, rel)\n files.add(file.split(path.sep).join('/'))\n files.add(fs.realpathSync(file).split(path.sep).join('/'))\n } catch (_) {}\n return files\n}\n\nfunction sygnalInNodeModules(root: string): boolean {\n const dir = sygnalPackageDir(root)\n if (!dir) return false\n try {\n return fs.realpathSync(dir).split(path.sep).includes('node_modules')\n } catch (_) {\n return false\n }\n}\n\n/**\n * Absolute path of the ESM build of 'sygnal/diagnostics' (its \"import\"\n * condition), so the checks share the core instance the tests import.\n */\nfunction diagnosticsSetupFile(root: string): string | undefined {\n const dir = sygnalPackageDir(root)\n if (!dir) return undefined\n try {\n const pkg = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8'))\n const entry = pkg.exports?.['./diagnostics']\n const rel = typeof entry === 'string' ? entry : entry?.import?.default || entry?.import || entry?.default\n if (typeof rel !== 'string') return undefined\n const file = path.resolve(dir, rel)\n return fs.existsSync(file) ? file : undefined\n } catch (_) {\n return undefined\n }\n}\n\n/** Load sygnal-check from the project (optional dependency); undefined when it is missing. */\nasync function loadSygnalCheck(root: string): Promise<any> {\n try {\n const file = createRequire(path.join(root, 'package.json')).resolve('sygnal-check')\n return await import(/* @vite-ignore */ pathToFileURL(file).href)\n } catch (_) {}\n try {\n const name = 'sygnal-check'\n return await import(/* @vite-ignore */ name)\n } catch (_) {\n return undefined\n }\n}\n\nconst SOURCE_RE = /\\.[cm]?[jt]sx?$/\n\n/** sygnal-check's one-line format: `file:line:col CODE [severity] Component: message (fix)` */\nfunction formatLine(d: any): string {\n const where = d.file ? `${d.file}:${d.line}:${d.column}` : '<sygnal-check>'\n const sev = d.severity === 'warn' ? '' : ` [${d.severity}]`\n return `${where} ${d.code}${sev} ${d.component ? d.component + ': ' : ''}${d.message}${d.fix ? ` (${d.fix})` : ''}`\n}\n\n// Source directories checked by default, those that exist (Vike apps use\n// pages/ and renderer/, often without src/)\nconst DEFAULT_INCLUDE = ['src', 'pages', 'renderer']\n\n/**\n * What sygnal-check checks: `include` when given, else the existing default\n * directories, else the project root (sygnal-check skips node_modules, dist\n * and other build output). Logs one notice when the default finds no\n * directory, or when none of the given paths exists, so an empty check is\n * never a silent all-clear.\n */\nfunction checkInclude(root: string, include: string[] | undefined, notice: (m: string) => void): string[] {\n const exists = (p: string) => /[*?[{]/.test(p) || fs.existsSync(path.resolve(root, p))\n if (include && include.length) {\n if (!include.some(exists)) notice(`[sygnal] sygnal-check: none of check.include (${include.join(', ')}) exists under ${root}, so nothing is checked`)\n return include\n }\n const dirs = DEFAULT_INCLUDE.filter(exists)\n if (dirs.length) return dirs\n notice(`[sygnal] sygnal-check: no ${DEFAULT_INCLUDE.join('/, ')}/ directory under ${root}; checking the project root (set check.include to choose)`)\n return ['.']\n}\n\n/** Run sygnal-check now and after source changes; report to the terminal and the browser. */\nasync function startChecker(server: any, root: string, opts: CheckPluginOptions,\n defaults: { strict: boolean, ignore: string[] }, explicit: boolean) {\n const mod = await loadSygnalCheck(root)\n const logger = server?.config?.logger || console\n if (!mod || typeof mod.check !== 'function') {\n if (explicit) logger.info('[sygnal] sygnal-check is not installed, so static checks are off (npm i -D sygnal-check)')\n return\n }\n const include = checkInclude(root, opts.include, (m: string) => logger.info(m))\n const ignore = opts.ignore || defaults.ignore\n const strict = opts.strict === undefined ? defaults.strict : !!opts.strict\n // Only error-severity findings open Vite's overlay: while an overlay is open\n // Vite's client reloads the page on the first HMR update, so warnings stay\n // in the terminal and the browser console. overlay: 'warn' is treated as\n // 'error' (with a one-time notice).\n if (opts.overlay === 'warn') {\n logger.info(\"[sygnal] check.overlay: 'warn' is treated as 'error': warnings go to the browser console, not Vite's error overlay (an open overlay makes Vite reload the page on the next update)\")\n }\n const overlay = opts.overlay !== false\n let lastKey: string | undefined\n let payload: any = null\n let overlayErr: any = null\n\n const event = () => ({ type: 'custom', event: CHECK_EVENT, data: payload })\n const errorMessage = () => ({ type: 'error', err: overlayErr })\n // Every connected client (after a source change). An error with no client\n // connected would be buffered by Vite and shown on the next page load.\n const broadcast = (findingsChanged: boolean) => {\n const ws = server.ws\n if (!ws || typeof ws.send !== 'function') return\n try {\n if (findingsChanged && payload) ws.send(event())\n if (overlayErr && !(ws.clients && ws.clients.size === 0)) ws.send(errorMessage())\n } catch (_) {}\n }\n\n const run = (initial = false) => {\n let diags: any[]\n try {\n diags = mod.check(include, { cwd: root, strict, ignore })\n } catch (err: any) {\n logger.warn(`[sygnal] sygnal-check failed: ${err?.message || err}`, { timestamp: true })\n return\n }\n const shown = diags.filter(d => d.severity !== 'info')\n const lines = shown.map(formatLine)\n const key = lines.join('\\n')\n const changed = key !== lastKey\n if (changed) {\n lastKey = key\n const text: string = typeof mod.formatDiagnostics === 'function'\n ? mod.formatDiagnostics(diags)\n : lines.concat(`sygnal-check: ${shown.length} finding(s)`).join('\\n')\n const summary = text.split('\\n').pop() || ''\n if (shown.length) logger.warn(text, { timestamp: true })\n else logger.info(summary, { timestamp: true })\n payload = {\n summary,\n diagnostics: shown.map((d, i) => ({ code: d.code, severity: d.severity, file: d.file, line: d.line, column: d.column, text: lines[i] })),\n }\n const forOverlay = overlay ? shown.filter(d => d.severity === 'error') : []\n const first = forOverlay[0]\n overlayErr = first ? {\n plugin: OVERLAY_PLUGIN,\n message: forOverlay.map(formatLine).join('\\n'),\n stack: '',\n id: path.resolve(root, first.file || ''),\n loc: { file: path.resolve(root, first.file || ''), line: first.line, column: first.column },\n } : null\n }\n // The first check runs before any page is open; pages ask for the\n // findings when they load (CHECK_REQUEST). After a change the overlay is\n // sent again even when the findings are the same: the HMR update closed it.\n if (!initial) broadcast(changed)\n }\n\n run(true)\n // A page that loads (or reloads) asks for the current findings: answer\n // that client only, never every client.\n try {\n server.ws?.on?.(CHECK_REQUEST, (_data: any, client: any) => {\n try {\n if (payload) client?.send?.(event())\n if (overlayErr) client?.send?.(errorMessage())\n } catch (_) {}\n })\n } catch (_) {}\n\n let timer: any\n const onChange = (file: string) => {\n if (!SOURCE_RE.test(file) || file.split(/[\\\\/]/).includes('node_modules')) return\n clearTimeout(timer)\n timer = setTimeout(run, 100)\n }\n const watcher = server?.watcher\n if (watcher && typeof watcher.on === 'function') {\n watcher.on('change', onChange)\n watcher.on('add', onChange)\n watcher.on('unlink', onChange)\n }\n try { server.httpServer?.once?.('close', () => clearTimeout(timer)) } catch (_) {}\n}\n\nconst DEV_FLAG = 'if (globalThis.__SYGNAL_DEV__ === undefined) globalThis.__SYGNAL_DEV__ = true;'\nconst STRICT_FLAG = 'if (globalThis.__SYGNAL_STRICT__ === undefined) globalThis.__SYGNAL_STRICT__ = true;'\n\n// A top-level (column 0) run(Component, ...) statement: bare, or declaring a\n// new binding. Assignments to existing variables, nested calls and indented\n// calls (e.g. inside a function or test callback) do not match (B-007). It is\n// matched against the code with comments and strings blanked out.\nconst RUN_CALL_RE = /^(?:(?:const|let|var)\\s+(\\{[^}]*\\}|[\\w$]+)\\s*=\\s*)?run\\s*\\(\\s*([A-Z][\\w$]*)/m\n\n// Comments, string literals and template literals (a regex literal containing\n// a quote or `//` can over-blank; that only ever skips HMR wiring).\nconst COMMENT_OR_STRING_RE = /\\/\\/[^\\n]*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)|(['\"])(?:\\\\.|(?!\\1)[^\\\\\\n])*\\1?|`(?:\\\\[\\s\\S]|[^\\\\`])*`?/g\n\n/** Replace comments (and, with `strings`, string/template literals) by spaces, keeping offsets and newlines. */\nfunction blankOut(code: string, strings: boolean): string {\n return code.replace(COMMENT_OR_STRING_RE, m =>\n !strings && m[0] !== '/' ? m : m.replace(/[^\\n]/g, ' ')\n )\n}\n\n// One directive ('use strict', \"use client\", ...) with any leading whitespace\n// and comments. It must end with `;` (group 2) or at the end of its line.\nconst DIRECTIVE_RE = /(?:\\s|\\/\\/[^\\n]*|\\/\\*[\\s\\S]*?\\*\\/)*(['\"])(?:\\\\.|(?!\\1)[^\\\\\\n])*\\1(?:[ \\t]*(;)|(?=[ \\t]*(?:\\/\\/[^\\n]*|\\/\\*[^\\n]*?\\*\\/)?[ \\t]*(?:\\r?\\n|$)))/y\n\n/** Insert `text` (the dev snippet) after a shebang line and the directive prologue. */\nfunction flagInsertion(code: string, text: string): [number, string] {\n let at = code.startsWith('#!') ? (code.indexOf('\\n') + 1 || code.length) : 0\n let semicolon = true\n DIRECTIVE_RE.lastIndex = at\n let m\n while ((m = DIRECTIVE_RE.exec(code))) {\n at = DIRECTIVE_RE.lastIndex\n semicolon = !!m[2]\n }\n return [at, (semicolon ? '' : ';') + text]\n}\n\nconst B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n\nfunction vlq(n: number): string {\n let v = n < 0 ? (-n << 1) | 1 : n << 1\n let out = ''\n do {\n let digit = v & 31\n v >>>= 5\n if (v) digit |= 32\n out += B64[digit]\n } while (v)\n return out\n}\n\n/**\n * Apply single-line insertions (at offsets in the original code) plus an\n * appended tail, and build a v3 sourcemap without extra dependencies. No line\n * is added before the tail, so every original line maps to itself; on a line\n * with an insertion, the text after it maps back to its original column.\n */\nfunction withSourcemap(code: string, inserts: Array<[number, string]>, tail: string, id: string) {\n inserts.sort((a, b) => a[0] - b[0])\n let out = ''\n let last = 0\n for (const [at, text] of inserts) {\n out += code.slice(last, at) + text\n last = at\n }\n out += code.slice(last) + tail\n\n let offset = 0\n let k = 0\n let prevLine = 0\n let prevCol = 0\n const mappings = code.split('\\n').map((line, i) => {\n const segments: Array<[number, number]> = [[0, 0]] // [generated column, original column]\n let shift = 0\n while (k < inserts.length && inserts[k][0] <= offset + line.length) {\n const col = inserts[k][0] - offset\n shift += inserts[k][1].length\n segments.push([col + shift, col])\n k++\n }\n offset += line.length + 1\n let genCol = 0\n return segments.map(([gen, col]) => {\n const seg = vlq(gen - genCol) + 'A' + vlq(i - prevLine) + vlq(col - prevCol)\n genCol = gen\n prevLine = i\n prevCol = col\n return seg\n }).join(',')\n }).join(';')\n\n return {\n code: out,\n map: { version: 3, sources: [id], sourcesContent: [code], names: [] as string[], mappings },\n }\n}\n\nfunction hmrBlock(componentPath: string, hmrRef: string, disposeRef: string): string {\n return `\nif (import.meta.hot) {\n import.meta.hot.accept('${componentPath}', ${hmrRef})\n import.meta.hot.dispose(${disposeRef})\n}\n`\n}\n","import sygnalVite from '../vite/plugin'\nimport type { DiagnosticsMode, DiagnosticsPluginOptions, CheckPluginOptions } from '../vite/plugin'\n\nconst SYGNAL_RENDERER_NAME = '@sygnal/astro'\n\ninterface AstroRenderer {\n name: string;\n clientEntrypoint: string;\n serverEntrypoint: string;\n}\n\ninterface AstroConfigSetupArgs {\n addRenderer: (renderer: AstroRenderer) => void;\n updateConfig: (config: any) => void;\n command?: 'dev' | 'build' | 'preview' | 'sync';\n logger?: { warn: (message: string) => void };\n}\n\nexport interface SygnalAstroOptions {\n /**\n * Runtime diagnostics for islands in `astro dev`: a mode or\n * { mode, strict, ignore }, the same as the sygnal/vite `diagnostics`\n * option (the island client shares the app's core, B-019).\n * @default 'warn'\n */\n diagnostics?: DiagnosticsMode | DiagnosticsPluginOptions;\n /** Run sygnal-check in `astro dev` (see the sygnal/vite `check` option). @default true */\n check?: boolean | CheckPluginOptions;\n}\n\nexport default function sygnalAstroIntegration(options: SygnalAstroOptions = {}) {\n return {\n name: SYGNAL_RENDERER_NAME,\n hooks: {\n 'astro:config:setup': ({ addRenderer, updateConfig, command }: AstroConfigSetupArgs) => {\n addRenderer({\n name: SYGNAL_RENDERER_NAME,\n clientEntrypoint: 'sygnal/astro/client',\n serverEntrypoint: 'sygnal/astro/server',\n })\n\n const vite: any = {\n esbuild: {\n jsx: 'automatic',\n jsxImportSource: 'sygnal',\n },\n }\n\n // Dev mode (G-014): islands are started by sygnal/astro/client, which\n // user code never imports, so the sygnal Vite plugin wraps that entry\n // in dev to set the dev flag and load the runtime checks first. It\n // also runs sygnal-check. Nothing is added to `astro build`.\n if (command === 'dev') {\n vite.plugins = [sygnalVite({\n disableJsx: true,\n disableHmr: true,\n vitestSetup: false,\n diagnostics: options.diagnostics,\n check: options.check,\n })]\n }\n\n updateConfig({ vite })\n },\n },\n }\n}\n"],"names":["sygnalVite"],"mappings":"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"}
@@ -694,9 +694,11 @@ function check(Component) {
694
694
  }
695
695
  function renderToStaticMarkup(Component, props = {}, _slotted, _metadata) {
696
696
  try {
697
+ // Props are spread top-level by renderToString (`{ state, ...props }`);
698
+ // `props` is also passed, as on the client, for `({ state, props })` views.
697
699
  const html = renderToString(Component, {
698
700
  state: props.initialState || Component.initialState,
699
- props,
701
+ props: { ...props, props },
700
702
  });
701
703
  return { html, attrs: {} };
702
704
  }
@@ -716,3 +718,4 @@ exports.check = check;
716
718
  exports.default = server;
717
719
  exports.renderToStaticMarkup = renderToStaticMarkup;
718
720
  exports.supportsAstroStaticSlot = supportsAstroStaticSlot;
721
+ //# sourceMappingURL=server.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.cjs.js","sources":["../../src/extra/ssr.ts","../../src/astro/server.ts"],"sourcesContent":["/**\n * Server-Side Rendering utilities for Sygnal components.\n *\n * Renders Sygnal component trees to HTML strings without a browser DOM.\n * Handles sub-components, Collections, Suspense boundaries, and Portals.\n */\n\n// Void elements that must not have closing tags\nconst VOID_ELEMENTS = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr',\n])\n\n// Characters that need escaping in HTML text and attribute values\nconst ESC_MAP: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n}\n\nfunction escapeHtml(str: string): string {\n return String(str).replace(/[&<>\"']/g, (ch) => ESC_MAP[ch])\n}\n\n/**\n * Convert a CSS property name from camelCase to kebab-case.\n * E.g. \"backgroundColor\" → \"background-color\"\n * Handles vendor prefixes: \"WebkitTransform\" → \"-webkit-transform\"\n */\nfunction camelToKebab(str: string): string {\n return str\n .replace(/^(Webkit|Moz|Ms|O)/, (m) => '-' + m.toLowerCase())\n .replace(/([A-Z])/g, '-$1')\n .toLowerCase()\n}\n\n/**\n * Serialize an inline style object to a CSS string.\n */\nfunction serializeStyle(style: Record<string, any>): string {\n const parts: string[] = []\n for (const key of Object.keys(style)) {\n const val = style[key]\n if (val == null || val === '') continue\n // Skip snabbdom's delayed/remove/destroy style hooks\n if (key === 'delayed' || key === 'remove' || key === 'destroy') continue\n const cssKey = camelToKebab(key)\n parts.push(`${cssKey}: ${val}`)\n }\n return parts.join('; ')\n}\n\nexport interface RenderToStringOptions {\n /** Initial state for the root component */\n state?: any\n /** Props to pass to the root component */\n props?: Record<string, any>\n /** Context from a parent (for nested rendering) */\n context?: Record<string, any>\n /**\n * Embed serialized state in a <script> tag for client hydration.\n * When true, appends `<script>window.__SYGNAL_STATE__=...</script>`.\n * When a string, uses that as the variable name instead.\n */\n hydrateState?: boolean | string\n}\n\n/**\n * Render a Sygnal component to an HTML string.\n *\n * Calls the component's view function with the provided (or initial) state,\n * recursively renders sub-components, and serializes the VNode tree to HTML.\n *\n * ```ts\n * import { renderToString } from 'sygnal'\n *\n * const html = renderToString(App, { state: { count: 0 } })\n * // → '<div><h1>Count: 0</h1></div>'\n * ```\n */\nexport function renderToString(\n componentDef: any,\n options: RenderToStringOptions = {}\n): string {\n const {state, props = {}, context = {}, hydrateState} = options\n\n const resolvedState = state !== undefined ? state : componentDef.initialState\n\n // Build context: merge parent context with component's own context definitions\n const componentContext = componentDef.context || {}\n const mergedContext: Record<string, any> = {...context}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && resolvedState != null) {\n try {\n mergedContext[key] = contextFn(resolvedState)\n } catch (_) {}\n }\n }\n\n // Call the view function\n let vnode: any\n try {\n vnode = componentDef({\n ...props,\n state: resolvedState,\n children: props.children || [],\n slots: props.slots || {},\n context: mergedContext,\n peers: {},\n }, resolvedState, mergedContext, {})\n } catch (err: any) {\n // Error boundary\n if (typeof componentDef.onError === 'function') {\n const name = componentDef.componentName || componentDef.name || 'Component'\n try {\n vnode = componentDef.onError(err, {componentName: name})\n } catch (_) {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n if (!vnode) {\n vnode = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Process special components in the VNode tree\n vnode = processSSRTree(vnode, mergedContext, resolvedState)\n\n // Serialize to HTML\n let html = vnodeToHtml(vnode)\n\n // Optionally embed state for hydration\n if (hydrateState && resolvedState != null) {\n const varName = typeof hydrateState === 'string' ? hydrateState : '__SYGNAL_STATE__'\n const serialized = escapeHtml(JSON.stringify(resolvedState))\n html += `<script>window.${varName}=${JSON.stringify(resolvedState)}</script>`\n }\n\n return html\n}\n\n/**\n * Walk the VNode tree and recursively render sub-components,\n * handle Suspense/Portal/Transition markers, and process Collections.\n */\nfunction processSSRTree(vnode: any, context: Record<string, any>, parentState?: any): any {\n if (!vnode) return vnode\n if (typeof vnode === 'string' || vnode.text != null) return vnode\n\n const sel = vnode.sel\n\n // Fragment: no selector, recurse into children\n if (!sel && vnode.children && Array.isArray(vnode.children)) {\n vnode.children = vnode.children\n .map((c: any) => processSSRTree(c, context, parentState))\n .filter((c: any) => c != null)\n return vnode\n }\n\n // Portal: render children inline (no target container on server)\n if (sel === 'portal') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState)\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-portal': ''}},\n children: children.map((c: any) => processSSRTree(c, context, parentState)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Transition: unwrap to child (no animation on server)\n if (sel === 'transition') {\n const children = vnode.children || []\n const child = children[0]\n if (!child) return null\n return processSSRTree(child, context, parentState)\n }\n\n // Suspense: render children (SSR always shows content, not fallback)\n if (sel === 'suspense') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState)\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-suspense': 'resolved'}},\n children: children.map((c: any) => processSSRTree(c, context, parentState)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // ClientOnly: render fallback during SSR, skip children (they need a browser)\n if (sel === 'clientonly') {\n const props = vnode.data?.props || {}\n const fallback = props.fallback\n if (fallback) {\n // fallback can be a VNode or a string\n return processSSRTree(fallback, context, parentState)\n }\n // No fallback — render an empty placeholder div\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-clientonly': ''}},\n children: [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Slot: unwrap to children\n if (sel === 'slot') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState)\n return {\n sel: 'div',\n data: {},\n children: children.map((c: any) => processSSRTree(c, context, parentState)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Sub-component: render recursively\n const props = vnode.data?.props || {}\n if (props.sygnalOptions || typeof props.sygnalFactory === 'function') {\n return renderSubComponent(vnode, context, parentState)\n }\n\n // Collection: render each item\n if (sel === 'collection') {\n return renderCollection(vnode, context, parentState)\n }\n\n // Switchable: render the active component\n if (sel === 'switchable') {\n return renderSwitchable(vnode, context, parentState)\n }\n\n // Regular element: recurse into children\n if (vnode.children) {\n if (Array.isArray(vnode.children)) {\n if (vnode.children.length > 0) {\n vnode.children = vnode.children\n .map((c: any) => processSSRTree(c, context, parentState))\n .filter((c: any) => c != null)\n }\n } else if (vnode.children && typeof vnode.children === 'object') {\n // Single child object (text element)\n vnode.children = processSSRTree(vnode.children, context, parentState)\n }\n }\n\n return vnode\n}\n\n/**\n * Render a sub-component (identified by sygnalOptions or sygnalFactory in props).\n */\nfunction renderSubComponent(vnode: any, context: Record<string, any>, parentState?: any): any {\n const props = vnode.data?.props || {}\n const {sygnalOptions, sygnalFactory, ...childProps} = props\n\n // Get the component definition (view function with static properties)\n let componentDef: any\n if (sygnalOptions) {\n componentDef = sygnalOptions.view\n // Copy static properties\n if (!componentDef.initialState && sygnalOptions.initialState) {\n componentDef = Object.assign(componentDef, {\n initialState: sygnalOptions.initialState,\n model: sygnalOptions.model,\n intent: sygnalOptions.intent,\n context: sygnalOptions.context,\n onError: sygnalOptions.onError,\n calculated: sygnalOptions.calculated,\n })\n }\n } else if (sygnalFactory && sygnalFactory.componentName) {\n // Factory-created component — we can't easily extract the view from an already-wrapped factory.\n // Return a placeholder.\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-ssr': vnode.sel || 'component'}},\n children: vnode.children || [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n if (!componentDef || typeof componentDef !== 'function') {\n // Can't render — return children or empty div\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-ssr': vnode.sel || 'component'}},\n children: vnode.children || [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Determine child state via state lens\n let childState = componentDef.initialState\n const stateProp = childProps.state\n if (typeof stateProp === 'string' && parentState != null && parentState[stateProp] != null) {\n childState = parentState[stateProp]\n } else if (stateProp != null && typeof stateProp !== 'string') {\n // State passed directly\n childState = stateProp\n }\n\n // Build child context\n const childContext: Record<string, any> = {...context}\n const componentContext = componentDef.context || {}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && childState != null) {\n try {\n childContext[key] = contextFn(childState)\n } catch (_) {}\n }\n }\n\n // Extract slots from children\n const slots: Record<string, any[]> = {}\n const defaultSlotChildren: any[] = []\n const vnodeChildren = vnode.children || []\n for (const child of vnodeChildren) {\n if (child && child.sel === 'slot') {\n const slotName = child.data?.props?.name || 'default'\n if (!slots[slotName]) slots[slotName] = []\n const slotChildren = child.children || []\n slots[slotName].push(...slotChildren)\n } else {\n defaultSlotChildren.push(child)\n }\n }\n if (defaultSlotChildren.length > 0) {\n if (!slots.default) slots.default = []\n slots.default.push(...defaultSlotChildren)\n }\n\n // Call the view function\n let result: any\n try {\n result = componentDef({\n ...childProps,\n state: childState,\n children: slots.default || vnodeChildren,\n slots,\n context: childContext,\n peers: {},\n }, childState, childContext, {})\n } catch (err: any) {\n if (typeof componentDef.onError === 'function') {\n const name = componentDef.componentName || componentDef.name || 'Component'\n try {\n result = componentDef.onError(err, {componentName: name})\n } catch (_) {\n result = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n result = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n if (!result) {\n result = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Recursively process the rendered sub-tree\n return processSSRTree(result, childContext, childState)\n}\n\n/**\n * Render a Collection by iterating over the state array.\n */\nfunction renderCollection(vnode: any, context: Record<string, any>, parentState?: any): any {\n const props = vnode.data?.props || {}\n const {of: itemComponent, from, className} = props\n\n if (!itemComponent || !from || !parentState) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n const items = parentState[from]\n if (!Array.isArray(items)) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n const renderedItems = items.map((itemState: any, index: number) => {\n // Build context for this item\n const itemContext: Record<string, any> = {...context}\n const componentContext = itemComponent.context || {}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function') {\n try {\n itemContext[key] = contextFn(itemState)\n } catch (_) {}\n }\n }\n\n let itemVnode: any\n try {\n itemVnode = itemComponent({\n state: itemState,\n children: [],\n slots: {},\n context: itemContext,\n peers: {},\n }, itemState, itemContext, {})\n } catch (err: any) {\n if (typeof itemComponent.onError === 'function') {\n try {\n itemVnode = itemComponent.onError(err, {componentName: itemComponent.name || 'CollectionItem'})\n } catch (_) {\n itemVnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n itemVnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n return processSSRTree(itemVnode, itemContext, itemState)\n }).filter((v: any) => v != null)\n\n const containerData: any = {}\n if (className) {\n containerData.props = {className}\n }\n\n return {\n sel: 'div',\n data: containerData,\n children: renderedItems,\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n}\n\n/**\n * Render a Switchable by determining the active component from state.\n */\nfunction renderSwitchable(vnode: any, context: Record<string, any>, parentState?: any): any {\n const props = vnode.data?.props || {}\n const {components, active, initial} = props\n\n if (!components) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Determine which component to render\n let activeName: string | undefined\n if (typeof active === 'string') {\n // Direct name or state property\n if (components[active]) {\n activeName = active\n } else if (parentState && typeof parentState[active] === 'string') {\n activeName = parentState[active]\n }\n }\n if (!activeName && initial) {\n activeName = initial\n }\n if (!activeName) {\n activeName = Object.keys(components)[0]\n }\n\n const activeComponent = components[activeName]\n if (!activeComponent || typeof activeComponent !== 'function') {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n return renderToStringInternal(activeComponent, parentState, context)\n}\n\n/**\n * Internal helper: render a component def to a VNode (not HTML string).\n */\nfunction renderToStringInternal(componentDef: any, state: any, context: Record<string, any>): any {\n const resolvedState = state !== undefined ? state : componentDef.initialState\n\n const componentContext = componentDef.context || {}\n const mergedContext: Record<string, any> = {...context}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && resolvedState != null) {\n try {\n mergedContext[key] = contextFn(resolvedState)\n } catch (_) {}\n }\n }\n\n let vnode: any\n try {\n vnode = componentDef({\n state: resolvedState,\n children: [],\n slots: {},\n context: mergedContext,\n peers: {},\n }, resolvedState, mergedContext, {})\n } catch (err: any) {\n if (typeof componentDef.onError === 'function') {\n try {\n vnode = componentDef.onError(err, {componentName: componentDef.name || 'Component'})\n } catch (_) {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n if (!vnode) {\n vnode = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n return processSSRTree(vnode, mergedContext, resolvedState)\n}\n\n/**\n * Serialize a VNode tree to an HTML string.\n */\nfunction vnodeToHtml(vnode: any): string {\n if (vnode == null) return ''\n\n // Text node\n if (typeof vnode === 'string') return escapeHtml(vnode)\n if (vnode.text != null && !vnode.sel) return escapeHtml(String(vnode.text))\n\n // VNode with text content and a selector\n const sel = vnode.sel\n if (!sel) {\n if (vnode.text != null) return escapeHtml(String(vnode.text))\n // Fragment: no selector, but has children — concatenate child HTML\n if (vnode.children && Array.isArray(vnode.children)) {\n return vnode.children.map((c: any) => vnodeToHtml(c)).join('')\n }\n return ''\n }\n\n // Parse selector: tag#id.class1.class2\n const {tag, id, selectorClasses} = parseSelector(sel)\n\n // Build attributes from VNode data\n const attrs = buildAttributes(vnode.data || {}, id, selectorClasses)\n\n // Opening tag\n let html = `<${tag}`\n for (const [key, val] of attrs) {\n if (val === true) {\n html += ` ${key}`\n } else if (val !== false && val != null) {\n html += ` ${key}=\"${escapeHtml(String(val))}\"`\n }\n }\n html += '>'\n\n // Void elements\n if (VOID_ELEMENTS.has(tag)) {\n return html\n }\n\n // If innerHTML is set via props, use it as raw content (no escaping)\n if (vnode.data?.props?.innerHTML != null) {\n html += String(vnode.data.props.innerHTML)\n html += `</${tag}>`\n return html\n }\n\n // Children — snabbdom uses `text` for single text children (even when\n // `children` holds a text element object). Prioritize `text` when set.\n if (vnode.text != null) {\n html += escapeHtml(String(vnode.text))\n } else if (vnode.children) {\n // children can be an array or a single text element object\n const kids = Array.isArray(vnode.children) ? vnode.children : [vnode.children]\n for (const child of kids) {\n html += vnodeToHtml(child)\n }\n }\n\n html += `</${tag}>`\n return html\n}\n\n/**\n * Parse a snabbdom selector string like \"div#myId.foo.bar\" into parts.\n */\nfunction parseSelector(sel: string): {tag: string; id: string | null; selectorClasses: string[]} {\n let tag = sel\n let id: string | null = null\n const selectorClasses: string[] = []\n\n // Extract id\n const hashIdx = sel.indexOf('#')\n if (hashIdx !== -1) {\n const rest = sel.slice(hashIdx + 1)\n const dotIdx = rest.indexOf('.')\n if (dotIdx !== -1) {\n id = rest.slice(0, dotIdx)\n tag = sel.slice(0, hashIdx)\n // Classes after #id\n const classStr = rest.slice(dotIdx + 1)\n if (classStr) selectorClasses.push(...classStr.split('.'))\n } else {\n id = rest\n tag = sel.slice(0, hashIdx)\n }\n } else {\n // Extract classes from selector\n const dotIdx = sel.indexOf('.')\n if (dotIdx !== -1) {\n tag = sel.slice(0, dotIdx)\n const classStr = sel.slice(dotIdx + 1)\n if (classStr) selectorClasses.push(...classStr.split('.'))\n }\n }\n\n if (!tag) tag = 'div'\n\n return {tag, id, selectorClasses}\n}\n\n/**\n * Build an ordered list of [attrName, attrValue] from VNode data.\n */\nfunction buildAttributes(\n data: any,\n selectorId: string | null,\n selectorClasses: string[]\n): Array<[string, any]> {\n const result: Array<[string, any]> = []\n const classNames: string[] = [...selectorClasses]\n\n // From data.props (DOM properties like className, htmlFor, etc.)\n if (data.props) {\n for (const [key, val] of Object.entries(data.props)) {\n if (key === 'className') {\n if (typeof val === 'string' && val) classNames.push(val)\n } else if (key === 'htmlFor') {\n result.push(['for', val])\n } else if (key === 'innerHTML' || key === 'textContent') {\n // Skip — handled separately if needed\n } else if (key === 'sygnalOptions' || key === 'sygnalFactory') {\n // Internal — skip\n } else if (typeof val === 'boolean') {\n if (val) result.push([key, true])\n } else if (val != null) {\n result.push([key, val])\n }\n }\n }\n\n // From data.attrs (HTML attributes)\n if (data.attrs) {\n for (const [key, val] of Object.entries(data.attrs)) {\n if (key === 'class') {\n if (typeof val === 'string' && val) classNames.push(val)\n } else if (typeof val === 'boolean') {\n if (val) result.push([key, true])\n } else if (val != null) {\n result.push([key, val])\n }\n }\n }\n\n // From data.class (conditional class map: { active: true, disabled: false })\n if (data.class) {\n for (const [key, val] of Object.entries(data.class)) {\n if (val) classNames.push(key)\n }\n }\n\n // From data.dataset (data-* attributes)\n if (data.dataset) {\n for (const [key, val] of Object.entries(data.dataset)) {\n if (val != null) {\n result.push([`data-${camelToKebab(key)}`, val])\n }\n }\n }\n\n // ID (selector id takes precedence, then props/attrs)\n if (selectorId) {\n result.unshift(['id', selectorId])\n }\n\n // Class attribute\n if (classNames.length > 0) {\n const unique = [...new Set(classNames)]\n result.unshift(['class', unique.join(' ')])\n }\n\n // Style\n if (data.style && typeof data.style === 'object') {\n const styleStr = serializeStyle(data.style)\n if (styleStr) {\n result.push(['style', styleStr])\n }\n }\n\n return result\n}\n","import {renderToString} from '../extra/ssr'\n\nfunction looksLikeSygnalComponent(Component: any): boolean {\n if (typeof Component !== 'function') return false\n return Boolean(\n Component.isSygnalComponent ||\n Component.model ||\n Component.intent ||\n Component.initialState ||\n Component.componentName\n )\n}\n\nexport function check(Component: any): boolean {\n return looksLikeSygnalComponent(Component)\n}\n\nexport function renderToStaticMarkup(\n Component: any,\n props: Record<string, any> = {},\n _slotted?: any,\n _metadata?: any\n): { html: string; attrs: Record<string, any> } {\n try {\n // Props are spread top-level by renderToString (`{ state, ...props }`);\n // `props` is also passed, as on the client, for `({ state, props })` views.\n const html = renderToString(Component, {\n state: props.initialState || Component.initialState,\n props: {...props, props},\n })\n return {html, attrs: {}}\n } catch (err: any) {\n console.error('[sygnal/astro] SSR error:', err.message || err)\n return {html: '', attrs: {}}\n }\n}\n\nexport const supportsAstroStaticSlot = true\n\nexport default {\n check,\n renderToStaticMarkup,\n supportsAstroStaticSlot,\n}\n"],"names":[],"mappings":"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"}
@@ -690,9 +690,11 @@ function check(Component) {
690
690
  }
691
691
  function renderToStaticMarkup(Component, props = {}, _slotted, _metadata) {
692
692
  try {
693
+ // Props are spread top-level by renderToString (`{ state, ...props }`);
694
+ // `props` is also passed, as on the client, for `({ state, props })` views.
693
695
  const html = renderToString(Component, {
694
696
  state: props.initialState || Component.initialState,
695
- props,
697
+ props: { ...props, props },
696
698
  });
697
699
  return { html, attrs: {} };
698
700
  }
@@ -709,3 +711,4 @@ var server = {
709
711
  };
710
712
 
711
713
  export { check, server as default, renderToStaticMarkup, supportsAstroStaticSlot };
714
+ //# sourceMappingURL=server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.mjs","sources":["../../src/extra/ssr.ts","../../src/astro/server.ts"],"sourcesContent":["/**\n * Server-Side Rendering utilities for Sygnal components.\n *\n * Renders Sygnal component trees to HTML strings without a browser DOM.\n * Handles sub-components, Collections, Suspense boundaries, and Portals.\n */\n\n// Void elements that must not have closing tags\nconst VOID_ELEMENTS = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr',\n])\n\n// Characters that need escaping in HTML text and attribute values\nconst ESC_MAP: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n}\n\nfunction escapeHtml(str: string): string {\n return String(str).replace(/[&<>\"']/g, (ch) => ESC_MAP[ch])\n}\n\n/**\n * Convert a CSS property name from camelCase to kebab-case.\n * E.g. \"backgroundColor\" → \"background-color\"\n * Handles vendor prefixes: \"WebkitTransform\" → \"-webkit-transform\"\n */\nfunction camelToKebab(str: string): string {\n return str\n .replace(/^(Webkit|Moz|Ms|O)/, (m) => '-' + m.toLowerCase())\n .replace(/([A-Z])/g, '-$1')\n .toLowerCase()\n}\n\n/**\n * Serialize an inline style object to a CSS string.\n */\nfunction serializeStyle(style: Record<string, any>): string {\n const parts: string[] = []\n for (const key of Object.keys(style)) {\n const val = style[key]\n if (val == null || val === '') continue\n // Skip snabbdom's delayed/remove/destroy style hooks\n if (key === 'delayed' || key === 'remove' || key === 'destroy') continue\n const cssKey = camelToKebab(key)\n parts.push(`${cssKey}: ${val}`)\n }\n return parts.join('; ')\n}\n\nexport interface RenderToStringOptions {\n /** Initial state for the root component */\n state?: any\n /** Props to pass to the root component */\n props?: Record<string, any>\n /** Context from a parent (for nested rendering) */\n context?: Record<string, any>\n /**\n * Embed serialized state in a <script> tag for client hydration.\n * When true, appends `<script>window.__SYGNAL_STATE__=...</script>`.\n * When a string, uses that as the variable name instead.\n */\n hydrateState?: boolean | string\n}\n\n/**\n * Render a Sygnal component to an HTML string.\n *\n * Calls the component's view function with the provided (or initial) state,\n * recursively renders sub-components, and serializes the VNode tree to HTML.\n *\n * ```ts\n * import { renderToString } from 'sygnal'\n *\n * const html = renderToString(App, { state: { count: 0 } })\n * // → '<div><h1>Count: 0</h1></div>'\n * ```\n */\nexport function renderToString(\n componentDef: any,\n options: RenderToStringOptions = {}\n): string {\n const {state, props = {}, context = {}, hydrateState} = options\n\n const resolvedState = state !== undefined ? state : componentDef.initialState\n\n // Build context: merge parent context with component's own context definitions\n const componentContext = componentDef.context || {}\n const mergedContext: Record<string, any> = {...context}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && resolvedState != null) {\n try {\n mergedContext[key] = contextFn(resolvedState)\n } catch (_) {}\n }\n }\n\n // Call the view function\n let vnode: any\n try {\n vnode = componentDef({\n ...props,\n state: resolvedState,\n children: props.children || [],\n slots: props.slots || {},\n context: mergedContext,\n peers: {},\n }, resolvedState, mergedContext, {})\n } catch (err: any) {\n // Error boundary\n if (typeof componentDef.onError === 'function') {\n const name = componentDef.componentName || componentDef.name || 'Component'\n try {\n vnode = componentDef.onError(err, {componentName: name})\n } catch (_) {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n if (!vnode) {\n vnode = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Process special components in the VNode tree\n vnode = processSSRTree(vnode, mergedContext, resolvedState)\n\n // Serialize to HTML\n let html = vnodeToHtml(vnode)\n\n // Optionally embed state for hydration\n if (hydrateState && resolvedState != null) {\n const varName = typeof hydrateState === 'string' ? hydrateState : '__SYGNAL_STATE__'\n const serialized = escapeHtml(JSON.stringify(resolvedState))\n html += `<script>window.${varName}=${JSON.stringify(resolvedState)}</script>`\n }\n\n return html\n}\n\n/**\n * Walk the VNode tree and recursively render sub-components,\n * handle Suspense/Portal/Transition markers, and process Collections.\n */\nfunction processSSRTree(vnode: any, context: Record<string, any>, parentState?: any): any {\n if (!vnode) return vnode\n if (typeof vnode === 'string' || vnode.text != null) return vnode\n\n const sel = vnode.sel\n\n // Fragment: no selector, recurse into children\n if (!sel && vnode.children && Array.isArray(vnode.children)) {\n vnode.children = vnode.children\n .map((c: any) => processSSRTree(c, context, parentState))\n .filter((c: any) => c != null)\n return vnode\n }\n\n // Portal: render children inline (no target container on server)\n if (sel === 'portal') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState)\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-portal': ''}},\n children: children.map((c: any) => processSSRTree(c, context, parentState)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Transition: unwrap to child (no animation on server)\n if (sel === 'transition') {\n const children = vnode.children || []\n const child = children[0]\n if (!child) return null\n return processSSRTree(child, context, parentState)\n }\n\n // Suspense: render children (SSR always shows content, not fallback)\n if (sel === 'suspense') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState)\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-suspense': 'resolved'}},\n children: children.map((c: any) => processSSRTree(c, context, parentState)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // ClientOnly: render fallback during SSR, skip children (they need a browser)\n if (sel === 'clientonly') {\n const props = vnode.data?.props || {}\n const fallback = props.fallback\n if (fallback) {\n // fallback can be a VNode or a string\n return processSSRTree(fallback, context, parentState)\n }\n // No fallback — render an empty placeholder div\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-clientonly': ''}},\n children: [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Slot: unwrap to children\n if (sel === 'slot') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState)\n return {\n sel: 'div',\n data: {},\n children: children.map((c: any) => processSSRTree(c, context, parentState)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Sub-component: render recursively\n const props = vnode.data?.props || {}\n if (props.sygnalOptions || typeof props.sygnalFactory === 'function') {\n return renderSubComponent(vnode, context, parentState)\n }\n\n // Collection: render each item\n if (sel === 'collection') {\n return renderCollection(vnode, context, parentState)\n }\n\n // Switchable: render the active component\n if (sel === 'switchable') {\n return renderSwitchable(vnode, context, parentState)\n }\n\n // Regular element: recurse into children\n if (vnode.children) {\n if (Array.isArray(vnode.children)) {\n if (vnode.children.length > 0) {\n vnode.children = vnode.children\n .map((c: any) => processSSRTree(c, context, parentState))\n .filter((c: any) => c != null)\n }\n } else if (vnode.children && typeof vnode.children === 'object') {\n // Single child object (text element)\n vnode.children = processSSRTree(vnode.children, context, parentState)\n }\n }\n\n return vnode\n}\n\n/**\n * Render a sub-component (identified by sygnalOptions or sygnalFactory in props).\n */\nfunction renderSubComponent(vnode: any, context: Record<string, any>, parentState?: any): any {\n const props = vnode.data?.props || {}\n const {sygnalOptions, sygnalFactory, ...childProps} = props\n\n // Get the component definition (view function with static properties)\n let componentDef: any\n if (sygnalOptions) {\n componentDef = sygnalOptions.view\n // Copy static properties\n if (!componentDef.initialState && sygnalOptions.initialState) {\n componentDef = Object.assign(componentDef, {\n initialState: sygnalOptions.initialState,\n model: sygnalOptions.model,\n intent: sygnalOptions.intent,\n context: sygnalOptions.context,\n onError: sygnalOptions.onError,\n calculated: sygnalOptions.calculated,\n })\n }\n } else if (sygnalFactory && sygnalFactory.componentName) {\n // Factory-created component — we can't easily extract the view from an already-wrapped factory.\n // Return a placeholder.\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-ssr': vnode.sel || 'component'}},\n children: vnode.children || [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n if (!componentDef || typeof componentDef !== 'function') {\n // Can't render — return children or empty div\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-ssr': vnode.sel || 'component'}},\n children: vnode.children || [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Determine child state via state lens\n let childState = componentDef.initialState\n const stateProp = childProps.state\n if (typeof stateProp === 'string' && parentState != null && parentState[stateProp] != null) {\n childState = parentState[stateProp]\n } else if (stateProp != null && typeof stateProp !== 'string') {\n // State passed directly\n childState = stateProp\n }\n\n // Build child context\n const childContext: Record<string, any> = {...context}\n const componentContext = componentDef.context || {}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && childState != null) {\n try {\n childContext[key] = contextFn(childState)\n } catch (_) {}\n }\n }\n\n // Extract slots from children\n const slots: Record<string, any[]> = {}\n const defaultSlotChildren: any[] = []\n const vnodeChildren = vnode.children || []\n for (const child of vnodeChildren) {\n if (child && child.sel === 'slot') {\n const slotName = child.data?.props?.name || 'default'\n if (!slots[slotName]) slots[slotName] = []\n const slotChildren = child.children || []\n slots[slotName].push(...slotChildren)\n } else {\n defaultSlotChildren.push(child)\n }\n }\n if (defaultSlotChildren.length > 0) {\n if (!slots.default) slots.default = []\n slots.default.push(...defaultSlotChildren)\n }\n\n // Call the view function\n let result: any\n try {\n result = componentDef({\n ...childProps,\n state: childState,\n children: slots.default || vnodeChildren,\n slots,\n context: childContext,\n peers: {},\n }, childState, childContext, {})\n } catch (err: any) {\n if (typeof componentDef.onError === 'function') {\n const name = componentDef.componentName || componentDef.name || 'Component'\n try {\n result = componentDef.onError(err, {componentName: name})\n } catch (_) {\n result = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n result = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n if (!result) {\n result = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Recursively process the rendered sub-tree\n return processSSRTree(result, childContext, childState)\n}\n\n/**\n * Render a Collection by iterating over the state array.\n */\nfunction renderCollection(vnode: any, context: Record<string, any>, parentState?: any): any {\n const props = vnode.data?.props || {}\n const {of: itemComponent, from, className} = props\n\n if (!itemComponent || !from || !parentState) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n const items = parentState[from]\n if (!Array.isArray(items)) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n const renderedItems = items.map((itemState: any, index: number) => {\n // Build context for this item\n const itemContext: Record<string, any> = {...context}\n const componentContext = itemComponent.context || {}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function') {\n try {\n itemContext[key] = contextFn(itemState)\n } catch (_) {}\n }\n }\n\n let itemVnode: any\n try {\n itemVnode = itemComponent({\n state: itemState,\n children: [],\n slots: {},\n context: itemContext,\n peers: {},\n }, itemState, itemContext, {})\n } catch (err: any) {\n if (typeof itemComponent.onError === 'function') {\n try {\n itemVnode = itemComponent.onError(err, {componentName: itemComponent.name || 'CollectionItem'})\n } catch (_) {\n itemVnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n itemVnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n return processSSRTree(itemVnode, itemContext, itemState)\n }).filter((v: any) => v != null)\n\n const containerData: any = {}\n if (className) {\n containerData.props = {className}\n }\n\n return {\n sel: 'div',\n data: containerData,\n children: renderedItems,\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n}\n\n/**\n * Render a Switchable by determining the active component from state.\n */\nfunction renderSwitchable(vnode: any, context: Record<string, any>, parentState?: any): any {\n const props = vnode.data?.props || {}\n const {components, active, initial} = props\n\n if (!components) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Determine which component to render\n let activeName: string | undefined\n if (typeof active === 'string') {\n // Direct name or state property\n if (components[active]) {\n activeName = active\n } else if (parentState && typeof parentState[active] === 'string') {\n activeName = parentState[active]\n }\n }\n if (!activeName && initial) {\n activeName = initial\n }\n if (!activeName) {\n activeName = Object.keys(components)[0]\n }\n\n const activeComponent = components[activeName]\n if (!activeComponent || typeof activeComponent !== 'function') {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n return renderToStringInternal(activeComponent, parentState, context)\n}\n\n/**\n * Internal helper: render a component def to a VNode (not HTML string).\n */\nfunction renderToStringInternal(componentDef: any, state: any, context: Record<string, any>): any {\n const resolvedState = state !== undefined ? state : componentDef.initialState\n\n const componentContext = componentDef.context || {}\n const mergedContext: Record<string, any> = {...context}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && resolvedState != null) {\n try {\n mergedContext[key] = contextFn(resolvedState)\n } catch (_) {}\n }\n }\n\n let vnode: any\n try {\n vnode = componentDef({\n state: resolvedState,\n children: [],\n slots: {},\n context: mergedContext,\n peers: {},\n }, resolvedState, mergedContext, {})\n } catch (err: any) {\n if (typeof componentDef.onError === 'function') {\n try {\n vnode = componentDef.onError(err, {componentName: componentDef.name || 'Component'})\n } catch (_) {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n } else {\n vnode = {sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n }\n\n if (!vnode) {\n vnode = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n return processSSRTree(vnode, mergedContext, resolvedState)\n}\n\n/**\n * Serialize a VNode tree to an HTML string.\n */\nfunction vnodeToHtml(vnode: any): string {\n if (vnode == null) return ''\n\n // Text node\n if (typeof vnode === 'string') return escapeHtml(vnode)\n if (vnode.text != null && !vnode.sel) return escapeHtml(String(vnode.text))\n\n // VNode with text content and a selector\n const sel = vnode.sel\n if (!sel) {\n if (vnode.text != null) return escapeHtml(String(vnode.text))\n // Fragment: no selector, but has children — concatenate child HTML\n if (vnode.children && Array.isArray(vnode.children)) {\n return vnode.children.map((c: any) => vnodeToHtml(c)).join('')\n }\n return ''\n }\n\n // Parse selector: tag#id.class1.class2\n const {tag, id, selectorClasses} = parseSelector(sel)\n\n // Build attributes from VNode data\n const attrs = buildAttributes(vnode.data || {}, id, selectorClasses)\n\n // Opening tag\n let html = `<${tag}`\n for (const [key, val] of attrs) {\n if (val === true) {\n html += ` ${key}`\n } else if (val !== false && val != null) {\n html += ` ${key}=\"${escapeHtml(String(val))}\"`\n }\n }\n html += '>'\n\n // Void elements\n if (VOID_ELEMENTS.has(tag)) {\n return html\n }\n\n // If innerHTML is set via props, use it as raw content (no escaping)\n if (vnode.data?.props?.innerHTML != null) {\n html += String(vnode.data.props.innerHTML)\n html += `</${tag}>`\n return html\n }\n\n // Children — snabbdom uses `text` for single text children (even when\n // `children` holds a text element object). Prioritize `text` when set.\n if (vnode.text != null) {\n html += escapeHtml(String(vnode.text))\n } else if (vnode.children) {\n // children can be an array or a single text element object\n const kids = Array.isArray(vnode.children) ? vnode.children : [vnode.children]\n for (const child of kids) {\n html += vnodeToHtml(child)\n }\n }\n\n html += `</${tag}>`\n return html\n}\n\n/**\n * Parse a snabbdom selector string like \"div#myId.foo.bar\" into parts.\n */\nfunction parseSelector(sel: string): {tag: string; id: string | null; selectorClasses: string[]} {\n let tag = sel\n let id: string | null = null\n const selectorClasses: string[] = []\n\n // Extract id\n const hashIdx = sel.indexOf('#')\n if (hashIdx !== -1) {\n const rest = sel.slice(hashIdx + 1)\n const dotIdx = rest.indexOf('.')\n if (dotIdx !== -1) {\n id = rest.slice(0, dotIdx)\n tag = sel.slice(0, hashIdx)\n // Classes after #id\n const classStr = rest.slice(dotIdx + 1)\n if (classStr) selectorClasses.push(...classStr.split('.'))\n } else {\n id = rest\n tag = sel.slice(0, hashIdx)\n }\n } else {\n // Extract classes from selector\n const dotIdx = sel.indexOf('.')\n if (dotIdx !== -1) {\n tag = sel.slice(0, dotIdx)\n const classStr = sel.slice(dotIdx + 1)\n if (classStr) selectorClasses.push(...classStr.split('.'))\n }\n }\n\n if (!tag) tag = 'div'\n\n return {tag, id, selectorClasses}\n}\n\n/**\n * Build an ordered list of [attrName, attrValue] from VNode data.\n */\nfunction buildAttributes(\n data: any,\n selectorId: string | null,\n selectorClasses: string[]\n): Array<[string, any]> {\n const result: Array<[string, any]> = []\n const classNames: string[] = [...selectorClasses]\n\n // From data.props (DOM properties like className, htmlFor, etc.)\n if (data.props) {\n for (const [key, val] of Object.entries(data.props)) {\n if (key === 'className') {\n if (typeof val === 'string' && val) classNames.push(val)\n } else if (key === 'htmlFor') {\n result.push(['for', val])\n } else if (key === 'innerHTML' || key === 'textContent') {\n // Skip — handled separately if needed\n } else if (key === 'sygnalOptions' || key === 'sygnalFactory') {\n // Internal — skip\n } else if (typeof val === 'boolean') {\n if (val) result.push([key, true])\n } else if (val != null) {\n result.push([key, val])\n }\n }\n }\n\n // From data.attrs (HTML attributes)\n if (data.attrs) {\n for (const [key, val] of Object.entries(data.attrs)) {\n if (key === 'class') {\n if (typeof val === 'string' && val) classNames.push(val)\n } else if (typeof val === 'boolean') {\n if (val) result.push([key, true])\n } else if (val != null) {\n result.push([key, val])\n }\n }\n }\n\n // From data.class (conditional class map: { active: true, disabled: false })\n if (data.class) {\n for (const [key, val] of Object.entries(data.class)) {\n if (val) classNames.push(key)\n }\n }\n\n // From data.dataset (data-* attributes)\n if (data.dataset) {\n for (const [key, val] of Object.entries(data.dataset)) {\n if (val != null) {\n result.push([`data-${camelToKebab(key)}`, val])\n }\n }\n }\n\n // ID (selector id takes precedence, then props/attrs)\n if (selectorId) {\n result.unshift(['id', selectorId])\n }\n\n // Class attribute\n if (classNames.length > 0) {\n const unique = [...new Set(classNames)]\n result.unshift(['class', unique.join(' ')])\n }\n\n // Style\n if (data.style && typeof data.style === 'object') {\n const styleStr = serializeStyle(data.style)\n if (styleStr) {\n result.push(['style', styleStr])\n }\n }\n\n return result\n}\n","import {renderToString} from '../extra/ssr'\n\nfunction looksLikeSygnalComponent(Component: any): boolean {\n if (typeof Component !== 'function') return false\n return Boolean(\n Component.isSygnalComponent ||\n Component.model ||\n Component.intent ||\n Component.initialState ||\n Component.componentName\n )\n}\n\nexport function check(Component: any): boolean {\n return looksLikeSygnalComponent(Component)\n}\n\nexport function renderToStaticMarkup(\n Component: any,\n props: Record<string, any> = {},\n _slotted?: any,\n _metadata?: any\n): { html: string; attrs: Record<string, any> } {\n try {\n // Props are spread top-level by renderToString (`{ state, ...props }`);\n // `props` is also passed, as on the client, for `({ state, props })` views.\n const html = renderToString(Component, {\n state: props.initialState || Component.initialState,\n props: {...props, props},\n })\n return {html, attrs: {}}\n } catch (err: any) {\n console.error('[sygnal/astro] SSR error:', err.message || err)\n return {html: '', attrs: {}}\n }\n}\n\nexport const supportsAstroStaticSlot = true\n\nexport default {\n check,\n renderToStaticMarkup,\n supportsAstroStaticSlot,\n}\n"],"names":[],"mappings":"AAAA;;;;;AAKG;AAEH;AACA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;AAC5B,IAAA,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO;IAC1D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK;AAClD,CAAA,CAAC,CAAA;AAEF;AACA,MAAM,OAAO,GAA2B;AACtC,IAAA,GAAG,EAAE,OAAO;AACZ,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,OAAO;CACb,CAAA;AAED,SAAS,UAAU,CAAC,GAAW,EAAA;AAC7B,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;AAC7D,CAAC;AAED;;;;AAIG;AACH,SAAS,YAAY,CAAC,GAAW,EAAA;AAC/B,IAAA,OAAO,GAAG;AACP,SAAA,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3D,SAAA,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;AAC1B,SAAA,WAAW,EAAE,CAAA;AAClB,CAAC;AAED;;AAEG;AACH,SAAS,cAAc,CAAC,KAA0B,EAAA;IAChD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;AACtB,QAAA,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;YAAE,SAAQ;;QAEvC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,SAAS;YAAE,SAAQ;AACxE,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;QAChC,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,MAAM,CAAK,EAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAA;KAChC;AACD,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAiBD;;;;;;;;;;;;AAYG;SACa,cAAc,CAC5B,YAAiB,EACjB,UAAiC,EAAE,EAAA;AAEnC,IAAA,MAAM,EAAC,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,YAAY,EAAC,GAAG,OAAO,CAAA;AAE/D,IAAA,MAAM,aAAa,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,YAAY,CAAC,YAAY,CAAA;;AAG7E,IAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,IAAI,EAAE,CAAA;AACnD,IAAA,MAAM,aAAa,GAAwB,EAAC,GAAG,OAAO,EAAC,CAAA;IACvD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC/C,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,OAAO,SAAS,KAAK,UAAU,IAAI,aAAa,IAAI,IAAI,EAAE;AAC5D,YAAA,IAAI;gBACF,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,CAAA;aAC9C;AAAC,YAAA,OAAO,CAAC,EAAE,GAAE;SACf;KACF;;AAGD,IAAA,IAAI,KAAU,CAAA;AACd,IAAA,IAAI;QACF,KAAK,GAAG,YAAY,CAAC;AACnB,YAAA,GAAG,KAAK;AACR,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;AAC9B,YAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;AACxB,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,KAAK,EAAE,EAAE;AACV,SAAA,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;KACrC;IAAC,OAAO,GAAQ,EAAE;;AAEjB,QAAA,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,UAAU,EAAE;YAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,IAAI,IAAI,WAAW,CAAA;AAC3E,YAAA,IAAI;AACF,gBAAA,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAA;aACzD;YAAC,OAAO,CAAC,EAAE;AACV,gBAAA,KAAK,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,mBAAmB,EAAE,EAAE,EAAC,EAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;aAC9H;SACF;aAAM;AACL,YAAA,KAAK,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,mBAAmB,EAAE,EAAE,EAAC,EAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;SAC9H;KACF;IAED,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;KAC9F;;IAGD,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;;AAG3D,IAAA,IAAI,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;;AAG7B,IAAA,IAAI,YAAY,IAAI,aAAa,IAAI,IAAI,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,GAAG,YAAY,GAAG,kBAAkB,CAAA;QACjE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAC;QAC5D,IAAI,IAAI,CAAkB,eAAA,EAAA,OAAO,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA,SAAA,CAAW,CAAA;KAC9E;AAED,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;AAGG;AACH,SAAS,cAAc,CAAC,KAAU,EAAE,OAA4B,EAAE,WAAiB,EAAA;AACjF,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,KAAK,CAAA;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI;AAAE,QAAA,OAAO,KAAK,CAAA;AAEjE,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;;AAGrB,IAAA,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC3D,QAAA,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;AAC5B,aAAA,GAAG,CAAC,CAAC,CAAM,KAAK,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAA;AAChC,QAAA,OAAO,KAAK,CAAA;KACb;;AAGD,IAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;AACpB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AACrC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAA;AACtC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;QACnF,OAAO;AACL,YAAA,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,oBAAoB,EAAE,EAAE,EAAC,EAAC;AACzC,YAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC3E,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,GAAG,EAAE,SAAS;SACf,CAAA;KACF;;AAGD,IAAA,IAAI,GAAG,KAAK,YAAY,EAAE;AACxB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AACrC,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;AACzB,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAA;QACvB,OAAO,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;KACnD;;AAGD,IAAA,IAAI,GAAG,KAAK,UAAU,EAAE;AACtB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AACrC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAA;AACtC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;QACnF,OAAO;AACL,YAAA,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,sBAAsB,EAAE,UAAU,EAAC,EAAC;AACnD,YAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC3E,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,GAAG,EAAE,SAAS;SACf,CAAA;KACF;;AAGD,IAAA,IAAI,GAAG,KAAK,YAAY,EAAE;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;AACrC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC/B,IAAI,QAAQ,EAAE;;YAEZ,OAAO,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;SACtD;;QAED,OAAO;AACL,YAAA,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,wBAAwB,EAAE,EAAE,EAAC,EAAC;AAC7C,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,GAAG,EAAE,SAAS;SACf,CAAA;KACF;;AAGD,IAAA,IAAI,GAAG,KAAK,MAAM,EAAE;AAClB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AACrC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAA;AACtC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;QACnF,OAAO;AACL,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC3E,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,GAAG,EAAE,SAAS;SACf,CAAA;KACF;;IAGD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;IACrC,IAAI,KAAK,CAAC,aAAa,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU,EAAE;QACpE,OAAO,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;KACvD;;AAGD,IAAA,IAAI,GAAG,KAAK,YAAY,EAAE;QACxB,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;KACrD;;AAGD,IAAA,IAAI,GAAG,KAAK,YAAY,EAAE;QACxB,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;KACrD;;AAGD,IAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACjC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,gBAAA,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;AAC5B,qBAAA,GAAG,CAAC,CAAC,CAAM,KAAK,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;qBACxD,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAA;aACjC;SACF;aAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE;;AAE/D,YAAA,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;SACtE;KACF;AAED,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;AAEG;AACH,SAAS,kBAAkB,CAAC,KAAU,EAAE,OAA4B,EAAE,WAAiB,EAAA;IACrF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;IACrC,MAAM,EAAC,aAAa,EAAE,aAAa,EAAE,GAAG,UAAU,EAAC,GAAG,KAAK,CAAA;;AAG3D,IAAA,IAAI,YAAiB,CAAA;IACrB,IAAI,aAAa,EAAE;AACjB,QAAA,YAAY,GAAG,aAAa,CAAC,IAAI,CAAA;;QAEjC,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,aAAa,CAAC,YAAY,EAAE;AAC5D,YAAA,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;gBACzC,YAAY,EAAE,aAAa,CAAC,YAAY;gBACxC,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,UAAU,EAAE,aAAa,CAAC,UAAU;AACrC,aAAA,CAAC,CAAA;SACH;KACF;AAAM,SAAA,IAAI,aAAa,IAAI,aAAa,CAAC,aAAa,EAAE;;;QAGvD,OAAO;AACL,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,IAAI,WAAW,EAAC,EAAC;AAC5D,YAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;AAC9B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,GAAG,EAAE,SAAS;SACf,CAAA;KACF;IAED,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;;QAEvD,OAAO;AACL,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,IAAI,WAAW,EAAC,EAAC;AAC5D,YAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;AAC9B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,GAAG,EAAE,SAAS;SACf,CAAA;KACF;;AAGD,IAAA,IAAI,UAAU,GAAG,YAAY,CAAC,YAAY,CAAA;AAC1C,IAAA,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAA;AAClC,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE;AAC1F,QAAA,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;KACpC;SAAM,IAAI,SAAS,IAAI,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;;QAE7D,UAAU,GAAG,SAAS,CAAA;KACvB;;AAGD,IAAA,MAAM,YAAY,GAAwB,EAAC,GAAG,OAAO,EAAC,CAAA;AACtD,IAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,IAAI,EAAE,CAAA;IACnD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC/C,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,OAAO,SAAS,KAAK,UAAU,IAAI,UAAU,IAAI,IAAI,EAAE;AACzD,YAAA,IAAI;gBACF,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;aAC1C;AAAC,YAAA,OAAO,CAAC,EAAE,GAAE;SACf;KACF;;IAGD,MAAM,KAAK,GAA0B,EAAE,CAAA;IACvC,MAAM,mBAAmB,GAAU,EAAE,CAAA;AACrC,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AAC1C,IAAA,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;QACjC,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE;YACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,SAAS,CAAA;AACrD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAAE,gBAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;AAC1C,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;YACzC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;SACtC;aAAM;AACL,YAAA,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SAChC;KACF;AACD,IAAA,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO;AAAE,YAAA,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA;QACtC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAA;KAC3C;;AAGD,IAAA,IAAI,MAAW,CAAA;AACf,IAAA,IAAI;QACF,MAAM,GAAG,YAAY,CAAC;AACpB,YAAA,GAAG,UAAU;AACb,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,aAAa;YACxC,KAAK;AACL,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,KAAK,EAAE,EAAE;AACV,SAAA,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;KACjC;IAAC,OAAO,GAAQ,EAAE;AACjB,QAAA,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,UAAU,EAAE;YAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,IAAI,IAAI,WAAW,CAAA;AAC3E,YAAA,IAAI;AACF,gBAAA,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAA;aAC1D;YAAC,OAAO,CAAC,EAAE;AACV,gBAAA,MAAM,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,mBAAmB,EAAE,EAAE,EAAC,EAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;aAC/H;SACF;aAAM;AACL,YAAA,MAAM,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,mBAAmB,EAAE,EAAE,EAAC,EAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;SAC/H;KACF;IAED,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;KAC/F;;IAGD,OAAO,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;AACzD,CAAC;AAED;;AAEG;AACH,SAAS,gBAAgB,CAAC,KAAU,EAAE,OAA4B,EAAE,WAAiB,EAAA;IACnF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;IACrC,MAAM,EAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,KAAK,CAAA;IAElD,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;QAC3C,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;KAC7F;AAED,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;KAC7F;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,KAAa,KAAI;;AAEhE,QAAA,MAAM,WAAW,GAAwB,EAAC,GAAG,OAAO,EAAC,CAAA;AACrD,QAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,IAAI,EAAE,CAAA;QACpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;AACvC,YAAA,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AACnC,gBAAA,IAAI;oBACF,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;iBACxC;AAAC,gBAAA,OAAO,CAAC,EAAE,GAAE;aACf;SACF;AAED,QAAA,IAAI,SAAc,CAAA;AAClB,QAAA,IAAI;YACF,SAAS,GAAG,aAAa,CAAC;AACxB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,KAAK,EAAE,EAAE;AACV,aAAA,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;SAC/B;QAAC,OAAO,GAAQ,EAAE;AACjB,YAAA,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,UAAU,EAAE;AAC/C,gBAAA,IAAI;AACF,oBAAA,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC,aAAa,EAAE,aAAa,CAAC,IAAI,IAAI,gBAAgB,EAAC,CAAC,CAAA;iBAChG;gBAAC,OAAO,CAAC,EAAE;AACV,oBAAA,SAAS,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,mBAAmB,EAAE,EAAE,EAAC,EAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;iBAClI;aACF;iBAAM;AACL,gBAAA,SAAS,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,mBAAmB,EAAE,EAAE,EAAC,EAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;aAClI;SACF;QAED,OAAO,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;AAC1D,KAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAA;IAEhC,MAAM,aAAa,GAAQ,EAAE,CAAA;IAC7B,IAAI,SAAS,EAAE;AACb,QAAA,aAAa,CAAC,KAAK,GAAG,EAAC,SAAS,EAAC,CAAA;KAClC;IAED,OAAO;AACL,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;KACf,CAAA;AACH,CAAC;AAED;;AAEG;AACH,SAAS,gBAAgB,CAAC,KAAU,EAAE,OAA4B,EAAE,WAAiB,EAAA;IACnF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;IACrC,MAAM,EAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAC,GAAG,KAAK,CAAA;IAE3C,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;KAC7F;;AAGD,IAAA,IAAI,UAA8B,CAAA;AAClC,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;;AAE9B,QAAA,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;YACtB,UAAU,GAAG,MAAM,CAAA;SACpB;aAAM,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;AACjE,YAAA,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;SACjC;KACF;AACD,IAAA,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE;QAC1B,UAAU,GAAG,OAAO,CAAA;KACrB;IACD,IAAI,CAAC,UAAU,EAAE;QACf,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;KACxC;AAED,IAAA,MAAM,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;IAC9C,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;QAC7D,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;KAC7F;IAED,OAAO,sBAAsB,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACtE,CAAC;AAED;;AAEG;AACH,SAAS,sBAAsB,CAAC,YAAiB,EAAE,KAAU,EAAE,OAA4B,EAAA;AACzF,IAAA,MAAM,aAAa,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,YAAY,CAAC,YAAY,CAAA;AAE7E,IAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,IAAI,EAAE,CAAA;AACnD,IAAA,MAAM,aAAa,GAAwB,EAAC,GAAG,OAAO,EAAC,CAAA;IACvD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC/C,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,OAAO,SAAS,KAAK,UAAU,IAAI,aAAa,IAAI,IAAI,EAAE;AAC5D,YAAA,IAAI;gBACF,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,CAAA;aAC9C;AAAC,YAAA,OAAO,CAAC,EAAE,GAAE;SACf;KACF;AAED,IAAA,IAAI,KAAU,CAAA;AACd,IAAA,IAAI;QACF,KAAK,GAAG,YAAY,CAAC;AACnB,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,KAAK,EAAE,EAAE;AACV,SAAA,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;KACrC;IAAC,OAAO,GAAQ,EAAE;AACjB,QAAA,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,UAAU,EAAE;AAC9C,YAAA,IAAI;AACF,gBAAA,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC,aAAa,EAAE,YAAY,CAAC,IAAI,IAAI,WAAW,EAAC,CAAC,CAAA;aACrF;YAAC,OAAO,CAAC,EAAE;AACV,gBAAA,KAAK,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,mBAAmB,EAAE,EAAE,EAAC,EAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;aAC9H;SACF;aAAM;AACL,YAAA,KAAK,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,EAAC,mBAAmB,EAAE,EAAE,EAAC,EAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;SAC9H;KACF;IAED,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAC,CAAA;KAC9F;IAED,OAAO,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;AAC5D,CAAC;AAED;;AAEG;AACH,SAAS,WAAW,CAAC,KAAU,EAAA;IAC7B,IAAI,KAAK,IAAI,IAAI;AAAE,QAAA,OAAO,EAAE,CAAA;;IAG5B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;IACvD,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;;AAG3E,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;IACrB,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI;YAAE,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;;AAE7D,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACnD,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SAC/D;AACD,QAAA,OAAO,EAAE,CAAA;KACV;;AAGD,IAAA,MAAM,EAAC,GAAG,EAAE,EAAE,EAAE,eAAe,EAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;;AAGrD,IAAA,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,CAAA;;AAGpE,IAAA,IAAI,IAAI,GAAG,CAAI,CAAA,EAAA,GAAG,EAAE,CAAA;IACpB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;AAC9B,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,YAAA,IAAI,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;SAClB;aAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACvC,YAAA,IAAI,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,EAAA,EAAK,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,CAAA,CAAG,CAAA;SAC/C;KACF;IACD,IAAI,IAAI,GAAG,CAAA;;AAGX,IAAA,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI,CAAA;KACZ;;IAGD,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,IAAI,IAAI,EAAE;QACxC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AAC1C,QAAA,IAAI,IAAI,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG,CAAA;AACnB,QAAA,OAAO,IAAI,CAAA;KACZ;;;AAID,IAAA,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;QACtB,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;KACvC;AAAM,SAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;;QAEzB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AAC9E,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,CAAA;SAC3B;KACF;AAED,IAAA,IAAI,IAAI,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG,CAAA;AACnB,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;AAEG;AACH,SAAS,aAAa,CAAC,GAAW,EAAA;IAChC,IAAI,GAAG,GAAG,GAAG,CAAA;IACb,IAAI,EAAE,GAAkB,IAAI,CAAA;IAC5B,MAAM,eAAe,GAAa,EAAE,CAAA;;IAGpC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAChC,IAAA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;QAClB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAChC,QAAA,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE;YACjB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC1B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;;YAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACvC,YAAA,IAAI,QAAQ;gBAAE,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;SAC3D;aAAM;YACL,EAAE,GAAG,IAAI,CAAA;YACT,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;SAC5B;KACF;SAAM;;QAEL,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAC/B,QAAA,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE;YACjB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACtC,YAAA,IAAI,QAAQ;gBAAE,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;SAC3D;KACF;AAED,IAAA,IAAI,CAAC,GAAG;QAAE,GAAG,GAAG,KAAK,CAAA;AAErB,IAAA,OAAO,EAAC,GAAG,EAAE,EAAE,EAAE,eAAe,EAAC,CAAA;AACnC,CAAC;AAED;;AAEG;AACH,SAAS,eAAe,CACtB,IAAS,EACT,UAAyB,EACzB,eAAyB,EAAA;IAEzB,MAAM,MAAM,GAAyB,EAAE,CAAA;AACvC,IAAA,MAAM,UAAU,GAAa,CAAC,GAAG,eAAe,CAAC,CAAA;;AAGjD,IAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACnD,YAAA,IAAI,GAAG,KAAK,WAAW,EAAE;AACvB,gBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG;AAAE,oBAAA,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACzD;AAAM,iBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;aAC1B;iBAAM,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,EAAE,CAExD;iBAAM,IAAI,GAAG,KAAK,eAAe,IAAI,GAAG,KAAK,eAAe,EAAE,CAE9D;AAAM,iBAAA,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;AACnC,gBAAA,IAAI,GAAG;oBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;aAClC;AAAM,iBAAA,IAAI,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;aACxB;SACF;KACF;;AAGD,IAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACnD,YAAA,IAAI,GAAG,KAAK,OAAO,EAAE;AACnB,gBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG;AAAE,oBAAA,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACzD;AAAM,iBAAA,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;AACnC,gBAAA,IAAI,GAAG;oBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;aAClC;AAAM,iBAAA,IAAI,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;aACxB;SACF;KACF;;AAGD,IAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACnD,YAAA,IAAI,GAAG;AAAE,gBAAA,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAC9B;KACF;;AAGD,IAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACrD,YAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,YAAY,CAAC,GAAG,CAAC,CAAE,CAAA,EAAE,GAAG,CAAC,CAAC,CAAA;aAChD;SACF;KACF;;IAGD,IAAI,UAAU,EAAE;QACd,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;KACnC;;AAGD,IAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;AACvC,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;KAC5C;;IAGD,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;QAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3C,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;SACjC;KACF;AAED,IAAA,OAAO,MAAM,CAAA;AACf;;AChtBA,SAAS,wBAAwB,CAAC,SAAc,EAAA;IAC9C,IAAI,OAAO,SAAS,KAAK,UAAU;AAAE,QAAA,OAAO,KAAK,CAAA;AACjD,IAAA,OAAO,OAAO,CACZ,SAAS,CAAC,iBAAiB;AACzB,QAAA,SAAS,CAAC,KAAK;AACf,QAAA,SAAS,CAAC,MAAM;AAChB,QAAA,SAAS,CAAC,YAAY;QACtB,SAAS,CAAC,aAAa,CAC1B,CAAA;AACH,CAAC;AAEK,SAAU,KAAK,CAAC,SAAc,EAAA;AAClC,IAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAA;AAC5C,CAAC;AAEK,SAAU,oBAAoB,CAClC,SAAc,EACd,QAA6B,EAAE,EAC/B,QAAc,EACd,SAAe,EAAA;AAEf,IAAA,IAAI;;;AAGF,QAAA,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,EAAE;AACrC,YAAA,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY;AACnD,YAAA,KAAK,EAAE,EAAC,GAAG,KAAK,EAAE,KAAK,EAAC;AACzB,SAAA,CAAC,CAAA;AACF,QAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC,CAAA;KACzB;IAAC,OAAO,GAAQ,EAAE;QACjB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAA;QAC9D,OAAO,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC,CAAA;KAC7B;AACH,CAAC;AAEM,MAAM,uBAAuB,GAAG,KAAI;AAE3C,aAAe;IACb,KAAK;IACL,oBAAoB;IACpB,uBAAuB;CACxB;;;;"}