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":"diagnostics.esm.js","sources":["../src/extra/xstreamCompat.ts","../src/extra/diagnostics/checks/shared.ts","../src/extra/diagnostics/checks/wiring.ts","../src/extra/diagnostics/checks/state.ts","../src/extra/diagnostics/checks/events.ts","../src/extra/diagnostics/checks/props.ts","../src/extra/diagnostics/checks/collections.ts","../src/cycle/dom/utils.ts","../src/cycle/dom/ScopeChecker.ts","../src/extra/diagnostics/checks/dom.ts","../src/extra/diagnostics/codes.ts","../src/extra/diagnostics/checks/strict.ts","../src/extra/diagnostics/checks/rxjsHints.ts","../src/extra/diagnostics/checks/inspect.ts","../src/extra/diagnostics/checks/index.ts"],"sourcesContent":["import * as xstreamNamespace from 'xstream';\n\nexport function resolveInteropDefault(namespaceValue: any): any {\n if (\n namespaceValue &&\n namespaceValue.default &&\n namespaceValue.default.default &&\n typeof namespaceValue.default.default === 'function'\n ) {\n return namespaceValue.default.default;\n }\n\n if (namespaceValue && namespaceValue.default) {\n return namespaceValue.default;\n }\n\n return namespaceValue;\n}\n\nfunction getXs(namespaceValue: any): any {\n const value = resolveInteropDefault(namespaceValue);\n\n if (\n value &&\n value.default &&\n typeof value.default.create === 'function'\n ) {\n return value.default;\n }\n\n return value;\n}\n\nconst xs = getXs(xstreamNamespace);\nconst Stream =\n (xstreamNamespace as any).Stream ||\n ((xstreamNamespace as any).default && (xstreamNamespace as any).default.Stream) ||\n (xs && xs.Stream);\n\nexport {Stream};\nexport default xs;\n","/**\n * Shared plumbing for the runtime checks (PLAN-1 workstream 1A).\n *\n * The checks are bundled separately from the main 'sygnal' entry\n * ('sygnal/diagnostics'). They must talk to the SAME diagnostics core\n * instance the components use, so they never import the core's functions\n * directly: `import '../index'` only makes sure the core is loaded (in the\n * dist build that import is rewritten to the external 'sygnal' package, see\n * rollup.config.mjs), and the functions are read from the bridge object the\n * core publishes on globalThis.__SYGNAL_DIAGNOSTICS__.\n */\nimport '../index'\nimport type {DiagnosticCheck, DiagnosticDetails, Diagnostic} from '../index'\n\ninterface CoreBridge {\n registerCheck(check: DiagnosticCheck): () => void\n report(code: string, details: DiagnosticDetails): Diagnostic | undefined\n [key: string]: any\n}\n\nexport const bridge = (): CoreBridge => (globalThis as any).__SYGNAL_DIAGNOSTICS__\n\nexport const report = (code: string, details: DiagnosticDetails): Diagnostic | undefined =>\n bridge().report(code, details)\n\n/**\n * report() for code that is NOT running inside a core hook (timers, wrapped\n * methods): never throws synchronously; an 'error'-mode DiagnosticError is\n * rethrown asynchronously, like the core does for hooks.\n */\nexport const reportSafely = (code: string, details: DiagnosticDetails): Diagnostic | undefined => {\n try {\n return report(code, details)\n } catch (err) {\n const raise = () => { throw err }\n typeof queueMicrotask === 'function' ? queueMicrotask(raise) : setTimeout(raise)\n return undefined\n }\n}\n\n/** Tunables (test seam: configureChecks()). */\nexport const timing = {\n /** delay after a render before DOM checks run (lets nested renders patch) */\n settleMs: 50,\n /** SYG103 escalates to warn after this much render-idle time ... */\n idleMs: 2000,\n /** ... and only once the component has rendered at least this often */\n minRenders: 3,\n}\n\n/** Built-in actions Sygnal dispatches itself; never \"missing\" or \"unreachable\". */\nexport const BUILTIN_ACTIONS = new Set(['BOOTSTRAP', 'INITIALIZE', 'HYDRATE', 'DISPOSE', 'READY'])\n\n/** Synthetic/internal actions (`__TEST_ACTION__`, `__NOOP_ACTION__`, ...) and built-ins. */\nexport const isInternalAction = (action: string): boolean =>\n typeof action !== 'string' || action.startsWith('__') || BUILTIN_ACTIONS.has(action)\n\nlet seen = new Set<string>()\n\n/** true the first time `key` is seen (dedupes reports, e.g. per component name). */\nexport const once = (key: string): boolean => (seen.has(key) ? false : (seen.add(key), true))\n\n/**\n * Forget only the once() dedupe set (G-051: renderComponent calls it through the core bridge\n * when an outermost instance starts, so findings are reported again in every test). Unlike\n * resetCheckState() it keeps the checks' registries, e.g. inspect()'s live records.\n */\nexport const resetOnce = (): void => { seen = new Set() }\n{\n const core = bridge()\n if (core) core.resetOnce = resetOnce\n}\n\nconst resetters: Array<() => void> = []\nexport const onReset = (fn: () => void): void => { resetters.push(fn) }\n\n/** Clear every check's dedupe/registry state (tests). */\nexport function resetCheckState(): void {\n seen = new Set()\n resetters.forEach(fn => fn())\n}\n\nexport const nameOf = (component: any): string => (component && component.name) || 'component'\n\nexport const isPlainObject = (value: any): boolean =>\n !!value && typeof value === 'object' && !Array.isArray(value) &&\n (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null)\n\n/** Levenshtein distance (small strings only). */\nfunction distance(a: string, b: string): number {\n const row = Array.from({length: b.length + 1}, (_, i) => i)\n for (let i = 1; i <= a.length; i++) {\n let prev = row[0]\n row[0] = i\n for (let j = 1; j <= b.length; j++) {\n const tmp = row[j]\n row[j] = Math.min(row[j] + 1, row[j - 1] + 1, prev + (a[i - 1] === b[j - 1] ? 0 : 1))\n prev = tmp\n }\n }\n return row[b.length]\n}\n\n/** Closest candidate to `name` (case-insensitive match or edit distance <= 2), if any. */\nexport function suggest(name: string, candidates: Iterable<string>): string | undefined {\n let best: string | undefined\n let bestScore = Infinity\n for (const c of candidates) {\n if (c === name) continue\n const score = c.toLowerCase() === name.toLowerCase() ? 0 : distance(c, name)\n if (score < bestScore) { best = c; bestScore = score }\n }\n return bestScore <= Math.min(2, Math.floor(name.length / 3)) ? best : undefined\n}\n\nexport const didYouMean = (name: string, candidates: Iterable<string>): string => {\n const s = suggest(name, candidates)\n return s ? ` (did you mean '${s}'?)` : ''\n}\n","/**\n * SYG101 — intent action has no model entry (warn)\n * SYG102 — model entry has no intent trigger (info; it may still be reached\n * with next(), which is only known at call time)\n *\n * Mechanism: onIntent records the intent's action names per component;\n * onModel (always called right after, once per instance) compares them with\n * the normalized model map (shorthand already expanded by the core).\n * Synthetic actions (`__*`, e.g. renderComponent's `__TEST_ACTION__`) and the\n * built-ins BOOTSTRAP/INITIALIZE/HYDRATE/DISPOSE/READY are never reported.\n * Under renderComponent, intent streams injected for model actions (so that\n * simulateAction can dispatch them by their real names) are listed on the\n * intent object's non-enumerable `__sygnalTestActions` property. They are not\n * user intent actions (never reported as SYG101), and SYG102 is not reported\n * for those model actions (the test dispatches them with simulateAction).\n */\nimport type {DiagnosticCheck} from '../index'\nimport {report, once, isInternalAction, nameOf, didYouMean} from './shared'\n\nconst intentActions = new WeakMap<object, string[]>()\n\nexport const wiringCheck: DiagnosticCheck = {\n id: 'wiring',\n\n onIntent(component, actionNames) {\n intentActions.set(component, actionNames || [])\n },\n\n onModel(component, modelMap) {\n const name = nameOf(component)\n const intent$ = component && component.intent$\n const injected = new Set<string>(\n (intent$ && typeof intent$ === 'object' && intent$.__sygnalTestActions) || [])\n const actions = (intentActions.get(component) || []).filter(a => !injected.has(a))\n intentActions.delete(component)\n const modelActions = Object.keys(modelMap || {})\n\n for (const action of actions) {\n if (isInternalAction(action) || modelActions.includes(action)) continue\n if (!once(`SYG101:${name}:${action}`)) continue\n report('SYG101', {\n component,\n message: `Intent action '${action}' has no model entry, so it never does anything${didYouMean(action, modelActions)}`,\n fix: `Add '${action}' to ${name}.model, or remove it from ${name}.intent`,\n data: {action, modelActions},\n })\n }\n\n // A single-stream intent (intent returns one action$ stream) has no\n // action names to compare against.\n if (intent$ && typeof intent$.addListener === 'function') return\n\n const hmr = ([] as string[]).concat(component?.hmrActions || [])\n for (const action of modelActions) {\n if (isInternalAction(action) || actions.includes(action) || hmr.includes(action) || injected.has(action)) continue\n if (!once(`SYG102:${name}:${action}`)) continue\n report('SYG102', {\n component,\n message: `Model entry '${action}' has no intent action with that name${didYouMean(action, actions)}`,\n fix: `Add '${action}' to ${name}.intent, or remove the model entry. If it is only dispatched with next('${action}'), ignore this`,\n data: {action, intentActions: actions},\n })\n }\n },\n}\n","/**\n * SYG201 — STATE reducer dropped keys that existed in the previous state (warn)\n * SYG202 — STATE reducer returned undefined (warn)\n *\n * Mechanism: onReducer(component, action, prevState, nextState). Reported once\n * per action per component name. Not reported for:\n * - synthetic actions (`__*`) and INITIALIZE/HYDRATE (whole-state replacement)\n * - keys that are calculated fields (they are re-derived after the reducer)\n * - keys whose previous value was undefined\n * The set()/toggle() helpers always spread the previous state, so they can't\n * drop keys and never trigger SYG201.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {report, once, nameOf, isPlainObject} from './shared'\n\nconst SKIP = new Set(['INITIALIZE', 'HYDRATE'])\n\nexport const stateCheck: DiagnosticCheck = {\n id: 'state',\n\n onReducer(component, action, prevState, nextState) {\n if (typeof action !== 'string' || action.startsWith('__') || SKIP.has(action)) return\n const name = nameOf(component)\n\n if (nextState === undefined) {\n if (!once(`SYG202:${name}:${action}`)) return\n // Returning undefined from a Collection item's reducer is the documented way to remove\n // the item, so only the root (where it wipes the whole app state) is a warning.\n const sub = !!component?.isSubComponent\n report('SYG202', {\n component,\n severity: sub ? 'info' : 'warn',\n message: `The STATE reducer for '${action}' returned undefined` +\n (sub ? ' (this removes the item if the component is a Collection item)' : ''),\n fix: `Return the new state, e.g. (state, data) => ({ ...state, ... }), or return ABORT to leave the state unchanged`,\n data: {action},\n })\n return\n }\n\n if (!isPlainObject(prevState) || !isPlainObject(nextState)) return\n const calculated: Set<string> | null = component?._calculatedFieldNames || null\n const dropped = Object.keys(prevState).filter(key =>\n !(key in nextState) && prevState[key] !== undefined && !(calculated && calculated.has(key)))\n if (dropped.length === 0 || !once(`SYG201:${name}:${action}`)) return\n\n const list = dropped.map(k => `'${k}'`).join(', ')\n report('SYG201', {\n component,\n message: `The STATE reducer for '${action}' returned a state without ${list}, which ${dropped.length === 1 ? 'was' : 'were'} in the previous state (likely a missing ...state spread)`,\n fix: `Spread the previous state: (state, data) => ({ ...state, ... }). If removing ${dropped.length === 1 ? 'the key' : 'these keys'} is intended, ignore this`,\n data: {action, droppedKeys: dropped},\n })\n },\n}\n","/**\n * SYG105 — EVENTS type emitted but never selected, or selected but never\n * emitted (info).\n *\n * Mechanism: the EVENTS driver (src/extra/eventDriver.ts) calls onBusSelect\n * for every EVENTS.select(type) and onBusEmit for every bus event.\n * - emitted, nothing selects it: reported when the event is emitted. The bus\n * is a broadcast, so an event nobody has subscribed to by then is dropped.\n * - selected, never emitted: only knowable at the end of a session, so it is\n * reported on demand by checkEventBus() (inspect / test helpers), never\n * automatically.\n * EVENTS.select() with no type (all events) counts as selecting everything.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {report, once, onReset, didYouMean} from './shared'\n\nlet selected = new Set<string>()\nlet emitted = new Set<string>()\nlet selectsAll = false\n\nonReset(() => { selected = new Set(); emitted = new Set(); selectsAll = false })\n\nexport const eventsCheck: DiagnosticCheck = {\n id: 'events',\n\n onBusSelect(type) {\n if (type === undefined || type === null || type === '') { selectsAll = true; return }\n for (const t of ([] as any[]).concat(type)) if (typeof t === 'string') selected.add(t)\n },\n\n onBusEmit(type, emitterName) {\n if (typeof type !== 'string') return\n emitted.add(type)\n if (selectsAll || selected.has(type) || !once(`SYG105:emit:${type}`)) return\n report('SYG105', {\n component: emitterName,\n message: `EVENTS event '${type}' was emitted, but nothing selects it, so it was dropped${didYouMean(type, selected)}`,\n fix: `Subscribe with EVENTS.select('${type}') in the component that should react, or check the event name`,\n data: {type, direction: 'emitted-not-selected', emitter: emitterName},\n })\n },\n}\n\nexport interface EventBusSummary {\n selected: string[]\n emitted: string[]\n selectedNeverEmitted: string[]\n emittedNeverSelected: string[]\n}\n\n/**\n * Report SYG105 (info) for every EVENTS type that has been selected but never\n * emitted so far, and return the bus registry. Intended for inspect tooling and\n * tests, at a point where the session is \"done\".\n */\nexport function checkEventBus(): EventBusSummary {\n const selectedNeverEmitted = [...selected].filter(t => !emitted.has(t))\n const emittedNeverSelected = selectsAll ? [] : [...emitted].filter(t => !selected.has(t))\n for (const type of selectedNeverEmitted) {\n if (!once(`SYG105:select:${type}`)) continue\n report('SYG105', {\n message: `EVENTS.select('${type}') is used, but no component has emitted '${type}'${didYouMean(type, emitted)}`,\n fix: `Emit it from a model entry, e.g. { EVENTS: event('${type}', ...) }, or check the event name`,\n data: {type, direction: 'selected-not-emitted'},\n })\n }\n return {selected: [...selected], emitted: [...emitted], selectedNeverEmitted, emittedNeverSelected}\n}\n","/**\n * SYG106 — a prop passed by the parent is silently overwritten (warn).\n *\n * The view is called with { ...props, state, children, slots, context, peers },\n * so a parent prop with one of those names never reaches the child. (Tracker\n * G-007 item 2.) `state` is special: Sygnal reads it as the child's state\n * lens (a state field name or a { get, set } object), so it is only reported\n * when the value can't be a lens.\n *\n * Mechanism: onRender reads the component's current (sanitized) props.\n * Reported once per component name and prop.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {report, once, nameOf} from './shared'\n\nconst RESERVED = ['children', 'slots', 'context', 'peers']\n\nexport const propsCheck: DiagnosticCheck = {\n id: 'props',\n\n onRender(component) {\n const props = component && component.currentProps\n if (!props || typeof props !== 'object') return\n const name = nameOf(component)\n\n for (const key of RESERVED) {\n if (!(key in props) || !once(`SYG106:${name}:${key}`)) continue\n report('SYG106', {\n component,\n severity: 'warn',\n message: `The prop '${key}' passed to ${name} is overwritten: '${key}' is a reserved view argument, so the child never sees the parent's value`,\n fix: `Rename the prop (for example '${key}Value'), in the parent and in ${name}`,\n data: {prop: key},\n })\n }\n\n if ('state' in props) {\n const value = props.state\n const isLens = typeof value === 'string' || (value && typeof value === 'object' && typeof value.get === 'function')\n if (!isLens && value !== undefined && once(`SYG106:${name}:state`)) {\n report('SYG106', {\n component,\n severity: 'warn',\n message: `The prop 'state' passed to ${name} is not data: Sygnal reads it as the child's state lens (a state field name or a { get, set } object), and the view's 'state' argument is the child's own state`,\n fix: `To give ${name} a slice of the parent state use state=\"fieldName\"; to pass data, use another prop name (for example 'item')`,\n data: {prop: 'state', valueType: typeof value},\n })\n }\n }\n },\n}\n","/**\n * SYG401 — <Collection> has no `from` and the whole state is not an array (warn).\n * A defined `from` is checked by the core (D22).\n *\n * Reported through diagnostics in addition to the existing console output.\n *\n * Mechanism: the core has no hook at Collection instantiation, and the\n * Collection marker vnode is gone by the time onRender sees the tree. So, at\n * onModel (construction time, before the first render), this check wraps the\n * component INSTANCE's instantiateCollection method (an own property that\n * shadows the prototype method; Component calls `this.instantiateCollection`\n * for every new Collection). The wrapper inspects the marker's props and the\n * component's current state, then always calls the original. This only\n * happens when the dev-only 'sygnal/diagnostics' entry is loaded and\n * diagnostics are on. Reported once per component name and `from` value.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {reportSafely, once, nameOf, isPlainObject} from './shared'\n\nconst describe = (v: any): string =>\n v === null ? 'null' : v === undefined ? 'undefined' : Array.isArray(v) ? 'an array' : typeof v === 'object' ? 'an object' : `a ${typeof v}`\n\nfunction checkCollection(component: any, el: any): void {\n const props = (el && el.data && el.data.props) || {}\n const from = props.from\n const of = props.of\n const ofName = typeof of === 'function' ? (of.componentName || of.label || of.name || 'component') : String(of)\n const name = nameOf(component)\n\n let state = component.currentState\n try { if (typeof component.addCalculated === 'function') state = component.addCalculated(state) } catch (_) {}\n\n let problem: string | undefined\n let fix = `Pass the name of an array field in ${name}'s state, e.g. <Collection of={${ofName}} from=\"items\" />, and initialize that field to [] in initialState`\n // Every defined `from` (string field, lens object, or an invalid value) is reported by\n // the core itself (SYG401/SYG412, retrofitted in 1E) in every diagnostics mode (D22), so\n // this check only covers a missing `from`.\n if (from !== undefined) return\n if (!Array.isArray(state) && !(state && Array.isArray(state.value))) {\n problem = `has no 'from' prop, so it uses ${name}'s whole state, which is ${describe(state)}, not an array`\n }\n\n if (!problem || !once(`SYG401:${name}:undefined`)) return\n reportSafely('SYG401', {\n component,\n message: `<Collection of={${ofName}}> ${problem}, so it renders no items`,\n fix,\n data: {from: 'undefined', of: ofName},\n })\n}\n\nconst WRAPPED = '__sygnalDiagWrapped'\n\nexport const collectionsCheck: DiagnosticCheck = {\n id: 'collections',\n\n onModel(component) {\n const original = component && component.instantiateCollection\n if (typeof original !== 'function' || original[WRAPPED]) return\n const wrapped = function (this: any, el: any, ...rest: any[]) {\n try { checkCollection(this, el) } catch (_) {}\n return original.call(this, el, ...rest)\n }\n ;(wrapped as any)[WRAPPED] = true\n component.instantiateCollection = wrapped\n },\n}\n","import {Scope} from './isolate';\n\nfunction isValidNode(obj: any): obj is Element {\n const ELEM_TYPE = 1;\n const FRAG_TYPE = 11;\n return typeof HTMLElement === 'object'\n ? obj instanceof HTMLElement || obj instanceof DocumentFragment\n : obj &&\n typeof obj === 'object' &&\n obj !== null &&\n (obj.nodeType === ELEM_TYPE || obj.nodeType === FRAG_TYPE) &&\n typeof obj.nodeName === 'string';\n}\n\nexport function isClassOrId(str: string): boolean {\n return str.length > 1 && (str[0] === '.' || str[0] === '#');\n}\n\nexport function isDocFrag(\n el: Element | DocumentFragment\n): el is DocumentFragment {\n return el.nodeType === 11;\n}\n\nexport function checkValidContainer(\n container: Element | DocumentFragment | string\n): void {\n if (typeof container !== 'string' && !isValidNode(container)) {\n throw new Error(\n 'Given container is not a DOM element neither a selector string.'\n );\n }\n}\n\nexport function getValidNode(\n selectors: Element | DocumentFragment | string\n): Element | DocumentFragment | null {\n const domElement =\n typeof selectors === 'string'\n ? document.querySelector(selectors)\n : selectors;\n\n if (typeof selectors === 'string' && domElement === null) {\n throw new Error(`Cannot render into unknown element \\`${selectors}\\``);\n }\n return domElement;\n}\n\nexport function getSelectors(namespace: Array<Scope>): string {\n let res = '';\n for (let i = namespace.length - 1; i >= 0; i--) {\n if (namespace[i].type !== 'selector') {\n break;\n }\n res = namespace[i].scope + ' ' + res;\n }\n return res.trim();\n}\n\nexport function isEqualNamespace(\n a: Array<Scope> | undefined,\n b: Array<Scope> | undefined\n): boolean {\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i].type !== b[i].type || a[i].scope !== b[i].scope) {\n return false;\n }\n }\n return true;\n}\n\nexport function makeInsert(\n map: Map<string, Map<Element, any>>\n): (type: string, elm: Element, value: any) => void {\n return (type, elm, value) => {\n if (map.has(type)) {\n const innerMap = map.get(type)!;\n innerMap.set(elm, value);\n } else {\n const innerMap = new Map<Element, any>();\n innerMap.set(elm, value);\n map.set(type, innerMap);\n }\n };\n}\n","import {IsolateModule} from './IsolateModule';\nimport {Scope} from './isolate';\nimport {isEqualNamespace} from './utils';\n\nexport class ScopeChecker {\n public readonly _namespace: Array<Scope>;\n constructor(\n public readonly namespace: Array<Scope>,\n private isolateModule: IsolateModule\n ) {\n this._namespace = namespace.filter(n => n.type !== 'selector');\n }\n\n public isDirectlyInScope(leaf: Element): boolean {\n const namespace = this.isolateModule.getNamespace(leaf);\n if (!namespace) {\n return false;\n }\n\n if (\n this._namespace.length > namespace.length ||\n !isEqualNamespace(\n this._namespace,\n namespace.slice(0, this._namespace.length)\n )\n ) {\n return false;\n }\n for (let i = this._namespace.length; i < namespace.length; i++) {\n if (namespace[i].type === 'total') {\n return false;\n }\n }\n return true;\n }\n}\n","/**\n * SYG104 — isolation boundary: an intent selector matches nothing in the\n * component's own scope, but matches elements inside a child\n * component / Collection item (warn).\n * SYG103 — an intent selector has never matched a rendered element (info,\n * escalated to warn after >= 3 renders AND 2 s of render-idle time\n * without a match).\n *\n * Mechanism:\n * 1. MainDOMSource.select() calls the onSelector hook with the source it was\n * called on. Its namespace = the component's isolation scopes + any\n * earlier select() selectors. Selectors are queued as \"pending\".\n * 2. onIntent (right after the intent function ran, still inside the\n * component's constructor) claims the pending selectors whose isolation\n * scopes equal the component's DOM source scopes, and records\n * scopes -> component name (used to name the child for SYG104).\n * 3. onRender schedules a sweep after `settleMs` (onRender sees the vnode\n * before the DOM patch; nested components patch a few ms later). The\n * sweep finds the component's root element through the DOM driver's\n * IsolateModule and runs each selector with querySelectorAll, splitting\n * the matches with the DOM driver's own ScopeChecker (the same test the\n * EventDelegator uses to deliver events) into \"in scope\" and \"inside a\n * total-isolation boundary\" (child component).\n * 4. \"Ever matched\" is tracked per component NAME + selector, so a selector\n * that matches in one Collection item is fine for all of them.\n *\n * SYG103 noise control (conditional rendering is normal): a selector whose\n * class/id/tag tokens all appear in the component's view source is assumed\n * to be conditionally rendered and is not reported. A selector that does not\n * appear in the view (typo, or an element rendered elsewhere) is reported as\n * info on the first sweep, and escalated per the rule above.\n *\n * Only real DOM sources (with an IsolateModule) are checked; renderComponent's\n * mock DOM never calls onSelector.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {ScopeChecker} from '../../../cycle/dom/ScopeChecker'\nimport type {Scope} from '../../../cycle/dom/isolate'\nimport {reportSafely, once, onReset, timing, nameOf} from './shared'\n\ninterface Tracked {\n name: string\n source: any\n selectors: string[]\n renders: number\n settleTimer?: any\n idleTimer?: any\n /** selectors already explained by SYG104 */\n crossed: Set<string>\n disposed?: boolean\n}\n\nconst scopesOf = (ns: Scope[]): Scope[] => ns.filter(s => s.type !== 'selector')\nconst keyOf = (scopes: Scope[]): string => scopes.map(s => `${s.type[0]}:${s.scope}`).join('/')\n\nlet pending: Array<{key: string; selector: string}> = []\nlet tracked = new WeakMap<object, Tracked>()\n/** isolation-scope key -> the component instance that owns it (latest wins) */\nlet owners = new Map<string, any>()\nconst ownerKeys = new WeakMap<object, string>()\nlet matched = new Set<string>()\nlet viewTokens = new WeakMap<object, string>()\n\nonReset(() => {\n pending = []\n tracked = new WeakMap()\n owners = new Map()\n matched = new Set()\n})\n\nconst unref = (t: any) => { if (t && typeof t.unref === 'function') t.unref(); return t }\n\nfunction viewSource(component: any): string {\n const view = component && component.view\n if (typeof view !== 'function') return ''\n let src = viewTokens.get(view)\n if (src === undefined) {\n try { src = Function.prototype.toString.call(view) } catch (_) { src = '' }\n viewTokens.set(view, src as string)\n }\n return src as string\n}\n\n/** class / id / tag tokens of a selector: '.a .b-c > #d' -> ['a', 'b-c', 'd'] */\nconst tokensOf = (selector: string): string[] =>\n (selector.replace(/\\[[^\\]]*\\]|:[\\w-]+(\\([^)]*\\))?/g, ' ').match(/[A-Za-z_][\\w-]*/g) || [])\n\nfunction appearsInView(component: any, selector: string): boolean {\n const src = viewSource(component)\n if (!src) return false\n const tokens = tokensOf(selector)\n if (!tokens.length) return false\n return tokens.every(t => new RegExp(`(^|[^\\\\w-])${t.replace(/[-]/g, '\\\\-')}($|[^\\\\w-])`).test(src))\n}\n\nfunction rootElementOf(t: Tracked): Element | undefined {\n try {\n const im = t.source._isolateModule\n return im && im.getElement(scopesOf(t.source.namespace))\n } catch (_) {\n return undefined\n }\n}\n\nfunction childNameFor(t: Tracked, elements: Element[]): string | undefined {\n const im = t.source._isolateModule\n const depth = scopesOf(t.source.namespace).length\n for (const el of elements) {\n let ns: Scope[] | undefined\n try { ns = im.getNamespace(el) } catch (_) { ns = undefined }\n if (!ns) continue\n for (let i = depth; i < ns.length; i++) {\n if (ns[i].type !== 'total') continue\n const owner = owners.get(keyOf(ns.slice(0, i + 1)))\n if (owner) return nameOf(owner)\n break\n }\n }\n return undefined\n}\n\nfunction report103(component: any, t: Tracked, selector: string, severity: 'info' | 'warn'): void {\n if (!once(`SYG103:${severity}:${t.name}:${selector}`)) return\n reportSafely('SYG103', {\n component,\n severity,\n message: `DOM.select('${selector}') in ${t.name} has not matched any element ${t.name} rendered` +\n (severity === 'warn' ? ` (after ${t.renders} renders)` : ''),\n fix: `Check the selector against the view's className/id. If the element is rendered by a child component, handle the event inside that child`,\n data: {selector, renders: t.renders},\n })\n}\n\nfunction sweep(component: any, t: Tracked, escalate: boolean): void {\n if (t.disposed) return\n const root = rootElementOf(t)\n if (!root || typeof root.querySelectorAll !== 'function') return\n const im = t.source._isolateModule\n const checker = new ScopeChecker(t.source.namespace, im)\n let unmatched = false\n\n for (const selector of t.selectors) {\n const matchKey = `${t.name}\\u0000${selector}`\n if (matched.has(matchKey) || t.crossed.has(selector)) continue\n let all: Element[]\n try {\n all = Array.prototype.slice.call(root.querySelectorAll(selector))\n if (root.matches(selector)) all.push(root)\n } catch (_) {\n continue // invalid selector: the DOM driver reports that itself\n }\n const own = all.filter(el => { try { return checker.isDirectlyInScope(el) } catch (_) { return false } })\n if (own.length) { matched.add(matchKey); continue }\n\n if (all.length) {\n t.crossed.add(selector)\n if (!once(`SYG104:${t.name}:${selector}`)) continue\n const child = childNameFor(t, all) || 'a child component'\n reportSafely('SYG104', {\n component,\n message: `DOM.select('${selector}') in ${t.name} matches elements inside ${child} (isolated), so ${t.name} never receives their events`,\n fix: `Handle the event in ${child} and send it up with PARENT (read it here with CHILD.select(${child})), or use EVENTS`,\n data: {selector, child},\n })\n continue\n }\n\n if (appearsInView(component, selector)) continue\n unmatched = true\n if (escalate && t.renders >= timing.minRenders) report103(component, t, selector, 'warn')\n else report103(component, t, selector, 'info')\n }\n\n if (unmatched && !escalate) {\n clearTimeout(t.idleTimer)\n t.idleTimer = unref(setTimeout(() => { t.idleTimer = undefined; sweep(component, t, true) }, timing.idleMs))\n }\n}\n\n/**\n * inspect (2B, read-only): a component's intent selectors on a real DOM source\n * and whether a sweep has seen them match (true), only match inside a child\n * (crossed), or neither yet. undefined when the component isn't tracked.\n */\nexport function selectorStatus(component: any): Array<{selector: string; matched: boolean | null; crossed: boolean}> | undefined {\n const t = tracked.get(component)\n return t && t.selectors.map(selector => ({\n selector,\n matched: matched.has(`${t.name}\\u0000${selector}`) ? true : t.crossed.has(selector) ? false : null,\n crossed: t.crossed.has(selector),\n }))\n}\n\nexport const domCheck: DiagnosticCheck = {\n id: 'dom',\n\n onSelector(source, selector) {\n const ns: Scope[] | undefined = source && source.namespace\n if (!Array.isArray(ns) || typeof selector !== 'string' || !selector) return\n const prefix = ns.filter(s => s.type === 'selector').map(s => s.scope).join(' ')\n pending.push({key: keyOf(scopesOf(ns)), selector: prefix ? `${prefix} ${selector}` : selector})\n if (pending.length > 1000) pending.shift()\n },\n\n onIntent(component) {\n const claimed = pending\n pending = []\n const source = component && component.sources && component.sources[component.DOMSourceName || 'DOM']\n if (!source || !source._isolateModule || !Array.isArray(source.namespace)) return\n const key = keyOf(scopesOf(source.namespace))\n const name = nameOf(component)\n owners.set(key, component)\n ownerKeys.set(component, key)\n const selectors = [...new Set(claimed.filter(p => p.key === key).map(p => p.selector))]\n if (selectors.length) tracked.set(component, {name, source, selectors, renders: 0, crossed: new Set()})\n },\n\n onRender(component) {\n const t = tracked.get(component)\n if (!t || t.disposed) return\n t.renders++\n clearTimeout(t.idleTimer)\n t.idleTimer = undefined\n if (t.settleTimer) return\n t.settleTimer = unref(setTimeout(() => {\n t.settleTimer = undefined\n sweep(component, t, false)\n }, timing.settleMs))\n },\n\n onDispose(component) {\n const key = ownerKeys.get(component)\n if (key !== undefined && owners.get(key) === component) owners.delete(key)\n const t = tracked.get(component)\n if (!t) return\n t.disposed = true\n clearTimeout(t.settleTimer)\n clearTimeout(t.idleTimer)\n tracked.delete(component)\n },\n}\n","/**\n * Sygnal diagnostic code registry.\n *\n * Every diagnostic Sygnal reports has a stable code (`SYG123`), a default\n * severity, a short title, and a docs anchor (`docsSlug`) on\n * https://sygnal.js.org/reference/errors (base URL = the `site` field of\n * docs/astro.config.mjs).\n *\n * The registry is stored as two parallel tables so the published bundle only\n * carries what the runtime needs:\n * - CODE_SEVERITY: code → default severity (used by report(); in the bundle)\n * - CODE_TITLES: code → title (docs/inspect/static-checker metadata; pure\n * object literal, tree-shaken unless something imports it)\n * getCodeInfo(code) / listCodes() assemble the full\n * { code, severity, title, docsSlug } records. To add a code, add it to BOTH\n * tables below (inside your reserved range), or call registerCodes() from a\n * workstream's own module. docsSlug is always the lower-cased code\n * ('SYG101' → https://sygnal.js.org/reference/errors#syg101).\n *\n * (Comments are attached to type-only declarations so the TypeScript emit\n * drops them — keeps them out of the published bundle and the size gate.)\n *\n * Severity:\n * - 'error' — throws (or is rethrown, enriched) at the call site\n * - 'warn' — console + collected (when diagnostics mode is 'warn')\n * - 'info' — collected only; surfaced through inspect / test helpers\n *\n * Ranges (see dev-plans/PLAN-1.md §2):\n * SYG1xx Wiring: intent <-> model <-> view <-> events\n * SYG2xx State & reducers\n * SYG3xx Streams & intent construction (incl. xstream hints)\n * SYG4xx Collections, Switchable, sub-components, context\n * SYG5xx Strict mode / canonical-form violations\n * SYG6xx Drivers & run configuration\n * SYG9xx Internal invariants\n *\n * ---------------------------------------------------------------------------\n * RESERVED RANGES (PLAN-1 workstream allocation — add entries only inside the\n * range your workstream owns; changes outside go through the coordinator):\n *\n * 0B (diagnostics core) SYG900 (check-failure invariant)\n * 1A (runtime checks) SYG101-105, SYG110, SYG201, SYG202, SYG301,\n * SYG401 (pre-seeded below), plus SYG106-199\n * and SYG302-399 for new checks\n * 1E (message retrofit) SYG206-299, SYG402-499, SYG601-699, SYG901-999\n * 2A (strict mode) SYG500-599\n * unallocated SYG100, SYG200, SYG203-205, SYG300, SYG400,\n * SYG600 (coordinator assigns on request)\n * ---------------------------------------------------------------------------\n */\nexport type DiagnosticSeverity = 'error' | 'warn' | 'info'\n\nexport interface DiagnosticCodeInfo {\n code: string\n severity: DiagnosticSeverity\n title: string\n // anchor on the errors reference page, e.g. 'syg101' → /reference/errors#syg101\n docsSlug: string\n}\n\nexport const DOCS_BASE_URL = 'https://sygnal.js.org'\n\nexport const CODE_SEVERITY: Record<string, DiagnosticSeverity> = {\n SYG101: 'warn',\n SYG102: 'info',\n SYG103: 'info',\n SYG104: 'warn',\n SYG105: 'info',\n SYG106: 'warn',\n SYG110: 'warn',\n SYG111: 'warn',\n SYG201: 'warn',\n SYG202: 'warn',\n SYG301: 'error',\n SYG401: 'warn',\n SYG900: 'warn',\n // ---- 1E retrofit codes (SYG206-299, 402-499, 601-699, 901-999) ----\n SYG206: 'error',\n SYG207: 'warn',\n SYG208: 'warn',\n SYG209: 'error',\n SYG210: 'warn',\n SYG211: 'error',\n SYG212: 'error',\n SYG213: 'warn',\n SYG214: 'error',\n SYG215: 'error',\n SYG216: 'error',\n SYG217: 'warn',\n SYG218: 'error',\n SYG219: 'warn',\n SYG220: 'warn',\n SYG402: 'error',\n SYG403: 'error',\n SYG404: 'error',\n SYG405: 'warn',\n SYG406: 'error',\n SYG407: 'error',\n SYG408: 'error',\n SYG409: 'warn',\n SYG410: 'error',\n SYG411: 'error',\n SYG412: 'error',\n SYG413: 'error',\n SYG414: 'error',\n SYG415: 'error',\n SYG416: 'error',\n SYG417: 'warn',\n SYG418: 'error',\n SYG419: 'error',\n SYG420: 'error',\n SYG601: 'error',\n SYG602: 'error',\n SYG603: 'error',\n SYG604: 'error',\n SYG605: 'error',\n SYG606: 'error',\n SYG607: 'error',\n SYG901: 'error',\n SYG902: 'error',\n SYG903: 'error',\n // ---- end 1E retrofit codes ----\n}\n\nexport const CODE_TITLES: Record<string, string> = {\n // SYG1xx wiring (1A)\n SYG101: 'Intent action has no model entry',\n SYG102: 'Model entry is unreachable',\n SYG103: 'Intent selector matched no rendered element',\n SYG104: 'Intent selector crosses an isolation boundary',\n SYG105: 'EVENTS type selected but never emitted, or emitted but never selected',\n SYG106: 'Parent prop is overwritten by a reserved view argument',\n SYG110: 'Intent selector not present in the component view',\n SYG111: 'Controlled input has no input listener',\n // SYG2xx state & reducers (1A)\n SYG201: 'STATE reducer dropped keys from the previous state',\n SYG202: 'STATE reducer returned undefined',\n // SYG3xx streams & intent construction (1A)\n SYG301: 'RxJS operator used on an xstream stream',\n // SYG4xx collections / switchable / sub-components / context (1A)\n SYG401: \"Collection 'from' field is missing or not an array\",\n // SYG5xx strict mode / canonical forms (2A; dev-plans/PLAN-1-canonical-forms.md)\n SYG501: 'View uses positional arguments',\n SYG502: 'STATE reducer signals no change without ABORT',\n SYG503: 'Side effect in a STATE reducer that returns ABORT',\n SYG504: \"'ACTION | SINK' shorthand model key\",\n SYG505: 'Non-canonical EVENTS emit',\n SYG506: 'CHILD.select() with a string component name',\n SYG507: 'Prop drilled through more than 2 component levels',\n // SYG9xx internal (0B)\n SYG900: 'A diagnostics check threw',\n // ---- 1E retrofit codes (SYG206-299, 402-499, 601-699, 901-999) ----\n SYG206: 'Invalid calculated field definition',\n SYG207: 'Calculated field shadows an initialState key',\n SYG208: 'Calculated field depends on an unknown key',\n SYG209: 'Circular calculated field dependency',\n SYG210: 'INITIALIZE used with a sink other than STATE',\n SYG211: 'Invalid model shorthand entry',\n SYG212: 'Model entry is not a function or an object of sinks',\n SYG213: 'Duplicate model entry for the same action and sink',\n SYG214: 'EFFECT handler threw',\n SYG215: 'next() delay is not a number',\n SYG216: 'Reducer threw',\n SYG217: 'Driver-sink reducer returned undefined',\n SYG218: 'Reducer returned an unsupported type',\n SYG219: 'EFFECT handler returned a value',\n SYG220: 'Calculated field threw',\n SYG402: 'Context is not an object',\n SYG403: 'Invalid context entry',\n SYG404: 'Context stream errored',\n SYG405: 'Sub-component has initialState without isolatedState',\n SYG406: 'View threw',\n SYG407: 'onError handler threw',\n SYG408: 'Sub-component failed to instantiate',\n SYG409: 'Child tried to update a calculated field',\n SYG410: \"Invalid sub-component 'state' prop\",\n SYG411: \"Collection 'of' is missing or not a component\",\n SYG412: \"Invalid Collection 'from' prop\",\n SYG413: 'Unnamed component factory not found',\n SYG414: 'Component not found',\n SYG415: \"Switchable 'of' is missing or invalid\",\n SYG416: \"Switchable 'current' is missing or invalid\",\n SYG417: 'Portal target not found',\n SYG418: 'Invalid Collection sort prop',\n SYG419: \"Invalid switchable() 'name$' parameter\",\n SYG420: 'JSX tag is undefined',\n SYG601: 'Missing or invalid sources',\n SYG602: 'Intent is not a function',\n SYG603: 'Intent returned an invalid value',\n SYG604: 'Invalid hmrActions',\n SYG605: \"Intent action name contains '|'\",\n SYG606: 'calculated is not an object',\n SYG607: 'State source not found',\n SYG901: 'Sub-component sink stream errored',\n SYG902: 'EFFECT stream errored',\n SYG903: 'Component factory returned invalid sinks',\n // ---- end 1E retrofit codes ----\n}\n\n// 2A: strict-mode (SYG5xx) default severities. Kept OUT of CODE_SEVERITY so the\n// main bundle doesn't carry them (D29: zero bytes); the 'sygnal/diagnostics'\n// entry registers them (registerCodes) and its reports pass the severity\n// explicitly. sygnal-check keeps the same table in sygnal-check/src/codes.js.\nexport const STRICT_CODE_SEVERITY: Record<string, DiagnosticSeverity> = {\n SYG501: 'warn',\n SYG502: 'warn',\n SYG503: 'warn',\n SYG504: 'warn',\n SYG505: 'warn',\n SYG506: 'warn',\n SYG507: 'info',\n}\n\nexport function getCodeInfo(code: string): DiagnosticCodeInfo | undefined {\n const severity = CODE_SEVERITY[code]\n return severity && { code, severity, title: CODE_TITLES[code] || '', docsSlug: code.toLowerCase() }\n}\n\nexport function listCodes(): DiagnosticCodeInfo[] {\n return Object.keys(CODE_SEVERITY).map(c => getCodeInfo(c)!)\n}\n\nexport function registerCodes(entries: Array<[string, DiagnosticSeverity, string]>): void {\n for (const [code, severity, title] of entries) {\n CODE_SEVERITY[code] = severity\n CODE_TITLES[code] = title\n }\n}\n\nexport function docsUrlFor(code: string): string {\n return `${DOCS_BASE_URL}/reference/errors#${code.toLowerCase()}`\n}\n","/**\n * Strict mode: canonical-form checks (PLAN-1 workstream 2A,\n * dev-plans/PLAN-1-canonical-forms.md). Runtime half; sygnal-check --strict\n * implements every rule statically.\n *\n * Off by default. Turn it on with any of:\n * - configureStrict(true) (this entry)\n * - renderComponent(C, { strict: true }) (tests)\n * - globalThis.__SYGNAL_STRICT__ = true (e.g. injected by a dev tool)\n * and diagnostics must be on (strict reports go through the same core).\n * The flag lives on the core bridge object, so it is shared by every copy of\n * this entry and by renderComponent.\n *\n * | Code | Rule (canonical form) | Runtime mechanism |\n * |--------|------------------------------------------|-----------------------------------------|\n * | SYG501 | C1 destructure the view's first argument | onModel: component.view.length > 1 |\n * | SYG502 | C3 return ABORT for \"no change\" | onReducer: returned the previous state |\n * | | | object (undefined stays SYG202) |\n * | SYG504 | C5 object form, no 'ACTION | SINK' keys | onModel: raw model keys containing '|' |\n * | SYG503, SYG505, SYG506, SYG507: static only (sygnal-check --strict); the\n * runtime can't tell emit() from { EVENTS }, a side effect from a pure\n * reducer, or see CHILD.select() arguments without a core hook.\n *\n * Every finding is reported once per component name (+ action / key).\n * The SYG5xx severities are registered here (registerCodes) and passed\n * explicitly, so the main bundle doesn't carry them (D29).\n */\nimport type {DiagnosticCheck} from '../index'\nimport {CODE_TITLES, STRICT_CODE_SEVERITY, registerCodes} from '../codes'\nimport type {DiagnosticSeverity} from '../codes'\nimport {bridge, report, once, nameOf, isInternalAction} from './shared'\n\nregisterCodes(Object.keys(STRICT_CODE_SEVERITY).map(code =>\n [code, STRICT_CODE_SEVERITY[code], CODE_TITLES[code]] as [string, DiagnosticSeverity, string]))\n\n/**\n * Turn runtime strict checks on (true), off (false), or back to the default\n * (undefined → globalThis.__SYGNAL_STRICT__ === true).\n */\nexport function configureStrict(on?: boolean): void {\n const core = bridge()\n if (core) core.strict = on\n}\n\n/** Whether runtime strict checks are on. */\nexport function isStrictEnabled(): boolean {\n const flag = bridge()?.strict\n return flag === undefined ? (globalThis as any).__SYGNAL_STRICT__ === true : flag === true\n}\n\nconst strictReport = (code: string, details: Parameters<typeof report>[1]) =>\n report(code, {severity: STRICT_CODE_SEVERITY[code], ...details})\n\nexport const strictCheck: DiagnosticCheck = {\n id: 'strict',\n\n onModel(component) {\n if (!isStrictEnabled() || !component) return\n const name = nameOf(component)\n\n // SYG501 — view(props, state, context, peers): positional use of the 2nd+ args.\n // (A default value or a rest parameter stops Function.length, so this can\n // miss `(props, state = {})`, but it never flags a single-argument view.)\n const view = component.view\n if (typeof view === 'function' && view.length > 1 && !view.__sygnalLazy && once(`SYG501:${name}`)) {\n const extra = ['state', 'context', 'peers'].slice(0, view.length - 1)\n strictReport('SYG501', {\n component,\n message: `The view takes ${view.length} positional arguments (props, ${extra.join(', ')})`,\n fix: `Destructure the first argument instead: function ${name}({ ${extra.join(', ')}, ...props })`,\n data: {arity: view.length},\n })\n }\n\n // SYG504 — 'ACTION | SINK' shorthand keys\n const model = component.model\n if (!model || typeof model !== 'object') return\n for (const key of Object.keys(model)) {\n if (!key.includes('|')) continue\n const [action, sink] = key.split('|').map(s => s.trim())\n if (!action || !sink || !once(`SYG504:${name}:${key}`)) continue\n const rewrite = sink === 'EVENTS'\n ? `${action}: { EVENTS: event('TYPE', (state, data) => payload) }`\n : `${action}: { ${sink}: (state, data, next) => ... }`\n strictReport('SYG504', {\n component,\n message: `Model key '${key}' uses the 'ACTION | SINK' shorthand`,\n fix: `Use the object form: ${rewrite} (merge it into an existing '${action}' entry if there is one)`,\n data: {key, action, sink},\n })\n }\n },\n\n onReducer(component, action, prevState, nextState) {\n if (!isStrictEnabled() || isInternalAction(action)) return // incl. INITIALIZE/HYDRATE/DISPOSE\n // undefined is SYG202 (state check, every mode); only the identical object here.\n if (!prevState || typeof prevState !== 'object' || nextState === undefined) return\n let same = nextState === prevState\n if (!same && typeof component?.addCalculated === 'function') {\n // with calculated fields the reducer saw addCalculated(prev) (memoized: same object)\n try { same = component.addCalculated(prevState) === nextState } catch (_) {}\n }\n const name = nameOf(component)\n if (!same || !once(`SYG502:${name}:${action}`)) return\n strictReport('SYG502', {\n component,\n message: `The STATE reducer for '${action}' returned the unchanged state object`,\n fix: `Return ABORT for \"no change\": ${action}: (state, data) => cond ? { ...state, ... } : ABORT`,\n data: {action},\n })\n },\n}\n","/**\n * SYG301 — an RxJS operator was called on an xstream stream (error).\n *\n * Without help this fails with a bare \"x.switchMap is not a function\" inside\n * the intent function. Mechanism: when 'sygnal/diagnostics' is loaded, every\n * RxJS operator name below that xstream's Stream does NOT already have is\n * defined on Stream.prototype (non-enumerable) as a method that throws an\n * enriched TypeError: same \"stream.<op> is not a function\" shape, plus the\n * xstream equivalent and the SYG301 docs link. The error is also reported\n * (collected / printed per the diagnostics mode; in 'error' mode report()\n * throws the DiagnosticError itself). It works anywhere a stream is used\n * (intent, peers, drivers), with no hook in component.ts.\n *\n * Caveat: `typeof stream.pipe === 'function'` is true while this entry is\n * loaded (dev only).\n */\nimport {report} from './shared'\nimport {docsUrlFor} from '../codes'\n\n/** RxJS operator -> xstream equivalent. */\nexport const RXJS_HINTS: Record<string, string> = {\n pipe: `chain xstream operators directly (.map(...).filter(...)), or use .compose(operator) for extra operators`,\n switchMap: `.map(x => inner$).flatten()`,\n mergeMap: `.map(x => inner$).compose(flattenConcurrently) (import { flattenConcurrently } from 'sygnal')`,\n flatMap: `.map(x => inner$).compose(flattenConcurrently) (import { flattenConcurrently } from 'sygnal')`,\n concatMap: `.map(x => inner$).compose(flattenSequentially) (import { flattenSequentially } from 'sygnal')`,\n exhaustMap: `.map(x => inner$).flatten() (xstream has no exhaustMap; ignore new values while busy with .filter())`,\n switchAll: `.flatten()`,\n mergeAll: `.compose(flattenConcurrently) (import { flattenConcurrently } from 'sygnal')`,\n concatAll: `.compose(flattenSequentially) (import { flattenSequentially } from 'sygnal')`,\n debounceTime: `.compose(debounce(ms)) (import { debounce } from 'sygnal')`,\n debounce: `.compose(debounce(ms)) (import { debounce } from 'sygnal')`,\n throttleTime: `.compose(throttle(ms)) (import { throttle } from 'sygnal')`,\n throttle: `.compose(throttle(ms)) (import { throttle } from 'sygnal')`,\n auditTime: `.compose(throttle(ms)) (import { throttle } from 'sygnal')`,\n delay: `.compose(delay(ms)) (import { delay } from 'sygnal')`,\n distinctUntilChanged: `.compose(dropRepeats()) (import { dropRepeats } from 'sygnal')`,\n withLatestFrom: `.compose(sampleCombine(other$)) (import { sampleCombine } from 'sygnal')`,\n combineLatest: `xs.combine(a$, b$) (import { xs } from 'sygnal')`,\n combineLatestWith: `xs.combine(a$, b$) (import { xs } from 'sygnal')`,\n merge: `xs.merge(a$, b$) (import { xs } from 'sygnal')`,\n mergeWith: `xs.merge(a$, b$) (import { xs } from 'sygnal')`,\n concat: `concat(a$, b$) (import { concat } from 'sygnal')`,\n scan: `.fold((acc, x) => next, seed)`,\n reduce: `.fold((acc, x) => next, seed).last()`,\n skip: `.drop(n)`,\n first: `.take(1)`,\n takeUntil: `.endWhen(other$)`,\n tap: `.debug(fn)`,\n do: `.debug(fn)`,\n catchError: `.replaceError(err => fallback$)`,\n catch: `.replaceError(err => fallback$)`,\n pluck: `.map(x => x.field)`,\n share: `xstream streams are already shared (hot); use .remember() to replay the latest value`,\n shareReplay: `.remember()`,\n publishReplay: `.remember()`,\n finalize: `.debug({ complete: fn }) or handle completion in the subscriber`,\n}\n\nconst SYG301_URL = docsUrlFor('SYG301')\n\nfunction rxjsError(op: string): TypeError {\n const hint = RXJS_HINTS[op]\n const message = `stream.${op} is not a function: '${op}' is an RxJS operator, but Sygnal streams are xstream streams`\n const fix = `Use ${hint}`\n // In 'error' mode report() throws the DiagnosticError itself (we are about to throw anyway).\n const d = report('SYG301', {message, fix, data: {operator: op, hint}})\n const err: any = new TypeError(d ? d.text : `[Sygnal SYG301] ${message}. ${fix}. ${SYG301_URL}`)\n err.diagnostic = d\n return err\n}\n\n/** Install the hints on xstream's Stream.prototype. Returns an uninstall function. */\nexport function installRxjsHints(proto: any): () => void {\n const added: string[] = []\n if (!proto) return () => {}\n for (const op of Object.keys(RXJS_HINTS)) {\n if (op in proto) continue\n Object.defineProperty(proto, op, {\n configurable: true,\n writable: true,\n enumerable: false,\n value: function rxjsOperatorHint() { throw rxjsError(op) },\n })\n added.push(op)\n }\n return () => { for (const op of added) delete proto[op] }\n}\n","/**\n * inspect() — the machine-readable app graph at runtime (PLAN-1 workstream 2B).\n *\n * Built only from what the diagnostics hooks already see, keyed by component\n * instance (so diagnostics must be on while the app runs):\n * onIntent registers the instance (name, parent, kind) and its intent\n * action names; claims the EVENTS.select() types seen since the\n * previous onIntent (intent runs synchronously right before it)\n * onModel action -> sinks; and wraps the component's own EVENTS model\n * stream (component.model$.EVENTS, before initSinks merges it)\n * in an identity map that records the emitted types. Since\n * B-023 the driver-side emitter name (onBusEmit) is the\n * emitting component's, but it is only a name, and this\n * graph is per instance, so the per-instance tap stays.\n * onReducer which model-only actions actually ran (=> dispatched by next())\n * onBusEmit EVENTS types seen on the bus\n * onBusSelect EVENTS types selected (see onIntent)\n * onDispose prunes the instance\n * Selectors come from the DOM check (real DOM) or from renderComponent (mock\n * DOM, passed in as options.selectors). The same shape is produced statically\n * by `sygnal-check --graph`; the JSON Schema is\n * sygnal-check/schema/inspect.schema.json, the types are in ./public.d.ts.\n *\n * This lives in the 'sygnal/diagnostics' dev entry only (D29: zero bytes in\n * app bundles). installInspect() publishes inspect() on the core bridge\n * (renderComponent's t.inspect() reads it there) and on the devtools object\n * (window.__SYGNAL_DEVTOOLS__, which is getDevTools()) once it exists.\n */\nimport type {DiagnosticCheck} from '../index'\nimport type {InspectGraph, InspectComponent, InspectOptions, InspectSelector, InspectDiagnostic, InspectChild} from './public'\nimport {bridge, onReset, nameOf, isPlainObject, BUILTIN_ACTIONS} from './shared'\nimport {checkEventBus} from './events'\nimport {selectorStatus} from './dom'\n\ntype Kind = InspectComponent['kind']\n\ninterface Rec {\n instance: any\n id: string\n name: string\n parentId: string | null\n kind: Kind\n /** null: single-stream intent (no action names) */\n intentActions: string[] | null\n injected: Set<string>\n modelMap: Record<string, string[]>\n fired: Set<string>\n eventsSelected: Set<string>\n eventsEmitted: Set<string>\n}\n\nlet records = new Map<any, Rec>()\nlet pendingSelects: string[] = []\n/** every EVENTS type seen on the bus */\nlet busTypes = new Set<string>()\n\nonReset(() => {\n records = new Map()\n pendingSelects = []\n busTypes = new Set()\n})\nconst uniq = <T>(list: Iterable<T>): T[] => [...new Set(list)]\n\nfunction kindOf(c: any): Kind {\n const s = (c && c.sources) || {}\n if (typeof s.__parentComponentNumber !== 'number') return 'root'\n // Collection items get PARENT: null (src/component.ts instantiateCollection)\n if ('PARENT' in s && s.PARENT === null) return 'collection-item'\n // switchable() adds a lower-case `state` source next to the component's own (src/switchable.ts)\n if (c.stateSourceName !== 'state' && 'state' in s && s.state !== s[c.stateSourceName]) return 'switchable'\n return 'child'\n}\n\nfunction ensure(c: any): Rec {\n let r = records.get(c)\n if (!r) {\n const parent = c && c.sources && c.sources.__parentComponentNumber\n r = {\n instance: c,\n id: String(c && c._componentNumber),\n name: nameOf(c),\n parentId: typeof parent === 'number' ? String(parent) : null,\n kind: kindOf(c),\n intentActions: [],\n injected: new Set(),\n modelMap: {},\n fired: new Set(),\n eventsSelected: new Set(),\n eventsEmitted: new Set(),\n }\n records.set(c, r)\n }\n return r\n}\n\nlet devtools: any\nfunction attachDevtools(): void {\n const dt = (globalThis as any).__SYGNAL_DEVTOOLS__\n if (!dt || typeof dt !== 'object') return\n devtools = dt\n if (dt.inspect !== inspect) {\n try { dt.inspect = inspect } catch (_) { /* frozen: ignore */ }\n }\n}\n\nexport const inspectCheck: DiagnosticCheck = {\n id: 'inspect',\n\n onBusSelect(type) {\n if (type === undefined || type === null || type === '') pendingSelects.push('*')\n else for (const t of ([] as any[]).concat(type)) if (typeof t === 'string') pendingSelects.push(t)\n if (pendingSelects.length > 1000) pendingSelects.shift()\n },\n\n onIntent(component, actionNames) {\n attachDevtools()\n const r = ensure(component)\n const intent$ = component && component.intent$\n r.intentActions = intent$ && typeof intent$.addListener === 'function' ? null : (actionNames || [])\n r.injected = new Set((intent$ && typeof intent$ === 'object' && intent$.__sygnalTestActions) || [])\n for (const t of pendingSelects) r.eventsSelected.add(t)\n pendingSelects = []\n },\n\n onModel(component, modelMap) {\n const r = ensure(component)\n r.modelMap = modelMap || {}\n const model$ = component && component.model$\n const events$ = model$ && model$.EVENTS\n if (events$ && typeof events$.map === 'function' && !events$.__sygnalInspect) {\n const tapped = events$.map((ev: any) => {\n if (ev && typeof ev.type === 'string') r.eventsEmitted.add(ev.type)\n return ev\n })\n tapped.__sygnalInspect = true\n model$.EVENTS = tapped\n }\n },\n\n onReducer(component, action) {\n const r = records.get(component)\n if (r && typeof action === 'string') r.fired.add(action)\n },\n\n onBusEmit(type) {\n if (typeof type === 'string') busTypes.add(type)\n },\n\n onDispose(component) {\n records.delete(component)\n },\n}\n\nconst slim = (d: any): InspectDiagnostic => {\n const out: InspectDiagnostic = {code: d.code, severity: d.severity, message: d.message}\n if (d.component) out.component = d.component\n if (d.fix) out.fix = d.fix\n if (d.docsUrl) out.docsUrl = d.docsUrl\n if (d.data !== undefined) {\n // keep it JSON-safe (data can hold errors, vnodes, ...)\n try { out.data = JSON.parse(JSON.stringify(d.data)) } catch (_) { /* drop */ }\n }\n return out\n}\n\nfunction actionsOf(r: Rec): InspectComponent['actions'] {\n const intent = (r.intentActions || []).filter(a => !r.injected.has(a))\n const names = uniq([...intent, ...Object.keys(r.modelMap)]).filter(a => typeof a === 'string' && !a.startsWith('__'))\n return names.map(name => ({\n name,\n trigger: BUILTIN_ACTIONS.has(name) ? 'builtin'\n : intent.includes(name) ? 'intent'\n : !r.injected.has(name) && r.fired.has(name) ? 'next'\n : 'unknown',\n sinks: [...(r.modelMap[name] || [])],\n }))\n}\n\nfunction stateKeysOf(c: any, calculated: string[]): string[] {\n const s = c && c.currentState\n return isPlainObject(s) ? Object.keys(s).filter(k => !calculated.includes(k)) : []\n}\n\n/**\n * renderComponent's mock DOM (src/extra/testing.ts passes its listener registry):\n * listener paths are the select() chain with isolation scopes as '.___<scope>' entries;\n * probe(selectors, scope) matches one against the latest vtree: own = in the component's\n * own scope, child = the scope of the first (isolated) child component it matches inside.\n */\ninterface MockDom {\n listeners: Map<string, string[]>\n evTypes: Record<string, string[]>\n owners: Map<string, string>\n scopeIds: Map<string, number>\n probe: (selectors: string[], scope?: string) => {own: boolean; child?: string}\n vtree: any\n}\n\nconst isScope = (s: string) => s.startsWith('.___')\n\nfunction mockSelectors(mock: MockDom): Record<string, InspectSelector[]> {\n const out: Record<string, InspectSelector[]> = {}\n mock.listeners.forEach((path, key) => {\n const scope = path.filter(isScope).pop()\n const id = mock.scopeIds.get(scope || '')\n if (id === undefined) return\n const sels = path.filter(s => !isScope(s)).join(' ').split(/[\\s>]+/).filter(Boolean)\n const page = !sels.length || /^(document|body)$/.test(sels[0])\n const {own, child} = mock.vtree && !page ? mock.probe(sels, scope) : {own: false, child: undefined}\n ;(out[id] = out[id] || []).push({\n selector: sels.join(' '),\n events: uniq(mock.evTypes[key] || []),\n matched: mock.vtree && !page ? own : null,\n isolationHit: !own && child ? mock.owners.get(child) || 'a child component' : null,\n })\n })\n return out\n}\n\nfunction selectorsOf(r: Rec, options: InspectOptions, diags: any[]): InspectSelector[] {\n const given = options.selectors && options.selectors[r.id]\n if (given) return given.map(s => ({...s}))\n return (selectorStatus(r.instance) || []).map(({selector, matched, crossed}) => {\n const hit = diags.find(d => d.code === 'SYG104' && d.component === r.name && d.data && d.data.selector === selector)\n const missed = diags.some(d => d.code === 'SYG103' && d.component === r.name && d.data && d.data.selector === selector)\n return {\n selector,\n events: null,\n matched: matched === null && missed ? false : matched,\n isolationHit: crossed ? ((hit && hit.data.child) || 'a child component') : null,\n }\n })\n}\n\nfunction childrenOf(r: Rec, all: Rec[]): InspectChild[] {\n const via: Record<Kind, InspectChild['via']> = {root: 'tag', child: 'tag', 'collection-item': 'collection', switchable: 'switchable'}\n const out = new Map<string, InspectChild>()\n for (const c of all) {\n if (c.parentId !== r.id) continue\n const key = `${c.name}\\u0000${via[c.kind]}`\n const entry = out.get(key)\n if (entry) entry.count = (entry.count || 1) + 1\n else out.set(key, {name: c.name, via: via[c.kind], count: 1})\n }\n return [...out.values()]\n}\n\n/** The app graph of the live component instances (see ./public.d.ts). */\nexport function inspect(options: InspectOptions = {}): InspectGraph {\n // report SYG105 (info) for EVENTS types selected but never emitted so far\n try { checkEventBus() } catch (_) { /* 'error' mode: info never throws; be safe */ }\n\n let diags: any[] = options.diagnostics as any[] || []\n if (!options.diagnostics) {\n attachDevtools()\n try { diags = (devtools && typeof devtools.getDiagnostics === 'function' && devtools.getDiagnostics()) || [] } catch (_) { diags = [] }\n }\n\n const mock: MockDom | undefined = (options as any).mock\n if (mock) options = {...options, selectors: {...mockSelectors(mock), ...options.selectors}}\n\n const all = [...records.values()]\n const ids = options.ids && new Set(options.ids.map(String))\n const recs = ids ? all.filter(r => ids.has(r.id)) : all\n const names = new Set(recs.map(r => r.name))\n\n const components: InspectComponent[] = recs.map(r => {\n const c = r.instance\n const calculated = c && c.calculated && typeof c.calculated === 'object' ? Object.keys(c.calculated) : []\n return {\n name: r.name,\n id: r.id,\n parentId: r.parentId,\n kind: r.kind,\n actions: actionsOf(r),\n stateKeys: stateKeysOf(c, calculated),\n calculated,\n contextProvides: c && isPlainObject(c.context) ? Object.keys(c.context) : [],\n contextConsumes: null,\n eventsEmitted: [...r.eventsEmitted],\n eventsSelected: [...r.eventsSelected],\n children: childrenOf(r, all),\n selectors: selectorsOf(r, options, diags),\n diagnostics: diags.filter(d => d && d.component === r.name).map(slim),\n }\n })\n\n const events: InspectGraph['events'] = {}\n const ev = (type: string) => events[type] || (events[type] = {emitters: [], selectors: []})\n const add = (list: string[], name: string) => { if (!list.includes(name)) list.push(name) }\n for (const c of components) {\n for (const t of c.eventsEmitted) add(ev(t).emitters, c.name)\n for (const t of c.eventsSelected) add(ev(t).selectors, c.name)\n }\n // emitted on the bus by something that isn't a listed component (e.g. a driver, a pruned component)\n if (!ids) for (const t of busTypes) ev(t)\n\n return {\n version: 1,\n source: 'runtime',\n components,\n events,\n diagnostics: diags.filter(d => d && (!d.component || !names.has(d.component))).map(slim),\n }\n}\n\n/** Publish inspect() on the core bridge and the devtools object. Returns an uninstall function. */\nexport function installInspect(): () => void {\n const core = bridge()\n if (core) core.inspect = inspect\n attachDevtools()\n return () => {\n if (core && core.inspect === inspect) core.inspect = undefined\n const dt = (globalThis as any).__SYGNAL_DEVTOOLS__\n if (dt && dt.inspect === inspect) {\n try { delete dt.inspect } catch (_) { /* ignore */ }\n }\n }\n}\n","/**\n * 'sygnal/diagnostics' — runtime consistency checks (PLAN-1 workstream 1A).\n *\n * import 'sygnal/diagnostics'\n *\n * Importing this entry registers every check with the diagnostics core of the\n * 'sygnal' package (a side-effect import) and installs the RxJS-operator hints.\n * Checks only run while diagnostics are on (run(App, drivers, { diagnostics }),\n * or globalThis.__SYGNAL_DEV__ from the Vite plugin in dev). None of this code\n * is in the main 'sygnal' bundle.\n *\n * | Code | Check | Module |\n * |--------|--------------------------------------------------------|----------------|\n * | SYG101 | intent action has no model entry | wiring.ts |\n * | SYG102 | model entry has no intent trigger (info) | wiring.ts |\n * | SYG103 | intent selector never matched (info -> warn) | dom.ts |\n * | SYG104 | intent selector only matches inside a child component | dom.ts |\n * | SYG105 | EVENTS type emitted-not-selected / selected-not-emitted| events.ts |\n * | SYG106 | parent prop overwritten by a reserved view argument | props.ts |\n * | SYG201 | STATE reducer dropped keys | state.ts |\n * | SYG202 | STATE reducer returned undefined | state.ts |\n * | SYG301 | RxJS operator used on an xstream stream | rxjsHints.ts |\n * | SYG401 | Collection `from` missing or not an array | collections.ts |\n * | SYG501 | strict: view uses positional (props, state, ...) args | strict.ts |\n * | SYG502 | strict: STATE reducer returned the unchanged state | strict.ts |\n * | SYG504 | strict: 'ACTION | SINK' shorthand model key | strict.ts |\n * | — | inspect(): the runtime app graph (2B) | inspect.ts |\n *\n * Strict checks (SYG5xx) only report after configureStrict(true) (or\n * renderComponent(C, { strict: true }), or globalThis.__SYGNAL_STRICT__).\n */\nimport type {DiagnosticCheck} from '../index'\nimport {Stream} from '../../xstreamCompat'\nimport {bridge, resetCheckState, timing} from './shared'\nimport {wiringCheck} from './wiring'\nimport {stateCheck} from './state'\nimport {eventsCheck} from './events'\nimport {propsCheck} from './props'\nimport {collectionsCheck} from './collections'\nimport {domCheck} from './dom'\nimport {strictCheck} from './strict'\nimport {installRxjsHints} from './rxjsHints'\nimport {inspectCheck, installInspect} from './inspect'\n\nexport {checkEventBus} from './events'\nexport {configureStrict, isStrictEnabled} from './strict'\nexport type {EventBusSummary} from './events'\nexport {RXJS_HINTS} from './rxjsHints'\nexport {inspect} from './inspect'\nexport type {InspectGraph, InspectComponent, InspectAction, InspectActionTrigger, InspectChild, InspectSelector, InspectDiagnostic, InspectOptions} from './public'\nexport {listCodes, getCodeInfo} from '../codes'\nexport type {DiagnosticCodeInfo} from '../codes'\n\n/** Every runtime check in this entry. */\nexport const checks: DiagnosticCheck[] = [\n wiringCheck,\n stateCheck,\n eventsCheck,\n propsCheck,\n collectionsCheck,\n domCheck,\n strictCheck,\n inspectCheck,\n]\n\n/**\n * (Re-)register all checks with the core and install the RxJS hints. Called\n * on import. Idempotent across duplicate copies of this entry: the previous\n * installation (stored on the core bridge) is removed first.\n */\nexport function installChecks(): () => void {\n const core = bridge()\n if (!core) throw new Error(`[Sygnal] 'sygnal/diagnostics' could not find the Sygnal diagnostics core`)\n if (typeof core.__uninstallChecks === 'function') core.__uninstallChecks()\n const unregister = checks.map(check => core.registerCheck(check))\n const uninstallHints = installRxjsHints(Stream && Stream.prototype)\n const uninstallInspect = installInspect()\n const uninstall = () => {\n unregister.forEach(fn => fn())\n uninstallHints()\n uninstallInspect()\n if (core.__uninstallChecks === uninstall) core.__uninstallChecks = undefined\n }\n core.__uninstallChecks = uninstall\n return uninstall\n}\n\nexport interface ChecksOptions {\n /** delay after a render before the DOM checks (SYG103/104) run; default 50 ms */\n settleMs?: number\n /** render-idle time before SYG103 escalates to warn; default 2000 ms */\n idleMs?: number\n /** renders required before SYG103 escalates to warn; default 3 */\n minRenders?: number\n}\n\n/** Tune the timing of the DOM checks (mostly for tests). */\nexport function configureChecks(options: ChecksOptions = {}): void {\n for (const key of Object.keys(timing) as Array<keyof typeof timing>) {\n if (typeof options[key] === 'number') timing[key] = options[key] as number\n }\n}\n\n/** Forget what the checks have seen and reported (dedupe state, registries). For tests. */\nexport function resetChecks(): void {\n resetCheckState()\n}\n\ninstallChecks()\n"],"names":["xstreamNamespace.Stream","xstreamNamespace.default"],"mappings":"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"}