sygnal 6.1.1 → 6.2.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 (41) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/astro/server.cjs.js.map +1 -1
  3. package/dist/astro/server.mjs.map +1 -1
  4. package/dist/diagnostics.cjs.js +10 -3
  5. package/dist/diagnostics.cjs.js.map +1 -1
  6. package/dist/diagnostics.esm.js +10 -3
  7. package/dist/diagnostics.esm.js.map +1 -1
  8. package/dist/guide/adapters.md +2 -1
  9. package/dist/guide/agent.md +112 -6
  10. package/dist/guide/ai-chat.md +60 -16
  11. package/dist/guide/ai-decisions.md +1 -1
  12. package/dist/guide/behaviors.md +1 -1
  13. package/dist/guide/error-boundaries.md +2 -1
  14. package/dist/guide/forms.md +1 -1
  15. package/dist/guide/http.md +4 -4
  16. package/dist/guide/mcp-apps.md +4 -2
  17. package/dist/guide/persistence.md +1 -1
  18. package/dist/guide/recipes/ai-form-fill.md +1 -1
  19. package/dist/guide/recipes/ai-summarize.md +1 -1
  20. package/dist/guide/recipes/ai-support-inbox.md +1 -1
  21. package/dist/guide/resources.md +11 -10
  22. package/dist/guide/ui/combobox.md +1 -1
  23. package/dist/guide/undo.md +1 -1
  24. package/dist/guide/web-components.md +1 -0
  25. package/dist/guide/webmcp.md +1 -2
  26. package/dist/index.cjs.js +155 -31
  27. package/dist/index.cjs.js.map +1 -1
  28. package/dist/index.d.ts +42 -6
  29. package/dist/index.esm.js +155 -31
  30. package/dist/index.esm.js.map +1 -1
  31. package/dist/sygnal.min.js +1 -1
  32. package/dist/sygnal.min.js.map +1 -1
  33. package/dist/vike/config/package.json +1 -1
  34. package/llms.txt +2 -2
  35. package/package.json +1 -1
  36. package/src/ai.d.ts +41 -5
  37. package/src/extra/ai/agent/index.ts +111 -26
  38. package/src/extra/ai/chat/behavior.ts +14 -6
  39. package/src/extra/ai/webmcp.ts +5 -3
  40. package/src/extra/diagnostics/codes.ts +10 -3
  41. package/src/index.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.cjs.js","sources":["../src/extra/xstreamCompat.ts","../src/extra/diagnostics/codes.ts","../src/extra/diagnostics/checks/shared.ts","../src/extra/diagnostics/checks/wiring.ts","../src/shared.ts","../src/extra/diagnostics/checks/state.ts","../src/extra/diagnostics/checks/events.ts","../src/extra/diagnostics/checks/strict.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/controls.ts","../src/extra/diagnostics/checks/dom.ts","../src/extra/diagnostics/checks/shorthand.ts","../src/extra/diagnostics/checks/elementCommands.ts","../src/extra/diagnostics/checks/widgets.ts","../src/extra/diagnostics/checks/virtual.ts","../src/extra/diagnostics/checks/behaviors.ts","../src/extra/formHelpers.ts","../src/extra/diagnostics/checks/forms.ts","../src/extra/diagnostics/checks/sortable.ts","../src/extra/diagnostics/checks/dataset.ts","../src/extra/diagnostics/checks/replies.ts","../src/extra/diagnostics/checks/router.ts","../src/extra/standardSchema.ts","../src/extra/diagnostics/checks/fetch.ts","../src/extra/diagnostics/checks/timers.ts","../src/extra/diagnostics/checks/browserSources.ts","../src/extra/diagnostics/checks/chat.ts","../src/extra/diagnostics/checks/persist.ts","../src/extra/diagnostics/checks/viewTransitions.ts","../src/extra/owned.ts","../src/extra/diagnostics/checks/statics.ts","../src/extra/diagnostics/checks/rxjsHints.ts","../src/extra/diagnostics/checks/actionLog.ts","../src/extra/diagnostics/checks/inspect.ts","../src/extra/diagnostics/checks/next.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 * 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 (PLAN-2 1-B, G-044):\n * - 'error' — the operation failed: thrown at the call site, or caught there\n * (reducer, EFFECT, view, sub-component) and logged with\n * console.error while the app keeps running\n * - 'warn' — likely mistake, behaviour continues: console + collected\n * (when diagnostics mode is 'warn')\n * - 'info' — collected only; surfaced through inspect / test helpers\n * A call site may report a lower severity than the default (SYG405 for\n * Collection/Switchable children, SYG406 handled by onError: 'warn').\n * Every code surfaces under its own code: an error thrown by fail() and\n * caught by a reducer/EFFECT/instantiation handler is reported under the\n * thrown code (legacy.caught), not the handler's.\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 * SYG7xx Accessibility (a11y; static only, sygnal-check, PLAN-4 GS-3)\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: 'error',\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 SYG608: 'warn',\n SYG609: 'warn',\n SYG610: '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 SYG115: 'Unknown DOM event shorthand',\n SYG116: 'EVENTS value has no string type',\n SYG124: 'Component used as a control or selector',\n SYG125: 'Control given .intent, .model or .initialState',\n SYG126: 'Control rendered but never listened to',\n SYG127: 'Behavior collision or unresolvable uses entry',\n SYG128: 'Duplicate control key',\n SYG129: \"CHILD.select() of a component this one doesn't render\",\n SYG112: 'Reply action has no model entry',\n SYG130: 'href() names no route or leaves out a param',\n SYG131: 'Route params the pattern does not use',\n SYG132: 'Declaration static that is never sent',\n SYG133: 'SPA router inside a Vike app',\n // PLAN-5 W-1: widgets (defineWidget; checks/widgets.ts, checks/elementCommands.ts; SYG141 static only)\n SYG140: 'Widget dispatched an undeclared event',\n SYG141: 'Listener for an event the widget does not declare',\n SYG142: 'Widget command not declared',\n SYG143: 'Widget tag used as a selector',\n SYG144: 'Widget event the host element also fires natively',\n // PLAN-5 B-1 (3-D): the sortable behavior (checks/sortable.ts; sortable.ts calls the bridge's sortable hook)\n SYG145: 'Sortable item without its id attribute',\n SYG146: 'Sortable item or handle selector matches nothing',\n SYG147: 'Sortable list key is not an array in the host state',\n // PLAN-5 3-F G-419: a Collection's viewTransitionName (checks/next.ts)\n SYG148: 'Collection viewTransitionName is not a CSS identifier',\n SYG149: 'Two items with the same view-transition name',\n // PLAN-6 K-1: static only (sygnal-check rules/syg150-agent.js, syg152, syg153)\n SYG150: 'Agent action has no model entry',\n SYG151: 'Misspelled agent static',\n SYG152: 'LLM request without an ok action',\n SYG153: 'WebMCP form attribute set as a DOM property',\n // PLAN-5 V-1: VirtualCollection (checks/virtual.ts)\n SYG430: 'VirtualCollection has no bounded height',\n SYG431: 'VirtualCollection items without ids',\n SYG432: 'VirtualCollection item does not render one element',\n SYG433: 'VirtualCollection scroll target not in the list',\n SYG434: 'Invalid VirtualCollection estimateSize or overscan',\n // PLAN-5 3-H (G-449): sortable over a list shown in another order (checks/sortable.ts)\n SYG435: 'Sortable list shown filtered or in another order',\n // PLAN-6 A-1 (sygnal/ai agent layer)\n SYG440: 'Two agent declarations with the same name',\n SYG441: 'Agent Collection items without unique ids',\n // PLAN-6 L-3 (src/extra/ai/chat/behavior.ts; legacy error(): prints even when diagnostics are off)\n SYG442: 'Chat or command bar behavior not connected to its app',\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: \"Removed in 6.0: view with positional arguments\",\n SYG502: 'Retired in 6.0: STATE reducer signals no change without ABORT',\n SYG503: 'Side effect in a STATE reducer that returns ABORT',\n SYG504: \"Removed in 6.0: 'ACTION | SINK' model key\",\n SYG505: 'Non-canonical EVENTS emit',\n SYG506: \"Removed in 6.0: CHILD.select() with a component name\",\n SYG507: 'Prop drilled through more than 2 component levels',\n SYG508: 'select()/errors() round trip where reply actions would do',\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: \"Retired in 6.0: Invalid model shorthand entry\",\n SYG212: 'Model entry is not a function or an object of sinks',\n SYG213: \"Retired in 6.0: 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 SYG221: 'set() called with a string',\n SYG222: 'STATE reducer returned the same object after it was mutated in place',\n SYG223: 'persist pick or omit names a key that is not in initialState',\n SYG224: 'persist on a component that is not the root',\n SYG226: 'Undo track, resetOn or coalesce names an unknown action',\n // PLAN-5 F-1: the form behavior (checks/forms.ts)\n SYG230: 'Form field name not in values',\n SYG231: 'form() schema is not a Standard Schema',\n SYG232: 'Form submit dropped while one is in progress',\n SYG233: 'Form value missing from the schema output',\n SYG234: 'Form submit action has no model entry',\n SYG235: 'Form check names an unknown field or sets reply fields',\n SYG236: 'Form array rows without an id',\n SYG237: 'Two forms in one component listen on the same form selector',\n // PLAN-5 2-R (G-393; checks/state.ts; dev entry)\n SYG238: 'Root component with a model but no initial state',\n // PLAN-6 A-1 (sygnal/ai agent layer, src/extra/ai/agent; runtime, while an agent layer runs)\n SYG240: 'Agent action input has no JSON Schema form',\n SYG241: 'Agent read, when or label threw',\n SYG243: 'Agent action input schema converted with losses',\n // PLAN-6 A-2 (src/extra/ai/webmcp.ts; reported with the severity passed, dev)\n SYG242: 'WebMCP tool over a size budget',\n SYG244: 'Agent read returns strings, untrusted not declared',\n // PLAN-6 A-3 (D291; checks/forms.ts, through the bridge's form hook)\n SYG245: 'form tool option is not made by formTool()',\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: \"Retired in 6.0: Unnamed component factory not found\",\n SYG414: \"Retired in 6.0: 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: \"Retired in 6.0: Invalid switchable() 'name$' parameter\",\n SYG420: 'JSX tag is undefined',\n SYG421: 'Invalid data (dataset) key',\n SYG422: 'Invalid timer spec',\n // PLAN-4.6 R4: the core's dev checks (checks/next.ts; dev entry)\n SYG423: 'Context change skipped a view whose output it changes',\n SYG424: 'Duplicate Collection item id',\n SYG425: 'isolatedState slice lacks initialState keys',\n SYG601: \"Retired in 6.0: Missing or invalid sources\",\n SYG602: 'Intent is not a function',\n SYG603: 'Intent returned an invalid value',\n SYG604: \"Retired in 6.0: Invalid hmrActions\",\n SYG605: \"Retired in 6.0: Intent action name contains '|'\",\n SYG606: 'calculated is not an object',\n SYG607: \"Retired in 6.0: State source not found\",\n SYG608: 'Strict mode requested without the diagnostics entry',\n SYG609: 'Sink or source has no driver',\n SYG610: \"Request has a 'then' or 'catch' key\",\n SYG611: 'Socket message not sent or connection not opened',\n // PLAN-4.6 R4 (D173): a form 6.0 removed, met at runtime (checks/next.ts; dev entry)\n SYG612: 'Removed in 6.0',\n SYG620: 'Router command not performed',\n // PLAN-3 5-3: makeFetchDriver's cache, invalidation and validation (dev entry; SYG634 static only)\n SYG630: 'Cached request is not idempotent',\n SYG631: 'validate is not a Standard Schema',\n SYG632: 'invalidate matched nothing',\n SYG633: 'abort names a lane the requests do not use',\n SYG634: 'latest: true with a computed key',\n // PLAN-3 5-5 (D88)\n SYG635: 'Caching asked for without a queryCache',\n // PLAN-4 GS-2: element commands (reported by the dev entry, checks/elementCommands.ts)\n SYG640: 'Element command target not found',\n SYG641: 'Unknown element command',\n // PLAN-4 GS-5: persist() (src/extra/persist.ts reports SYG642 with an explicit severity, like SYG611)\n SYG642: 'Persisted state could not be restored or saved',\n // PLAN-4 GS-7: timers (checks/timers.ts; dev entry)\n SYG643: 'Declaration static with no driver to take it',\n // PLAN-4 D131: sygnal/element (reported through the core bridge when diagnostics are on)\n SYG644: 'Custom element prop hides an HTMLElement member',\n // PLAN-4 GS-12 (D129): View Transitions (checks/viewTransitions.ts; dev entry)\n SYG645: \"viewTransitions that can't run\",\n // PLAN-5 W-1: a widget's mount / update / unmount threw (checks/widgets.ts; dev entry)\n SYG660: 'Widget mount threw',\n SYG661: 'Widget update threw or reported an error',\n SYG662: 'Widget unmount threw',\n // PLAN-5 B-3: browser sources (makeBrowserDriver; checks/browserSources.ts; dev entry)\n SYG663: 'Invalid browser-source spec or command',\n SYG664: 'Browser source not in the driver',\n SYG665: 'Browser source failed with no error action',\n // PLAN-5 W-2 (D203): the adapter entries (sygnal/react, sygnal/zag, sygnal/ui/menu|select|combobox): SYG666 from\n // sygnal/vite (an entry imported without its optional peer dependencies), SYG667 thrown by\n // fromZag / fromReact\n SYG666: 'Adapter peer dependency missing',\n SYG667: 'Invalid adapter argument',\n // PLAN-5 2-R (G-383, G-387)\n SYG668: 'Browser source has no element to observe',\n // PLAN-5 2-T (G-410): Sygnal components / widget tags / special JSX inside a fromZag render\n SYG669: 'Sygnal component inside a fromZag render',\n // PLAN-6 L-1: makeChatDriver (src/extra/ai/chat/driver.ts; SYG673/677 dev, SYG678/679 legacy error())\n // PLAN-6 L-2: transports (src/extra/ai/transports/; SYG670 legacy error() + the request fails, SYG675 dev)\n SYG670: 'Auth header sent from the browser to a hosted endpoint',\n // PLAN-6 3-W2 (D285): `strict: true` instead of `strict: strictSchemas` (dev)\n SYG672: 'Strict mode without the strict layer',\n SYG673: 'Malformed chat stream event',\n SYG675: 'Tool sent non-strict under strict mode',\n SYG677: 'Chat request sent from outside a component',\n SYG678: 'Chat request failed with no error action',\n SYG679: 'Invalid chat request',\n // PLAN-6 A-2: experimentalExposeWebMcp (src/extra/ai/webmcp.ts; dev)\n SYG674: 'WebMCP not available',\n SYG676: 'WebMCP registerTool rejected',\n // PLAN-4 GS-3: a11y lane (static only, sygnal-check)\n SYG701: 'Click listener on a non-interactive element',\n SYG702: 'Form field without an accessible label',\n SYG703: 'Image without alt text',\n SYG704: 'Link without href used as a button',\n SYG705: 'Button without an accessible name',\n SYG706: 'Positive tabIndex',\n SYG707: 'Unknown ARIA attribute or invalid role',\n SYG708: 'Label or ARIA reference to an id that is not rendered',\n // PLAN-5 2-T (D211): Zag UI parts (sygnal-check rules/a11y/syg722-ui-name.js)\n SYG722: 'Menu, Select or Combobox without an accessible name',\n // PLAN-5 B-1 (3-D): static only (sygnal-check)\n SYG724: 'Sortable handle not keyboard-accessible, or no live region',\n // PLAN-6 K-1: static only (sygnal-check rules/a11y/syg730-hover-only.js, syg731-toggle-state.js)\n SYG730: 'Action reachable only by hovering',\n SYG731: 'Toggled state shown only by a class',\n SYG901: \"Retired in 6.0: Sub-component sink stream errored\",\n SYG902: \"Retired in 6.0: EFFECT stream errored\",\n SYG903: \"Retired in 6.0: 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: 'error',\n SYG502: 'warn',\n SYG503: 'warn',\n SYG504: 'error',\n SYG505: 'warn',\n SYG506: 'error',\n SYG507: 'info',\n SYG508: 'warn',\n}\n\n// PLAN-3 1-G (G-143): codes only the 'sygnal/diagnostics' dev entry reports. Like the strict\n// table, kept OUT of CODE_SEVERITY (zero bytes in the main bundle); the entry registers them\n// and passes the severity explicitly.\n// PLAN-3 1-D: SYG112 (a reply action has no model entry) too.\n// PLAN-3 2-A: SYG611 too, though makeSocketDriver reports it (legacy error(), severity passed\n// explicitly): kept out of CODE_SEVERITY so the core bundle doesn't pay for an opt-in driver.\nexport const DEV_CODE_SEVERITY: Record<string, DiagnosticSeverity> = {\n SYG112: 'error',\n SYG115: 'warn',\n SYG116: 'error',\n // PLAN-4 1-D: controls, static (sygnal-check)\n SYG124: 'error',\n SYG125: 'error',\n SYG126: 'info',\n // PLAN-4 GS-1: behaviors (checks/behaviors.ts)\n SYG127: 'error',\n SYG128: 'error',\n // PLAN-4 4-G2: static only (sygnal-check); listed so the entry knows its title\n SYG129: 'warn',\n SYG221: 'error',\n // PLAN-4 GS-4 (state.ts)\n SYG222: 'warn',\n // PLAN-4 GS-5 (checks/persist.ts; sygnal-check statically)\n SYG223: 'warn',\n SYG224: 'error',\n // PLAN-4 GS-8 (undo.ts reports it when diagnostics are on; sygnal-check statically)\n SYG226: 'warn',\n // PLAN-5 F-1: the form behavior (checks/forms.ts; form.ts calls the bridge's form hook)\n SYG230: 'warn',\n SYG231: 'error',\n SYG232: 'info',\n SYG233: 'warn',\n SYG234: 'warn',\n SYG235: 'warn',\n SYG236: 'warn',\n SYG237: 'warn',\n SYG238: 'warn',\n // PLAN-6 A-1 (sygnal/ai agent layer, src/extra/ai/agent): reported by the layer itself with the\n // severity passed, like SYG611, so the main bundle's table doesn't grow\n SYG240: 'error',\n SYG241: 'error',\n SYG243: 'warn',\n // PLAN-6 A-2 (WebMCP, reported with the severity passed)\n SYG242: 'warn',\n SYG244: 'warn',\n // PLAN-6 A-3 (D291): a plain object as form()'s tool (checks/forms.ts)\n SYG245: 'error',\n SYG421: 'error',\n SYG611: 'error',\n // PLAN-3 5-4b: router (SYG620 is reported by the router itself, like SYG611) and G-167\n SYG130: 'error',\n SYG131: 'warn',\n SYG132: 'warn',\n SYG133: 'warn',\n SYG620: 'error',\n // PLAN-3 5-3 (fetch.ts)\n SYG630: 'warn',\n SYG631: 'error',\n SYG632: 'info',\n SYG633: 'warn',\n // static only (sygnal-check); listed so the entry knows its title\n SYG634: 'info',\n // PLAN-3 5-5 (fetch.ts)\n SYG635: 'warn',\n // PLAN-4 GS-2 (checks/elementCommands.ts, through the core bridge; renderComponent too)\n SYG640: 'warn',\n SYG641: 'error',\n // PLAN-4 GS-5 (persist.ts, through legacy warn(): printed in production too)\n SYG642: 'warn',\n // PLAN-4 GS-7 (timers.ts): an invalid timer spec (not started); timers / connections /\n // resources declared with no driver registered\n SYG422: 'error',\n SYG643: 'warn',\n // PLAN-4.6 R4 (checks/next.ts): D168 context-tracking safety net, D169 duplicate ids, D174 kept\n // slice, D173 removed forms\n SYG423: 'warn',\n SYG424: 'warn',\n SYG425: 'warn',\n SYG612: 'error',\n // PLAN-4 D131 (element.ts, through the core bridge; a console warning in dev with diagnostics off)\n SYG644: 'warn',\n // PLAN-4 GS-12 (viewTransitions.ts): the static set, but the app's DOM driver isn't makeViewTransitionDOMDriver()\n SYG645: 'warn',\n // PLAN-5 W-1: widgets (checks/widgets.ts, checks/elementCommands.ts; SYG141 static only, listed\n // so the entry knows its title)\n SYG140: 'warn',\n SYG141: 'warn',\n SYG142: 'error',\n SYG143: 'warn',\n SYG144: 'info',\n // PLAN-5 B-1 (3-D): the sortable behavior (checks/sortable.ts)\n SYG145: 'warn',\n SYG146: 'warn',\n SYG147: 'warn',\n // PLAN-5 3-F G-419 (checks/next.ts: onHostProps, onPatch)\n SYG148: 'warn',\n SYG149: 'warn',\n SYG660: 'error',\n SYG661: 'error',\n SYG662: 'error',\n SYG663: 'error',\n SYG664: 'error',\n SYG665: 'warn',\n SYG666: 'error',\n SYG667: 'error',\n SYG668: 'warn',\n SYG669: 'warn',\n // PLAN-6 L-1 (makeChatDriver reports them with an explicit severity, like SYG611)\n SYG670: 'error',\n SYG672: 'error',\n SYG673: 'warn',\n SYG675: 'info',\n SYG677: 'warn',\n SYG678: 'error',\n SYG679: 'error',\n // PLAN-6 A-2 (experimentalExposeWebMcp reports them with an explicit severity)\n SYG674: 'info',\n SYG676: 'warn',\n // PLAN-5 V-1: VirtualCollection (checks/virtual.ts, through the core bridge)\n SYG430: 'warn',\n SYG431: 'warn',\n SYG432: 'warn',\n SYG433: 'warn',\n SYG434: 'warn',\n // PLAN-5 3-H (G-449): sortable (checks/sortable.ts)\n SYG435: 'warn',\n // PLAN-6 A-1 (sygnal/ai agent layer)\n SYG440: 'warn',\n SYG441: 'warn',\n SYG442: 'error',\n // PLAN-4 GS-3: a11y lane, static only (sygnal-check; warn, also under --strict; error with --a11y=error, D144); listed so the entry knows its title\n SYG701: 'warn',\n SYG702: 'warn',\n SYG703: 'warn',\n SYG704: 'warn',\n SYG705: 'warn',\n SYG706: 'warn',\n SYG707: 'warn',\n SYG708: 'warn',\n SYG722: 'warn',\n // PLAN-5 B-1 (3-D): static only (sygnal-check)\n SYG724: 'warn',\n // PLAN-6 K-1: static only (sygnal-check); listed so the entry knows their titles\n SYG150: 'warn',\n SYG151: 'warn',\n SYG152: 'warn',\n SYG153: 'warn',\n SYG730: 'warn',\n SYG731: 'warn',\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 * 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'\nimport {CODE_TITLES, DEV_CODE_SEVERITY, registerCodes} from '../codes'\nimport type {DiagnosticSeverity} from '../codes'\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\nregisterCodes(Object.keys(DEV_CODE_SEVERITY).map(code =>\n [code, DEV_CODE_SEVERITY[code], CODE_TITLES[code]] as [string, DiagnosticSeverity, string]))\n\n/**\n * reportSafely() for the dev-entry-only codes (DEV_CODE_SEVERITY, G-143): the main bundle's\n * core doesn't know their severity, so it is passed explicitly.\n */\nexport const devReport = (code: string, details: DiagnosticDetails): Diagnostic | undefined =>\n reportSafely(code, {severity: DEV_CODE_SEVERITY[code], ...details})\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/**\n * Built-in actions Sygnal dispatches itself; never \"missing\" or \"unreachable\".\n * (HYDRATE is not one since 6.0, D66: nothing dispatches it, so it is an ordinary action.)\n */\nexport const BUILTIN_ACTIONS = new Set(['BOOTSTRAP', 'INITIALIZE', 'DISPOSE', 'READY', 'RESOURCE'])\n\n/** Sinks the core handles itself: their values never go to a reply-action driver. */\n// (PLAN-4 GS-2: ELEMENT too; `{ scrollIntoView: Row, block: 'center' }` names no action)\nconst NON_REPLY_SINK = /^(STATE|EFFECT|EVENTS|PARENT|READY|DOM|CHILD|ELEMENT|PERSIST)$/\n\n// `ok: 'X'` / `\"error\": \"X\"` in function source (minified code keeps string literals and keys)\nconst keyedNames = (keys: string) => new RegExp(`(?:^|[{,\\\\s])[\"']?(?:${keys})[\"']?\\\\s*:\\\\s*([\"'\\`])([\\\\w$.:/-]+)\\\\1`, 'g')\n// (PLAN-3 5-4b: and a router `{ block: 'ACTION' }`)\nconst REPLY_IN_SOURCE = keyedNames('ok|error|block')\nconst CONNECTION_IN_SOURCE = keyedNames('message|open|close|error')\n// G-224: a `timers` static's `action: 'TICK'` / `frame: 'FRAME'`\nconst TIMER_IN_SOURCE = keyedNames('action|frame')\n// PLAN-5 B-3: a `browser` static's `action: 'SEEN'` / `error: 'GEO_FAILED'`\nconst BROWSER_IN_SOURCE = keyedNames('action|error')\n\nconst namesIn = (fn: any, re: RegExp, out: Set<string>) => {\n if (typeof fn !== 'function') return\n let src = ''\n try { src = Function.prototype.toString.call(fn) } catch (_) { return }\n re.lastIndex = 0\n for (let m = re.exec(src); m; m = re.exec(src)) out.add(m[2])\n}\n\n/**\n * Reply actions a component's requests and `connections` static can name, read from the\n * source of its non-STATE sink functions (`HTTP: (s) => ({ url, ok: 'LOADED', error: 'FAILED' })`)\n * and of `connections` (message/open/close/error). A heuristic for SYG102 (PLAN-3): a name\n * built at run time is missed (SYG102 stays info, so that only costs a false hint).\n */\nexport function replyNamesOf(component: any): Set<string> {\n const out = new Set<string>()\n const model = component && component.model\n if (model && typeof model === 'object') {\n for (const key of Object.keys(model)) {\n const value = model[key]\n const bar = key.indexOf('|')\n if (bar >= 0) {\n if (!NON_REPLY_SINK.test(key.slice(bar + 1).trim())) namesIn(value, REPLY_IN_SOURCE, out)\n } else if (value && typeof value === 'object') {\n for (const sink of Object.keys(value)) {\n if (!NON_REPLY_SINK.test(sink)) namesIn(value[sink], REPLY_IN_SOURCE, out)\n }\n }\n }\n }\n namesIn(component?.view?.connections, CONNECTION_IN_SOURCE, out)\n // G-224: makeTimerDriver() replies the actions the `timers` static names (a function of the\n // state, or an object of them)\n const timers = component?.view?.timers\n if (timers && typeof timers === 'object') for (const k in timers) namesIn(timers[k], TIMER_IN_SOURCE, out)\n else namesIn(timers, TIMER_IN_SOURCE, out)\n // PLAN-5 B-3: the browser driver replies the actions the `browser` static names\n const browser = component?.view?.browser\n if (browser && typeof browser === 'object') for (const k in browser) namesIn(browser[k], BROWSER_IN_SOURCE, out)\n else namesIn(browser, BROWSER_IN_SOURCE, out)\n // PLAN-3 5-4b: the router replies the action a `route` static names\n const route = component?.view?.route\n if (typeof route === 'string') out.add(route)\n // PLAN-4 GS-5: persist() adds RESTORE (sent after hydration and by sync)\n if (component?.view?.persist) out.add('RESTORE')\n return out\n}\n\n/** Reply actions a component instance's requests were seen naming (replies.ts → inspect). */\nexport const replySeen = new WeakMap<object, Set<string>>()\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/** undo once(key): the report it guarded wasn't made (G-470: diagnostics off) */\nexport const unsee = (key: string): void => void seen.delete(key)\n/** whether once(`key`) has reported already (a check can skip its work: SYG435) */\nexport const onced = (key: string): boolean => seen.has(key)\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). An action a request\n * names as a reply action, or `connections` names (`ok: 'LOADED'`, PLAN-3) counts as\n * triggered: replyNamesOf() reads the names from the sink functions'\n * source. A behavior's own actions (D199: in `_behaviorActions`) are not\n * reported\n * SYG609 — a model sink or an intent source has no driver (warn; see below)\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/DISPOSE/READY are never reported (HYDRATE is an\n * ordinary action since 6.0).\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, replyNamesOf} from './shared'\n\nconst intentActions = new WeakMap<object, string[]>()\n\n// SYG609 (G-110, PLAN-2 E2): sinks/sources that no driver provides. Sinks the core handles\n// itself never need one. renderComponent (mock DOM source) records such sinks and fakes such\n// sources (t.requests / t.respond), so its components are skipped.\n// PLAN-4 GS-2: ELEMENT (element commands) is built in; GS-5: PERSIST is persist()'s (an EFFECT)\nconst NO_DRIVER_NEEDED = /^(STATE|EFFECT|PARENT|READY|DOM|CHILD|ELEMENT|PERSIST)$/\nconst DRIVER_NAME = /^[A-Z][A-Z0-9_]*$/\n// (`in`, not a read: the DOM source's shorthand Proxy returns a function for any property)\nconst underTest = (c: any) => {\n const dom = c?.sources?.[c.DOMSourceName || 'DOM']\n return !!dom && typeof dom == 'object' && '_hub' in dom\n}\n// G-620: an LLM / chat sink gets the chat driver's fix, not makeFetchDriver's\nconst driverFix = (sink: string) =>\n `Pass a driver named ${sink} to run(): ` + (/^(LLM|CHAT|AI|ASSISTANT)$/.test(sink)\n ? `run(App, { ${sink}: makeChatDriver({ transport: openResponses({ baseURL: 'http://localhost:11434/v1', model: 'llama3.2' }) }) }) (from 'sygnal/ai'; uiMessageStream('/api/chat') for an AI SDK server)`\n : `run(App, { ${sink}: makeFetchDriver() }) for HTTP, or driverFromAsync(fn) / your own driver`) +\n `. Check the spelling against the drivers you pass`\n\nexport const wiringCheck: DiagnosticCheck = {\n id: 'wiring',\n\n onIntent(component, actionNames) {\n intentActions.set(component, actionNames || [])\n },\n\n // SYG609: an intent that reads a source no driver provides (`HTTP.select(...)` with no HTTP\n // driver) would crash with \"Cannot read properties of undefined\": say why first\n sources(component, sources) {\n if (underTest(component) || typeof Proxy != 'function') return\n const name = nameOf(component)\n return new Proxy(sources, {\n get(t: any, k: any) {\n if (typeof k == 'string' && !(k in t) && DRIVER_NAME.test(k) && once(`SYG609:${name}:source:${k}`)) {\n report('SYG609', {\n component,\n message: `${name}.intent reads the ${k} source, but no driver named ${k} was passed to run(), so it is undefined`,\n fix: driverFix(k),\n data: {name: k, kind: 'source', drivers: Object.keys(t).filter(n => DRIVER_NAME.test(n))},\n })\n }\n return t[k]\n },\n })\n },\n\n onModel(component, modelMap) {\n const name = nameOf(component)\n // SYG609: a sink no driver receives is dropped silently by run()\n if (!underTest(component)) {\n const own = new Set<string>(component?.sourceNames || [])\n for (const action of Object.keys(modelMap || {})) {\n for (const sink of modelMap[action] || []) {\n if (own.has(sink) || NO_DRIVER_NEEDED.test(sink) || sink === component?.stateSourceName) continue\n if (!once(`SYG609:${name}:sink:${sink}`)) continue\n report('SYG609', {\n component,\n message: `Model entry '${action}' sends to the ${sink} sink, but no driver named ${sink} was passed to run(), so every value sent there is dropped`,\n fix: driverFix(sink),\n data: {name: sink, kind: 'sink', action, drivers: [...own].filter(n => DRIVER_NAME.test(n))},\n })\n }\n }\n }\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 const replies = replyNamesOf(component)\n // D199: a behavior's own actions ('tip.SHOW') are its business: a timer, next() or a reply\n // may trigger them (the behavior-owned map, behaviors.ts)\n const owned = component?._behaviorActions || {}\n for (const action of modelActions) {\n if (isInternalAction(action) || actions.includes(action) || injected.has(action) || replies.has(action) || action in owned) 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, name it in a request (ok: '${action}'), 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 * Tiny helpers shared by the core and the helper modules (behaviors, undo, the dev entry), kept\n * out of the core so importing them never pulls it in.\n */\n\n/** The \"no change / send nothing\" sentinel (a registered symbol: the same in every copy) */\nexport const ABORT = Symbol.for('sygnal.ABORT')\n\n/**\n * Whether a value is ABORT. Compares the description, not the identity, in case bundlers (e.g.\n * Vite) create duplicate module instances with separate Symbol.for() registries. (G-214: the\n * one copy, for the core, behaviors, undo and the action log)\n */\nexport const isAbort = (v: any): boolean => typeof v == 'symbol' && v.description == 'sygnal.ABORT'\n\n/**\n * Set on a dev-only wrapper of a model function (SYG222's) to the function it wraps, so the\n * action log and t.explain() show the user's reducer (G-214 follow-up)\n */\nexport const ORIGINAL = Symbol.for('sygnal.original')\n\n/**\n * PLAN-4 GS-9 / G-214: one part of a uid() path (a child's path or `id` prop, a Collection item\n * key, a Switchable page name), encoded injectively into [A-Za-z0-9_]: letters and digits stay,\n * anything else (including '_' and '-') becomes '_<UTF-16 code>_' ('0.2' → '0_46_2', 'a_b' →\n * 'a_95_b'), so the '-' between parts is unambiguous too. renderToString encodes the same way\n * (ssr.ts).\n */\nexport const uidPart = (s: any): string => (s + '').replace(/\\W|_/g, c => '_' + c.charCodeAt(0) + '_')\n\n/**\n * PLAN-5 A-1: a Collection item's style with its view-transition name and class\n * (`viewTransitionName=\"card\"`): `card-<id>`, the id escaped as uidPart does (a valid CSS\n * identifier, unique per id), and the class `card`; the item's own style wins, except its\n * `undefined` values (G-418: no value is no override; snabbdom would leave the old one). The\n * core's Collection host and SSR share it\n */\nexport const vtStyle = (p: string, id: any, style?: any) => {\n const o: any = {viewTransitionName: p + '-' + uidPart(id), viewTransitionClass: p}\n for (const k in style) if (style[k] !== undefined) o[k] = style[k]\n return o\n}\n\n/**\n * P45-D: sources that aren't drivers get no sinks: props$, children$, dispose$, commands$, CHILD;\n * PARENT, EFFECT and ELEMENT are built-in sinks; __k, __d, __uid... are internal\n */\nexport const NOT_SINK = /^(__|(props|children|dispose|commands)\\$$|(CHILD|PARENT|EFFECT|ELEMENT)$)/\n\n/**\n * PLAN-6 A-1 (D259): ABORT with a reason, for an agent's tool result. `abort('already done')`\n * returns ABORT (the core sees only that: no change, nothing sent) and leaves the reason here,\n * where the agent layer's handler wrapper reads and clears it. Tree-shaken from apps that don't\n * use it (0 core bytes)\n */\nexport const abortReason: {r?: string} = {}\nexport const abort = (reason?: string): typeof ABORT => (abortReason.r = reason, ABORT)\n","/**\n * SYG201 — STATE reducer dropped keys that existed in the previous state (warn)\n * SYG202 — STATE reducer returned undefined (warn)\n * SYG221 — set() called with a string (error, G-143): the string is spread\n * into the state as keys '0', '1', ... (one per character)\n * SYG238 — G-393: a root with a model but no initialState (and no state from renderComponent's\n * `initialState` or an HMR swap): its state is undefined, so it renders nothing until an\n * action sets one (the 5.x / PLAN-4 behaviour; a root without a model renders from\n * `initialState || true`, G-172). onModel, at construction, once per component name.\n * SYG222 — STATE reducer returned the object it got after mutating it in place (warn, dev;\n * PLAN-4 GS-4): since 6.0 the same object back means \"no change\", so the mutation\n * is ignored. Mechanism: onIntent (called before the model is read) wraps the\n * instance's STATE reducers; the wrapper takes a shallow snapshot (keys and top-level\n * values) before the reducer runs and compares it when the reducer returns the same\n * reference; a behavior slice (state[key] of a `uses` entry) is snapshotted the same\n * way (keys reported as 'key.field', G-214). Nested mutations (state.list.push) are\n * below the snapshot. Zero bytes\n * in the core: the wrapping only happens with the dev entry and diagnostics on.\n *\n * Mechanism: onReducer(component, action, prevState, nextState). Reported once\n * per action per component name. Not reported for:\n * - synthetic actions (`__*`) and INITIALIZE (whole-state replacement; HYDRATE is an\n * ordinary action since 6.0, D66)\n * - SYG202: a Collection item (`() => undefined` is its documented self-removal, G-357)\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, devReport, once, nameOf, isPlainObject} from './shared'\nimport {ORIGINAL} from '../../../shared'\n\nconst SKIP = new Set(['INITIALIZE'])\n\n// SYG222: the instance's STATE reducers, wrapped (see the header)\nconst WRAPPED = Symbol('SYG222')\n\nexport function watchMutation(component: any, action: string, fn: any): any {\n if (typeof fn !== 'function' || fn[WRAPPED]) return fn\n const wrapped: any = (state: any, ...rest: any[]) => {\n if (!isPlainObject(state)) return fn(state, ...rest)\n // the state's top level, and (G-214) each behavior slice's: a behavior reducer that mutates\n // its slice gets the host state back unchanged (behaviors.ts), so state[key] looks the same\n const snaps = [[state, ''], ...(component._uses || []).map(([k]: any) => [state[k], k + '.'])]\n .filter(([o]) => isPlainObject(o)).map(([o, p]) => [o, p, Object.keys(o), Object.values(o)])\n const out = fn(state, ...rest)\n if (out === state) {\n const changed = snaps.flatMap(([o, p, keys, values]: any) => keys.filter((k: string, i: number) => !(k in o) || o[k] !== values[i])\n .concat(Object.keys(o).filter(k => !keys.includes(k))).map((k: string) => p + k))\n const name = nameOf(component)\n if (changed.length && once(`SYG222:${name}:${action}`)) {\n const list = changed.map(k => `'${k}'`).join(', ')\n devReport('SYG222', {\n component,\n message: `The STATE reducer for '${action}' changed ${list} in place and returned the same object. Returning the object a reducer got means \"no change\" (as ABORT), so the change is ignored and nothing re-renders`,\n fix: `Return a new object: ${changed[0].includes('.') ? `(slice, data) => ({ ...slice, ${changed[0].split('.')[1]}: … })` : `(state, data) => ({ ...state, ${changed[0]}: … })`}. To write updates as mutations, wrap the reducer in immer's produce()`,\n data: {action, keys: changed},\n })\n }\n }\n return out\n }\n wrapped[WRAPPED] = true\n // checks that read reducer source (reply actions) see the original; so do the action log\n // and t.explain() (ORIGINAL)\n wrapped.toString = () => fn.toString()\n wrapped[ORIGINAL] = fn\n return wrapped\n}\n\nexport const stateCheck: DiagnosticCheck = {\n id: 'state',\n\n // SYG222: checks/next.ts wraps the STATE reducers (watchMutation) through wrapHandler\n\n onModel(component) {\n // SYG238 (G-393): the initial state is set at construction (D165), before onModel\n const n = component?.__next\n if (!n?.isRoot || !n.def?.model || n.state !== undefined) return\n const name = nameOf(component)\n if (!once(`SYG238:${name}`)) return\n devReport('SYG238', {\n component,\n message: `${name} is a root with a model but no initialState: its state is undefined, so it renders nothing until an action sets one`,\n fix: `Add ${name}.initialState = { … } (the root's start state; a child gets its state from its parent instead)`,\n data: {},\n })\n },\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 // G-357: returning undefined from a Collection item's reducer is the documented way to\n // remove the item: not reported. In another sub-component it is info, in the root (where\n // it wipes the whole app state) a warning.\n if (component?.__next?.kind === 'item' || !once(`SYG202:${name}:${action}`)) return\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 ? ' (only a Collection item removes itself this way)' : ''),\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\n // SYG221 (G-143): set('city') spreads the string into the state: { ...state, 0: 'c', 1: 'i', ... }\n const chars: string[] = []\n while (typeof nextState[chars.length] === 'string' && nextState[chars.length].length === 1 && !(chars.length in prevState)) {\n chars.push(nextState[chars.length])\n }\n if (chars.length > 0 && !(chars.length in nextState)) {\n if (!once(`SYG221:${name}:${action}`)) return\n const field = chars.join('')\n const update = /^[A-Za-z_$][\\w$]*$/.test(field)\n ? `set((state, ${field}) => ({ ${field} }))`\n : `set((state, value) => ({ ['${field}']: value }))`\n devReport('SYG221', {\n component,\n message: `The STATE reducer for '${action}' added the keys ${chars.map((_, i) => `'${i}'`).slice(0, 4).join(', ')}${chars.length > 4 ? ', …' : ''} ` +\n `(one per character of '${field}'): set() was called with a string, set('${field}'). set() takes an object or a function`,\n fix: `To store the action data in '${field}', pass a function: ${update}. For a fixed value pass an object: set({ ${field}: … })`,\n data: {action, field},\n })\n return\n }\n\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 * SYG116 — a value with no string `type` (typically a function) reached the\n * EVENTS bus (error, G-143).\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, devReport, 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') {\n // SYG116 (G-143): no EVENTS.select() can ever receive it. The core copies each emitted\n // value into a new object (devtools stamp), so a function arrives here as {}.\n if (once(`SYG116:${emitterName}`)) {\n devReport('SYG116', {\n component: emitterName,\n message: `${emitterName ? emitterName + \"'s model\" : 'A model'} sent a value with no string 'type' to the EVENTS sink, so nothing receives it. ` +\n `The value was probably a function (a model entry that returns event(...) instead of being event(...)), or undefined/null`,\n fix: `Make event() the sink entry itself: ACTION: { EVENTS: event('TYPE', (state, data) => payload) }; return ABORT to send nothing`,\n data: {type, emitter: emitterName},\n })\n }\n return\n }\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 * 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 * | SYG508 | reply actions, not select()/errors() | replies.ts: a request with a category |\n * | | round trip (PLAN-3 §1.1) | the same instance select()ed on a |\n * | | | reply-capable source |\n *\n * SYG501 (positional views) and SYG504 ('ACTION | SINK' keys) are forms Sygnal 6.0 removed\n * (D164): at run time they are SYG612 (checks/next.ts, strict or not); `sygnal-check --strict`\n * still reports them under their own codes, with --fix. SYG502 is retired (PLAN-4 GS-4). SYG503,\n * SYG505, SYG506, SYG507: static only (sygnal-check --strict).\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} 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\n/** The strict check's runtime half is SYG508 (replies.ts); this entry keeps the flag. */\nexport const strictCheck: DiagnosticCheck = {\n id: 'strict',\n}\n","/**\n * SYG106 — a prop passed by the parent is silently overwritten (warn; error in\n * strict mode, G-007 part 2).\n *\n * The view is called with { ...props, state, children, slots, context, uid },\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'\nimport {isStrictEnabled} from './strict'\n\n// PLAN-4 GS-9: uid (the view's uid(name?) function)\n// (R5: 6.0 passes no `peers`, D164: a prop of that name reaches the view)\nconst RESERVED = ['children', 'slots', 'context', 'uid']\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 const severity = isStrictEnabled() ? 'error' : 'warn'\n\n for (const key of RESERVED) {\n if (!(key in props) || !once(`SYG106:${name}:${key}`)) continue\n report('SYG106', {\n component,\n severity,\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,\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\nexport function 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\n// G-261: a DOM change Sygnal makes outside a patch (a Transition's leave, a Portal mounted late)\n// re-emits the DOM source of the app whose root contains `el` (makeDOMDriver listens on its root)\nexport const POKE = 'sygnal-dom';\nexport const pokeDOM = (el: any): any => el?.dispatchEvent(new Event(POKE, {bubbles: true}));\n\nconst obj = (o: any) => o !== null && typeof o == 'object' && !Array.isArray(o);\n/**\n * P46-P: two vnodes' data are the same for the DOM modules: the same keys, each value identical\n * or a shallow-equal object (a module bucket: props, attrs, class, dataset, style, ...)\n */\nexport function sameData(a: any, b: any): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n let n = 0;\n for (const k in a) {\n n++;\n const x = a[k], y = b[k];\n if (x !== y) {\n if (!obj(x) || !obj(y)) return false;\n let m = 0;\n for (const j in x) { m++; if (x[j] !== y[j]) return false; }\n for (const _ in y) m--;\n if (m) return false;\n }\n }\n for (const _ in b) n--;\n return !n;\n}\n\n// G-517 / G-518 / G-522: snabbdom never sees a fragment. Before each patch, a fragment's children\n// (through nested ones) are spliced into its parent's children, so they are diffed, moved and\n// adopted at hydration as the parent's own (snabbdom's fragment bounds went stale: an insert into\n// one landed at the parent's end, a keyed one never moved, a later patch threw NotFoundError).\n// The children of a keyed fragment (a Collection item, a component's root) take its key and their\n// own key, else their tag and its count among them: they move with it and stay apart from another\n// item's. G-541: no two paths give the same key (a '/' separator did: fragment \"src\" + \"a/b.ts\" and\n// fragment \"src/a\" + \"b.ts\"). 3-W G-544: each segment is a JSON string (the key as a string) or\n// array ([tag, count], always last), which ends where it ends, appended to the prefix\n// (`\"src\"\"a/b.ts\"`): a key grows linearly with the nesting (JSON in JSON doubled at each level),\n// and any key String() takes is fine (G-548: a BigInt; two Symbols with the same description share\n// a key; a number key and its string are one key, as in snabbdom). A vnode with no fragment below is kept by identity, as is one already\n// flattened (a cached subtree), so snabbdom still skips unchanged subtrees; so are a keyed\n// fragment's copies while the fragment and its prefix are the same (G-539; a hit compares the\n// parent's prefix, the fragment's own is made on a miss). A hoisted keyed fragment rendered in two\n// places shares its copies, as any hoisted vnode shares its object (render it once). A copy (a\n// parent with new children, a child with a new key) has its vnode's fields and writes its\n// element there too, so the app's vnodes get their `elm` as before (testing and diagnostics read\n// it); it keeps its own (a vnode object reused under another key: the old copy removes its own).\nconst flatOf = new WeakMap<any, any>();\nconst cpOf = new WeakMap<any, any>();\n// 4-I G-561: a copy is an instance of one class (the vnode's own fields, `elm` an accessor on its\n// prototype), not Object.create(y) with an own accessor: snabbdom's patch loop read each field\n// through the prototype chain and called a per-object accessor, ~3x slower over a 1k Collection.\n// (y: set again after the fields, as a copy's own y is its vnode's vnode; m starts as the vnode's\n// elm, which snabbdom replaces before reading it)\nclass Copy {\n y: any; m: any\n constructor(y: any, o: any) { this.y = y; Object.assign(this, y, o).y = y }\n get elm() { return this.m }\n set elm(e: any) { this.y.elm = this.m = e }\n}\nconst seg = (k: any, s: any) => (k || '') + JSON.stringify(typeof s == 'object' ? s : String(s));\nexport const flat = (v: any): any => {\n if (!v || v.$p || !v.children) return v;\n let r = flatOf.get(v);\n if (!r) {\n const o: any[] = [];\n let d = 0;\n // (m, s: locals of each call)\n const put = (c: any[], k?: string, n: any = {}, m?: any, s?: any) => {\n for (const x of c) {\n // G-539: a keyed fragment's copies are kept per (fragment, prefix), in flatOf (flat() never\n // takes a fragment): an unchanged one (a Collection item that didn't render again) gives\n // snabbdom the same vnodes\n if (x && !x.sel && x.children) d = 1, x.key == null ? put(x.children, k, n)\n : (m = flatOf.get(x)) && m[0] === k ? o.push(...m[1])\n : (s = o.length, put(x.children, seg(k, x.key)), flatOf.set(x, [k, o.slice(s)]));\n else {\n let y = flat(x);\n y !== x && (d = 1);\n if (k && y) {\n // 4-H: the copy of an unchanged child under the same key is kept (the fragment is new\n // when one of its children is: a Collection's), so snabbdom skips the others. 4-I\n // G-561: a hit compares the prefix and the child's own part (its key, else its count),\n // so the key is only built on a miss\n const s = y.key ?? (n[y.sel] = -~n[y.sel]), c = cpOf.get(y);\n y = c && c[0] === k && c[1] === s ? c[2] : (cpOf.set(y, [k, s, y = new Copy(y, {key: seg(k, y.key ?? [y.sel, s])})]), y);\n }\n o.push(y);\n }\n }\n };\n put(v.children);\n flatOf.set(v, r = d ? new Copy(v, {children: o}) : v);\n }\n return r;\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 * PLAN-4 CT-1, runtime control checks (dev entry only; the static ones are in sygnal-check).\n *\n * SYG124 (error): a component passed where a control or selector is expected, as in\n * `DOM.click(TodoItem)` or `DOM.select(TodoItem)`. Mechanism: the `sources` hook wraps the\n * component's DOM source in a Proxy; `select()` (also chained: `DOM.select('.x').select(C)`)\n * and every event shorthand check their first argument. A function that isn't a control is a\n * component. Reported once per component and argument; the call then goes on to the DOM\n * source, whose select() still throws (\"expects the argument to be a string\").\n *\n * SYG125 (error): controls are elements, not components.\n * - a control given `.intent`, `.model` or `.initialState` (reported when it first renders,\n * the statics are set after controls() returns);\n * - a spec object whose `vnode()` returns anything but one element vnode (text, nothing, an\n * array, a component). With diagnostics on, the render then throws an Error with the\n * SYG125 text, so the component's error boundary names the control instead of failing on\n * the stamp.\n * Mechanism: controls() (src/extra/controls.ts) calls `__SYGNAL_DIAGNOSTICS__.control(control,\n * vnode)` on every render; installControlHooks() publishes it on the core bridge.\n *\n * The same hook remembers which control rendered each vnode (controlOfVnode), so inspect() can\n * list a component's controls with their element or kind.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {bridge, devReport, once, onReset, nameOf, report} from './shared'\nimport {DEV_CODE_SEVERITY} from '../codes'\n\n/** the key of a control, from its selector `[data-control=\"<Key>\"]` */\nexport const controlKey = (control: any): string => String(control).slice(15, -2)\n\n/** a control selector `[data-control=\"<Key>\"]` as its key, else undefined */\nexport const keyOfSelector = (selector: string): string | undefined => {\n const m = /^\\[data-control=\"([^\"]+)\"\\]$/.exec(selector)\n return m ? m[1] : undefined\n}\n\nconst isControl = (x: any): boolean => typeof x == 'function' && !!x.__sygnalControl\n\nconst componentName = (fn: any): string =>\n fn.componentName || fn.label || fn.name || 'the component'\n\nlet vnodeControls = new WeakMap<object, any>()\nlet staticsSeen = new WeakSet<object>()\nonReset(() => {\n vnodeControls = new WeakMap()\n staticsSeen = new WeakSet()\n})\n\n/** the control that rendered a vnode (only while the dev entry is installed) */\nexport const controlOfVnode = (vnode: any): any =>\n vnode && typeof vnode == 'object' ? vnodeControls.get(vnode) : undefined\n\nconst STATICS = ['intent', 'model', 'initialState']\n\nconst describe = (v: any): string =>\n v === undefined || v === null ? String(v)\n : Array.isArray(v) ? `an array of ${v.length}`\n : typeof v != 'object' ? `a ${typeof v} (${JSON.stringify(v)})`\n : typeof v.sel != 'string' ? (v.text !== undefined ? 'a text vnode' : 'a fragment')\n // the pragma's component placeholder (the component function in data.c)\n : v.data && typeof v.data.c == 'function' ? `the component <${v.sel}>`\n : 'an element vnode'\n\nfunction onControl(control: any, vnode: any): void {\n const key = controlKey(control)\n if (vnode && typeof vnode == 'object') vnodeControls.set(vnode, control)\n\n if (!staticsSeen.has(control)) {\n staticsSeen.add(control)\n const given = STATICS.filter(s => control[s] != null)\n if (given.length) {\n devReport('SYG125', {\n message: `The control ${key} has ${given.map(s => '.' + s).join(', ')}, but controls are elements, not components: ${given.length > 1 ? 'these statics are' : 'it is'} never used`,\n fix: `Put the intent and model on the component that renders <${key}>, and listen to the control in its intent: DOM.click(${key}). For something with its own state and actions, write a component instead`,\n data: {control: key, statics: given},\n })\n }\n }\n\n const what = describe(vnode)\n if (what == 'an element vnode') return\n const kind = control.kind\n // report() (not devReport): in 'error' mode its DiagnosticError is thrown into the render\n const d = report('SYG125', {\n severity: DEV_CODE_SEVERITY.SYG125,\n message: `The control ${key}'s spec${kind ? ` (kind '${kind}')` : ''} vnode() returned ${what}, but it must return one element vnode`,\n fix: `Return a single element built with the h argument: vnode(props, children, h) { return h('div', props, ...children) }`,\n data: {control: key, kind, returned: what},\n })\n if (d) throw new Error(d.text)\n}\n\n/** Publish the control hook on the core bridge. Returns an uninstall function. */\nexport function installControlHooks(): () => void {\n const core = bridge()\n if (!core) return () => {}\n core.control = onControl\n return () => { if (core.control === onControl) core.control = undefined }\n}\n\nconst wrapped = new WeakMap<object, any>()\n\n/** a DOM source whose select() and event shorthands report SYG124 for a component argument */\nfunction checkedDOM(component: any, dom: any): any {\n if (!dom || typeof dom != 'object') return dom\n let proxy = wrapped.get(dom)\n if (proxy) return proxy\n proxy = new Proxy(dom, {\n get(t: any, k: any) {\n const v = t[k]\n if (typeof k != 'string' || typeof v != 'function' || (k != 'select' && k in t)) return v\n return function (this: any, arg: any, ...rest: any[]) {\n if (typeof arg == 'function' && !isControl(arg)) {\n const name = nameOf(component), child = componentName(arg)\n if (once(`SYG124:${name}:${child}:${k}`)) {\n const call = k == 'select' ? `DOM.select(${child})` : `DOM.${k}(${child})`\n devReport('SYG124', {\n component,\n message: `${name}.intent passes the component ${child} to ${call}, but a component is not an element: it has no element of its own to listen on, and its elements are isolated from ${name}`,\n fix: `Handle the event in ${child} and send it up with PARENT, then read it here with CHILD.select(${child}); or render a control ${name} owns around it: const { ${child}Box } = controls({ ${child}Box: 'div' }), <${child}Box><${child} /></${child}Box>, DOM.click(${child}Box)`,\n data: {component: child, method: k},\n })\n }\n }\n const out = v.call(t, arg, ...rest)\n return k == 'select' ? checkedDOM(component, out) : out\n }\n },\n })\n wrapped.set(dom, proxy)\n return proxy\n}\n\nexport const controlsCheck: DiagnosticCheck = {\n id: 'controls',\n\n sources(component, sources) {\n if (!sources || typeof Proxy != 'function') return\n const domName = component?.DOMSourceName || 'DOM'\n if (!sources[domName]) return\n return new Proxy(sources, {\n get(t: any, k: any) {\n const v = t[k]\n return k === domName ? checkedDOM(component, v) : v\n },\n })\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'\nimport {keyOfSelector} from './controls'\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) || [] as string[])\n // CT-1: a control's key (`<Add>` / `h(Add)` in the view source)\n .concat(Array.from(selector.matchAll(/\\[data-control=\"([^\"]+)\"\\]/g), m => m[1]))\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\n// G-144: a fragment-rooted component has several root elements\nfunction rootElementsOf(t: Tracked): Element[] {\n try {\n const im = t.source._isolateModule\n return (im && im.getElements(scopesOf(t.source.namespace))) || []\n } catch (_) {\n return []\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 roots = rootElementsOf(t).filter(r => typeof r.querySelectorAll === 'function')\n if (!roots.length) 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 = []\n for (const root of roots) {\n all.push(...Array.prototype.slice.call(root.querySelectorAll(selector)))\n if (root.matches(selector)) all.push(root)\n }\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 // CT-1: a control is named by its identifier\n const control = keyOfSelector(selector)\n reportSafely('SYG104', {\n component,\n message: `${control ? `The control ${control}` : `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}${control ? ` (DOM.<event>(${control}) in its intent)` : ''} and send it up with PARENT (read it here with CHILD.select(${child})), or use EVENTS`,\n data: control ? {selector, child, control} : {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 * SYG115 — unknown DOM event shorthand (warn, G-143).\n *\n * The core's DOM source Proxy (the DOM source wrapper) turns ANY unknown property\n * into an event shorthand: `DOM.<name>(sel)` = `DOM.select(sel).events('<name>')`. A made-up\n * name such as `DOM.key('.x')` or `DOM.enter('.x')` therefore listens for an event the browser\n * never fires, and the action silently never happens.\n *\n * Mechanism: the `sources` hook (called before each component's intent) wraps the DOM source\n * in a second Proxy. Calling a shorthand whose name is not a known DOM event reports SYG115\n * (once per component name and event), then behaves exactly like the core shorthand. Only the\n * call is reported, not the property read, so tools that inspect the source (pretty-printers)\n * don't trigger it. `DOM.select(sel).events(name)` is never checked: it is the explicit form\n * for custom events.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, once, nameOf, suggest} from './shared'\n\n// Standard DOM / UI event names (lower case). In a browser, `on<name>` on an element or the\n// window also counts, so newer events are accepted there too.\nconst KNOWN = new Set((\n 'abort afterprint animationcancel animationend animationiteration animationstart auxclick ' +\n 'beforeinput beforeprint beforetoggle beforeunload blur cancel canplay canplaythrough change click close ' +\n 'compositionend compositionstart compositionupdate contextlost contextmenu contextrestored copy cuechange cut ' +\n 'dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended error ' +\n 'focus focusin focusout formdata fullscreenchange fullscreenerror gotpointercapture hashchange input invalid ' +\n 'keydown keypress keyup languagechange load loadeddata loadedmetadata loadstart lostpointercapture message ' +\n 'messageerror mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup offline online pagehide ' +\n 'pageshow paste pause play playing pointercancel pointerdown pointerenter pointerleave pointermove pointerout ' +\n 'pointerover pointerrawupdate pointerup popstate progress ratechange rejectionhandled reset resize scroll ' +\n 'scrollend search securitypolicyviolation seeked seeking select selectionchange selectstart slotchange stalled ' +\n 'storage submit suspend timeupdate toggle touchcancel touchend touchmove touchstart transitioncancel ' +\n 'transitionend transitionrun transitionstart unhandledrejection unload visibilitychange volumechange waiting wheel'\n).split(' '))\n\nconst isKnown = (name: string): boolean => {\n // PLAN-5 0-S6: a hyphenated name is a custom element's event (DOM['wa-hover']('.food')): no\n // standard DOM event has a hyphen, and a bracketed name is no typo for one\n if (KNOWN.has(name) || name.includes('-')) return true\n const on = 'on' + name\n const g: any = globalThis\n try {\n return !!((g.HTMLElement && on in g.HTMLElement.prototype) || (g.window && on in g.window) ||\n (g.Document && on in g.Document.prototype))\n } catch (_) { return false }\n}\n\n// Names agents reach for that are enriched-stream methods or key names, not events\nconst KEY_FIX = (sel: string, key?: string) =>\n `Listen for the real event and read the key: DOM.keydown(${sel}).key()` +\n (key ? `.filter(k => k === '${key}')` : '')\nconst SPECIAL: Record<string, (sel: string) => string> = {\n key: sel => KEY_FIX(sel),\n keys: sel => KEY_FIX(sel),\n enter: sel => KEY_FIX(sel, 'Enter'),\n escape: sel => KEY_FIX(sel, 'Escape'),\n esc: sel => KEY_FIX(sel, 'Escape'),\n value: sel => `Listen for the real event and read the value: DOM.input(${sel}).value()`,\n checked: sel => `Listen for the real event and read the box: DOM.change(${sel}).checked()`,\n data: sel => `Listen for the real event and read the attribute: DOM.click(${sel}).data('name')`,\n doubleclick: sel => `Use DOM.dblclick(${sel})`,\n}\n\nconst fixFor = (name: string, selector: any): string => {\n const sel = typeof selector === 'string' ? `'${selector}'` : 'sel'\n const special = SPECIAL[name.toLowerCase()]\n if (special) return special(sel)\n const s = suggest(name, KNOWN)\n return (s ? `Did you mean DOM.${s}(${sel})? ` : '') +\n `If '${name}' is a custom event you dispatch yourself, use the explicit form DOM.select(${sel}).events('${name}')`\n}\n\nconst wrapped = new WeakMap<object, any>()\n\nfunction checkedDOM(component: any, dom: any): any {\n if (!dom || typeof dom != 'object') return dom\n let proxy = wrapped.get(dom)\n if (proxy) return proxy\n const name = nameOf(component)\n proxy = new Proxy(dom, {\n get(t: any, k: any) {\n const v = t[k]\n if (typeof k != 'string' || k in t || typeof v != 'function' || isKnown(k)) return v\n return function (this: any, selector: any, ...rest: any[]) {\n if (once(`SYG115:${name}:${k}`)) {\n devReport('SYG115', {\n component,\n message: `${name}.intent uses DOM.${k}(${typeof selector == 'string' ? `'${selector}'` : '…'}), but '${k}' is not a DOM event, so it never fires`,\n fix: fixFor(k, selector),\n data: {event: k, selector},\n })\n }\n return v.call(this, selector, ...rest)\n }\n },\n })\n wrapped.set(dom, proxy)\n return proxy\n}\n\nexport const shorthandCheck: DiagnosticCheck = {\n id: 'shorthand',\n\n sources(component, sources) {\n if (!sources || typeof Proxy != 'function') return\n const domName = component?.DOMSourceName || 'DOM'\n if (!sources[domName]) return\n return new Proxy(sources, {\n get(t: any, k: any) {\n const v = t[k]\n return k === domName ? checkedDOM(component, v) : v\n },\n })\n },\n}\n","/**\n * PLAN-4 GS-2: element command diagnostics (dev entry; the core carries no text).\n *\n * The core (src/extra/elementCommands.ts) calls `__SYGNAL_DIAGNOSTICS__.elementCommand(component,\n * command, element?)` when a command can't run:\n * - no element (`element` falsy): SYG640 (warn): nothing in the sending instance's DOM scope\n * matched the target within about 1 s;\n * - an element, but neither the control's spec command nor a method of the element: SYG641\n * (error). It names the control's declared commands. When the element is a widget's host\n * (PLAN-5 W-1, `__sw`): SYG142 (error), naming the widget's declared commands.\n * installElementCommandHooks() publishes it on the core bridge.\n *\n * When a command is sent (checkSentCommand, from the elementCommands check's onModel, which wraps\n * the instance's ELEMENT stream before the core subscribes it): SYG641 for a value that is not a\n * command object, and for a method that changes the DOM Sygnal renders (remove, append,\n * setAttribute...): the core runs any method the element has, and those break the next patch.\n *\n * renderComponent uses these functions too (mock DOM, and the real DOM without the dev entry), so\n * this module has no side effects and doesn't import ./shared (which registers codes when loaded).\n */\nimport type {DiagnosticCheck} from '../index'\nimport {DEV_CODE_SEVERITY} from '../codes'\n\n/** The element commands Sygnal documents and types (the core runs any method of the element) */\nexport const NATIVE_COMMAND_NAMES = ['focus', 'blur', 'select', 'click', 'scrollIntoView', 'showModal', 'show', 'close', 'showPopover', 'hidePopover', 'togglePopover']\n\nconst core = (): any => (globalThis as any).__SYGNAL_DIAGNOSTICS__\n\nconst send = (code: string, details: any): void => {\n try {\n core()?.report(code, {severity: DEV_CODE_SEVERITY[code], ...details})\n } catch (err) {\n // 'error' mode: rethrown asynchronously (never into the caller)\n setTimeout(() => { throw err })\n }\n}\n\nconst isControl = (x: any): boolean => typeof x == 'function' && !!x.__sygnalControl\nconst keyOf = (control: any): string => String(control).slice(15, -2)\n\n/** a command as written: `{ focus: Email, preventScroll: true }` */\nexport const describeCommand = (cmd: any): string => {\n if (!cmd || typeof cmd != 'object') return JSON.stringify(cmd) ?? String(cmd)\n const parts = Object.keys(cmd).map(k => {\n const v = cmd[k]\n let text: string\n if (isControl(v)) text = keyOf(v)\n else try { text = JSON.stringify(v) ?? String(v) } catch (_) { text = String(v) }\n return `${k}: ${text}`\n })\n return `{ ${parts.join(', ')} }`\n}\n\nconst 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 cur = 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 = cur\n }\n }\n return row[b.length]\n}\n\nconst closest = (name: string, names: string[]): string | undefined => {\n let best: string | undefined, d = 3\n for (const n of names) {\n const x = n.toLowerCase() == name.toLowerCase() ? 0 : distance(name, n)\n if (x < d) { d = x; best = n }\n }\n return best\n}\n\nconst tagOf = (el: any): string => el && typeof el.tagName == 'string' ? `<${el.tagName.toLowerCase()}>` : 'element'\n\nconst notACommand = (component: any, name: string, cmd: any) => send('SYG641', {\n component,\n message: `${name} sent ${describeCommand(cmd)} to the ELEMENT sink, which is not a command`,\n fix: `Send { <method>: control or selector, ...options }, e.g. { focus: Email }, or an array of them`,\n data: {command: cmd},\n})\n\n/** SYG640 (no `el`) or SYG641 (an element, but no command of that name) for `cmd` sent by `component` */\nexport function reportElementCommand(component: any, cmd: any, el?: any): void {\n // a disposed instance's pending commands are dropped silently\n if (component && component._disposed) return\n const name = (component && component.name) || 'component'\n const method = cmd && typeof cmd == 'object' ? Object.keys(cmd)[0] : undefined\n if (method === undefined) return notACommand(component, name, cmd)\n const target = cmd[method]\n const what = `ELEMENT ${describeCommand(cmd)}`\n const control = isControl(target) ? keyOf(target) : undefined\n const data: any = {method, command: cmd, ...(control ? {control} : {selector: target == null ? target : String(target)})}\n if (!el) {\n const missing = target == null || target === ''\n return send('SYG640', {\n component,\n message: missing\n ? `${what} in ${name} has no target (${String(target)}), so the command was dropped`\n : `${what} in ${name} matched no element: nothing in ${name}'s own view matches ${control ? `the control ${control}` : `'${String(target)}'`} (waited 1 s), so the command was dropped`,\n fix: missing\n ? `Give the method a control or a selector: { ${method}: Email }`\n : `Render the element in ${name}'s view, or send the command from the component that renders it: a child component's elements are isolated from its parent, and a command reaches only its sender's own elements (in a Collection, each item sends its own)`,\n data,\n })\n }\n // PLAN-5 W-1: the matched element is a widget's host (selector or control target): SYG142 names\n // the widget's declared commands\n const widget = el.__sw?.w\n if (widget) {\n const declared = Object.keys(widget.commands)\n const hint = closest(method, [...declared, ...NATIVE_COMMAND_NAMES])\n return send('SYG142', {\n component,\n message: `${what} in ${name}: the matched ${tagOf(el)} is a widget's host, and the widget declares no '${method}' command` +\n (hint ? ` (did you mean '${hint}'?)` : '') + (declared.length ? `; it declares: ${declared.join(', ')}` : '; it declares none'),\n fix: `Add '${method}' to the widget's commands (defineWidget({ commands: { ${method}: (instance, options) => … } })), or send one it declares`,\n data: {...data, element: tagOf(el), commands: declared},\n })\n }\n const commands = control && target.spec && typeof target.spec == 'object' && target.spec.commands\n ? Object.keys(target.spec.commands) : []\n data.element = tagOf(el)\n if (commands.length) data.commands = commands\n let message: string, fix: string\n if (NATIVE_COMMAND_NAMES.includes(method)) {\n message = `${what} in ${name}: the matched ${tagOf(el)} has no ${method}() method${commands.length ? `, and the control ${control}'s spec declares no '${method}' command (it declares: ${commands.join(', ')})` : ''}`\n fix = /^(show|showModal|close)$/.test(method)\n ? `${method}() works on a <dialog> element: render the target as a <dialog>`\n : /Popover$/.test(method)\n ? `The popover methods need an element with the popover attribute (attrs: { popover: 'auto' }) in a browser with the Popover API`\n : `Target an element that has ${method}()`\n } else {\n const hint = closest(method, [...commands, ...NATIVE_COMMAND_NAMES])\n message = `${what} in ${name}: '${method}' is not an element command` + (hint ? ` (did you mean '${hint}'?)` : '') +\n (el.tagName ? `: the matched ${tagOf(el)} has no such method` : '') +\n (commands.length ? `, and the control ${control}'s spec declares only: ${commands.join(', ')}` : '')\n fix = `Use ${commands.length ? `one of its commands (${commands.join(', ')}) or ` : ''}one of: ${NATIVE_COMMAND_NAMES.join(', ')} (or another method of the element, like play). The first key of a command is the method, the others are its options: { scrollIntoView: Row, block: 'nearest' }`\n }\n send('SYG641', {component, message, fix, data})\n}\n\n// methods that change the DOM snabbdom owns (the next patch undoes them or trips over them)\nconst DOM_MUTATORS = /^(remove|append|prepend|before|after|replaceWith|replaceChildren|appendChild|removeChild|insertBefore|replaceChild|insertAdjacent(Element|HTML|Text)|(set|remove|toggle)Attribute(NS|Node)?|attachShadow|setHTML(Unsafe)?|normalize)$/\n\n/** SYG641 when it is sent: not a command object, or a method that changes the DOM Sygnal renders */\nexport function checkSentCommand(component: any, cmd: any): void {\n if (cmd == null) return\n const name = (component && component.name) || 'component'\n if (typeof cmd != 'object' || Array.isArray(cmd) || !Object.keys(cmd).length) return notACommand(component, name, cmd)\n const method = Object.keys(cmd)[0], target = cmd[method]\n if (!DOM_MUTATORS.test(method) || (isControl(target) && target.spec?.commands?.[method])) return\n send('SYG641', {\n component,\n message: `ELEMENT ${describeCommand(cmd)} in ${name}: ${method}() changes the DOM that ${name}'s view renders, so the next render undoes it or fails`,\n fix: `Change the state and render the result instead; element commands are for what a view can't express (focus, scrolling, dialogs, popovers, media)`,\n data: {method, command: cmd},\n })\n}\n\n/** The dev entry check: checkSentCommand runs on every ELEMENT value through the core's onElementCommand hook (checks/next.ts) */\nexport const elementCommandsCheck: DiagnosticCheck = {\n id: 'elementCommands',\n}\n\n/** Publish the element command hook on the core bridge. Returns an uninstall function. */\nexport function installElementCommandHooks(): () => void {\n const c = core()\n if (!c) return () => {}\n c.elementCommand = reportElementCommand\n return () => { if (c.elementCommand === reportElementCommand) c.elementCommand = undefined }\n}\n","/**\n * PLAN-5 W-1: widget diagnostics (dev entry; `defineWidget` in src/extra/widget.ts carries no text).\n *\n * The widget module calls `__SYGNAL_DIAGNOSTICS__.widget(code, widgetTag, owner, extra)`:\n * 140 dispatch(name) (mount's third parameter) — SYG140 (warn) when `name` is not in the widget's `events`: sygnal-check and\n * the docs read `events`, so an undeclared name is a typo or a missing declaration\n * 143 the widget tag used as a selector (DOM.select(DatePicker), `${DatePicker}`) — SYG143\n * (warn, once per widget): it matches nothing\n * 144 a host mounted — SYG144 (info, once per widget): a declared event name the host element\n * also fires natively (`'change'` on an `<input>` host), so the intent sees both; not\n * for the first-party Zag parts (`def.$own`: Menu's `select`, D211)\n * 660/661/662 mount / update / unmount threw (`extra` is the error) — SYG660–662 (error);\n * 661 with a fifth argument (G-580): the widget reported the error through mount's\n * error(e) (its own timer or callback), worded as such (data.phase 'error')\n * 669 fromZag (G-410): its render returned Sygnal components / widget tags / special JSX\n * (`extra`: their tags, e.g. ['<Badge>', '<Transition>']) — SYG669 (warn, once per widget)\n * It returns the reported diagnostic (the widget module logs a bare `[Sygnal SYG66x]` otherwise).\n *\n * SYG141 (listening to an event a widget doesn't declare) is static only (sygnal-check): the\n * runtime doesn't see which listener a selector serves. SYG142 for an undeclared command sent to a\n * widget's host is reported by the element command check (checks/elementCommands.ts).\n */\nimport {devReport, once, unsee, nameOf} from './shared'\nimport {DEV_CODE_SEVERITY} from '../codes'\n\n/** a widget's name for messages: `name` from its definition, else its host tag */\nexport const widgetName = (w: any): string => w?.def?.name ? `widget ${w.def.name}` : `widget <${w?.def?.tag || 'div'}>`\n\nconst ids = new WeakMap<object, number>()\nlet next = 0\nconst idOf = (w: any): number => {\n let id = ids.get(w)\n if (id === undefined) ids.set(w, id = ++next)\n return id\n}\n\nconst PHASE: Record<number, string> = {660: 'mount', 661: 'update', 662: 'unmount'}\n\nexport function reportWidget(code: number, w: any, owner?: any, x?: any, reported?: any): any {\n const name = widgetName(w), component = owner ? nameOf(owner) : name\n if (code == 140) {\n if (w.events.includes(x) || !once(`SYG140:${idOf(w)}:${x}`)) return\n return devReport('SYG140', {\n component,\n message: `${name} dispatched '${x}', which is not one of its declared events (${w.events.length ? w.events.join(', ') : 'it declares none'})`,\n fix: `Add '${x}' to the widget's events (defineWidget({ events: [${[...w.events, x].map((e: string) => `'${e}'`).join(', ')}] })), or dispatch a declared name`,\n data: {event: x, events: w.events},\n })\n }\n if (code == 143) {\n if (!once(`SYG143:${idOf(w)}`)) return\n return devReport('SYG143', {\n component: name,\n message: `${name} was used as a selector (DOM.select(${w.def.name || 'Widget'}) or in a template string); a widget tag matches nothing`,\n fix: `Give the widget a className and select that (<${w.def.name || 'Widget'} className=\"due\" />, DOM.select('.due')), or make it a control: controls({ Due: ${w.def.name || 'Widget'} })`,\n })\n }\n if (code == 144) {\n // D211: not for Sygnal's own parts (Menu's `select` is its documented event)\n if (!x || w.def.$own || !once(`SYG144:${idOf(w)}`)) return\n const native = w.events.filter((e: string) => 'on' + e in x)\n if (!native.length) return\n return devReport('SYG144', {\n component: name,\n message: `${name} declares ${native.map((e: string) => `'${e}'`).join(', ')}, which its <${x.localName}> host also fires natively, so a listener gets both the widget's events and the element's`,\n fix: `Name the widget's event differently (e.g. 'pick' for a date picker's change), or read only what both carry`,\n data: {events: native, element: x.localName},\n })\n }\n if (code == 669) {\n // G-470: once per widget tag, counted only when reported (not with diagnostics off)\n const k = `SYG669:${idOf(w)}`\n if (!once(k)) return\n const d = devReport('SYG669', {\n component: name,\n message: `${name}'s fromZag render returned ${x.join(', ')}; the adapter patches its render outside the component tree, so they don't run there (a component isn't instantiated, a widget doesn't mount, special JSX renders as an unknown element)`,\n fix: `Render plain elements in the fromZag render (with Zag's prop getters spread on them), pass data in through the widget's props, and put components, widgets and special JSX around the widget tag in the view`,\n data: {found: x},\n })\n if (!d) unsee(k)\n return d\n }\n const phase = PHASE[code]\n if (!phase) return\n const sev = DEV_CODE_SEVERITY[`SYG${code}`]\n // G-580: a 661 from error(e) is not a throwing update()\n const by = code == 661 && reported\n const d = devReport(`SYG${code}`, {\n component,\n message: (by ? `${name} reported an error through error(e) (mount's fourth parameter)` : `${name}'s ${phase}() threw`) + `: ${x?.message ?? x}` +\n (code < 662 ? `; ${owner ? `${nameOf(owner)}'s onError fallback renders in its place` : 'it is not mounted'}` : ''),\n fix: code < 662\n ? `Fix ${by ? 'the failure the widget reports through error(e) (its own timer, callback or redraw)' : `the widget's ${phase}()`}, or give ${owner ? nameOf(owner) : 'the component'} an .onError for a custom fallback`\n : `Fix the widget's unmount()`,\n data: {phase: by ? 'error' : phase, error: x},\n severity: sev,\n })\n // the error with its stack (the text is printed by report() in 'warn' mode, collected otherwise)\n if (d) console.error(x)\n return d\n}\n\n/** Publish the widget hook on the core bridge. Returns an uninstall function. */\nexport function installWidgetHooks(): () => void {\n const c = (globalThis as any).__SYGNAL_DIAGNOSTICS__\n if (!c) return () => {}\n c.widget = reportWidget\n return () => { if (c.widget === reportWidget) c.widget = undefined }\n}\n","/**\n * PLAN-5 V-1: `<VirtualCollection>` diagnostics (dev entry; src/extra/virtual.ts carries no text).\n *\n * The VirtualCollection host calls `__SYGNAL_DIAGNOSTICS__.virtual(code, owner, extra)`:\n * 430 the container has no bounded height: `extra.reason` 'height' (laid out 0 px tall) or\n * 'grows' (as tall as all its rows and taller than the viewport, so it would render every\n * row); the window is clamped to the viewport (once per host and reason)\n * 431 items without `id` (index keys; once per host)\n * 432 an item renders a fragment or text, not one element (once per host)\n * 433 scrollToIndex / scrollToId for an index or id not in the (filtered) list\n * 434 estimateSize / overscan not a positive number (or a function, for estimateSize)\n */\nimport {devReport, nameOf} from './shared'\n\nconst tag = (owner: any) => `<VirtualCollection> in ${nameOf(owner)}`\n\nexport function reportVirtual(code: number, owner: any, x: any = {}): any {\n const component = owner ? nameOf(owner) : 'VirtualCollection'\n if (code == 430) {\n const grows = x.reason == 'grows'\n return devReport('SYG430', {\n component,\n message: grows\n ? `${tag(owner)} grows with its rows (it is ${Math.round(x.height)} px tall, as tall as all of them), so it is not a scroll container; only the rows within the viewport's height render`\n : `${tag(owner)} is 0 px tall, so no row is in view`,\n fix: 'Give its className a bounded height (height or max-height, e.g. .rows { height: 400px }, or flex: 1 with min-height: 0 in a flex column); it scrolls itself (overflow-y: auto)',\n data: x,\n })\n }\n if (code == 431) {\n return devReport('SYG431', {\n component,\n message: `${tag(owner)} has items without an id (${x.count} items): they are keyed by their index, so a row's instance and measured height follow its position, not its item, when items are added, removed or reordered`,\n fix: \"Give every item a unique id (e.g. rows: data.map((r, i) => ({ id: r.key ?? i, ...r })))\",\n data: x,\n })\n }\n if (code == 432) {\n return devReport('SYG432', {\n component,\n message: `${tag(owner)}: its item component ${x.component} renders a fragment or text, so its rows can't be measured, positioned or given aria-posinset`,\n fix: `Make ${x.component}'s view return one element (wrap its content in a <div> or <li>)`,\n data: x,\n })\n }\n if (code == 433) {\n const what = 'id' in x ? `id ${JSON.stringify(x.id) ?? String(x.id)}` : `index ${x.index}`\n return devReport('SYG433', {\n component,\n message: `${tag(owner)}: ${'id' in x ? 'scrollToId' : 'scrollToIndex'} for ${what}, which is not in its list (${x.count} rows after filter); it didn't scroll`,\n fix: 'id' in x\n ? 'Send the id of an item in the array the filter keeps: { scrollToId: \\'.rows\\', id }'\n : `Send an integer index from 0 to ${Math.max(0, x.count - 1)} into the shown (filtered, sorted) rows: { scrollToIndex: '.rows', index }`,\n data: x,\n })\n }\n if (code == 434) {\n return devReport('SYG434', {\n component,\n message: `${tag(owner)}: ${x.prop}={${typeof x.value == 'string' ? JSON.stringify(x.value) : String(x.value)}} is not ${x.prop == 'overscan' ? 'a number ≥ 0; 5 is used' : 'a positive number or a function; 32 is used'}`,\n fix: x.prop == 'overscan' ? 'Pass overscan={5} (rows rendered beyond each edge)' : 'Pass estimateSize={32} (about a row\\'s height in px), or (item, index) => px',\n data: x,\n })\n }\n}\n\n/** Publish the VirtualCollection hook on the core bridge. Returns an uninstall function. */\nexport function installVirtualHooks(): () => void {\n const c = (globalThis as any).__SYGNAL_DIAGNOSTICS__\n if (!c) return () => {}\n c.virtual = reportVirtual\n return () => { if (c.virtual === reportVirtual) c.virtual = undefined }\n}\n","/**\n * PLAN-4 GS-1, runtime behavior checks (dev entry only; the static `uses` resolution is 3-D's).\n *\n * SYG127 (error), once per component name (not per Collection item; again in each renderComponent):\n * - a `uses` key that the host's own `initialState` static already has (the behavior's slice\n * replaces it);\n * - a `uses` value that isn't a defineBehavior() result (no `merge`): the core skips it, so\n * state[key] and its actions never exist.\n * A host intent or model entry named like a behavior action ('pager.NEXT') is an override,\n * not a collision.\n * Mechanism: onModel (every instance gets one, with or without a model) reads the static\n * `view.uses` and `view.initialState`.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, nameOf, once} from './shared'\n\nconst what = (v: any): string =>\n v === null || v === undefined ? String(v)\n : typeof v == 'function' ? 'a function (a defineBehavior factory not called?)'\n : typeof v == 'object' ? 'a plain object'\n : `a ${typeof v}`\n\nexport const behaviorsCheck: DiagnosticCheck = {\n id: 'behaviors',\n\n onModel(component) {\n const view = component?.view, uses = view?.uses\n if (!uses || typeof uses != 'object' || !once('SYG127:' + nameOf(component))) return\n const init = view.initialState\n for (const key of Object.keys(uses)) {\n const b = uses[key]\n if (typeof b?.merge != 'function') {\n devReport('SYG127', {\n component,\n message: `uses entry '${key}' is ${what(b)}, not a defineBehavior() result; it was skipped, so state.${key} and its '${key}.*' actions don't exist`,\n fix: `Use a defineBehavior() factory's result: uses = { ${key}: behavior(options) }`,\n data: {key, reason: 'unresolvable'},\n })\n } else if (init && typeof init == 'object' && key in init) {\n devReport('SYG127', {\n component,\n message: `uses key '${key}' is also a key of ${nameOf(component)}'s initialState; the behavior's slice replaces that value`,\n fix: `Remove '${key}' from initialState (pass its values as the behavior's options), or rename the uses key`,\n data: {key, reason: 'initialState'},\n })\n }\n }\n },\n}\n","/*\n * PLAN-5 F-1: form helpers. The `form` behavior (./form.ts) is built on them, and they are\n * exported as the escape hatch for a form written with plain model actions (D193, shape B).\n * Pure functions over a plain `values` object, for model reducers; 0 B core.\n *\n * Field names: a field's `name=` attribute is its path in `values`, dot-separated. A segment\n * inside an array of objects is the row's `id` (not its index), so touched/errors follow a row\n * when another row is removed: `addresses.7.street` is `values.addresses.find(r => r.id == 7).street`.\n * An array of non-objects (or rows without an id) uses the index; a row with an id is named by\n * its id only (G-380: `addresses.0.city` is no field when the rows have ids).\n *\n * Validation: any Standard Schema (`schema['~standard'].validate`: zod, valibot, arktype, a\n * hand-written object), no dependency. A sync schema validates inside reducers; an async one\n * (validate returns a Promise) returns a Promise here, for an EFFECT.\n */\nimport type {SchemaIssue} from './standardSchema'\nimport {focusWithin} from './focusWithin'\nimport {ABORT} from '../shared'\n\nexport type FieldErrors = Record<string, string>\nexport type FormCheck = {errors: FieldErrors; value: any}\n\nconst isRow = (r: any) => r?.id != null\n// the key of segment `s` in `v`: an array's row with that id, else the index unless the element\n// there is a row (G-380: a row is named by its id only; -1, no element), an object's key\nconst key = (v: any, s: string): any => {\n if (!Array.isArray(v)) return s\n const i = v.findIndex(r => isRow(r) && r.id + '' == s)\n return i < 0 && !isRow(v[+s]) ? +s : i\n}\n\n/** the field name (id-based path) of a schema issue path (index-based) */\nexport const fieldName = (values: any, path: ReadonlyArray<any> = []): string => {\n let v = values\n return path.map(p => {\n p = p?.key ?? p\n const r = Array.isArray(v) && isRow(v[p]) ? v[p].id : p\n v = v?.[p]\n return r\n }).join('.')\n}\n\n/** the value at a field name (undefined when there is none) */\nexport const getField = (values: any, name: string): any =>\n name.split('.').reduce((v, s) => v?.[key(v, s)], values)\n\n/** whether `name` is a field of `values`: its path exists (G-379: also when the value is undefined) */\nexport const hasField = (values: any, name: string): boolean => {\n let v = values\n for (const s of name.split('.')) {\n const k = v && typeof v == 'object' ? key(v, s) : -1\n if (!(k in Object(v))) return false\n v = v[k]\n }\n return true\n}\n\n/** `values` with the field at `name` set to `value` (immutable; an unknown row is left alone) */\nexport const setField = (values: any, name: string, value: any): any => {\n const [s, ...rest] = name.split('.'), k = key(values, s), a = Array.isArray(values)\n const x = rest.length ? setField(values?.[k] ?? {}, rest.join('.'), value) : value\n if (x === values?.[k] || a && !(k in values)) return values\n const c = a ? values.slice() : {...values}\n c[k] = x\n return c\n}\n\n/**\n * every field name of `values`, in object order: each leaf, and each array itself (for an\n * array-level error such as \"at least one address\"); a row's `id` is not a field\n */\nexport const fieldNames = (v: any, at = '', row?: boolean): string[] => {\n if (!v || typeof v != 'object') return at ? [at] : []\n const a = Array.isArray(v), out = a ? [at] : []\n for (const k in v) {\n const x = (v as any)[k]\n if (!row || k != 'id') out.push(...fieldNames(x, (at && at + '.') + (a && isRow(x) ? x.id : k), a))\n }\n return out\n}\n\nconst errorsOf = (values: any, issues: ReadonlyArray<SchemaIssue> = []): FieldErrors => {\n const e: FieldErrors = {}\n for (const i of issues) {\n const n = fieldName(values, i.path)\n n in e || (e[n] = i.message)\n }\n return e\n}\n\n/**\n * Validates `values` with a Standard Schema: `{ errors, value }` (errors by field name, '' for\n * a form-level issue, the first message per field; `value` is the schema's output, transformed,\n * when there are none). A Promise of it when the schema is async. `schema` must be a Standard\n * Schema object (the `form` behavior reports SYG231 in dev).\n */\nexport const checkForm = (schema: any, values: any): FormCheck | Promise<FormCheck> => {\n const r = schema['~standard'].validate(values)\n const done = (r: any): FormCheck => ({errors: errorsOf(values, r.issues), value: r.issues ? undefined : r.value})\n return r.then ? r.then(done) : done(r)\n}\n\n/** the errors only, by field name ({} when valid); a Promise of them for an async schema */\nexport const formErrors = (schema: any, values: any): any => {\n const r: any = checkForm(schema, values)\n return r.then ? r.then((x: FormCheck) => x.errors) : r.errors\n}\n\n/**\n * Server errors as field errors: an error reply (a driver's `{ error, status?, body?, request }`\n * or `{ status, body }`; the body `{ errors }` or the map itself), a map `{ name: message |\n * messages }`, or a list of Standard-Schema-like issues `[{ path, message }]` (index paths\n * become field names with `values`). With `values`, a message for a name that isn't one of its\n * fields (`message`, `error`) is the form-level message (''); a reply without any becomes\n * 'Request failed (status)' under ''.\n */\nexport const replyErrors = (reply: any, values?: any): FieldErrors => {\n let e = reply && ('request' in reply || 'body' in reply && 'status' in reply) ? reply.body : reply\n e = e?.errors ?? e\n const out: FieldErrors = Array.isArray(e) ? errorsOf(values, e) : {}\n if (e && typeof e == 'object' && !Array.isArray(e)) for (const k in e) {\n const m = [].concat(e[k])[0] + ''\n k && values && !hasField(values, k) ? out[''] ||= m : out[k] = m\n }\n return Object.keys(out).length ? out : {'': 'Request failed' + (reply?.status ? ` (${reply.status})` : '')}\n}\n\n/**\n * An ELEMENT command that focuses the first field, in DOM order, whose `name` is one of `names`\n * (a list, or an errors map: its names with a message; '' is skipped), anywhere in the sender's view, fields\n * of child components and Collection items included (`focusWithin`, D194). With `within` (a\n * selector: the form element's), only fields inside a matching element (G-373: a second form,\n * or a child component's field of the same name outside the form, isn't focused). ABORT when\n * there is nothing to focus: `ELEMENT: (state) => focusInvalid(state.errors, '.signup')`.\n */\nexport const focusInvalid = (names: string[] | FieldErrors, within?: string): any => {\n const list = (Array.isArray(names) ? names : Object.keys(names).filter(n => names[n])).filter(n => n)\n return list.length ? {focus: focusWithin(list.map(n => `${within ? within + ' ' : ''}[name=${JSON.stringify(n)}]`).join())} : ABORT\n}\n","/**\n * PLAN-5 F-1: `form` behavior diagnostics (dev entry; src/extra/form.ts carries no text).\n *\n * The form module calls `__SYGNAL_DIAGNOSTICS__.form(code, ...args)`:\n * 231 form(schema) with a schema that isn't a Standard Schema: throws the SYG231 Error (in\n * production the first validation throws a plain TypeError)\n * 230 (name, values) an input / focusout from a named field whose name isn't in `values`:\n * SYG230 (warn, once per name); the event is ignored\n * 232 (slice) a submit while submitting or while a queued submit waits for a check: SYG232\n * (info, every time); the submit is dropped\n * 233 (values, output) a valid submit: each top-level `values` key missing from the schema's\n * output, SYG233 (warn, once per key): the schema strips it (zod's z.object does). G-377:\n * only when every output key is a values key (an output with other keys reshapes: a rename)\n * 235 (field, request) a check's request with `ok` / `error` / `latest` keys, which the form\n * overwrites: SYG235 (warn, once per field)\n * 234 (submit, key) G-577: a valid submit whose `submit` names one of the form's own actions,\n * so it dispatched '<key>.<submit>' instead of the host's action: SYG234 (warn, once per\n * key and name), at the submit (the form's own action then often throws: SYG214 / SYG216)\n * Host checks (onModel, once per component name), for each `uses` entry made by form():\n * SYG234 (warn) `submit` missing, not a host model entry, or one of the form's own action names\n * (G-577: every action in that form's model, CHECKED_<field> included)\n * SYG235 (warn) a `check` key that isn't a field of `values`\n * SYG236 (warn) an array of objects in `values` with a row without an `id`\n * SYG237 (warn) two form uses of one host with the same form selector (G-374)\n * SYG245 (error, reported) PLAN-6 A-3 (D291): a `tool` option not made by formTool() (no `$`\n * hook: a plain object); the form offers no tool\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, once, nameOf} from './shared'\nimport {docsUrlFor} from '../codes'\nimport {hasField} from '../../formHelpers'\n\n// the form's own action names (G-577: read from the form's model, so CHECKED_<field> counts)\nconst ownActions = (b: any): string[] => Object.keys(b?.model || {})\nconst SUBMIT_FIX = (key: string, a: string, own: string[]) =>\n `Name the submit after a host action the form doesn't define (not ${own.join(', ')}): submit: 'SAVE', and rename the model entry '${a}' to SAVE: { HTTP: (state, values) => ({ url, json: values, ok: '${key}.DONE', error: '${key}.ERRORS' }) }`\nconst RESERVED = ['ok', 'error', 'latest']\n\nconst what = (v: any): string =>\n v === null || v === undefined ? String(v)\n : typeof v == 'function' ? 'a function'\n : Array.isArray(v) ? 'an array'\n : typeof v == 'object' ? `an object without ~standard.validate${typeof v.parse == 'function' ? ' (a validator from before Standard Schema?)' : ''}`\n : `a ${typeof v}`\n\nexport function reportForm(code: number, a?: any, b?: any, c?: any): any {\n if (code == 231) {\n const err: any = new TypeError(`[Sygnal SYG231] form(schema, options): the schema is ${what(a)}, not a Standard Schema. ` +\n `Pass a Standard Schema object: a zod, valibot or arktype schema, or an object with '~standard': { version: 1, vendor, validate }. ${docsUrlFor('SYG231')}`)\n err.code = 'SYG231'\n throw err\n }\n if (code == 230) {\n if (!once(`SYG230:${a}`)) return\n devReport('SYG230', {\n component: 'form',\n message: `form: a field named '${a}' changed, but '${a}' isn't a field of the form's values (${Object.keys(b || {}).join(', ') || 'none'}); the change is ignored`,\n fix: `Name the input after a path in values (name=\"email\", name=\"addresses.<row id>.city\"), add '${a}' to values, or move the input out of the form element`,\n data: {name: a},\n })\n } else if (code == 232) {\n devReport('SYG232', {\n component: 'form',\n message: `form: a submit was dropped: ${a?.submitting ? 'the previous submit is still being sent (no form.DONE / form.ERRORS yet)' : 'a submit is already queued, waiting for an async check or an async schema'}`,\n fix: `Disable the submit button while state.form.submitting (or queued) is true; answer the submit with ok: 'form.DONE', error: 'form.ERRORS'`,\n })\n } else if (code == 233) {\n if (!b || typeof b != 'object' || Object.keys(b).some(k => !(k in (a || {})))) return\n for (const k of Object.keys(a || {})) {\n if (!(k in b) && once(`SYG233:${k}`)) devReport('SYG233', {\n component: 'form',\n message: `form: values.${k} is not in the schema's output (stripped or renamed), so the submit action doesn't get it under that name (a schema strips keys it doesn't declare)`,\n fix: `Declare '${k}' in the schema (or make the schema keep unknown keys), or remove it from values; if the schema renames it on purpose, ignore this`,\n data: {key: k},\n })\n }\n } else if (code == 234) {\n if (!once(`SYG234:run:${b}:${a}`)) return\n devReport('SYG234', {\n component: 'form',\n message: `form '${b}': a valid submit dispatched '${b}.${a}' (the form's own ${a} action), not the host's '${a}': submit: '${a}' names one of the form's own actions, which next() prefers`,\n fix: SUBMIT_FIX(b, a, ownActions(c)),\n data: {key: b, submit: a},\n })\n } else if (code == 235) {\n const set = RESERVED.filter(k => b && k in b)\n if (set.length && once(`SYG235:req:${a}`)) devReport('SYG235', {\n component: 'form',\n message: `form: the check for '${a}' returns a request with ${set.map(k => `'${k}'`).join(', ')}; the form sets them itself (its reply action and latest: true), so they are replaced`,\n fix: `Return only the request: check: { ${a}: { request: (v) => ({ url, query }), error: (body) => message } }`,\n data: {field: a, keys: set},\n })\n }\n}\n\n/** row ids missing in `values`: the names of the arrays of objects that have a row without an id */\nconst missingIds = (v: any, at = '', out: string[] = []): string[] => {\n if (v && typeof v == 'object') {\n if (Array.isArray(v) && v.some(r => r && typeof r == 'object' && !Array.isArray(r) && r.id == null)) out.push(at)\n for (const k in v) missingIds(v[k], at ? `${at}.${k}` : k, out)\n }\n return out\n}\n\nexport const formsCheck: DiagnosticCheck = {\n id: 'forms',\n\n onModel(component) {\n const view = component?.view, uses = view?.uses\n if (!uses || typeof uses != 'object') return\n const name = nameOf(component), sels: Record<string, string> = {}\n for (const key of Object.keys(uses)) {\n const b = uses[key]\n if (!b?.form) continue\n // G-374: each form listens on its selector inside the host, so two with one selector hear\n // each other's fields and submits\n const sel = b.options?.form || 'form'\n if (sel in sels) {\n if (once(`SYG237:${name}:${sel}`)) devReport('SYG237', {\n component,\n message: `${name}'s forms '${sels[sel]}' and '${key}' both listen on '${sel}', so each hears the other's fields and submits`,\n fix: `Give each form element its own class and pass it: ${sels[sel]}: form(schema, { ..., form: '.${sels[sel]}' }), ${key}: form(schema, { ..., form: '.${key}' })`,\n data: {keys: [sels[sel], key], form: sel},\n })\n } else sels[sel] = key\n if (!once(`SYG23x:${name}:${key}`)) continue\n const o = b.options || {}, values = o.values || {}\n if (o.tool && typeof o.tool.$ != 'function') devReport('SYG245', {\n component,\n message: `${name}'s form '${key}': the tool option is ${typeof o.tool == 'object' ? 'a plain object' : what(o.tool)}, not made by formTool(), so the form isn't offered to the browser's agent`,\n fix: `Wrap it: import { formTool } from 'sygnal/ai', then form(schema, { ..., tool: formTool({ name: '${o.tool?.name || 'sign_up'}', description: '...' }) })`,\n data: {key, tool: o.tool},\n })\n const model = Object.keys(view.model || {}).map(a => a.split('|')[0].trim()), own = ownActions(b)\n const clash = own.includes(o.submit)\n if (typeof o.submit != 'string' || !model.includes(o.submit) || clash) {\n devReport('SYG234', {\n component,\n message: typeof o.submit != 'string' ? `${name}'s form '${key}' has no submit action, so a valid submit dispatches nothing`\n : clash ? `${name}'s form '${key}' names submit: '${o.submit}', one of the form's own actions; a valid submit dispatches the form's '${key}.${o.submit}'${model.includes(o.submit) ? `, never ${name}'s '${o.submit}' entry` : ''}`\n : `${name}'s form '${key}' dispatches '${o.submit}' on a valid submit, but ${name} has no model entry '${o.submit}'`,\n fix: clash ? SUBMIT_FIX(key, o.submit, own)\n : `Name a host action and add it to the model: submit: 'SIGN_UP', model: { SIGN_UP: { HTTP: (state, values) => ({ url, json: values, ok: '${key}.DONE', error: '${key}.ERRORS' }) } }`,\n data: {key, submit: o.submit},\n })\n }\n for (const f of Object.keys(o.check || {})) {\n if (!hasField(values, f)) devReport('SYG235', {\n component,\n message: `${name}'s form '${key}' has a check for '${f}', which isn't a field of its values; it never runs`,\n fix: `Use a field name from values (${Object.keys(values).join(', ')})`,\n data: {key, field: f},\n })\n }\n for (const at of missingIds(values)) devReport('SYG236', {\n component,\n message: `${name}'s form '${key}': values.${at} has rows without an id, so its fields are named by index and errors, touched state and focus don't follow a row when another is removed`,\n fix: `Give each row a unique id: ${at}: [{ id: 1, ... }] (form.ADD numbers new rows itself)`,\n data: {key, field: at},\n })\n }\n },\n}\n\n/** Install the `form` hook on the core bridge (form.ts calls it). */\nexport function installFormHooks(): () => void {\n const c = (globalThis as any).__SYGNAL_DIAGNOSTICS__\n if (!c) return () => {}\n c.form = reportForm\n return () => { if (c.form === reportForm) c.form = undefined }\n}\n","/**\n * PLAN-5 B-1 (3-D): `sortable` behavior diagnostics (dev entry; src/extra/sortable.ts carries no\n * text). The behavior calls `__SYGNAL_DIAGNOSTICS__.sortable(code, ...args)`:\n * 145 (item element, item selector, attr) a press or key on an item whose element has no\n * `attr`: SYG145 (warn, once per selector); the event is ignored\n * 146 (host root, item, handle, attr) the host's first pointerdown / keydown: SYG146 (warn,\n * once per selector) when elements carry `attr` under the root but none matches `item`,\n * or items exist but none contains `handle`. Returns true once it could decide (an empty\n * list can't tell: the check runs again at the next interaction)\n * 147 (from key, host state, uses key) when the host starts: a `from` key whose value isn't\n * an array: SYG147 (warn, once per key)\n * 435 (3-H G-449) (fn, uses key, from keys, idOf): the host's own items' ids as shown, per\n * container (fn() returns [the item elements, the root]; the behavior only asks in dev), or nothing when\n * every list has been reported (3-L G-478: no scan). A row's place is its `data-index`\n * when it has one (VirtualCollection's pinned focused row is out of DOM order). (shown\n * groups, host state, from keys, idField, uses key) at a keyboard pick-up or a pointer\n * press: SYG435 (warn, once per uses key and list) when a list's shown items (those in\n * the container holding most of them: an element elsewhere with a matching id is no list\n * item; a row's container is its nearest ancestor holding another row, 3-O G-505) aren't\n * one run of the array in its order (a Collection's sort, or a filter hiding entries\n * between shown ones)\n */\nimport {devReport, once, onced, suggest} from './shared'\n\nconst all = (root: any, sel: string): any[] => {\n try { return [...root.querySelectorAll(sel)] } catch (_) { return [] }\n}\n\nexport function reportSortable(code: number, a?: any, b?: any, c?: any, d?: any, e?: any): any {\n if (code == 145) {\n if (once(`SYG145:${b}:${c}`)) devReport('SYG145', {\n component: 'sortable',\n message: `sortable: an item ('${b}') has no ${c} attribute, so it can't be moved (the behavior finds each item in the list by that id)`,\n fix: `Render the item's id on its element: <li className=\"${String(b).replace(/^\\./, '')}\" ${c}={item.id}>, or name the attribute: sortable({ ..., attr: 'data-key' })`,\n data: {item: b, attr: c},\n })\n return\n }\n if (code == 146) {\n const root = a, item = b, handle = c, attr = d\n if (!root?.querySelectorAll) return true\n const items = all(root, item).filter(el => el !== root)\n if (!items.length) {\n // nothing carries the id attribute either: an empty list (decide later)\n if (!all(root, `[${attr}]`).length) return false\n report146('item', item, `no element under the host matches it, though elements with ${attr} are rendered`, `Use the selector of the items' elements (the element with ${attr}), e.g. item: '.task'`)\n return true\n }\n if (handle && !items.some(el => all(el, handle).length)) {\n report146('handle', handle, `no item ('${item}') contains an element that matches it`, `Use the selector of the drag handle inside each item, e.g. handle: '.grip', or leave handle out to drag the whole item`)\n }\n return true\n }\n if (code == 435) {\n // (fn, uses key, from keys, idOf) the shown ids per container: computed only here (dev)\n if (typeof a == 'function') {\n if ((c || []).every((l: string) => onced(`SYG435:${b}:${l}`))) return\n try {\n const by = new Map<any, any[]>(), [els, root] = a(), n = new Map<any, number>()\n // a row's place: its data-index (a VirtualCollection row below the host's root; its\n // pinned row isn't in DOM order)\n const rows = els.map((el: any) => {\n const r0 = el.closest?.('[data-index]'), row = r0 && r0 !== root && root.contains?.(r0) ? r0 : el\n return [el, row, Number(row === el && !r0 ? NaN : row.getAttribute('data-index'))]\n })\n // 3-O G-505: a row's container is its nearest ancestor holding another row (items each in\n // their own wrapper, <li><div data-id>, a table cell, a Collection item's root, are still\n // one list); `n` counts the rows below each ancestor\n const up = (row: any, f: (p: any) => any) => { for (let p = row.parentElement; p; p = p === root ? null : p.parentElement) if (f(p)) return p }\n for (const [, row] of rows) up(row, p => void n.set(p, (n.get(p) || 0) + 1))\n for (const [el, row, at] of rows) {\n const p = up(row, p => n.get(p)! > 1) || row.parentElement\n by.has(p) || by.set(p, [])\n by.get(p)!.push([isNaN(at) ? by.get(p)!.length : at, String(d(el))])\n }\n return [...by.values()].map(g => g.sort((x, y) => x[0] - y[0]).map(x => x[1]))\n } catch (_) { return }\n }\n // (shown groups, host state, from keys, idField, uses key) at a keyboard pick-up or a press\n const groups: string[][] = Array.isArray(a?.[0]) ? a : [a || []]\n for (const l of c || []) {\n if (onced(`SYG435:${e}:${l}`)) continue\n const at = new Map<string, number>()\n if (Array.isArray(b?.[l])) b[l].forEach((x: any, i: number) => at.set(String(x?.[d]), i))\n // the list's container: the one holding most of its entries (others: stray matches)\n let dom: number[] = []\n for (const g of groups) {\n const ix = g.filter(i => at.has(i)).map(i => at.get(i)!)\n if (ix.length > dom.length) dom = ix\n }\n // a contiguous run in the array's order is fine (all of it, or a window of it)\n if (!dom.some((v, j) => v !== dom[0] + j)) continue\n if (once(`SYG435:${e}:${l}`)) devReport('SYG435', {\n component: 'sortable',\n message: `sortable '${e}': state.${l} is shown ${dom.length < at.size ? 'with entries hidden between the shown ones' : 'in another order'} (a Collection with ${dom.length < at.size ? 'filter' : 'sort'}?), but moves and the announced positions follow the array: a keyboard step can pass entries nobody sees, or change nothing visible`,\n fix: `Reorder a list that is shown as it is stored: drop the Collection's sort (sort state.${l} itself), and hide the drag handles while a filter hides entries`,\n data: {from: l, key: e},\n })\n }\n return\n }\n if (code == 147) {\n const st = b || {}, arrays = Object.keys(st).filter(k => Array.isArray(st[k]))\n const near = suggest(a, arrays)\n if (once(`SYG147:${c}:${a}`)) devReport('SYG147', {\n component: 'sortable',\n message: `sortable '${c}': from names '${a}', but state.${a} is ${st[a] === undefined ? 'missing' : 'not an array'} when the host starts${near ? ` (did you mean '${near}'?)` : ''}; nothing in it can be moved`,\n fix: `Name the host state's list: sortable({ from: '${near || arrays[0] || 'items'}', ... })${arrays.length ? ` (arrays in the state: ${arrays.join(', ')})` : `, and start it as an array (initialState: { ${a}: [] })`}`,\n data: {from: a, key: c},\n })\n }\n}\n\nconst report146 = (option: string, selector: string, why: string, fix: string) => {\n if (once(`SYG146:${option}:${selector}`)) devReport('SYG146', {\n component: 'sortable',\n message: `sortable: ${option} '${selector}' matches nothing: ${why}, so no item can be dragged`,\n fix,\n data: {option, selector},\n })\n}\n\n/** Install the `sortable` hook on the core bridge (sortable.ts calls it). */\nexport function installSortableHooks(): () => void {\n const c = (globalThis as any).__SYGNAL_DIAGNOSTICS__\n if (!c) return () => {}\n c.sortable = reportSortable\n return () => { if (c.sortable === reportSortable) c.sortable = undefined }\n}\n","/**\n * SYG421 — invalid `data` (dataset) key in a view (error, G-143).\n *\n * JSX `data={{ ... }}` becomes the vnode's `data.dataset` (a `data-x-y=\"...\"` attribute is\n * camelCased to 'xY' by the pragma, G-152), which the DOM driver writes with\n * `element.dataset[key] = value`. The browser throws a SyntaxError DOMException for a key with\n * a hyphen followed by a lower-case letter (`'task-id'`), and setAttribute() throws for a name\n * with characters an attribute can't have (spaces, quotes, `=`, ...). The patch fails, so the\n * app stops rendering, and the console shows only a bare \"DOMException {}\".\n *\n * Mechanism: onRender (before the DOM driver patches) walks the rendered vnode tree and checks\n * every dataset key. Reported once per key; the mock DOM of renderComponent never throws, so\n * this is also the only signal there.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, once, nameOf} from './shared'\n\nconst camel = (key: string): string => key.replace(/-([a-z])/g, (_, c) => c.toUpperCase())\nconst BAD_CHAR = /[\\s\"'<>\\/=`]/\n\nfunction problem(key: string): string | undefined {\n if (/-[a-z]/.test(key)) return `has a hyphen followed by a lower-case letter, which a dataset name can't have`\n if (BAD_CHAR.test(key)) return `contains a character an HTML attribute name can't have`\n return undefined\n}\n\nfunction walk(vnode: any, visit: (dataset: Record<string, any>, sel: string) => void, depth = 0): void {\n if (!vnode || typeof vnode != 'object' || depth > 500) return\n const ds = vnode.data && vnode.data.dataset\n if (ds && typeof ds == 'object') visit(ds, vnode.sel)\n const children = vnode.children\n if (Array.isArray(children)) for (const c of children) walk(c, visit, depth + 1)\n}\n\nexport const datasetCheck: DiagnosticCheck = {\n id: 'dataset',\n\n onRender(component, rootVnode) {\n walk(rootVnode, (dataset, sel) => {\n for (const key of Object.keys(dataset)) {\n const why = problem(key)\n if (!why || !once(`SYG421:${key}`)) continue\n const good = camel(key).replace(new RegExp(BAD_CHAR.source, 'g'), '')\n const attr = good.replace(/[A-Z]/g, c => '-' + c.toLowerCase())\n const name = good || 'name'\n devReport('SYG421', {\n component,\n message: `The view of ${nameOf(component)} renders the data key '${key}'${sel ? ` on <${String(sel).split(/[.#]/)[0]}>` : ''} ` +\n `(from data={{ '${key}': … }}), but '${key}' ${why}. ` +\n `Writing it throws a DOMException, which can stop rendering`,\n fix: `Use a camelCase key in the data prop: data={{ ${name}: … }} renders the attribute data-${attr || 'name'}; read it with .data('${name}')`,\n data: {key, suggested: good, attribute: `data-${attr}`},\n })\n }\n })\n },\n}\n","/**\n * Reply actions (PLAN-3 §1.1, workstream 1-D).\n *\n * SYG112 — a request names a reply action the sending component has no\n * model entry for (error: the reply is dropped). Dev-entry code\n * (DEV_CODE_SEVERITY).\n * SYG508 — strict: the component reads the replies to its own request with\n * X.select('cat') / X.errors('cat') where reply actions would do.\n *\n * Mechanism:\n * onSink (checks/next.ts: checkRequest) every value an instance sends to a\n * reply-capable sink (`__sygnalReplies === true`: makeFetchDriver,\n * driverFromAsync, the socket driver) is checked as it is sent.\n * The names it sees feed inspect()'s 'reply' trigger.\n * sources (strict only) wraps those sources for the intent, recording the\n * select()/errors() categories the instance reads.\n * A request's `category` is compared for SYG508 (driverFromAsync's custom\n * `selector` property is not known at run time; sygnal-check covers it).\n * Reported once per component name and action / category.\n *\n * `{ connections }` values (the `connections` static, which the core sends to\n * the same sink, or one a model entry sends) are checked the same way:\n * each connection's message / open / close / error and its SSE `events` names.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {STRICT_CODE_SEVERITY} from '../codes'\nimport {devReport, reportSafely, once, nameOf, suggest, replySeen} from './shared'\nimport {isStrictEnabled} from './strict'\n\nconst REPLY_KEYS = ['ok', 'error']\n// PLAN-3 5-4b: on the router's sink, `{ route }` (the route static) and `{ block }` name reply actions\nconst ROUTER_KEYS = ['route', 'block']\nconst CONNECTION_KEYS = ['message', 'open', 'close', 'error']\n\n/** [action, key, connection name?] for every reply action name a sink value names */\nfunction replyNames(req: any, router?: boolean): Array<[string, string, string?]> {\n const out: Array<[string, string, string?]> = []\n for (const key of router ? REPLY_KEYS.concat(ROUTER_KEYS) : REPLY_KEYS) if (typeof req[key] === 'string') out.push([req[key], key])\n const conns = req.connections\n if (conns && typeof conns === 'object') {\n for (const name of Object.keys(conns)) {\n const spec = conns[name]\n if (!spec || typeof spec !== 'object') continue\n for (const key of CONNECTION_KEYS) if (typeof spec[key] === 'string') out.push([spec[key], key, name])\n const events = spec.events\n if (events && typeof events === 'object') {\n for (const ev of Object.keys(events)) if (typeof events[ev] === 'string') out.push([events[ev], `events.${ev}`, name])\n }\n }\n }\n return out\n}\n\n/** instance → 'SINK\\0category' → the select/errors call that read it */\nconst selected = new WeakMap<object, Map<string, string>>()\n\n\nfunction readingSource(component: any, sink: string, source: any) {\n const wrapped = Object.create(source)\n for (const method of ['select', 'errors']) {\n if (typeof source[method] !== 'function') continue\n wrapped[method] = (category?: any, ...rest: any[]) => {\n if (typeof category === 'string') {\n let reads = selected.get(component)\n if (!reads) selected.set(component, reads = new Map())\n reads.set(`${sink}\\0${category}`, `${sink}.${method}('${category}')`)\n }\n return source[method](category, ...rest)\n }\n }\n return wrapped\n}\n\nexport function checkRequest(component: any, sink: string, req: any, modelActions: string[]) {\n if (!req || typeof req !== 'object') return\n const name = nameOf(component)\n let replies = false\n for (const [action, key, connection] of replyNames(req, !!component?.sources?.[sink]?.__sygnalRouter)) {\n replies = true\n let seen = replySeen.get(component)\n if (!seen) replySeen.set(component, seen = new Set())\n seen.add(action)\n if (modelActions.includes(action) || !once(`SYG112:${name}:${action}`)) continue\n const near = suggest(action, modelActions.filter(a => !a.startsWith('__')))\n devReport('SYG112', {\n component,\n message: (connection\n ? `${sink} connection '${connection}' names '${action}' as its ${key} reply action, but ${name} has no model entry '${action}', so those events are dropped`\n : `A ${sink} request names '${action}' as its ${key} reply action, but ${name} has no model entry '${action}', so the reply is dropped`) +\n (near ? ` (did you mean '${near}'?)` : ''),\n fix: near\n ? `Use the existing entry: ${key.startsWith('events.') ? `events: { '${key.slice(7)}': '${near}' }` : `${key}: '${near}'`}`\n : `Add '${action}' to ${name}.model, e.g. ${action}: (state, data) => ({ ...state, ... }), or fix the name`,\n data: {action, key, sink, ...(connection ? {connection} : {}), ...(near ? {suggestion: near} : {}), modelActions},\n })\n }\n\n // SYG508 (strict): a request without reply actions whose replies this instance reads back with select()/errors()\n if (replies || 'abort' in req || typeof req.category !== 'string' || !isStrictEnabled()) return\n const read = selected.get(component)?.get(`${sink}\\0${req.category}`)\n if (!read || !once(`SYG508:${name}:${sink}:${req.category}`)) return\n // (inside a sink stream: reportSafely, so 'error' mode can't break the stream)\n reportSafely('SYG508', {\n severity: STRICT_CODE_SEVERITY.SYG508,\n component,\n message: `${name} sends a ${sink} request with category: '${req.category}' and reads the reply back with ${read}`,\n fix: `Use reply actions instead: name them in the request, ${sink}: (state) => ({ url, ok: 'LOADED', error: 'FAILED' }), ` +\n `handle LOADED (the parsed body) and FAILED ({ error, status, body, request }) in the model, and remove ${read} from the intent`,\n data: {sink, category: req.category, read},\n })\n}\n\nexport const repliesCheck: DiagnosticCheck = {\n id: 'replies',\n\n sources(component, sources) {\n if (!isStrictEnabled() || typeof Proxy != 'function') return\n const cache = new Map<string, any>()\n return new Proxy(sources, {\n get(t: any, k: any) {\n const v = t[k]\n if (typeof k != 'string' || !v || v.__sygnalReplies !== true) return v\n if (!cache.has(k)) cache.set(k, readingSource(component, k, v))\n return cache.get(k)\n },\n })\n },\n}\n","/**\n * Router and declaration statics (PLAN-3 5-4b). Dev-entry-only codes (DEV_CODE_SEVERITY):\n *\n * SYG130 — href() names no route, or leaves out a param its pattern needs (the link is broken).\n * (A `{ to }` command with the same problem is SYG620, reported by the router itself\n * in production too, and not navigated.)\n * SYG131 — href() or a `{ to, params }` command passes params the route's pattern doesn't use.\n * SYG132 — G-167: a component declares a static the core sends to a driver (`route`,\n * `resources`, `connections`, `head`) but never sends it: it has no model (the core\n * wires statics in its model setup), or it is a root without initialState (a static is\n * computed from the state stream, which a root without state never emits).\n * SYG133 — the SPA router (makeRouter().driver without `navigate`) runs inside a Vike app,\n * where Vike owns links and history.\n *\n * Mechanism: the router's href() calls `__SYGNAL_DIAGNOSTICS__.routerHref(routes, name, params)`\n * when it exists (installRouterHooks() sets it); onModel looks at the component's sources for\n * `__sygnalStatic` / `__sygnalRouter` markers.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {bridge, devReport, once, nameOf, suggest} from './shared'\n\nconst PARAM = /:(\\w+)/g\nconst paramsOf = (pat: string) => (pat.match(PARAM) || []).map(p => p.slice(1))\n\nfunction checkHref(routes: Record<string, string>, name: string, params: any) {\n const names = Object.keys(routes).filter(k => routes[k] != '*')\n const pat = routes[name]\n if (pat == null || pat == '*') {\n if (!once(`SYG130:${name}`)) return\n const near = suggest(String(name), names)\n devReport('SYG130', {\n message: `href('${name}') names no route, so the link points to '/'` + (near ? ` (did you mean '${near}'?)` : ''),\n fix: `Use one of the route names: ${names.join(', ')}`,\n data: {name, routes: names, ...(near ? {suggestion: near} : {})},\n })\n return\n }\n const wanted = paramsOf(pat)\n const given = params && typeof params == 'object' ? params : {}\n const missing = wanted.filter(k => given[k] == null)\n const extra = Object.keys(given).filter(k => !wanted.includes(k))\n if (missing.length && once(`SYG130:${name}:${missing}`)) {\n devReport('SYG130', {\n message: `href('${name}') leaves out ${missing.map(k => `'${k}'`).join(', ')} (${pat}), so that segment is empty`,\n fix: `href('${name}', { ${wanted.join(', ')} })`,\n data: {name, pattern: pat, missing},\n })\n }\n if (extra.length && once(`SYG131:${name}:${extra}`)) {\n devReport('SYG131', {\n message: `Route '${name}' (${pat}) has no param ${extra.map(k => `'${k}'`).join(', ')}; it is ignored`,\n fix: wanted.length ? `Pass only ${wanted.join(', ')}; put other values in the query: href('${name}', params, { ${extra[0]} })` : `Put it in the query: href('${name}', {}, { ${extra[0]} })`,\n data: {name, pattern: pat, extra},\n })\n }\n}\n\n/** install the hook the router's href() calls (removed by the returned function) */\nexport function installRouterHooks(): () => void {\n const core = bridge()\n if (!core) return () => {}\n core.routerHref = checkHref\n return () => { if (core.routerHref === checkHref) core.routerHref = undefined }\n}\n\nexport const routerCheck: DiagnosticCheck = {\n id: 'router',\n\n onModel(component) {\n const sources = component?.sources\n if (!sources || typeof sources != 'object') return\n const name = nameOf(component)\n for (const n of component.sourceNames || Object.keys(sources)) {\n const src = sources[n]\n const k = src?.__sygnalStatic\n if (typeof k == 'string' && component.view?.[k] != null) {\n // statics are computed from state (G-167: with or without a model): a root whose state\n // never emits (a model but no initialState) never sends one\n if (!component.isSubComponent && component.initialState === undefined && once(`SYG132:${name}:${k}`)) {\n devReport('SYG132', {\n component,\n message: `${name} declares ${name}.${k}, but a root without initialState has no state, so ${k} is never sent to ${n}`,\n fix: `Add ${name}.initialState (e.g. { }${k == 'route' ? ', or { route: router.current() }' : ''})`,\n data: {static: k, source: n, reason: 'state'},\n })\n }\n }\n const opts = src?.__sygnalRouter\n const g: any = globalThis\n if (opts && typeof opts == 'object' && !opts.navigate && g.document?.getElementById?.('vike_pageContext') && once('SYG133')) {\n devReport('SYG133', {\n component,\n message: `The SPA router (${n}) runs inside a Vike app: Vike owns links and history, so both would handle a click`,\n fix: \"Pass Vike's navigate: makeRouter({ routes, navigate }) with import { navigate } from 'vike/client/router', or use Vike's routing\",\n data: {source: n},\n })\n }\n }\n },\n}\n","/*\n * Standard Schema (https://standardschema.dev) without a dependency: any validator that exposes\n * `schema['~standard'].validate(value)` (zod, valibot, arktype, ...), sync or async.\n * Used by makeFetchDriver's `validate` (PLAN-3 §1.6, D80); PLAN-4's forms and server functions\n * reuse it.\n */\n\n/** One validation failure, as the schema reports it */\nexport type SchemaIssue = {message: string; path?: ReadonlyArray<PropertyKey | {key: PropertyKey}>};\n\n/** true for a Standard Schema object (it has `~standard.validate`) */\nexport const isStandardSchema = (schema: any): boolean =>\n !!schema && (typeof schema == 'object' || typeof schema == 'function') && typeof schema['~standard']?.validate == 'function';\n\n/**\n * Validates `value`: resolves with the schema's (possibly transformed) value, or rejects with an\n * Error named 'ValidationError' whose `issues` are the schema's issues. A `schema` that isn't a\n * Standard Schema rejects with a TypeError.\n */\nexport const validateWith = async (schema: any, value: any): Promise<any> => {\n const r = await schema['~standard'].validate(value);\n if (!r.issues) return r.value;\n const e: any = new Error('Validation failed: ' + r.issues.map((i: SchemaIssue) => i.message).join('; '));\n e.name = 'ValidationError';\n e.issues = r.issues;\n throw e;\n};\n","/**\n * makeFetchDriver requests (PLAN-3 5-3: the query cache, D79/D80; G-175). Dev-entry codes\n * (DEV_CODE_SEVERITY):\n *\n * SYG630 — a cached request that is not idempotent: `cache: true` or `staleTime` on a\n * POST/PUT/PATCH/DELETE (a request with a body defaults to POST) (warn)\n * SYG631 — `validate` is not a Standard Schema (no `~standard.validate`): the request\n * fails (error)\n * SYG632 — `{ invalidate }` matched no cache entry and no mounted resource (info)\n * SYG633 — `{ abort: 'X' }` cancels the lane 'X', but this instance sends its `ok: 'X'`\n * requests under another `key`, so nothing is cancelled (warn)\n * SYG635 — `cache: true` / `staleTime` / `{ prefetch }` sent to a driver without a\n * `queryCache()` (D88): nothing is cached (warn). The source's `__inspect().cache`\n * is undefined without one\n *\n * Mechanism: onModel wraps the component's own model stream for every sink whose source\n * takes the `resources` static (makeFetchDriver and renderComponent's HTTP fake) and checks\n * each value as it is sent: requests, and each entry of a `{ resources }` declaration.\n * SYG632 asks the source how many entries/resources the value matches (`__matches`).\n * Each is reported once per component name and request URL / name.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, once, nameOf} from './shared'\nimport {isStandardSchema} from '../../standardSchema'\n\nconst IDEMPOTENT = /^(GET|HEAD)$/i\n\n/** instance → reply key lanes it has sent, and ok name → the other key it was sent under */\nconst lanes = new WeakMap<object, {used: Set<string>; keyed: Map<string, string>}>()\n\nconst fetchSink = (component: any, name: string) => component?.sources?.[name]?.__sygnalStatic === 'resources'\n/** 5-5: the sink's driver has no queryCache() */\nconst noCache = (component: any, sink: string) => {\n const i = component?.sources?.[sink]?.__inspect?.()\n return !!i && i.cache === undefined\n}\nconst reportNoCache = (component: any, sink: string, what: string, url: string) => {\n if (!noCache(component, sink) || !once(`SYG635:${nameOf(component)}:${what}:${url}`)) return\n devReport('SYG635', {\n component,\n message: `${sink} ${url ? url + ' ' : ''}uses ${what}, but the ${sink} driver has no queryCache(), so nothing is cached`,\n fix: `Give the driver a cache: makeFetchDriver({ cache: queryCache({ staleTime: 30000 }) }) (import { queryCache } from 'sygnal'); in tests renderComponent(C, { http: { cache: queryCache() } }). Or remove ${what}`,\n data: {sink, url, what},\n })\n}\n\nfunction checkOne(component: any, sink: string, req: any, where: string) {\n if (!req || typeof req !== 'object') return\n const name = nameOf(component)\n const url = typeof req.url === 'string' ? req.url : ''\n const method = String(req.method || (req.json !== undefined || req.body !== undefined ? 'POST' : 'GET')).toUpperCase()\n if ((req.cache === true || req.staleTime != null) && !IDEMPOTENT.test(method) && once(`SYG630:${name}:${method}:${url}`)) {\n devReport('SYG630', {\n component,\n message: `${where} ${method} ${url} sets ${req.cache === true ? 'cache: true' : 'staleTime'}, so a cached reply answers it instead of sending it again`,\n fix: `Cache reads only: remove ${req.cache === true ? 'cache' : 'staleTime'} from the ${method}, and refresh the cached reads after it succeeds with invalidates: ['tag']`,\n data: {sink, method, url},\n })\n }\n if (req.cache === true || req.staleTime != null) reportNoCache(component, sink, req.cache === true ? 'cache: true' : 'staleTime', url)\n if ('validate' in req && !isStandardSchema(req.validate) && once(`SYG631:${name}:${url}`)) {\n devReport('SYG631', {\n component,\n message: `${where} ${url} has validate: ${typeof req.validate}, which is not a Standard Schema, so the request fails`,\n fix: \"Pass a Standard Schema object (zod, valibot, arktype, ...: anything with a '~standard'.validate function), e.g. validate: QuoteSchema\",\n data: {sink, url},\n })\n }\n}\n\nexport function check(component: any, sink: string, req: any) {\n if (!req || typeof req !== 'object') return\n const name = nameOf(component)\n const res = req.resources\n if (res && typeof res === 'object') {\n for (const k of Object.keys(res)) checkOne(component, sink, typeof res[k] === 'string' ? {url: res[k]} : res[k], `${name}.resources.${k}:`)\n return\n }\n if (req.prefetch) {\n const p = req.prefetch\n reportNoCache(component, sink, '{ prefetch }', typeof p === 'string' ? p : String(p?.url ?? ''))\n return\n }\n if ('invalidate' in req) {\n const count = component.sources[sink]?.__matches?.(req.invalidate)\n const what = typeof req.invalidate === 'function' ? 'the predicate' : JSON.stringify(req.invalidate)\n if (count === 0 && once(`SYG632:${name}:${what}`)) {\n devReport('SYG632', {\n component,\n message: `${sink} { invalidate: ${what} } matched no cache entry and no mounted resource`,\n fix: \"Give the resources (or cached requests) to refresh tags: ['quotes'] and invalidate that tag, or a URL prefix starting with '/' ('/api/quotes')\",\n data: {sink, invalidate: what},\n })\n }\n return\n }\n let l = lanes.get(component)\n if (!l) lanes.set(component, (l = {used: new Set(), keyed: new Map()}))\n const {ok, error, key, abort} = req\n if (typeof abort === 'string' && key === undefined) {\n const other = l.keyed.get(abort)\n if (other !== undefined && !l.used.has(abort) && once(`SYG633:${name}:${abort}`)) {\n devReport('SYG633', {\n component,\n message: `${sink} { abort: '${abort}' } cancels the requests with key '${abort}', but ${name} sends its ok: '${abort}' requests with key: '${other}', so nothing is cancelled`,\n fix: `Cancel by that key: { abort: true, key: '${other}' } (or drop the key, so the lane is the ok action)`,\n data: {sink, abort, key: other},\n })\n }\n return\n }\n if (typeof ok === 'string' || typeof error === 'string') {\n const lane = key ?? ok ?? error\n l.used.add(lane)\n if (typeof ok === 'string' && key !== undefined && key !== ok) l.keyed.set(ok, String(key))\n }\n checkOne(component, sink, req, `A ${sink} request`)\n}\n\nexport const fetchCheck: DiagnosticCheck = {\n id: 'fetch',\n\n onModel(component) {\n const model$ = component?.model$\n if (!model$ || typeof model$ !== 'object') return\n for (const sink of Object.keys(model$)) {\n const s$ = model$[sink]\n if (!fetchSink(component, sink) || !s$ || typeof s$.map !== 'function') continue\n model$[sink] = s$.map((req: any) => {\n try { check(component, sink, req) } catch (_) {}\n return req\n })\n }\n },\n}\n","/**\n * Timers and declaration statics without a driver (PLAN-4 GS-7). Dev-entry-only codes\n * (DEV_CODE_SEVERITY):\n *\n * SYG643 — a component declares a static that only a registered driver acts on (`timers`:\n * makeTimerDriver(), `connections`: makeSocketDriver(), `resources`: makeFetchDriver(),\n * `browser`: makeBrowserDriver())\n * and no source of the app takes it (no `__sygnalStatic` marker for it), so nothing\n * happens and nothing else says so. Also closes PLAN-3's \"connections without a driver\n * report nothing\" gap. (`route` and `head` are left out: renderComponent asks for the\n * router itself, and `head` is also collected by renderToString without a driver.)\n * SYG422 — a timer spec makeTimerDriver() can't run (non-positive `every`, negative `after`,\n * `every` with `after`, no action, `frame` that isn't an action name): it isn't started.\n * The driver calls `__SYGNAL_DIAGNOSTICS__.timerSpec(name, spec, componentName)`, which\n * installTimerHooks() sets.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {bridge, devReport, once, nameOf} from './shared'\n\nconst NEEDS: Record<string, string> = {\n timers: 'makeTimerDriver()',\n connections: 'makeSocketDriver()',\n resources: 'makeFetchDriver()',\n browser: 'makeBrowserDriver()',\n}\nconst KEY: Record<string, string> = {timers: 'TIMER', connections: 'WS', resources: 'HTTP', browser: 'BROWSER'}\n\nconst brief = (v: any) => { try { return JSON.stringify(v) } catch (_) { return String(v) } }\n\n/** why a timer spec can't run ('' when it can; mirrors timers.ts's valid()) */\nexport function timerSpecProblem(s: any): string {\n if (!s || typeof s != 'object') return 'is not an object ({ every, action }, { after, action } or { frame: action })'\n if ('frame' in s && s.frame) return typeof s.frame == 'string' ? '' : 'frame must be the action name (a string)'\n if (!s.action || typeof s.action != 'string') return 'has no action (a string)'\n if (s.every == null && s.after == null) return 'has neither every nor after'\n if (s.every != null && s.after != null) return 'has both every and after'\n if (s.every != null) return s.every > 0 && s.every < 1 / 0 ? '' : `every must be a positive number of ms (got ${brief(s.every)})`\n return s.after >= 0 && s.after < 1 / 0 ? '' : `after must be a number of ms, 0 or more (got ${brief(s.after)})`\n}\n\nfunction checkSpec(name: string, spec: any, component?: string) {\n const problem = timerSpecProblem(spec) || 'is invalid'\n if (!once(`SYG422:${component}:${name}:${brief(spec)}`)) return\n devReport('SYG422', {\n component,\n message: `Timer '${name}' ${problem}; it is not started`,\n fix: `Declare ${name}: { every: 100, action: 'TICK' }, { after: 5000, action: 'EXPIRE' } or { frame: 'FRAME' } (falsy to stop it)`,\n data: {name, spec},\n })\n}\n\n/** install the hook makeTimerDriver() calls for an invalid spec (removed by the returned function) */\nexport function installTimerHooks(): () => void {\n const core = bridge()\n if (!core) return () => {}\n core.timerSpec = checkSpec\n return () => { if (core.timerSpec === checkSpec) core.timerSpec = undefined }\n}\n\nexport const timersCheck: DiagnosticCheck = {\n id: 'timers',\n\n onModel(component) {\n const sources = component?.sources, view = component?.view\n if (!sources || typeof sources != 'object' || !view) return\n const names = component.sourceNames || Object.keys(sources)\n for (const k in NEEDS) {\n if (view[k] == null) continue\n if (names.some((n: string) => sources[n]?.__sygnalStatic === k)) continue\n const name = nameOf(component)\n if (!once(`SYG643:${name}:${k}`)) continue\n devReport('SYG643', {\n component,\n message: `${name} declares ${name}.${k}, but no ${NEEDS[k]} driver is registered, so ${k == 'timers' ? 'its timers never run' : k == 'connections' ? 'its connections never open' : k == 'browser' ? 'its browser sources never start' : 'its resources are never fetched'}`,\n fix: `Register the driver: run(App, { ${KEY[k]}: ${NEEDS[k]} })`,\n data: {static: k, driver: NEEDS[k]},\n })\n }\n },\n}\n","/**\n * Browser sources (PLAN-5 B-3, src/extra/browserSources.ts). Dev-entry-only codes\n * (DEV_CODE_SEVERITY), reported when the driver calls\n * `__SYGNAL_DIAGNOSTICS__.browserSource(code, name, spec, componentName, extra)`:\n *\n * SYG663 — a `browser` entry the driver can't start (no known kind, no `action`, an intersection\n * / resize target that is neither a selector nor `true`), or a BROWSER sink command\n * with an unknown method. It isn't started / run.\n * SYG664 — a kind the driver wasn't made with (`makeBrowserDriverWith(...)` without its source).\n * SYG665 — a source or command failed (permission denied, API missing, storage blocked) and its\n * spec names no `error` action, so nothing else would say so.\n * SYG668 — an intersection / resize declaration with nothing to observe: no DOM source reached\n * the driver for the instance (extra 'dom'), or, in renderComponent's fake with\n * `dom: 'real'`, its selector matches no element of the component (extra 'none').\n *\n * A component declaring `browser` with no browser driver is SYG643 (checks/timers.ts).\n */\nimport {bridge, devReport, once} from './shared'\n\nconst KINDS = ['intersection', 'resize', 'media', 'storage', 'visibility', 'online', 'geolocation']\nconst SOURCE: Record<string, string> = {\n intersection: 'intersectionSource', resize: 'resizeSource', media: 'mediaSource', storage: 'storageSource',\n visibility: 'visibilitySource', online: 'onlineSource', geolocation: 'geolocationSource',\n copy: 'clipboardSource', paste: 'clipboardSource', setItem: 'storageSource', removeItem: 'storageSource',\n}\nconst brief = (v: any) => { try { return JSON.stringify(v) } catch (_) { return String(v) } }\n\n/** why a declared spec can't start ('' when it can; mirrors browserDriver's checks) */\nexport function browserSpecProblem(s: any): string {\n if (!s || typeof s != 'object') return `is not an object ({ ${KINDS.join(' | ')}: …, action })`\n const k = KINDS.find(k => k in s)\n if (!k) return `names no source (one of ${KINDS.join(', ')})`\n if (!s.action || typeof s.action != 'string') return 'has no action (a string)'\n if ((k == 'intersection' || k == 'resize') && s[k] !== true && (typeof s[k] != 'string' || !s[k])) return `${k} must be a selector in the component or true (its root element), got ${brief(s[k])}`\n return ''\n}\n\nfunction onBrowserSource(code: string, name: string, spec: any, component?: string, extra?: any, commands?: string[]) {\n if (code == 'SYG663' && extra === 0) {\n // an unknown command (extra 0; `commands`: the driver's)\n if (!once(`SYG663:${component}:cmd:${name}`)) return\n devReport('SYG663', {\n component,\n message: `BROWSER command '${name}' is unknown; it is not run`,\n fix: `Name the method as a key of the command: ${(commands || []).map(c => `{ ${c}: … }`).join(', ') || 'this driver takes no commands'}`,\n data: {name, command: spec},\n })\n return\n }\n if (code == 'SYG663') {\n if (!once(`SYG663:${component}:${name}:${brief(spec)}`)) return\n devReport('SYG663', {\n component,\n message: `browser entry '${name}' ${browserSpecProblem(spec) || 'is invalid'}; it is not started`,\n fix: `Declare ${name}: { media: '(prefers-color-scheme: dark)', action: 'DARK' }, { intersection: '.card', action: 'SEEN' }, … (falsy to stop it)`,\n data: {name, spec},\n })\n } else if (code == 'SYG664') {\n if (!once(`SYG664:${component}:${name}`)) return\n devReport('SYG664', {\n component,\n message: `browser entry '${name}' uses the ${extra} source, which this browser driver wasn't made with; it is not started`,\n fix: `Add it: makeBrowserDriverWith(${SOURCE[extra]}, …), or use makeBrowserDriver() (every source)`,\n data: {name, spec, kind: extra},\n })\n } else if (code == 'SYG668') {\n if (!once(`SYG668:${component}:${name}:${extra}`)) return\n const k = KINDS.find(k => spec && k in spec) || 'intersection', target = spec?.[k]\n devReport('SYG668', {\n component,\n message: extra == 'none'\n ? `browser entry '${name}' observes ${brief(target)}, which matches no element of the component; it reports nothing`\n : `browser entry '${name}' (${k}) has no DOM to observe: the component's DOM source didn't reach the browser driver; it reports nothing`,\n fix: extra == 'none'\n ? `Use a selector the component's own view renders (or true for its root element), and declare the entry only while that element exists`\n : `Run the app with a DOM driver (run() with a mount point) and declare intersection / resize in a component's own \\`browser\\` static`,\n data: {name, spec, reason: extra},\n })\n } else if (code == 'SYG665') {\n if (!once(`SYG665:${component}:${name}:${extra?.name ?? extra?.code}`)) return\n devReport('SYG665', {\n component,\n message: `browser ${spec && 'action' in spec ? `entry '${name}'` : `command '${name}'`} failed (${extra?.message || extra?.name || 'error'}) and names no error action`,\n fix: `Name one to handle it, e.g. { ..., error: 'FAILED' }, and a model entry FAILED: (state, { message }) => ...`,\n data: {name, spec, failure: extra},\n })\n }\n}\n\n/** install the hook the browser driver calls (removed by the returned function) */\nexport function installBrowserSourceHooks(): () => void {\n const core = bridge()\n if (!core) return () => {}\n core.browserSource = onBrowserSource\n return () => { if (core.browserSource === onBrowserSource) core.browserSource = undefined }\n}\n","/**\n * The chat driver (PLAN-6 L-1, src/extra/ai/chat/driver.ts). Dev-entry-only codes\n * (DEV_CODE_SEVERITY), reported when the driver calls `__SYGNAL_DIAGNOSTICS__.chat(code, request, …)`,\n * so their text costs apps nothing:\n *\n * SYG673 — the transport yielded a known event type with the wrong shape (`why`: 'type' not an\n * object with a string type, 'delta' not a string, 'name' a tool call with no name,\n * 'id' a tool result / error for no known call); it was skipped. The driver sends the\n * first five per driver.\n * SYG677 — a request with no sender stamp (not sent by a component): dropped.\n * SYG675 — (info) an L-2 transport with `strict: strictSchemas` sent a tool (or the `output`\n * schema) non-strict because it has no strict form, or (Anthropic) it is over the\n * provider's per-request limits (`data`: { tool, errors }); once per tool and transport.\n * SYG672 — (3-W2, D285) a transport with `strict: true` (not the strictSchemas import): sent\n * non-strict (`data`: { transport }); once per transport.\n *\n * SYG678 (a failure with no error action) and SYG679 (an invalid request) are printed by the\n * driver itself, in production too (legacy error()).\n */\nimport {bridge, devReport} from './shared'\n\nconst brief = (v: any) => { try { const s = JSON.stringify(v); return s && s.length > 120 ? s.slice(0, 120) + '…' : s } catch (_) { return String(v) } }\nconst WHY: Record<string, string> = {\n type: 'not an object with a string type',\n delta: 'its delta is not a string',\n name: 'a tool call with no tool name',\n id: 'its id matches no tool call of this reply',\n}\n\nfunction onChat(code: string, request: any, event?: any, why?: string) {\n const component = request && request.__emitterName\n if (code == 'SYG673') {\n devReport('SYG673', {\n component,\n message: `makeChatDriver: the transport sent a malformed ${event && typeof event.type == 'string' ? `'${event.type}' ` : ''}event (${WHY[why!] || why}): ${brief(event)}. It was skipped`,\n fix: \"Fix the transport: it yields ChatEvents such as { type: 'text', delta: 'Hi' }, { type: 'tool-call', id, name, input } (see ChatEvent in sygnal/ai)\",\n data: {event, reason: why},\n })\n } else if (code == 'SYG675') {\n const {tool, errors} = event || {}\n devReport('SYG675', {\n component,\n message: `strict mode: ${tool == '(output)' ? 'the output schema' : `the tool '${tool}'`} was sent non-strict: ${(errors || []).join('; ')}. The model may send arguments outside the schema; validation still checks them`,\n fix: 'Give it a strict form (an object root, no records: z.record() / additionalProperties with a schema), or accept the non-strict call',\n data: {tool, errors},\n })\n } else if (code == 'SYG672') {\n const {transport} = event || {}\n devReport('SYG672', {\n component,\n message: `${transport}({ strict: true }): strict mode takes the strict layer, strictSchemas from 'sygnal/ai' (a separate import, so apps that don't use it don't carry it), not true. The request was sent non-strict`,\n fix: `import { ${transport}, strictSchemas } from 'sygnal/ai' and pass ${transport}({ ..., strict: strictSchemas })`,\n data: {transport},\n })\n } else if (code == 'SYG677') {\n devReport('SYG677', {\n component,\n message: 'makeChatDriver: a request reached the driver from outside a component, so no reply action could reach anyone; it was dropped',\n fix: \"Send chat requests from a component's model: SEND: { LLM: (state) => ({ messages: state.messages, ok: 'DONE', error: 'FAILED' }) }\",\n data: {request},\n })\n }\n}\n\n/** install the hook the chat driver calls (removed by the returned function) */\nexport function installChatHooks(): () => void {\n const core = bridge()\n if (!core) return () => {}\n core.chat = onChat\n return () => { if (core.chat === onChat) core.chat = undefined }\n}\n","/**\n * PLAN-4 GS-5: persist() checks (dev entry only; sygnal-check reports both statically).\n *\n * SYG224 (error) — a `persist` static on a component that isn't the root: the core only sets it\n * up on the root (the one run() or renderComponent() is given), so nothing is saved\n * or restored. Under Vike's Layout/Wrapper shell (the `__vike` source) the message says\n * persist isn't supported on Vike pages, layouts or wrappers yet.\n * SYG223 (warn) — a `pick` / `omit` key of persist() that isn't a key of the component's\n * `initialState` static (a typo: that key is never saved, or never left out).\n * Once per component name. Mechanism: onModel reads the static `view.persist` (the persist()\n * value carries its options) and `view.initialState`.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, nameOf, once, didYouMean} from './shared'\n\nexport const persistCheck: DiagnosticCheck = {\n id: 'persist',\n\n onModel(component) {\n const view = component?.view, p = view?.persist\n if (!p) return\n const name = nameOf(component)\n if (component.isSubComponent) {\n // 3-B2: under Vike's Layout/Wrapper shell (onRenderClient's `__vike` source) the Page,\n // Layouts and Wrappers are all sub-components of the shell root\n const vike = component.sources?.__vike\n if (once('SYG224:' + name)) devReport('SYG224', {\n component,\n message: vike\n ? `${name}.persist is set, but ${name} renders in Vike's Layout/Wrapper shell (the shell is the app's root), so its state is never saved or restored: persist() isn't supported on Vike pages, layouts or wrappers yet`\n : `${name}.persist is set, but ${name} is not the root component, so its state is never saved or restored (persist() works on the root only)`,\n fix: vike\n ? `Remove persist from ${name}. Save the state yourself (STATE.watch writing to localStorage, read back in BOOTSTRAP), or use persist() on a component you run() yourself, or on a Vike page with no Layout or Wrapper (it is its own root)`\n : `Move persist to the root component (the one passed to run()) and pick the keys it holds: persist({ key, pick: ['${name.toLowerCase()}'] })`,\n data: {key: p.options?.key, ...(vike && {vike: true})},\n })\n return\n }\n const o = p.options, init = view.initialState\n if (!o || !init || typeof init != 'object') return\n const keys = Object.keys(init)\n for (const opt of ['pick', 'omit']) {\n for (const k of Array.isArray(o[opt]) ? o[opt] : []) {\n if (keys.includes(k) || !once(`SYG223:${name}:${opt}:${k}`)) continue\n devReport('SYG223', {\n component,\n message: `persist ${opt} names '${k}', which is not a key of ${name}.initialState, so it is ${opt == 'pick' ? 'never saved' : 'never left out'}${didYouMean(k, keys)}`,\n fix: `Use top-level keys of initialState in ${opt} (${keys.join(', ')}), or add '${k}' to initialState`,\n data: {option: opt, key: k, stateKeys: keys},\n })\n }\n }\n },\n}\n","/**\n * View Transitions (PLAN-4 GS-12, D129). Dev-entry-only code (DEV_CODE_SEVERITY):\n *\n * SYG645 — a component declares `viewTransitions`, but its app's DOM driver can't run them (run()'s\n * default makeDOMDriver, not makeViewTransitionDOMDriver()), so its actions patch at once\n * and nothing else says so. The helper marks its IsolateModule (`vtDriver`). Not reported\n * for renderComponent's mock DOM (no IsolateModule) or its `dom: 'real'` container\n * (`.sygnal-test`): tests don't animate.\n * Also (G-228): the static is not an array (`true`, `'MOVE'`): no action is listed (the core\n * reads it with `includes?.()`, so a string matches substrings; anything else matches none).\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, once, nameOf} from './shared'\n\nexport const viewTransitionsCheck: DiagnosticCheck = {\n id: 'viewTransitions',\n\n onModel(component) {\n const list = component?.view?.viewTransitions\n if (list == null) return\n if (!Array.isArray(list)) {\n const name = nameOf(component)\n if (!once(`SYG645:${name}`)) return\n const actions = Object.keys(component.model || {}).filter(a => !a.includes('|'))\n devReport('SYG645', {\n component,\n message: `${name}.viewTransitions is not an array (it is ${typeof list == 'string' ? `'${list}'` : typeof list}), so no action is listed for a View Transition`,\n fix: `List the action names in an array: ${name}.viewTransitions = [${(typeof list == 'string' ? [list] : actions.slice(0, 2)).map(a => `'${a}'`).join(', ') || \"'ACTION'\"}] (an array of action names)`,\n data: {value: list},\n })\n return\n }\n if (!list.length) return\n const im = component.sources?.[component.DOMSourceName || 'DOM']?._isolateModule\n // the core's DOM source proxy answers any unknown key with an event shorthand (a function)\n if (typeof im != 'object' || !im || im.vtDriver) return\n if (typeof document != 'undefined' && document.querySelector?.('.sygnal-test')) return\n const name = nameOf(component)\n if (!once(`SYG645:${name}`)) return\n devReport('SYG645', {\n component,\n message: `${name} declares ${name}.viewTransitions (${list.map((a: any) => `'${a}'`).join(', ')}), but the app's DOM driver can't run View Transitions, so those actions patch without one`,\n fix: `Give run() the View Transition DOM driver: run(App, { DOM: makeViewTransitionDOMDriver('#root') })`,\n data: {actions: list},\n })\n },\n}\n","/**\n * PLAN-4.5 G-275: marks an initial state that a wrapper built from its caller's values (an\n * element's host props, Vike's pageContext.data or hydrated state, renderComponent's\n * initialState option). The dev statics freeze (D152, checks/statics.ts) leaves a marked object\n * and everything in it alone: the caller may still change those values. A non-enumerable symbol\n * key: spreads, JSON and Object.keys don't see it.\n */\nexport const OWNED = Symbol.for('sygnal.owned')\n\nexport const owned = <T>(v: T): T => {\n // G-289: an object that refuses the key (a Proxy) is returned as is\n try { if (v && typeof v == 'object' && Object.isExtensible(v)) Object.defineProperty(v, OWNED, {value: 1}) } catch {}\n return v\n}\n\n/**\n * G-289: owned() of a shallow copy of a plain object or array (the caller's own object stays\n * unmarked: it may be a component's static, which the freeze must still cover, or sealed, which\n * can't be marked); anything else as owned()\n */\nexport const ownedCopy = <T>(v: T): T => {\n const p = v && typeof v == 'object' ? Object.getPrototypeOf(v) : 0\n return owned(Array.isArray(v) ? [...v] as any : p == Object.prototype || p === null ? {...v} : v)\n}\n","/**\n * PLAN-4.5 D152: shared statics are frozen in dev (dev entry only; the core never freezes).\n *\n * Since P45-B a component's `initialState`, `model`, `context` and `calculated` statics are\n * shared by all its instances (no per-instance deep copy). Mutating one in place (a reducer's\n * `state.items.push(x)` on the initial state, a view that writes into state) would change every\n * instance, and every later one. With diagnostics on, `initialState` is deep-frozen (its plain\n * objects and arrays; class instances such as Map or Date are left as they are) and the other\n * statics are frozen at the top level, so such a mutation throws a TypeError where it happens\n * (in a reducer: reported as SYG216 with the error attached; in a view: SYG406).\n *\n * Frozen: the component function's own statics, and the options given to component() (G-280:\n * `component({ view, model, initialState })`; the instance's `_o`, the values before behaviors or\n * persist() made per-instance copies). Not frozen: the instance's values (G-268), and an\n * initial state a wrapper built from its caller's objects (G-275: marked with `owned()` by\n * sygnal/element (host props), Vike (pageContext.data, hydrated state) and renderComponent's\n * `initialState` option; the caller may still change those). Mechanism: onIntent, which runs\n * during construction, before the model is wired.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {OWNED} from '../../owned'\n\nconst plain = (v: any): boolean => {\n if (!v || typeof v != 'object') return false\n const p = Object.getPrototypeOf(v)\n return Array.isArray(v) || p === Object.prototype || p === null\n}\n\nconst deepFreeze = (v: any): void => {\n if (!plain(v) || Object.isFrozen(v) || v[OWNED]) return\n Object.freeze(v)\n for (const k of Object.keys(v)) deepFreeze(v[k])\n}\n\nconst freeze = (o: any): void => {\n if (!o || (typeof o != 'object' && typeof o != 'function')) return\n deepFreeze(o.initialState)\n for (const k of ['model', 'context', 'calculated']) if (plain(o[k])) Object.freeze(o[k])\n}\n\nexport const staticsCheck: DiagnosticCheck = {\n id: 'statics',\n\n onIntent(component) {\n if (typeof component?.view == 'function') freeze(component.view)\n freeze(component?._o)\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 the core.\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 * PLAN-4 2-C (GS-10): the action log. Records every action a component instance runs as\n * { type, data, component, instance, sinks, cause, time }\n * for renderComponent's t.actions / t.explain() (src/extra/testing.ts), inspect({ actions }) in\n * the 'sygnal/diagnostics' dev entry (./inspect.ts) and the DevTools action log\n * (src/extra/devtoolsActions.ts).\n *\n * 0 B in apps: nothing in the core calls this. actionHooks() is a hook layer of the core\n * (04-hooks-contract §3.3): onAction opens the record (the core passes the cause: 'intent',\n * 'next', 'reply', 'built-in', 'simulateAction', 'agent' (PLAN-6 A-1, G-597); an intent action a behavior owns is\n * 'behavior'), wrapHandler sees which sinks produced a value. (The old core's version patched\n * each instance; R5 removed it.)\n *\n * Sinks: a function reducer counts when it returns a value: not ABORT (or another symbol, which\n * the core drops), and for STATE not the state it was given (GS-4: no change); EFFECT counts when\n * the handler ran without ABORT. A constant / `true` entry always sends. A throwing reducer\n * sends nothing.\n */\nimport {isAbort, ORIGINAL} from '../../../shared'\n\nexport type ActionCause = 'intent' | 'next' | 'reply' | 'built-in' | 'simulateAction' | 'behavior' | 'agent'\n\nexport interface ActionRecord {\n type: string\n data: any\n /** the component's name */\n component: string\n /** the instance's id (its component number, as inspect()'s component ids) */\n instance: string\n /** sinks that produced a value for this action (live: STATE fills in when the reducer runs) */\n sinks: string[]\n cause: ActionCause\n /** clock time (fake-timer aware) when the action reached the model */\n time: number\n /** a reply: the source that delivered it */\n source?: string\n}\n\nexport interface ActionListener {\n action(record: ActionRecord, component: any): void\n /** a sink produced a value for `record` (reducer: the model's function, when there is one) */\n sink?(record: ActionRecord, sink: string, reducer: any): void\n}\n\nconst BUILT_IN = /^(BOOTSTRAP|INITIALIZE|DISPOSE|RESOURCE)$/\n\n/** now on the test's fake clock when there is one (vi.useFakeTimers()), else Date.now() */\nexport const clockNow = (): number => {\n const c = (setTimeout as any).clock\n return c ? c.now : Date.now()\n}\n\n/**\n * PLAN-4.6 R4: the same log on the core, from its hooks (04 §3.3) instead of instance\n * patches: onAction opens the record (the core passes the cause: 'intent', 'next', 'reply',\n * 'built-in', 'simulateAction'), wrapHandler sees which sinks produced a value. Same records,\n * same cause rules: a built-in type is 'built-in' unless simulated; an intent action a behavior\n * owns is 'behavior'. `only(inst)`: the instances to record (renderComponent: its own tree).\n */\nexport function actionHooks(listener: ActionListener, only?: (inst: any) => boolean): any {\n const cur = new WeakMap<object, [ActionRecord, string[]]>()\n // INITIALIZE: the core writes the initial state at creation (no action, unless the model\n // has an INITIALIZE entry); today's log has an INITIALIZE record with STATE, so it is opened here\n const init = new WeakMap<object, ActionRecord>()\n return {\n onCreate(inst: any) {\n const d = inst.def\n if ((only && !only(inst)) || d.initialState === undefined || !(inst.isRoot || d.isolated)) return\n const rec: ActionRecord = {type: 'INITIALIZE', data: d.initialState, component: inst.name, instance: String(inst.id), sinks: [], cause: 'built-in', time: clockNow()}\n init.set(inst, rec)\n try { listener.action(rec, inst) } catch (_) { /* ignore */ }\n addSink(listener, rec, ['STATE'], 'STATE', undefined)\n },\n onAction(inst: any, a: any) {\n if (only && !only(inst)) return\n const type = String(a.type), owned = inst.def.behaviorActions\n const hs = inst.def.handlers.get(type) || [], order = hs.map((h: any) => h[0])\n const opened = type == 'INITIALIZE' && init.get(inst)\n if (opened) { init.delete(inst); cur.set(inst, [opened, order]); return }\n const cause: ActionCause = a.cause == 'simulateAction' ? a.cause : BUILT_IN.test(type) ? 'built-in'\n : a.cause == 'next' || a.cause == 'reply' || a.cause == 'agent' ? a.cause\n : owned && Object.prototype.hasOwnProperty.call(owned, type) ? 'behavior' : 'intent'\n const rec: ActionRecord = {type, data: a.data, component: inst.name, instance: String(inst.id), sinks: [], cause, time: clockNow(), ...(a.source !== undefined && {source: a.source})}\n cur.set(inst, [rec, order])\n try { listener.action(rec, inst) } catch (_) { /* a listener never breaks the app */ }\n // a constant / `true` entry always sends (EFFECT runs functions only)\n for (const [sink, h] of hs) if (typeof h != 'function' && sink != 'EFFECT') addSink(listener, rec, order, sink, undefined)\n },\n wrapHandler(inst: any, type: string, sink: string, fn: any) {\n const c = cur.get(inst)\n if (!c || c[0].type !== type || typeof fn != 'function') return\n const [rec, order] = c, isState = sink == 'STATE', isEffect = sink == 'EFFECT'\n return function (this: any, state: any) {\n const r = fn.apply(this, arguments)\n if (!isAbort(r) && (isEffect || typeof r != 'symbol') && !(isState && r === state)) addSink(listener, rec, order, sink, fn[ORIGINAL] || fn)\n return r\n }\n },\n }\n}\n\nfunction addSink(l: ActionListener, rec: ActionRecord, order: string[], sink: string, reducer: any): void {\n if (!rec.sinks.includes(sink)) {\n rec.sinks.push(sink)\n rec.sinks.sort((a, b) => order.indexOf(a) - order.indexOf(b))\n }\n try { l.sink?.(rec, sink, reducer) } catch (_) { /* ignore */ }\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\n * onSink (checks/next.ts: eventEmitted) the EVENTS types the instance emitted. Since\n * B-023 the driver-side emitter name (onBusEmit) is the emitting\n * component's, but it is only a name, and this graph is per instance\n * onReducer which model-only actions actually ran (=> dispatched by next(),\n * unless a request named them as reply actions: replies.ts, 'reply')\n * onBusEmit EVENTS types seen on the bus\n * onBusSelect EVENTS types selected (see onIntent)\n * onRender (PLAN-4 CT-1) the controls the instance renders: its own vtree, up to the\n * isolated child components, through ./controls' vnode -> control map\n * onDispose prunes the instance\n * (PLAN-4 2-C) the action log (./actionLog: actionHooks, a layer of checks/next.ts) feeds\n * inspect({ actions }): the recent actions (the last RECENT_MAX, any 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, InspectResource, InspectControl, InspectRecentAction} from './public'\nimport {clockNow} from './actionLog'\nimport type {ActionListener, ActionRecord} from './actionLog'\nimport {bridge, onReset, nameOf, isPlainObject, BUILTIN_ACTIONS, replySeen} from './shared'\nimport {checkEventBus} from './events'\nimport {selectorStatus} from './dom'\nimport {controlOfVnode, keyOfSelector} from './controls'\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 /** CT-1: controls seen in its renders, by key (first-seen order) */\n controls: Map<string, {element: string | null; kind?: 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/** PLAN-4 2-C (GS-10): the most recent actions of any instance, oldest first */\nconst RECENT_MAX = 200\nlet recent: ActionRecord[] = []\nlet epoch = clockNow()\nexport const actionListener: ActionListener = {\n action(r) { if (recent.push(r) > RECENT_MAX) recent.shift() },\n}\n\nonReset(() => {\n records = new Map()\n pendingSelects = []\n busTypes = new Set()\n recent = []\n epoch = clockNow()\n})\nconst uniq = <T>(list: Iterable<T>): T[] => [...new Set(list)]\n\nconst NEXT_KIND: Record<string, Kind> = {root: 'root', child: 'child', item: 'collection-item', page: 'switchable'}\n\nfunction kindOf(c: any): Kind {\n // PLAN-4.6 R4: the core's instance view says it (checks/next.ts)\n return (c && c.__next && NEXT_KIND[c.__next.kind]) || 'child'\n}\n\nfunction ensure(c: any): Rec {\n let r = records.get(c)\n if (!r) {\n const parent = c && c.__next && c.__next.parentId\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 controls: new Map(),\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 = 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 },\n\n onRender(component, root) {\n const r = records.get(component)\n if (r) collectControls(root, r.controls, true)\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\n/** PLAN-4.6 R4 (onSink): an EVENTS value the instance sent */\nexport function eventEmitted(component: any, ev: any): void {\n const r = records.get(component)\n if (r && ev && typeof ev.type === 'string') r.eventsEmitted.add(ev.type)\n}\n\n/**\n * CT-1: record the controls in a component's rendered tree (data-control=\"<Key>\"), stopping at\n * isolated child components (their root carries data.isolate on the real DOM, a '.___<scope>'\n * class in the mock DOM): the controls inside belong to the child.\n */\nfunction collectControls(v: any, out: Rec['controls'], root: boolean): void {\n if (!v || typeof v != 'object') return\n if (!root && typeof v.sel == 'string' && ((v.data && v.data.isolate) || v.sel.includes('.___'))) return\n const key = v.data && v.data.attrs && v.data.attrs['data-control']\n if (typeof key == 'string' && !out.has(key)) {\n const control = controlOfVnode(v)\n const spec = control && control.spec\n out.set(key, spec && typeof spec == 'object'\n ? {element: null, kind: String(spec.kind)}\n : {element: typeof spec == 'string' ? spec : typeof v.sel == 'string' ? v.sel.split(/[.#]/)[0] : null})\n }\n for (const k of [].concat(v.children || [], (v.data && v.data.portalChildren) || [])) collectControls(k, out, false)\n}\n\n/** CT-1: the controls a component rendered, `listened` from its intent's selectors */\nfunction controlsOf(r: Rec, selectors: InspectSelector[]): InspectControl[] | undefined {\n if (!r.controls.size) return undefined\n const listened = new Set<string>()\n for (const s of selectors) for (const m of s.selector.matchAll(/\\[data-control=\"([^\"]+)\"\\]/g)) listened.add(m[1])\n return [...r.controls].map(([name, {element, kind}]) => ({name, element, ...(kind ? {kind} : {}), listened: listened.has(name)}))\n}\n\n/** CT-1: mark a selector that is a control ([data-control=\"<Key>\"]) with its key */\nconst withControl = (s: InspectSelector): InspectSelector => {\n const key = keyOfSelector(s.selector)\n return key ? {...s, control: key} : s\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 const replies = replySeen.get(r.instance)\n return names.map(name => ({\n name,\n trigger: BUILTIN_ACTIONS.has(name) ? 'builtin'\n : intent.includes(name) ? 'intent'\n : replies?.has(name) ? 'reply'\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/** PLAN-3 5-3: the instance's resources (`resources` static) and their state slots */\nfunction resourcesOf(c: any): InspectResource[] | undefined {\n const res = c && c.view && c.view.resources\n if (!res || typeof res !== 'object') return undefined\n const s = c.currentState || {}\n return Object.keys(res).map(name => {\n const r = s[name] || {}\n return {name, status: r.status ?? 'idle', refreshing: !!r.refreshing, hasData: r.data !== undefined, error: r.error ? String(r.error.message ?? r.error) : undefined}\n })\n}\n\n/** PLAN-3 5-3: the cache entries of every makeFetchDriver source the instances use, by sink name (sinks with an empty cache left out) */\nfunction cacheOf(recs: Rec[]): InspectGraph['cache'] {\n const out: NonNullable<InspectGraph['cache']> = {}\n for (const r of recs) {\n const sources = r.instance && r.instance.sources\n if (!sources || typeof sources !== 'object') continue\n for (const k of Object.keys(sources)) {\n const src = sources[k]\n if (out[k] || !src || src.__sygnalStatic !== 'resources' || typeof src.__inspect !== 'function') continue\n try { const list = src.__inspect().cache; if (list.length) out[k] = list } catch (_) { /* a driver without the cache listing */ }\n }\n }\n return out\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 => withControl({...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 withControl({\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 const selectors = selectorsOf(r, options, diags)\n const controls = controlsOf(r, selectors)\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,\n ...(controls ? {controls} : {}),\n diagnostics: diags.filter(d => d && d.component === r.name).map(slim),\n ...(resourcesOf(c) ? {resources: resourcesOf(c)} : {}),\n }\n })\n\n const cache = cacheOf(recs) || {}\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 ...(Object.keys(cache).length ? {cache} : {}),\n ...(options.actions ? {recentActions: recentActions(options.actions, ids)} : {}),\n }\n}\n\n/** a JSON-safe copy of an action's data (dropped when it doesn't serialize, or is large: a DOM event) */\nfunction jsonData(d: any): {data?: any} {\n if (d === undefined) return {}\n try {\n const text = JSON.stringify(d)\n return text === undefined || text.length > 1000 ? {} : {data: JSON.parse(text)}\n } catch (_) { return {} }\n}\n\n/** PLAN-4 2-C: the last `limit` actions (true: all kept) of the listed instances */\nfunction recentActions(limit: true | number, ids: Set<string> | undefined): InspectRecentAction[] {\n const list = ids ? recent.filter(r => ids.has(r.instance)) : recent\n const n = limit === true ? list.length : Math.max(0, Math.floor(limit))\n return list.slice(list.length - n).map(r => ({\n type: r.type,\n ...jsonData(r.data),\n component: r.component,\n instance: r.instance,\n sinks: [...r.sinks],\n cause: r.cause,\n at: r.time - epoch,\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 * PLAN-4.6 R4: the dev entry's checks on the next component core (src/core/).\n *\n * The core has no instance to patch and no diagnostics calls of its own: it reads this\n * entry's hooks once per app (`__SYGNAL_DIAGNOSTICS__.nextHooks(api)`, 04-hooks-contract §2.2)\n * and calls them with read-only InstanceViews. This module maps them onto the existing checks:\n *\n * - each instance gets a facade with the fields the checks read from today's instances (name,\n * view, model, sources, currentState, ...), so the DiagnosticCheck hooks (onIntent, onModel,\n * onRender, onReducer, onDispose, sources) run unchanged through the core's dispatchers;\n * - what the checks did by patching an instance becomes a hook: SYG222's reducer wrapping\n * (wrapHandler), the reply / fetch / EVENTS taps of a sink (onSink), the ELEMENT check\n * (onElementCommand), the Collection check (onHostProps), the action log (actionLog.ts);\n * - the core's own dev codes: SYG423 (D168: a view context tracking skipped would have\n * rendered differently), SYG424 (D169/D177: duplicate Collection ids), SYG425 (D174: an\n * isolatedState child kept a slice that lacks its initialState keys), SYG148 / SYG149 (G-419:\n * a Collection's viewTransitionName that isn't an identifier, the same name twice on the\n * page after a patch, G-460: on rendered elements), SYG612 (D173: a form\n * 6.0 removed, met at runtime; once per form and component, with a link to the migration\n * guide).\n *\n * Only while diagnostics are on (the checks' own rule); production builds never load this.\n */\nimport {bridge, devReport, reportSafely, once, onReset, nameOf, isPlainObject} from './shared'\nimport {DEV_CODE_SEVERITY} from '../codes'\nimport {watchMutation} from './state'\nimport {checkRequest} from './replies'\nimport {check as checkFetch} from './fetch'\nimport {checkSentCommand} from './elementCommands'\nimport {checkCollection} from './collections'\nimport {eventEmitted, actionListener as recentActions} from './inspect'\nimport {actionHooks} from './actionLog'\n\nconst MIGRATE = 'https://sygnal.js.org/guide/migrating-to-6'\n\n/** the removed forms (D162-D164) by migration-guide anchor: what it was, how to write it now */\nexport const REMOVED: Record<string, [what: string, fix: string]> = {\n 'string-tags': ['a component named by a string tag (<Name /> as a string, looked up in .components)', 'Import the component and use it as a JSX tag: <Badge />'],\n 'components': ['the .components registry', 'Import each component and use it as a JSX tag; remove .components'],\n 'collection-of-name': ['<Collection of=\"Name\"> (a name)', 'Pass the component itself: <Collection of={Item} from=\"items\" />'],\n 'collection-wrapper': [\"the Collection's wrapper element (className, style, class, attrs, data-*, on, ref or hook on <Collection>)\", 'Collection renders its items directly into its parent: put them on your own wrapping element, <ul className=\"x\"><Collection of={Item} from=\"items\" /></ul>'],\n 'child-select-name': [\"CHILD.select('Name') (a name)\", 'Pass the component itself: CHILD.select(Item)'],\n 'pipe-keys': [\"'ACTION | SINK' model keys\", \"Use the object form: ACTION: { SINK: (state, data) => ... }\"],\n 'peers': ['.peers', 'Render the peer as a sibling in the parent view'],\n 'hmractions': ['hmrActions', 'Remove hmrActions; sygnal/vite keeps the state across a hot update'],\n 'positional-views': ['a view with positional parameters (props, state, context, peers)', 'Destructure the one argument: function C({ state, context, ...props })'],\n 'source-names': ['DOMSourceName / stateSourceName', \"Remove them: the sources are always DOM and STATE\"],\n 'storecalculatedinstate': ['storeCalculatedInState', 'Remove it: calculated fields are always part of the state the view and reducers get'],\n 'component-factory': ['the component({ ... }) factory (with sources / isolateOpts)', 'Write a function component with statics (C.model, C.intent, C.initialState), or use defineComponent({ ... })'],\n}\n\n/** 4-H: the marker's props / data buckets the removed Collection wrapper element took */\nconst WRAPPER = ['className', 'style', 'class', 'attrs', 'dataset', 'on', 'hook']\n\nconst STATICS: Array<[string, string]> = [['components', 'components'], ['peers', 'peers'], ['hmrActions', 'hmractions'], ['DOMSourceName', 'source-names'], ['stateSourceName', 'source-names'], ['storeCalculatedInState', 'storecalculatedinstate']]\n\nfunction removed(component: any, name: string, anchor: string, detail?: string): void {\n if (!once(`SYG612:${name}:${anchor}`)) return\n const [what, fix] = REMOVED[anchor]\n devReport('SYG612', {\n component: name,\n message: `${name} uses ${what}${detail ? ` (${detail})` : ''}, which Sygnal 6.0 removed, so it is ignored or fails`,\n fix: `${fix}. See ${MIGRATE}#${anchor}`,\n data: {form: anchor, guide: `${MIGRATE}#${anchor}`, ...(detail ? {detail} : {})},\n })\n}\n\n/** the removed forms a definition shows (statics, view arity, model keys), once per function */\nlet seenDefs = new WeakSet<object>()\n// G-332: resetChecks() forgets them (as the once() dedupe)\nonReset(() => { seenDefs = new WeakSet<object>() })\nfunction removedStatics(f: any): void {\n const view = f.view\n if (!view || seenDefs.has(view)) return\n seenDefs.add(view)\n const name = f.name\n if (view.isSygnalComponent) removed(f, name, 'component-factory')\n for (const [k, anchor] of STATICS) if (view[k] !== undefined && !(k == 'components' && isPlainObject(view[k]) && !Object.keys(view[k]).length)) removed(f, name, anchor, k)\n // G-343: a defineComponent() wrapper's own arity is 1; the view it calls is __sygnalView\n const arity = typeof view == 'function' ? (view.__sygnalView || view).length : 0\n if (arity > 1 && !view.__sygnalLazy && !view.isSygnalComponent) removed(f, name, 'positional-views', `${arity} parameters`)\n const model = view.model\n if (isPlainObject(model)) for (const k of Object.keys(model)) if (k.includes('|')) removed(f, name, 'pipe-keys', `'${k}'`)\n}\n\n/** string tags left in a rendered vnode (the core renders them as elements) */\nfunction removedTags(f: any, v: any, depth = 0): void {\n if (!v || typeof v != 'object' || depth > 300) return\n const sel = v.sel\n // G-329: a component name is PascalCase; an all-caps tag (h('SPAN'), h(el.tagName)) is an element\n const tag = typeof sel == 'string' ? sel.split(/[.#]/)[0] : ''\n if (/^[A-Z]/.test(tag) && /[a-z]/.test(tag) && !(v.data && v.data.c)) removed(f, f.name, 'string-tags', `<${tag}>`)\n const kids = v.children\n if (Array.isArray(kids)) for (const k of kids) removedTags(f, k, depth + 1)\n}\n\n/** the instance fields the checks read from today's Component instances */\nclass Facade {\n _so: any\n constructor(public __next: any) {}\n get name() { return this.__next.name }\n get view() { return this.__next.def.view }\n get model() {\n const m: Record<string, any> = {}\n this.__next.def.handlers.forEach((hs: any[], a: string) => { const e: any = m[a] = {}; for (const [s, fn] of hs) e[s] = fn })\n return m\n }\n get modelMap(): Record<string, string[]> {\n const m: Record<string, string[]> = {}\n this.__next.def.handlers.forEach((hs: any[], a: string) => { m[a] = hs.map(h => h[0]) })\n // the built-in INITIALIZE (today's model map ends with it for every component)\n if (!m.INITIALIZE) m.INITIALIZE = ['STATE']\n return m\n }\n get sources() { return this._so || this.__next.sources }\n get sourceNames() { return Object.keys(this.__next.sources) }\n get stateSourceName() { return 'STATE' }\n get DOMSourceName() { return 'DOM' }\n get isSubComponent() { return !this.__next.isRoot }\n get initialState() { return this.__next.def.initialState }\n get currentState() { return this.__next.state }\n get currentProps() { return this.__next.props }\n get currentContext() { return this.__next.context }\n get _componentNumber() { return this.__next.id }\n get calculated() { return this.__next.def.view.calculated }\n get _calculatedFieldNames() { return this.__next.def.calcNames }\n get context() { return this.__next.def.view.context }\n get _uses() { return Object.entries(this.__next.def.view.uses || {}) }\n get _behaviorActions() { return this.__next.def.behaviorActions }\n get intent$() { return {__sygnalTestActions: this.__next.def.testActions || []} }\n get _disposed() { return this.__next.disposed }\n /** the state already has its calculated fields */\n addCalculated(s: any) { return s }\n}\n\nconst facades = new WeakMap<object, Facade>()\nconst fac = (iv: any): Facade => {\n let f = facades.get(iv)\n if (!f) facades.set(iv, f = new Facade(iv))\n return f\n}\n\n/** structural vnode equality (functions equal: a view may make new closures every call) */\nfunction same(a: any, b: any, d = 0): boolean {\n if (a === b || (typeof a == 'function' && typeof b == 'function')) return true\n if (!a || !b || typeof a != 'object' || typeof b != 'object') return a !== a && b !== b\n if (d > 300) return true\n if (Array.isArray(a) != Array.isArray(b)) return false\n const ka = Object.keys(a).filter(k => k != 'elm' && a[k] !== undefined), kb = Object.keys(b).filter(k => k != 'elm' && b[k] !== undefined)\n if (ka.length != kb.length) return false\n for (const k of ka) if (!same(a[k], b[k], d + 1)) return false\n return true\n}\n\nconst SAMPLE = 16, CAP = 20\n\n/** a CSS identifier's start, then identifier characters (`<prefix>-<id>` is one when the prefix starts one) */\nconst IDENT = /^(--|-?[A-Za-z_\\u0080-\\uffff])[\\w\\u0080-\\uffff-]*$/\n\n/** G-419 SYG148: a Collection's viewTransitionName that is not a CSS identifier (true: a valid one) */\nfunction vtPrefix(name: string, p: any): boolean {\n if (typeof p == 'string' && IDENT.test(p)) return true\n const shown = typeof p == 'string' ? JSON.stringify(p) : `{${typeof p}}`\n if (once(`SYG148:${name}:${String(p)}`)) devReport('SYG148', {\n component: name,\n message: `A Collection in ${name} has viewTransitionName=${shown}, which is not a CSS identifier, so every item's view-transition-name (${typeof p == 'string' ? p : '<prefix>'}-<id>) is invalid CSS: the browser ignores it and nothing animates`,\n fix: 'Use a CSS identifier as the prefix: letters, digits, - and _, not starting with a digit (viewTransitionName=\"card\")',\n data: {value: p},\n })\n return false\n}\n\n/**\n * G-460: an element the browser renders (a View Transition captures only those): not in a\n * display: none subtree (a hidden tab panel, a list shown only at another width). checkVisibility()\n * where there is one; else (jsdom) no display: none on it or an ancestor\n */\nfunction rendered(el: any): boolean {\n if (!el?.isConnected) return false\n if (typeof el.checkVisibility == 'function') return el.checkVisibility()\n const cs = el.ownerDocument?.defaultView?.getComputedStyle\n for (let n = el; n && n.nodeType == 1; n = n.parentNode) if (n.hidden || cs?.(n).display == 'none') return false\n return true\n}\n\n/**\n * G-419 SYG149: two elements of the patched page with the same view-transition-name from\n * Collections with the same prefix (the same id shown in two of them): the browser skips the\n * whole View Transition. Walks the vnode tree (dev only, while a named Collection is mounted);\n * G-460: a name found twice is checked on the DOM after the patch (a microtask later; when a View\n * Transition defers the patch, again a little later): only rendered elements count. Returns the\n * groups of vnodes with one name (none: an empty list)\n */\nfunction vtDuplicates(root: any, prefixes: Set<string>): any[][] {\n const seen = new Map<string, any[]>(), dup: any[][] = []\n const stack = [root]\n while (stack.length) {\n const v = stack.pop()\n if (!v || typeof v != 'object') continue\n const st = v.data?.style, n = st?.viewTransitionName\n if (typeof n == 'string' && prefixes.has(st.viewTransitionClass)) {\n const g = seen.get(n)\n if (!g) seen.set(n, [v])\n else if (g.push(v) == 2) dup.push(g)\n }\n if (Array.isArray(v.children)) for (let i = v.children.length; i--;) stack.push(v.children[i])\n }\n return dup\n}\n\n// G-538: a fragment root never gets an element (the DOM driver flattens it into the container):\n// it has run when each of its children has one (a kept child has its old one: a View Transition\n// patch of a fragment root whose children are all kept is checked before it runs)\nconst patched = (v: any): any => v.elm || !v.sel && v.children?.every((c: any) => !c || patched(c))\n\n/**\n * G-527: the patches waiting for their SYG149 check ([root vnode, duplicate groups], newest last,\n * at most 8) and one chain of checks over them: a microtask after the first, then every 50 ms\n * while some wait. The patch of a root has run when it has its element (a View Transition patches\n * in its update callback, and replaces a held vnode it hasn't patched yet; kept vnodes have their\n * old elements before that): each check takes the newest patch that ran and drops it and the older\n * ones. A newer patch joins the queue and doesn't restart the chain, so patches closer than 50 ms\n * (View Transitions back to back) can't starve it. A patch without duplicates joins only a queue\n * that waits (once it has run, the older ones are moot). G-501: the chain stops once the app (or\n * every named Collection) is gone, and after 10 tries without a patched root (the mock DOM; a root\n * that never gets its element isn't checked on its children's old elements)\n */\nfunction vtChecker(live: () => any) {\n let q: any[][] = [], busy = false, tries = 0\n const vtRendered = (): void => {\n if (!live()) { q = []; busy = false; return }\n let i = q.length\n while (i-- && !patched(q[i][0]));\n if (i >= 0) { vtReport(q[i][1]); q = q.slice(i + 1); tries = 0 }\n else tries++\n if (!q.length || tries > 10) { q = []; busy = false; return }\n setTimeout(vtRendered, 50)\n }\n return (root: any, dup: any[][]) => {\n if (!dup.length && !q.length) return\n q.push([root, dup])\n if (q.length > 8) q.shift()\n if (!busy) { busy = true; tries = 0; queueMicrotask(vtRendered) }\n }\n}\n\nfunction vtReport(dup: any[][]): void {\n for (const g of dup) {\n const v = g[0], st = v.data.style, n = st.viewTransitionName\n if (g.filter(x => rendered(x.elm)).length < 2 || !once(`SYG149:${n}`)) continue\n devReport('SYG149', {\n component: 'Collection',\n message: `Two elements on the page have view-transition-name '${n}': Collections with viewTransitionName=\"${st.viewTransitionClass}\" show the item with that id at the same time. Names must be unique when a View Transition starts, so the browser skips every transition while both are shown`,\n fix: `Give Collections that can show the same item at once different prefixes (viewTransitionName=\"${st.viewTransitionClass}\" and another), or name the item yourself with its own style`,\n data: {name: n, prefix: st.viewTransitionClass},\n })\n }\n}\n\n/** The hooks one app gets (installChecks publishes this on the bridge). */\nexport function nextHooks(_api: any): any {\n const core = bridge(), H = core.hooks\n const on = () => H.on()\n const modelOf = (f: Facade) => f.modelMap\n const wired = new WeakSet<object>()\n const wire = (iv: any, names: string[]) => {\n const f = fac(iv)\n if (wired.has(f)) return\n wired.add(f)\n H.onIntent(f, names)\n H.onModel(f, modelOf(f))\n }\n // D168: the views context tracking skipped, checked on a sample (each instance's first two\n // skips, then 1 in 16; at most CAP per tick)\n const skips = new WeakMap<object, number>()\n let budget = 0\n const log = actionHooks(recentActions, () => on())\n // G-419: the viewTransitionName prefixes this app's Collections use; G-460: per instance that\n // renders them, so the SYG149 walk stops once every one of them is disposed\n const vtp = new Map<any, Set<string>>()\n // G-527: one chain of SYG149 checks over the latest patches (G-501: it stops once every instance\n // that renders a named Collection is disposed, the app's dispose included)\n const vtCheck = vtChecker(() => vtp.size && on())\n return {\n onCreate(iv: any) {\n if (!on()) return\n log.onCreate(iv)\n const f = fac(iv)\n removedStatics(f)\n if (!iv.def.intent) wire(iv, [])\n },\n wrapSources(iv: any, so: any) {\n const f = fac(iv)\n f._so = so\n let out\n try { out = H.sourcesFor(f) } finally { f._so = undefined }\n if (!on() || typeof Proxy != 'function') return out\n // D173: CHILD.select('Name')\n const s = out || so\n return new Proxy(s, {\n get(t: any, k: any) {\n const v = t[k]\n if (k !== 'CHILD' || !v || typeof v.select != 'function') return v\n return {...v, select: (x: any, ...r: any[]) => { if (typeof x == 'string') removed(f, f.name, 'child-select-name', `CHILD.select('${x}')`); return v.select(x, ...r) }}\n },\n })\n },\n onIntent(iv: any, names: string[]) {\n wire(iv, names)\n },\n onRender(iv: any, vnode: any) {\n const f = fac(iv)\n H.onRender(f, vnode)\n if (on()) removedTags(f, vnode)\n },\n onReducer(iv: any, type: string, prev: any, next: any) {\n H.onReducer(fac(iv), type, prev, next, 'STATE')\n },\n onDispose(iv: any) {\n vtp.delete(iv)\n H.onDispose(fac(iv))\n },\n onAction(iv: any, a: any) { log.onAction(iv, a) },\n wrapHandler(iv: any, type: string, sink: string, fn: any) {\n let h = log.wrapHandler(iv, type, sink, fn) || fn\n // SYG222: the STATE reducers, wrapped (today the check rewrote the instance's model)\n if (on() && sink == 'STATE' && typeof fn == 'function') h = watchMutation(fac(iv), type, h)\n return h === fn ? undefined : h\n },\n onSink(iv: any, type: string | null, sink: string, v: any) {\n if (!on()) return\n const f = fac(iv), src = iv.sources[sink]\n try {\n if (sink == 'EVENTS') eventEmitted(f, v)\n if (src && src.__sygnalReplies === true) checkRequest(f, sink, v, Object.keys(f.modelMap))\n if (src && src.__sygnalStatic === 'resources') checkFetch(f, sink, v)\n } catch (_) { /* a check never breaks the app */ }\n },\n onElementCommand(iv: any, cmd: any) {\n if (!on()) return\n const f = fac(iv)\n for (const c of ([] as any[]).concat(cmd)) checkSentCommand(f, c)\n },\n onHostProps(owner: any, sel: string, props: any, data?: any) {\n if (!on() || (sel != 'collection' && sel != 'virtual-collection')) return\n const f = fac(owner)\n if (typeof props.of == 'string') removed(f, f.name, 'collection-of-name', `of=\"${props.of}\"`)\n // 4-H (D229): what went only to the removed wrapper div (VirtualCollection keeps its container)\n if (sel == 'collection') {\n const w = WRAPPER.filter(k => k == 'className' ? props.className != null : data?.[k] != null)\n if (w.length) removed(f, f.name, 'collection-wrapper', w.map(k => k == 'dataset' ? 'data-*' : k == 'hook' ? 'ref / hook' : k).join(', '))\n }\n try { checkCollection(f, {data: {props}}) } catch (_) { /* ignore */ }\n // G-419: SYG148 for a prefix that isn't an identifier; a valid one is checked for\n // duplicate names after each patch (SYG149). G-460: a falsy one names nothing (as the host)\n const p = props.viewTransitionName\n if (p && vtPrefix(f.name, p)) {\n let s = vtp.get(owner)\n if (!s) vtp.set(owner, s = new Set())\n s.add(p)\n }\n },\n onPatch(vnode: any) {\n if (!vtp.size || !on()) return\n const all = new Set<string>()\n for (const s of vtp.values()) for (const p of s) all.add(p)\n try { vtCheck(vnode, vtDuplicates(vnode, all)) } catch (_) { /* a check never breaks the app */ }\n },\n onDuplicateKey(owner: any, key: any) {\n if (!on()) return\n const name = owner.name\n if (!once(`SYG424:${name}:${String(key)}`)) return\n devReport('SYG424', {\n component: name,\n message: `A Collection in ${name} has more than one item with the id ${JSON.stringify(key) ?? String(key)} (duplicate ids); only the first of them renders, and their writes go to it`,\n fix: 'Give every item a unique id (or no id: an item without one is keyed by its index)',\n data: {id: key},\n })\n },\n onStateSeed(iv: any, slice: any, init: any) {\n if (!on() || !isPlainObject(init) || !isPlainObject(slice)) return\n // G-333: a key initialState sets to undefined is no data the slice lacks\n const missing = Object.keys(init).filter(k => init[k] !== undefined && !(k in slice))\n const name = iv.name\n if (!missing.length || !once(`SYG425:${name}:${missing.join(',')}`)) return\n const list = missing.map(k => `'${k}'`).join(', ')\n devReport('SYG425', {\n component: name,\n message: `${name} has isolatedState and is bound to a slice of its parent's state that already exists, so it keeps that slice instead of its initialState; the slice has no ${list}, which ${name}.initialState defines`,\n fix: `To start ${name} from its initialState instead, add resetState to the tag (<${name} state=\"...\" resetState />). To keep the parent's data, initialize ${list} in the parent's state`,\n data: {missing, slice: Object.keys(slice)},\n })\n },\n onContextSkip(iv: any, render: (c: any) => any, prev: any, next: any, keys: string[]) {\n if (!on() || !prev || !next) return\n const n = (skips.get(iv) || 0) + 1\n skips.set(iv, n)\n if ((n > 2 && n % SAMPLE) || budget >= CAP) return\n if (!budget++) queueMicrotask(() => { budget = 0 })\n let a, b, c\n try { a = render(prev); b = render(next); c = render(prev) } catch (_) { return }\n // G-327: a control render: a view whose output differs between two calls with the same\n // context (a render counter, Date.now(), Math.random(), generated ids) proves nothing\n if (same(a, b) || !same(a, c)) return\n const name = iv.name\n const changed = Object.keys(next).filter(k => next[k] !== prev[k])\n if (!once(`SYG423:${name}`)) return\n reportSafely('SYG423', {\n severity: DEV_CODE_SEVERITY.SYG423,\n component: name,\n message: `The context keys ${changed.map(k => `'${k}'`).join(', ')} changed and ${name}'s view was not re-rendered, because the view read none of them during its last call (it read: ${keys.length ? keys.map(k => `'${k}'`).join(', ') : 'nothing'}). Calling it with the new context renders something else, so the page shows a stale render`,\n fix: `Read context entries in the view itself (context.theme), not through a value kept from an earlier render or a function that runs later; Object.getOwnPropertyDescriptor and similar reflection aren't tracked`,\n data: {keysRead: keys, changed},\n })\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 * | SYG112 | reply action has no model entry | replies.ts |\n * | SYG630 | cached request that isn't idempotent (POST + cache) | fetch.ts |\n * | SYG631 | validate is not a Standard Schema | fetch.ts |\n * | SYG632 | invalidate matched nothing (info) | fetch.ts |\n * | SYG633 | abort names a lane its requests don't use | fetch.ts |\n * | SYG635 | cache: true / staleTime / prefetch without queryCache() | fetch.ts |\n * | SYG115 | unknown DOM event shorthand (DOM.key(...)) | shorthand.ts |\n * | SYG124 | component where a control or selector is expected | controls.ts |\n * | SYG140 | widget emitted an event it doesn't declare | widgets.ts |\n * | SYG142 | widget command not declared (also a reserved name) | elementCommands.ts, widgets.ts |\n * | SYG143 | widget tag used as a selector | widgets.ts |\n * | SYG144 | declared widget event the host also fires (info) | widgets.ts |\n * | SYG660 | widget mount / update / unmount threw (660/661/662) | widgets.ts |\n * | SYG430 | VirtualCollection: no bounded height; SYG431 items without ids; SYG432 item not one element; SYG433 scroll target not in the list; SYG434 bad estimateSize / overscan | virtual.ts |\n * | SYG125 | control given component statics / bad spec vnode() | controls.ts |\n * | SYG127 | behavior key in initialState / unresolvable uses entry | behaviors.ts |\n * | SYG230 | form: field name not in values; SYG231 not a Standard Schema; SYG232 submit dropped (info); SYG233 value missing from the schema output | forms.ts |\n * | SYG234 | form submit action has no model entry; SYG235 check names an unknown field / sets reply fields; SYG236 rows without an id | forms.ts |\n * | SYG145 | sortable: item without its id attribute; SYG146 item / handle selector matches nothing; SYG147 from is not an array | sortable.ts |\n * | SYG116 | EVENTS value with no string type (a function) | events.ts |\n * | SYG130 | href() names no route / leaves out a param | router.ts |\n * | SYG131 | route params the pattern doesn't use | router.ts |\n * | SYG132 | declaration static never sent: a root without initialState | router.ts |\n * | SYG133 | SPA router inside a Vike app | router.ts |\n * | SYG422 | timer spec makeTimerDriver() can't run | timers.ts |\n * | SYG643 | timers/connections/resources/browser with no driver | timers.ts |\n * | SYG663 | browser entry / BROWSER command that can't run | browserSources.ts |\n * | SYG664 | browser source the driver wasn't made with | browserSources.ts |\n * | SYG665 | browser source failed with no error action | browserSources.ts |\n * | SYG668 | intersection / resize with no element to observe | browserSources.ts |\n * | SYG673 | malformed chat stream event (makeChatDriver) | chat.ts |\n * | SYG675 | tool sent non-strict under strict (L-2 transports, info)| chat.ts |\n * | SYG677 | chat request sent from outside a component | chat.ts |\n * | SYG238 | a root with a model but no initialState: renders nothing | state.ts |\n * | SYG223 | persist pick/omit key not in initialState | persist.ts |\n * | SYG224 | persist on a component that isn't the root | persist.ts |\n * | SYG645 | viewTransitions without makeViewTransitionDOMDriver(), or not an array | viewTransitions.ts |\n * | SYG201 | STATE reducer dropped keys | state.ts |\n * | SYG202 | STATE reducer returned undefined | state.ts |\n * | SYG221 | set() called with a string | state.ts |\n * | SYG222 | same object returned after an in-place mutation | 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 * | SYG421 | invalid data (dataset) key in a view | dataset.ts |\n * | SYG612 | a form 6.0 removed (also SYG501/504 statically) | next.ts |\n * | SYG502 | retired in 6.0 (never reported; GS-4) | — |\n * | SYG508 | strict: select()/errors() round trip on a reply source | replies.ts |\n * | — | D152: shared statics frozen (initialState deep) | statics.ts |\n * | — | inspect(): the runtime app graph (2B) | inspect.ts |\n *\n * SYG112, SYG130-133 (PLAN-3), SYG115/116/221/421 (G-143) SYG124/125 (PLAN-4 CT-1) and SYG127 (GS-1) are dev-entry-only codes: their severities live in\n * DEV_CODE_SEVERITY (codes.ts), registered by ./shared, not in the main bundle.\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 {shorthandCheck} from './shorthand'\nimport {controlsCheck, installControlHooks} from './controls'\nimport {elementCommandsCheck, installElementCommandHooks} from './elementCommands'\nimport {installWidgetHooks} from './widgets'\nimport {installVirtualHooks} from './virtual'\nimport {behaviorsCheck} from './behaviors'\nimport {formsCheck, installFormHooks} from './forms'\nimport {installSortableHooks} from './sortable'\nimport {datasetCheck} from './dataset'\nimport {strictCheck} from './strict'\nimport {repliesCheck} from './replies'\nimport {routerCheck, installRouterHooks} from './router'\nimport {fetchCheck} from './fetch'\nimport {timersCheck, installTimerHooks} from './timers'\nimport {installBrowserSourceHooks} from './browserSources'\nimport {installChatHooks} from './chat'\nimport {persistCheck} from './persist'\nimport {viewTransitionsCheck} from './viewTransitions'\nimport {staticsCheck} from './statics'\nimport {installRxjsHints} from './rxjsHints'\nimport {inspectCheck, installInspect} from './inspect'\nimport {nextHooks} from './next'\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 {InspectResource, InspectCacheEntry, InspectGraph, InspectComponent, InspectAction, InspectActionTrigger, InspectChild, InspectSelector, InspectControl, InspectDiagnostic, InspectRelatedLocation, InspectFix, InspectTextEdit, InspectOptions, InspectRecentAction} 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 shorthandCheck,\n controlsCheck,\n elementCommandsCheck,\n behaviorsCheck,\n formsCheck,\n datasetCheck,\n strictCheck,\n repliesCheck,\n routerCheck,\n fetchCheck,\n timersCheck,\n persistCheck,\n viewTransitionsCheck,\n staticsCheck,\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 uninstallRouter = installRouterHooks()\n const uninstallControls = installControlHooks()\n const uninstallTimers = installTimerHooks()\n const uninstallBrowser = installBrowserSourceHooks()\n const uninstallChat = installChatHooks()\n const uninstallElementCommands = installElementCommandHooks()\n const uninstallWidgets = installWidgetHooks()\n const uninstallVirtual = installVirtualHooks()\n const uninstallForms = installFormHooks()\n const uninstallSortable = installSortableHooks()\n // PLAN-4.6 R4: the core reads its hooks from the bridge once per app (checks/next.ts)\n ;(core.layers ||= new Set()).add(nextHooks)\n const uninstall = () => {\n core.layers?.delete(nextHooks)\n unregister.forEach(fn => fn())\n uninstallHints()\n uninstallInspect()\n uninstallRouter()\n uninstallControls()\n uninstallTimers()\n uninstallBrowser()\n uninstallChat()\n uninstallElementCommands()\n uninstallWidgets()\n uninstallVirtual()\n uninstallForms()\n uninstallSortable()\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","distance","WRAPPED","selected","RESERVED","describe","isControl","STATICS","wrapped","checkedDOM","keyOf","what","brief","recentActions","checkFetch"],"mappings":"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M,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,MAAM;;;AAGd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;;;AAGd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;;;AAGd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,M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"}
1
+ {"version":3,"file":"diagnostics.cjs.js","sources":["../src/extra/xstreamCompat.ts","../src/extra/diagnostics/codes.ts","../src/extra/diagnostics/checks/shared.ts","../src/extra/diagnostics/checks/wiring.ts","../src/shared.ts","../src/extra/diagnostics/checks/state.ts","../src/extra/diagnostics/checks/events.ts","../src/extra/diagnostics/checks/strict.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/controls.ts","../src/extra/diagnostics/checks/dom.ts","../src/extra/diagnostics/checks/shorthand.ts","../src/extra/diagnostics/checks/elementCommands.ts","../src/extra/diagnostics/checks/widgets.ts","../src/extra/diagnostics/checks/virtual.ts","../src/extra/diagnostics/checks/behaviors.ts","../src/extra/formHelpers.ts","../src/extra/diagnostics/checks/forms.ts","../src/extra/diagnostics/checks/sortable.ts","../src/extra/diagnostics/checks/dataset.ts","../src/extra/diagnostics/checks/replies.ts","../src/extra/diagnostics/checks/router.ts","../src/extra/standardSchema.ts","../src/extra/diagnostics/checks/fetch.ts","../src/extra/diagnostics/checks/timers.ts","../src/extra/diagnostics/checks/browserSources.ts","../src/extra/diagnostics/checks/chat.ts","../src/extra/diagnostics/checks/persist.ts","../src/extra/diagnostics/checks/viewTransitions.ts","../src/extra/owned.ts","../src/extra/diagnostics/checks/statics.ts","../src/extra/diagnostics/checks/rxjsHints.ts","../src/extra/diagnostics/checks/actionLog.ts","../src/extra/diagnostics/checks/inspect.ts","../src/extra/diagnostics/checks/next.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 * 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 (PLAN-2 1-B, G-044):\n * - 'error' — the operation failed: thrown at the call site, or caught there\n * (reducer, EFFECT, view, sub-component) and logged with\n * console.error while the app keeps running\n * - 'warn' — likely mistake, behaviour continues: console + collected\n * (when diagnostics mode is 'warn')\n * - 'info' — collected only; surfaced through inspect / test helpers\n * A call site may report a lower severity than the default (SYG405 for\n * Collection/Switchable children, SYG406 handled by onError: 'warn').\n * Every code surfaces under its own code: an error thrown by fail() and\n * caught by a reducer/EFFECT/instantiation handler is reported under the\n * thrown code (legacy.caught), not the handler's.\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 * SYG7xx Accessibility (a11y; static only, sygnal-check, PLAN-4 GS-3)\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: 'error',\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 SYG608: 'warn',\n SYG609: 'warn',\n SYG610: '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 SYG115: 'Unknown DOM event shorthand',\n SYG116: 'EVENTS value has no string type',\n SYG124: 'Component used as a control or selector',\n SYG125: 'Control given .intent, .model or .initialState',\n SYG126: 'Control rendered but never listened to',\n SYG127: 'Behavior collision or unresolvable uses entry',\n SYG128: 'Duplicate control key',\n SYG129: \"CHILD.select() of a component this one doesn't render\",\n SYG112: 'Reply action has no model entry',\n SYG130: 'href() names no route or leaves out a param',\n SYG131: 'Route params the pattern does not use',\n SYG132: 'Declaration static that is never sent',\n SYG133: 'SPA router inside a Vike app',\n // PLAN-5 W-1: widgets (defineWidget; checks/widgets.ts, checks/elementCommands.ts; SYG141 static only)\n SYG140: 'Widget dispatched an undeclared event',\n SYG141: 'Listener for an event the widget does not declare',\n SYG142: 'Widget command not declared',\n SYG143: 'Widget tag used as a selector',\n SYG144: 'Widget event the host element also fires natively',\n // PLAN-5 B-1 (3-D): the sortable behavior (checks/sortable.ts; sortable.ts calls the bridge's sortable hook)\n SYG145: 'Sortable item without its id attribute',\n SYG146: 'Sortable item or handle selector matches nothing',\n SYG147: 'Sortable list key is not an array in the host state',\n // PLAN-5 3-F G-419: a Collection's viewTransitionName (checks/next.ts)\n SYG148: 'Collection viewTransitionName is not a CSS identifier',\n SYG149: 'Two items with the same view-transition name',\n // PLAN-6 K-1: static only (sygnal-check rules/syg150-agent.js, syg152, syg153)\n SYG150: 'Agent action has no model entry',\n SYG151: 'Misspelled agent static',\n SYG152: 'LLM request without an ok action',\n SYG153: 'WebMCP form attribute set as a DOM property',\n // PLAN-5 V-1: VirtualCollection (checks/virtual.ts)\n SYG430: 'VirtualCollection has no bounded height',\n SYG431: 'VirtualCollection items without ids',\n SYG432: 'VirtualCollection item does not render one element',\n SYG433: 'VirtualCollection scroll target not in the list',\n SYG434: 'Invalid VirtualCollection estimateSize or overscan',\n // PLAN-5 3-H (G-449): sortable over a list shown in another order (checks/sortable.ts)\n SYG435: 'Sortable list shown filtered or in another order',\n // PLAN-6 A-1 (sygnal/ai agent layer)\n SYG440: 'Two agent declarations with the same name',\n SYG441: 'Agent Collection items without unique ids',\n // PLAN-6 L-3 (src/extra/ai/chat/behavior.ts; legacy error(): prints even when diagnostics are off)\n SYG442: 'Chat or command bar behavior not connected to its app',\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: \"Removed in 6.0: view with positional arguments\",\n SYG502: 'Retired in 6.0: STATE reducer signals no change without ABORT',\n SYG503: 'Side effect in a STATE reducer that returns ABORT',\n SYG504: \"Removed in 6.0: 'ACTION | SINK' model key\",\n SYG505: 'Non-canonical EVENTS emit',\n SYG506: \"Removed in 6.0: CHILD.select() with a component name\",\n SYG507: 'Prop drilled through more than 2 component levels',\n SYG508: 'select()/errors() round trip where reply actions would do',\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: \"Retired in 6.0: Invalid model shorthand entry\",\n SYG212: 'Model entry is not a function or an object of sinks',\n SYG213: \"Retired in 6.0: 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 SYG221: 'set() called with a string',\n SYG222: 'STATE reducer returned the same object after it was mutated in place',\n SYG223: 'persist pick or omit names a key that is not in initialState',\n SYG224: 'persist on a component that is not the root',\n SYG226: 'Undo track, resetOn or coalesce names an unknown action',\n // PLAN-5 F-1: the form behavior (checks/forms.ts)\n SYG230: 'Form field name not in values',\n SYG231: 'form() schema is not a Standard Schema',\n SYG232: 'Form submit dropped while one is in progress',\n SYG233: 'Form value missing from the schema output',\n SYG234: 'Form submit action has no model entry',\n SYG235: 'Form check names an unknown field or sets reply fields',\n SYG236: 'Form array rows without an id',\n SYG237: 'Two forms in one component listen on the same form selector',\n // PLAN-5 2-R (G-393; checks/state.ts; dev entry)\n SYG238: 'Root component with a model but no initial state',\n // PLAN-6 A-1 (sygnal/ai agent layer, src/extra/ai/agent; runtime, while an agent layer runs)\n SYG240: 'Agent action or query input has no JSON Schema form',\n SYG241: 'Agent read, query, when, until or label threw',\n SYG243: 'Agent action or query input schema converted with losses',\n // agent queries (src/extra/ai/agent; runtime and sygnal-check)\n SYG246: 'Agent query is not a synchronous function',\n SYG247: 'Agent query has the tool name of an action',\n SYG248: 'Agent action until names no resource',\n // PLAN-6 A-2 (src/extra/ai/webmcp.ts; reported with the severity passed, dev)\n SYG242: 'WebMCP tool over a size budget',\n SYG244: 'Agent read returns strings, untrusted not declared',\n // PLAN-6 A-3 (D291; checks/forms.ts, through the bridge's form hook)\n SYG245: 'form tool option is not made by formTool()',\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: \"Retired in 6.0: Unnamed component factory not found\",\n SYG414: \"Retired in 6.0: 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: \"Retired in 6.0: Invalid switchable() 'name$' parameter\",\n SYG420: 'JSX tag is undefined',\n SYG421: 'Invalid data (dataset) key',\n SYG422: 'Invalid timer spec',\n // PLAN-4.6 R4: the core's dev checks (checks/next.ts; dev entry)\n SYG423: 'Context change skipped a view whose output it changes',\n SYG424: 'Duplicate Collection item id',\n SYG425: 'isolatedState slice lacks initialState keys',\n SYG601: \"Retired in 6.0: Missing or invalid sources\",\n SYG602: 'Intent is not a function',\n SYG603: 'Intent returned an invalid value',\n SYG604: \"Retired in 6.0: Invalid hmrActions\",\n SYG605: \"Retired in 6.0: Intent action name contains '|'\",\n SYG606: 'calculated is not an object',\n SYG607: \"Retired in 6.0: State source not found\",\n SYG608: 'Strict mode requested without the diagnostics entry',\n SYG609: 'Sink or source has no driver',\n SYG610: \"Request has a 'then' or 'catch' key\",\n SYG611: 'Socket message not sent or connection not opened',\n // PLAN-4.6 R4 (D173): a form 6.0 removed, met at runtime (checks/next.ts; dev entry)\n SYG612: 'Removed in 6.0',\n SYG620: 'Router command not performed',\n // PLAN-3 5-3: makeFetchDriver's cache, invalidation and validation (dev entry; SYG634 static only)\n SYG630: 'Cached request is not idempotent',\n SYG631: 'validate is not a Standard Schema',\n SYG632: 'invalidate matched nothing',\n SYG633: 'abort names a lane the requests do not use',\n SYG634: 'latest: true with a computed key',\n // PLAN-3 5-5 (D88)\n SYG635: 'Caching asked for without a queryCache',\n // PLAN-4 GS-2: element commands (reported by the dev entry, checks/elementCommands.ts)\n SYG640: 'Element command target not found',\n SYG641: 'Unknown element command',\n // PLAN-4 GS-5: persist() (src/extra/persist.ts reports SYG642 with an explicit severity, like SYG611)\n SYG642: 'Persisted state could not be restored or saved',\n // PLAN-4 GS-7: timers (checks/timers.ts; dev entry)\n SYG643: 'Declaration static with no driver to take it',\n // PLAN-4 D131: sygnal/element (reported through the core bridge when diagnostics are on)\n SYG644: 'Custom element prop hides an HTMLElement member',\n // PLAN-4 GS-12 (D129): View Transitions (checks/viewTransitions.ts; dev entry)\n SYG645: \"viewTransitions that can't run\",\n // PLAN-5 W-1: a widget's mount / update / unmount threw (checks/widgets.ts; dev entry)\n SYG660: 'Widget mount threw',\n SYG661: 'Widget update threw or reported an error',\n SYG662: 'Widget unmount threw',\n // PLAN-5 B-3: browser sources (makeBrowserDriver; checks/browserSources.ts; dev entry)\n SYG663: 'Invalid browser-source spec or command',\n SYG664: 'Browser source not in the driver',\n SYG665: 'Browser source failed with no error action',\n // PLAN-5 W-2 (D203): the adapter entries (sygnal/react, sygnal/zag, sygnal/ui/menu|select|combobox): SYG666 from\n // sygnal/vite (an entry imported without its optional peer dependencies), SYG667 thrown by\n // fromZag / fromReact\n SYG666: 'Adapter peer dependency missing',\n SYG667: 'Invalid adapter argument',\n // PLAN-5 2-R (G-383, G-387)\n SYG668: 'Browser source has no element to observe',\n // PLAN-5 2-T (G-410): Sygnal components / widget tags / special JSX inside a fromZag render\n SYG669: 'Sygnal component inside a fromZag render',\n // PLAN-6 L-1: makeChatDriver (src/extra/ai/chat/driver.ts; SYG673/677 dev, SYG678/679 legacy error())\n // PLAN-6 L-2: transports (src/extra/ai/transports/; SYG670 legacy error() + the request fails, SYG675 dev)\n SYG670: 'Auth header sent from the browser to a hosted endpoint',\n // PLAN-6 3-W2 (D285): `strict: true` instead of `strict: strictSchemas` (dev)\n SYG672: 'Strict mode without the strict layer',\n SYG673: 'Malformed chat stream event',\n SYG675: 'Tool sent non-strict under strict mode',\n SYG677: 'Chat request sent from outside a component',\n SYG678: 'Chat request failed with no error action',\n SYG679: 'Invalid chat request',\n // PLAN-6 A-2: experimentalExposeWebMcp (src/extra/ai/webmcp.ts; dev)\n SYG674: 'WebMCP not available',\n SYG676: 'WebMCP registerTool rejected',\n // PLAN-4 GS-3: a11y lane (static only, sygnal-check)\n SYG701: 'Click listener on a non-interactive element',\n SYG702: 'Form field without an accessible label',\n SYG703: 'Image without alt text',\n SYG704: 'Link without href used as a button',\n SYG705: 'Button without an accessible name',\n SYG706: 'Positive tabIndex',\n SYG707: 'Unknown ARIA attribute or invalid role',\n SYG708: 'Label or ARIA reference to an id that is not rendered',\n // PLAN-5 2-T (D211): Zag UI parts (sygnal-check rules/a11y/syg722-ui-name.js)\n SYG722: 'Menu, Select or Combobox without an accessible name',\n // PLAN-5 B-1 (3-D): static only (sygnal-check)\n SYG724: 'Sortable handle not keyboard-accessible, or no live region',\n // PLAN-6 K-1: static only (sygnal-check rules/a11y/syg730-hover-only.js, syg731-toggle-state.js)\n SYG730: 'Action reachable only by hovering',\n SYG731: 'Toggled state shown only by a class',\n SYG901: \"Retired in 6.0: Sub-component sink stream errored\",\n SYG902: \"Retired in 6.0: EFFECT stream errored\",\n SYG903: \"Retired in 6.0: 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: 'error',\n SYG502: 'warn',\n SYG503: 'warn',\n SYG504: 'error',\n SYG505: 'warn',\n SYG506: 'error',\n SYG507: 'info',\n SYG508: 'warn',\n}\n\n// PLAN-3 1-G (G-143): codes only the 'sygnal/diagnostics' dev entry reports. Like the strict\n// table, kept OUT of CODE_SEVERITY (zero bytes in the main bundle); the entry registers them\n// and passes the severity explicitly.\n// PLAN-3 1-D: SYG112 (a reply action has no model entry) too.\n// PLAN-3 2-A: SYG611 too, though makeSocketDriver reports it (legacy error(), severity passed\n// explicitly): kept out of CODE_SEVERITY so the core bundle doesn't pay for an opt-in driver.\nexport const DEV_CODE_SEVERITY: Record<string, DiagnosticSeverity> = {\n SYG112: 'error',\n SYG115: 'warn',\n SYG116: 'error',\n // PLAN-4 1-D: controls, static (sygnal-check)\n SYG124: 'error',\n SYG125: 'error',\n SYG126: 'info',\n // PLAN-4 GS-1: behaviors (checks/behaviors.ts)\n SYG127: 'error',\n SYG128: 'error',\n // PLAN-4 4-G2: static only (sygnal-check); listed so the entry knows its title\n SYG129: 'warn',\n SYG221: 'error',\n // PLAN-4 GS-4 (state.ts)\n SYG222: 'warn',\n // PLAN-4 GS-5 (checks/persist.ts; sygnal-check statically)\n SYG223: 'warn',\n SYG224: 'error',\n // PLAN-4 GS-8 (undo.ts reports it when diagnostics are on; sygnal-check statically)\n SYG226: 'warn',\n // PLAN-5 F-1: the form behavior (checks/forms.ts; form.ts calls the bridge's form hook)\n SYG230: 'warn',\n SYG231: 'error',\n SYG232: 'info',\n SYG233: 'warn',\n SYG234: 'warn',\n SYG235: 'warn',\n SYG236: 'warn',\n SYG237: 'warn',\n SYG238: 'warn',\n // PLAN-6 A-1 (sygnal/ai agent layer, src/extra/ai/agent): reported by the layer itself with the\n // severity passed, like SYG611, so the main bundle's table doesn't grow\n SYG240: 'error',\n SYG241: 'error',\n SYG243: 'warn',\n SYG246: 'error',\n SYG247: 'warn',\n SYG248: 'warn',\n // PLAN-6 A-2 (WebMCP, reported with the severity passed)\n SYG242: 'warn',\n SYG244: 'warn',\n // PLAN-6 A-3 (D291): a plain object as form()'s tool (checks/forms.ts)\n SYG245: 'error',\n SYG421: 'error',\n SYG611: 'error',\n // PLAN-3 5-4b: router (SYG620 is reported by the router itself, like SYG611) and G-167\n SYG130: 'error',\n SYG131: 'warn',\n SYG132: 'warn',\n SYG133: 'warn',\n SYG620: 'error',\n // PLAN-3 5-3 (fetch.ts)\n SYG630: 'warn',\n SYG631: 'error',\n SYG632: 'info',\n SYG633: 'warn',\n // static only (sygnal-check); listed so the entry knows its title\n SYG634: 'info',\n // PLAN-3 5-5 (fetch.ts)\n SYG635: 'warn',\n // PLAN-4 GS-2 (checks/elementCommands.ts, through the core bridge; renderComponent too)\n SYG640: 'warn',\n SYG641: 'error',\n // PLAN-4 GS-5 (persist.ts, through legacy warn(): printed in production too)\n SYG642: 'warn',\n // PLAN-4 GS-7 (timers.ts): an invalid timer spec (not started); timers / connections /\n // resources declared with no driver registered\n SYG422: 'error',\n SYG643: 'warn',\n // PLAN-4.6 R4 (checks/next.ts): D168 context-tracking safety net, D169 duplicate ids, D174 kept\n // slice, D173 removed forms\n SYG423: 'warn',\n SYG424: 'warn',\n SYG425: 'warn',\n SYG612: 'error',\n // PLAN-4 D131 (element.ts, through the core bridge; a console warning in dev with diagnostics off)\n SYG644: 'warn',\n // PLAN-4 GS-12 (viewTransitions.ts): the static set, but the app's DOM driver isn't makeViewTransitionDOMDriver()\n SYG645: 'warn',\n // PLAN-5 W-1: widgets (checks/widgets.ts, checks/elementCommands.ts; SYG141 static only, listed\n // so the entry knows its title)\n SYG140: 'warn',\n SYG141: 'warn',\n SYG142: 'error',\n SYG143: 'warn',\n SYG144: 'info',\n // PLAN-5 B-1 (3-D): the sortable behavior (checks/sortable.ts)\n SYG145: 'warn',\n SYG146: 'warn',\n SYG147: 'warn',\n // PLAN-5 3-F G-419 (checks/next.ts: onHostProps, onPatch)\n SYG148: 'warn',\n SYG149: 'warn',\n SYG660: 'error',\n SYG661: 'error',\n SYG662: 'error',\n SYG663: 'error',\n SYG664: 'error',\n SYG665: 'warn',\n SYG666: 'error',\n SYG667: 'error',\n SYG668: 'warn',\n SYG669: 'warn',\n // PLAN-6 L-1 (makeChatDriver reports them with an explicit severity, like SYG611)\n SYG670: 'error',\n SYG672: 'error',\n SYG673: 'warn',\n SYG675: 'info',\n SYG677: 'warn',\n SYG678: 'error',\n SYG679: 'error',\n // PLAN-6 A-2 (experimentalExposeWebMcp reports them with an explicit severity)\n SYG674: 'info',\n SYG676: 'warn',\n // PLAN-5 V-1: VirtualCollection (checks/virtual.ts, through the core bridge)\n SYG430: 'warn',\n SYG431: 'warn',\n SYG432: 'warn',\n SYG433: 'warn',\n SYG434: 'warn',\n // PLAN-5 3-H (G-449): sortable (checks/sortable.ts)\n SYG435: 'warn',\n // PLAN-6 A-1 (sygnal/ai agent layer)\n SYG440: 'warn',\n SYG441: 'warn',\n SYG442: 'error',\n // PLAN-4 GS-3: a11y lane, static only (sygnal-check; warn, also under --strict; error with --a11y=error, D144); listed so the entry knows its title\n SYG701: 'warn',\n SYG702: 'warn',\n SYG703: 'warn',\n SYG704: 'warn',\n SYG705: 'warn',\n SYG706: 'warn',\n SYG707: 'warn',\n SYG708: 'warn',\n SYG722: 'warn',\n // PLAN-5 B-1 (3-D): static only (sygnal-check)\n SYG724: 'warn',\n // PLAN-6 K-1: static only (sygnal-check); listed so the entry knows their titles\n SYG150: 'warn',\n SYG151: 'warn',\n SYG152: 'warn',\n SYG153: 'warn',\n SYG730: 'warn',\n SYG731: 'warn',\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 * 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'\nimport {CODE_TITLES, DEV_CODE_SEVERITY, registerCodes} from '../codes'\nimport type {DiagnosticSeverity} from '../codes'\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\nregisterCodes(Object.keys(DEV_CODE_SEVERITY).map(code =>\n [code, DEV_CODE_SEVERITY[code], CODE_TITLES[code]] as [string, DiagnosticSeverity, string]))\n\n/**\n * reportSafely() for the dev-entry-only codes (DEV_CODE_SEVERITY, G-143): the main bundle's\n * core doesn't know their severity, so it is passed explicitly.\n */\nexport const devReport = (code: string, details: DiagnosticDetails): Diagnostic | undefined =>\n reportSafely(code, {severity: DEV_CODE_SEVERITY[code], ...details})\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/**\n * Built-in actions Sygnal dispatches itself; never \"missing\" or \"unreachable\".\n * (HYDRATE is not one since 6.0, D66: nothing dispatches it, so it is an ordinary action.)\n */\nexport const BUILTIN_ACTIONS = new Set(['BOOTSTRAP', 'INITIALIZE', 'DISPOSE', 'READY', 'RESOURCE'])\n\n/** Sinks the core handles itself: their values never go to a reply-action driver. */\n// (PLAN-4 GS-2: ELEMENT too; `{ scrollIntoView: Row, block: 'center' }` names no action)\nconst NON_REPLY_SINK = /^(STATE|EFFECT|EVENTS|PARENT|READY|DOM|CHILD|ELEMENT|PERSIST)$/\n\n// `ok: 'X'` / `\"error\": \"X\"` in function source (minified code keeps string literals and keys)\nconst keyedNames = (keys: string) => new RegExp(`(?:^|[{,\\\\s])[\"']?(?:${keys})[\"']?\\\\s*:\\\\s*([\"'\\`])([\\\\w$.:/-]+)\\\\1`, 'g')\n// (PLAN-3 5-4b: and a router `{ block: 'ACTION' }`)\nconst REPLY_IN_SOURCE = keyedNames('ok|error|block')\nconst CONNECTION_IN_SOURCE = keyedNames('message|open|close|error')\n// G-224: a `timers` static's `action: 'TICK'` / `frame: 'FRAME'`\nconst TIMER_IN_SOURCE = keyedNames('action|frame')\n// PLAN-5 B-3: a `browser` static's `action: 'SEEN'` / `error: 'GEO_FAILED'`\nconst BROWSER_IN_SOURCE = keyedNames('action|error')\n\nconst namesIn = (fn: any, re: RegExp, out: Set<string>) => {\n if (typeof fn !== 'function') return\n let src = ''\n try { src = Function.prototype.toString.call(fn) } catch (_) { return }\n re.lastIndex = 0\n for (let m = re.exec(src); m; m = re.exec(src)) out.add(m[2])\n}\n\n/**\n * Reply actions a component's requests and `connections` static can name, read from the\n * source of its non-STATE sink functions (`HTTP: (s) => ({ url, ok: 'LOADED', error: 'FAILED' })`)\n * and of `connections` (message/open/close/error). A heuristic for SYG102 (PLAN-3): a name\n * built at run time is missed (SYG102 stays info, so that only costs a false hint).\n */\nexport function replyNamesOf(component: any): Set<string> {\n const out = new Set<string>()\n const model = component && component.model\n if (model && typeof model === 'object') {\n for (const key of Object.keys(model)) {\n const value = model[key]\n const bar = key.indexOf('|')\n if (bar >= 0) {\n if (!NON_REPLY_SINK.test(key.slice(bar + 1).trim())) namesIn(value, REPLY_IN_SOURCE, out)\n } else if (value && typeof value === 'object') {\n for (const sink of Object.keys(value)) {\n if (!NON_REPLY_SINK.test(sink)) namesIn(value[sink], REPLY_IN_SOURCE, out)\n }\n }\n }\n }\n namesIn(component?.view?.connections, CONNECTION_IN_SOURCE, out)\n // G-224: makeTimerDriver() replies the actions the `timers` static names (a function of the\n // state, or an object of them)\n const timers = component?.view?.timers\n if (timers && typeof timers === 'object') for (const k in timers) namesIn(timers[k], TIMER_IN_SOURCE, out)\n else namesIn(timers, TIMER_IN_SOURCE, out)\n // PLAN-5 B-3: the browser driver replies the actions the `browser` static names\n const browser = component?.view?.browser\n if (browser && typeof browser === 'object') for (const k in browser) namesIn(browser[k], BROWSER_IN_SOURCE, out)\n else namesIn(browser, BROWSER_IN_SOURCE, out)\n // PLAN-3 5-4b: the router replies the action a `route` static names\n const route = component?.view?.route\n if (typeof route === 'string') out.add(route)\n // PLAN-4 GS-5: persist() adds RESTORE (sent after hydration and by sync)\n if (component?.view?.persist) out.add('RESTORE')\n return out\n}\n\n/** Reply actions a component instance's requests were seen naming (replies.ts → inspect). */\nexport const replySeen = new WeakMap<object, Set<string>>()\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/** undo once(key): the report it guarded wasn't made (G-470: diagnostics off) */\nexport const unsee = (key: string): void => void seen.delete(key)\n/** whether once(`key`) has reported already (a check can skip its work: SYG435) */\nexport const onced = (key: string): boolean => seen.has(key)\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). An action a request\n * names as a reply action, or `connections` names (`ok: 'LOADED'`, PLAN-3) counts as\n * triggered: replyNamesOf() reads the names from the sink functions'\n * source. A behavior's own actions (D199: in `_behaviorActions`) are not\n * reported\n * SYG609 — a model sink or an intent source has no driver (warn; see below)\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/DISPOSE/READY are never reported (HYDRATE is an\n * ordinary action since 6.0).\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, replyNamesOf} from './shared'\n\nconst intentActions = new WeakMap<object, string[]>()\n\n// SYG609 (G-110, PLAN-2 E2): sinks/sources that no driver provides. Sinks the core handles\n// itself never need one. renderComponent (mock DOM source) records such sinks and fakes such\n// sources (t.requests / t.respond), so its components are skipped.\n// PLAN-4 GS-2: ELEMENT (element commands) is built in; GS-5: PERSIST is persist()'s (an EFFECT)\nconst NO_DRIVER_NEEDED = /^(STATE|EFFECT|PARENT|READY|DOM|CHILD|ELEMENT|PERSIST)$/\nconst DRIVER_NAME = /^[A-Z][A-Z0-9_]*$/\n// (`in`, not a read: the DOM source's shorthand Proxy returns a function for any property)\nconst underTest = (c: any) => {\n const dom = c?.sources?.[c.DOMSourceName || 'DOM']\n return !!dom && typeof dom == 'object' && '_hub' in dom\n}\n// G-620: an LLM / chat sink gets the chat driver's fix, not makeFetchDriver's\nconst driverFix = (sink: string) =>\n `Pass a driver named ${sink} to run(): ` + (/^(LLM|CHAT|AI|ASSISTANT)$/.test(sink)\n ? `run(App, { ${sink}: makeChatDriver({ transport: openResponses({ baseURL: 'http://localhost:11434/v1', model: 'llama3.2' }) }) }) (from 'sygnal/ai'; uiMessageStream('/api/chat') for an AI SDK server)`\n : `run(App, { ${sink}: makeFetchDriver() }) for HTTP, or driverFromAsync(fn) / your own driver`) +\n `. Check the spelling against the drivers you pass`\n\nexport const wiringCheck: DiagnosticCheck = {\n id: 'wiring',\n\n onIntent(component, actionNames) {\n intentActions.set(component, actionNames || [])\n },\n\n // SYG609: an intent that reads a source no driver provides (`HTTP.select(...)` with no HTTP\n // driver) would crash with \"Cannot read properties of undefined\": say why first\n sources(component, sources) {\n if (underTest(component) || typeof Proxy != 'function') return\n const name = nameOf(component)\n return new Proxy(sources, {\n get(t: any, k: any) {\n if (typeof k == 'string' && !(k in t) && DRIVER_NAME.test(k) && once(`SYG609:${name}:source:${k}`)) {\n report('SYG609', {\n component,\n message: `${name}.intent reads the ${k} source, but no driver named ${k} was passed to run(), so it is undefined`,\n fix: driverFix(k),\n data: {name: k, kind: 'source', drivers: Object.keys(t).filter(n => DRIVER_NAME.test(n))},\n })\n }\n return t[k]\n },\n })\n },\n\n onModel(component, modelMap) {\n const name = nameOf(component)\n // SYG609: a sink no driver receives is dropped silently by run()\n if (!underTest(component)) {\n const own = new Set<string>(component?.sourceNames || [])\n for (const action of Object.keys(modelMap || {})) {\n for (const sink of modelMap[action] || []) {\n if (own.has(sink) || NO_DRIVER_NEEDED.test(sink) || sink === component?.stateSourceName) continue\n if (!once(`SYG609:${name}:sink:${sink}`)) continue\n report('SYG609', {\n component,\n message: `Model entry '${action}' sends to the ${sink} sink, but no driver named ${sink} was passed to run(), so every value sent there is dropped`,\n fix: driverFix(sink),\n data: {name: sink, kind: 'sink', action, drivers: [...own].filter(n => DRIVER_NAME.test(n))},\n })\n }\n }\n }\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 const replies = replyNamesOf(component)\n // D199: a behavior's own actions ('tip.SHOW') are its business: a timer, next() or a reply\n // may trigger them (the behavior-owned map, behaviors.ts)\n const owned = component?._behaviorActions || {}\n for (const action of modelActions) {\n if (isInternalAction(action) || actions.includes(action) || injected.has(action) || replies.has(action) || action in owned) 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, name it in a request (ok: '${action}'), 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 * Tiny helpers shared by the core and the helper modules (behaviors, undo, the dev entry), kept\n * out of the core so importing them never pulls it in.\n */\n\n/** The \"no change / send nothing\" sentinel (a registered symbol: the same in every copy) */\nexport const ABORT = Symbol.for('sygnal.ABORT')\n\n/**\n * Whether a value is ABORT. Compares the description, not the identity, in case bundlers (e.g.\n * Vite) create duplicate module instances with separate Symbol.for() registries. (G-214: the\n * one copy, for the core, behaviors, undo and the action log)\n */\nexport const isAbort = (v: any): boolean => typeof v == 'symbol' && v.description == 'sygnal.ABORT'\n\n/**\n * Set on a dev-only wrapper of a model function (SYG222's) to the function it wraps, so the\n * action log and t.explain() show the user's reducer (G-214 follow-up)\n */\nexport const ORIGINAL = Symbol.for('sygnal.original')\n\n/**\n * PLAN-4 GS-9 / G-214: one part of a uid() path (a child's path or `id` prop, a Collection item\n * key, a Switchable page name), encoded injectively into [A-Za-z0-9_]: letters and digits stay,\n * anything else (including '_' and '-') becomes '_<UTF-16 code>_' ('0.2' → '0_46_2', 'a_b' →\n * 'a_95_b'), so the '-' between parts is unambiguous too. renderToString encodes the same way\n * (ssr.ts).\n */\nexport const uidPart = (s: any): string => (s + '').replace(/\\W|_/g, c => '_' + c.charCodeAt(0) + '_')\n\n/**\n * PLAN-5 A-1: a Collection item's style with its view-transition name and class\n * (`viewTransitionName=\"card\"`): `card-<id>`, the id escaped as uidPart does (a valid CSS\n * identifier, unique per id), and the class `card`; the item's own style wins, except its\n * `undefined` values (G-418: no value is no override; snabbdom would leave the old one). The\n * core's Collection host and SSR share it\n */\nexport const vtStyle = (p: string, id: any, style?: any) => {\n const o: any = {viewTransitionName: p + '-' + uidPart(id), viewTransitionClass: p}\n for (const k in style) if (style[k] !== undefined) o[k] = style[k]\n return o\n}\n\n/**\n * P45-D: sources that aren't drivers get no sinks: props$, children$, dispose$, commands$, CHILD;\n * PARENT, EFFECT and ELEMENT are built-in sinks; __k, __d, __uid... are internal\n */\nexport const NOT_SINK = /^(__|(props|children|dispose|commands)\\$$|(CHILD|PARENT|EFFECT|ELEMENT)$)/\n\n/**\n * PLAN-6 A-1 (D259): ABORT with a reason, for an agent's tool result. `abort('already done')`\n * returns ABORT (the core sees only that: no change, nothing sent) and leaves the reason here,\n * where the agent layer's handler wrapper reads and clears it. Tree-shaken from apps that don't\n * use it (0 core bytes)\n */\nexport const abortReason: {r?: string} = {}\nexport const abort = (reason?: string): typeof ABORT => (abortReason.r = reason, ABORT)\n","/**\n * SYG201 — STATE reducer dropped keys that existed in the previous state (warn)\n * SYG202 — STATE reducer returned undefined (warn)\n * SYG221 — set() called with a string (error, G-143): the string is spread\n * into the state as keys '0', '1', ... (one per character)\n * SYG238 — G-393: a root with a model but no initialState (and no state from renderComponent's\n * `initialState` or an HMR swap): its state is undefined, so it renders nothing until an\n * action sets one (the 5.x / PLAN-4 behaviour; a root without a model renders from\n * `initialState || true`, G-172). onModel, at construction, once per component name.\n * SYG222 — STATE reducer returned the object it got after mutating it in place (warn, dev;\n * PLAN-4 GS-4): since 6.0 the same object back means \"no change\", so the mutation\n * is ignored. Mechanism: onIntent (called before the model is read) wraps the\n * instance's STATE reducers; the wrapper takes a shallow snapshot (keys and top-level\n * values) before the reducer runs and compares it when the reducer returns the same\n * reference; a behavior slice (state[key] of a `uses` entry) is snapshotted the same\n * way (keys reported as 'key.field', G-214). Nested mutations (state.list.push) are\n * below the snapshot. Zero bytes\n * in the core: the wrapping only happens with the dev entry and diagnostics on.\n *\n * Mechanism: onReducer(component, action, prevState, nextState). Reported once\n * per action per component name. Not reported for:\n * - synthetic actions (`__*`) and INITIALIZE (whole-state replacement; HYDRATE is an\n * ordinary action since 6.0, D66)\n * - SYG202: a Collection item (`() => undefined` is its documented self-removal, G-357)\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, devReport, once, nameOf, isPlainObject} from './shared'\nimport {ORIGINAL} from '../../../shared'\n\nconst SKIP = new Set(['INITIALIZE'])\n\n// SYG222: the instance's STATE reducers, wrapped (see the header)\nconst WRAPPED = Symbol('SYG222')\n\nexport function watchMutation(component: any, action: string, fn: any): any {\n if (typeof fn !== 'function' || fn[WRAPPED]) return fn\n const wrapped: any = (state: any, ...rest: any[]) => {\n if (!isPlainObject(state)) return fn(state, ...rest)\n // the state's top level, and (G-214) each behavior slice's: a behavior reducer that mutates\n // its slice gets the host state back unchanged (behaviors.ts), so state[key] looks the same\n const snaps = [[state, ''], ...(component._uses || []).map(([k]: any) => [state[k], k + '.'])]\n .filter(([o]) => isPlainObject(o)).map(([o, p]) => [o, p, Object.keys(o), Object.values(o)])\n const out = fn(state, ...rest)\n if (out === state) {\n const changed = snaps.flatMap(([o, p, keys, values]: any) => keys.filter((k: string, i: number) => !(k in o) || o[k] !== values[i])\n .concat(Object.keys(o).filter(k => !keys.includes(k))).map((k: string) => p + k))\n const name = nameOf(component)\n if (changed.length && once(`SYG222:${name}:${action}`)) {\n const list = changed.map(k => `'${k}'`).join(', ')\n devReport('SYG222', {\n component,\n message: `The STATE reducer for '${action}' changed ${list} in place and returned the same object. Returning the object a reducer got means \"no change\" (as ABORT), so the change is ignored and nothing re-renders`,\n fix: `Return a new object: ${changed[0].includes('.') ? `(slice, data) => ({ ...slice, ${changed[0].split('.')[1]}: … })` : `(state, data) => ({ ...state, ${changed[0]}: … })`}. To write updates as mutations, wrap the reducer in immer's produce()`,\n data: {action, keys: changed},\n })\n }\n }\n return out\n }\n wrapped[WRAPPED] = true\n // checks that read reducer source (reply actions) see the original; so do the action log\n // and t.explain() (ORIGINAL)\n wrapped.toString = () => fn.toString()\n wrapped[ORIGINAL] = fn\n return wrapped\n}\n\nexport const stateCheck: DiagnosticCheck = {\n id: 'state',\n\n // SYG222: checks/next.ts wraps the STATE reducers (watchMutation) through wrapHandler\n\n onModel(component) {\n // SYG238 (G-393): the initial state is set at construction (D165), before onModel\n const n = component?.__next\n if (!n?.isRoot || !n.def?.model || n.state !== undefined) return\n const name = nameOf(component)\n if (!once(`SYG238:${name}`)) return\n devReport('SYG238', {\n component,\n message: `${name} is a root with a model but no initialState: its state is undefined, so it renders nothing until an action sets one`,\n fix: `Add ${name}.initialState = { … } (the root's start state; a child gets its state from its parent instead)`,\n data: {},\n })\n },\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 // G-357: returning undefined from a Collection item's reducer is the documented way to\n // remove the item: not reported. In another sub-component it is info, in the root (where\n // it wipes the whole app state) a warning.\n if (component?.__next?.kind === 'item' || !once(`SYG202:${name}:${action}`)) return\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 ? ' (only a Collection item removes itself this way)' : ''),\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\n // SYG221 (G-143): set('city') spreads the string into the state: { ...state, 0: 'c', 1: 'i', ... }\n const chars: string[] = []\n while (typeof nextState[chars.length] === 'string' && nextState[chars.length].length === 1 && !(chars.length in prevState)) {\n chars.push(nextState[chars.length])\n }\n if (chars.length > 0 && !(chars.length in nextState)) {\n if (!once(`SYG221:${name}:${action}`)) return\n const field = chars.join('')\n const update = /^[A-Za-z_$][\\w$]*$/.test(field)\n ? `set((state, ${field}) => ({ ${field} }))`\n : `set((state, value) => ({ ['${field}']: value }))`\n devReport('SYG221', {\n component,\n message: `The STATE reducer for '${action}' added the keys ${chars.map((_, i) => `'${i}'`).slice(0, 4).join(', ')}${chars.length > 4 ? ', …' : ''} ` +\n `(one per character of '${field}'): set() was called with a string, set('${field}'). set() takes an object or a function`,\n fix: `To store the action data in '${field}', pass a function: ${update}. For a fixed value pass an object: set({ ${field}: … })`,\n data: {action, field},\n })\n return\n }\n\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 * SYG116 — a value with no string `type` (typically a function) reached the\n * EVENTS bus (error, G-143).\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, devReport, 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') {\n // SYG116 (G-143): no EVENTS.select() can ever receive it. The core copies each emitted\n // value into a new object (devtools stamp), so a function arrives here as {}.\n if (once(`SYG116:${emitterName}`)) {\n devReport('SYG116', {\n component: emitterName,\n message: `${emitterName ? emitterName + \"'s model\" : 'A model'} sent a value with no string 'type' to the EVENTS sink, so nothing receives it. ` +\n `The value was probably a function (a model entry that returns event(...) instead of being event(...)), or undefined/null`,\n fix: `Make event() the sink entry itself: ACTION: { EVENTS: event('TYPE', (state, data) => payload) }; return ABORT to send nothing`,\n data: {type, emitter: emitterName},\n })\n }\n return\n }\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 * 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 * | SYG508 | reply actions, not select()/errors() | replies.ts: a request with a category |\n * | | round trip (PLAN-3 §1.1) | the same instance select()ed on a |\n * | | | reply-capable source |\n *\n * SYG501 (positional views) and SYG504 ('ACTION | SINK' keys) are forms Sygnal 6.0 removed\n * (D164): at run time they are SYG612 (checks/next.ts, strict or not); `sygnal-check --strict`\n * still reports them under their own codes, with --fix. SYG502 is retired (PLAN-4 GS-4). SYG503,\n * SYG505, SYG506, SYG507: static only (sygnal-check --strict).\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} 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\n/** The strict check's runtime half is SYG508 (replies.ts); this entry keeps the flag. */\nexport const strictCheck: DiagnosticCheck = {\n id: 'strict',\n}\n","/**\n * SYG106 — a prop passed by the parent is silently overwritten (warn; error in\n * strict mode, G-007 part 2).\n *\n * The view is called with { ...props, state, children, slots, context, uid },\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'\nimport {isStrictEnabled} from './strict'\n\n// PLAN-4 GS-9: uid (the view's uid(name?) function)\n// (R5: 6.0 passes no `peers`, D164: a prop of that name reaches the view)\nconst RESERVED = ['children', 'slots', 'context', 'uid']\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 const severity = isStrictEnabled() ? 'error' : 'warn'\n\n for (const key of RESERVED) {\n if (!(key in props) || !once(`SYG106:${name}:${key}`)) continue\n report('SYG106', {\n component,\n severity,\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,\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\nexport function 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\n// G-261: a DOM change Sygnal makes outside a patch (a Transition's leave, a Portal mounted late)\n// re-emits the DOM source of the app whose root contains `el` (makeDOMDriver listens on its root)\nexport const POKE = 'sygnal-dom';\nexport const pokeDOM = (el: any): any => el?.dispatchEvent(new Event(POKE, {bubbles: true}));\n\nconst obj = (o: any) => o !== null && typeof o == 'object' && !Array.isArray(o);\n/**\n * P46-P: two vnodes' data are the same for the DOM modules: the same keys, each value identical\n * or a shallow-equal object (a module bucket: props, attrs, class, dataset, style, ...)\n */\nexport function sameData(a: any, b: any): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n let n = 0;\n for (const k in a) {\n n++;\n const x = a[k], y = b[k];\n if (x !== y) {\n if (!obj(x) || !obj(y)) return false;\n let m = 0;\n for (const j in x) { m++; if (x[j] !== y[j]) return false; }\n for (const _ in y) m--;\n if (m) return false;\n }\n }\n for (const _ in b) n--;\n return !n;\n}\n\n// G-517 / G-518 / G-522: snabbdom never sees a fragment. Before each patch, a fragment's children\n// (through nested ones) are spliced into its parent's children, so they are diffed, moved and\n// adopted at hydration as the parent's own (snabbdom's fragment bounds went stale: an insert into\n// one landed at the parent's end, a keyed one never moved, a later patch threw NotFoundError).\n// The children of a keyed fragment (a Collection item, a component's root) take its key and their\n// own key, else their tag and its count among them: they move with it and stay apart from another\n// item's. G-541: no two paths give the same key (a '/' separator did: fragment \"src\" + \"a/b.ts\" and\n// fragment \"src/a\" + \"b.ts\"). 3-W G-544: each segment is a JSON string (the key as a string) or\n// array ([tag, count], always last), which ends where it ends, appended to the prefix\n// (`\"src\"\"a/b.ts\"`): a key grows linearly with the nesting (JSON in JSON doubled at each level),\n// and any key String() takes is fine (G-548: a BigInt; two Symbols with the same description share\n// a key; a number key and its string are one key, as in snabbdom). A vnode with no fragment below is kept by identity, as is one already\n// flattened (a cached subtree), so snabbdom still skips unchanged subtrees; so are a keyed\n// fragment's copies while the fragment and its prefix are the same (G-539; a hit compares the\n// parent's prefix, the fragment's own is made on a miss). A hoisted keyed fragment rendered in two\n// places shares its copies, as any hoisted vnode shares its object (render it once). A copy (a\n// parent with new children, a child with a new key) has its vnode's fields and writes its\n// element there too, so the app's vnodes get their `elm` as before (testing and diagnostics read\n// it); it keeps its own (a vnode object reused under another key: the old copy removes its own).\nconst flatOf = new WeakMap<any, any>();\nconst cpOf = new WeakMap<any, any>();\n// 4-I G-561: a copy is an instance of one class (the vnode's own fields, `elm` an accessor on its\n// prototype), not Object.create(y) with an own accessor: snabbdom's patch loop read each field\n// through the prototype chain and called a per-object accessor, ~3x slower over a 1k Collection.\n// (y: set again after the fields, as a copy's own y is its vnode's vnode; m starts as the vnode's\n// elm, which snabbdom replaces before reading it)\nclass Copy {\n y: any; m: any\n constructor(y: any, o: any) { this.y = y; Object.assign(this, y, o).y = y }\n get elm() { return this.m }\n set elm(e: any) { this.y.elm = this.m = e }\n}\nconst seg = (k: any, s: any) => (k || '') + JSON.stringify(typeof s == 'object' ? s : String(s));\nexport const flat = (v: any): any => {\n if (!v || v.$p || !v.children) return v;\n let r = flatOf.get(v);\n if (!r) {\n const o: any[] = [];\n let d = 0;\n // (m, s: locals of each call)\n const put = (c: any[], k?: string, n: any = {}, m?: any, s?: any) => {\n for (const x of c) {\n // G-539: a keyed fragment's copies are kept per (fragment, prefix), in flatOf (flat() never\n // takes a fragment): an unchanged one (a Collection item that didn't render again) gives\n // snabbdom the same vnodes\n if (x && !x.sel && x.children) d = 1, x.key == null ? put(x.children, k, n)\n : (m = flatOf.get(x)) && m[0] === k ? o.push(...m[1])\n : (s = o.length, put(x.children, seg(k, x.key)), flatOf.set(x, [k, o.slice(s)]));\n else {\n let y = flat(x);\n y !== x && (d = 1);\n if (k && y) {\n // 4-H: the copy of an unchanged child under the same key is kept (the fragment is new\n // when one of its children is: a Collection's), so snabbdom skips the others. 4-I\n // G-561: a hit compares the prefix and the child's own part (its key, else its count),\n // so the key is only built on a miss\n const s = y.key ?? (n[y.sel] = -~n[y.sel]), c = cpOf.get(y);\n y = c && c[0] === k && c[1] === s ? c[2] : (cpOf.set(y, [k, s, y = new Copy(y, {key: seg(k, y.key ?? [y.sel, s])})]), y);\n }\n o.push(y);\n }\n }\n };\n put(v.children);\n flatOf.set(v, r = d ? new Copy(v, {children: o}) : v);\n }\n return r;\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 * PLAN-4 CT-1, runtime control checks (dev entry only; the static ones are in sygnal-check).\n *\n * SYG124 (error): a component passed where a control or selector is expected, as in\n * `DOM.click(TodoItem)` or `DOM.select(TodoItem)`. Mechanism: the `sources` hook wraps the\n * component's DOM source in a Proxy; `select()` (also chained: `DOM.select('.x').select(C)`)\n * and every event shorthand check their first argument. A function that isn't a control is a\n * component. Reported once per component and argument; the call then goes on to the DOM\n * source, whose select() still throws (\"expects the argument to be a string\").\n *\n * SYG125 (error): controls are elements, not components.\n * - a control given `.intent`, `.model` or `.initialState` (reported when it first renders,\n * the statics are set after controls() returns);\n * - a spec object whose `vnode()` returns anything but one element vnode (text, nothing, an\n * array, a component). With diagnostics on, the render then throws an Error with the\n * SYG125 text, so the component's error boundary names the control instead of failing on\n * the stamp.\n * Mechanism: controls() (src/extra/controls.ts) calls `__SYGNAL_DIAGNOSTICS__.control(control,\n * vnode)` on every render; installControlHooks() publishes it on the core bridge.\n *\n * The same hook remembers which control rendered each vnode (controlOfVnode), so inspect() can\n * list a component's controls with their element or kind.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {bridge, devReport, once, onReset, nameOf, report} from './shared'\nimport {DEV_CODE_SEVERITY} from '../codes'\n\n/** the key of a control, from its selector `[data-control=\"<Key>\"]` */\nexport const controlKey = (control: any): string => String(control).slice(15, -2)\n\n/** a control selector `[data-control=\"<Key>\"]` as its key, else undefined */\nexport const keyOfSelector = (selector: string): string | undefined => {\n const m = /^\\[data-control=\"([^\"]+)\"\\]$/.exec(selector)\n return m ? m[1] : undefined\n}\n\nconst isControl = (x: any): boolean => typeof x == 'function' && !!x.__sygnalControl\n\nconst componentName = (fn: any): string =>\n fn.componentName || fn.label || fn.name || 'the component'\n\nlet vnodeControls = new WeakMap<object, any>()\nlet staticsSeen = new WeakSet<object>()\nonReset(() => {\n vnodeControls = new WeakMap()\n staticsSeen = new WeakSet()\n})\n\n/** the control that rendered a vnode (only while the dev entry is installed) */\nexport const controlOfVnode = (vnode: any): any =>\n vnode && typeof vnode == 'object' ? vnodeControls.get(vnode) : undefined\n\nconst STATICS = ['intent', 'model', 'initialState']\n\nconst describe = (v: any): string =>\n v === undefined || v === null ? String(v)\n : Array.isArray(v) ? `an array of ${v.length}`\n : typeof v != 'object' ? `a ${typeof v} (${JSON.stringify(v)})`\n : typeof v.sel != 'string' ? (v.text !== undefined ? 'a text vnode' : 'a fragment')\n // the pragma's component placeholder (the component function in data.c)\n : v.data && typeof v.data.c == 'function' ? `the component <${v.sel}>`\n : 'an element vnode'\n\nfunction onControl(control: any, vnode: any): void {\n const key = controlKey(control)\n if (vnode && typeof vnode == 'object') vnodeControls.set(vnode, control)\n\n if (!staticsSeen.has(control)) {\n staticsSeen.add(control)\n const given = STATICS.filter(s => control[s] != null)\n if (given.length) {\n devReport('SYG125', {\n message: `The control ${key} has ${given.map(s => '.' + s).join(', ')}, but controls are elements, not components: ${given.length > 1 ? 'these statics are' : 'it is'} never used`,\n fix: `Put the intent and model on the component that renders <${key}>, and listen to the control in its intent: DOM.click(${key}). For something with its own state and actions, write a component instead`,\n data: {control: key, statics: given},\n })\n }\n }\n\n const what = describe(vnode)\n if (what == 'an element vnode') return\n const kind = control.kind\n // report() (not devReport): in 'error' mode its DiagnosticError is thrown into the render\n const d = report('SYG125', {\n severity: DEV_CODE_SEVERITY.SYG125,\n message: `The control ${key}'s spec${kind ? ` (kind '${kind}')` : ''} vnode() returned ${what}, but it must return one element vnode`,\n fix: `Return a single element built with the h argument: vnode(props, children, h) { return h('div', props, ...children) }`,\n data: {control: key, kind, returned: what},\n })\n if (d) throw new Error(d.text)\n}\n\n/** Publish the control hook on the core bridge. Returns an uninstall function. */\nexport function installControlHooks(): () => void {\n const core = bridge()\n if (!core) return () => {}\n core.control = onControl\n return () => { if (core.control === onControl) core.control = undefined }\n}\n\nconst wrapped = new WeakMap<object, any>()\n\n/** a DOM source whose select() and event shorthands report SYG124 for a component argument */\nfunction checkedDOM(component: any, dom: any): any {\n if (!dom || typeof dom != 'object') return dom\n let proxy = wrapped.get(dom)\n if (proxy) return proxy\n proxy = new Proxy(dom, {\n get(t: any, k: any) {\n const v = t[k]\n if (typeof k != 'string' || typeof v != 'function' || (k != 'select' && k in t)) return v\n return function (this: any, arg: any, ...rest: any[]) {\n if (typeof arg == 'function' && !isControl(arg)) {\n const name = nameOf(component), child = componentName(arg)\n if (once(`SYG124:${name}:${child}:${k}`)) {\n const call = k == 'select' ? `DOM.select(${child})` : `DOM.${k}(${child})`\n devReport('SYG124', {\n component,\n message: `${name}.intent passes the component ${child} to ${call}, but a component is not an element: it has no element of its own to listen on, and its elements are isolated from ${name}`,\n fix: `Handle the event in ${child} and send it up with PARENT, then read it here with CHILD.select(${child}); or render a control ${name} owns around it: const { ${child}Box } = controls({ ${child}Box: 'div' }), <${child}Box><${child} /></${child}Box>, DOM.click(${child}Box)`,\n data: {component: child, method: k},\n })\n }\n }\n const out = v.call(t, arg, ...rest)\n return k == 'select' ? checkedDOM(component, out) : out\n }\n },\n })\n wrapped.set(dom, proxy)\n return proxy\n}\n\nexport const controlsCheck: DiagnosticCheck = {\n id: 'controls',\n\n sources(component, sources) {\n if (!sources || typeof Proxy != 'function') return\n const domName = component?.DOMSourceName || 'DOM'\n if (!sources[domName]) return\n return new Proxy(sources, {\n get(t: any, k: any) {\n const v = t[k]\n return k === domName ? checkedDOM(component, v) : v\n },\n })\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'\nimport {keyOfSelector} from './controls'\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) || [] as string[])\n // CT-1: a control's key (`<Add>` / `h(Add)` in the view source)\n .concat(Array.from(selector.matchAll(/\\[data-control=\"([^\"]+)\"\\]/g), m => m[1]))\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\n// G-144: a fragment-rooted component has several root elements\nfunction rootElementsOf(t: Tracked): Element[] {\n try {\n const im = t.source._isolateModule\n return (im && im.getElements(scopesOf(t.source.namespace))) || []\n } catch (_) {\n return []\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 roots = rootElementsOf(t).filter(r => typeof r.querySelectorAll === 'function')\n if (!roots.length) 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 = []\n for (const root of roots) {\n all.push(...Array.prototype.slice.call(root.querySelectorAll(selector)))\n if (root.matches(selector)) all.push(root)\n }\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 // CT-1: a control is named by its identifier\n const control = keyOfSelector(selector)\n reportSafely('SYG104', {\n component,\n message: `${control ? `The control ${control}` : `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}${control ? ` (DOM.<event>(${control}) in its intent)` : ''} and send it up with PARENT (read it here with CHILD.select(${child})), or use EVENTS`,\n data: control ? {selector, child, control} : {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 * SYG115 — unknown DOM event shorthand (warn, G-143).\n *\n * The core's DOM source Proxy (the DOM source wrapper) turns ANY unknown property\n * into an event shorthand: `DOM.<name>(sel)` = `DOM.select(sel).events('<name>')`. A made-up\n * name such as `DOM.key('.x')` or `DOM.enter('.x')` therefore listens for an event the browser\n * never fires, and the action silently never happens.\n *\n * Mechanism: the `sources` hook (called before each component's intent) wraps the DOM source\n * in a second Proxy. Calling a shorthand whose name is not a known DOM event reports SYG115\n * (once per component name and event), then behaves exactly like the core shorthand. Only the\n * call is reported, not the property read, so tools that inspect the source (pretty-printers)\n * don't trigger it. `DOM.select(sel).events(name)` is never checked: it is the explicit form\n * for custom events.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, once, nameOf, suggest} from './shared'\n\n// Standard DOM / UI event names (lower case). In a browser, `on<name>` on an element or the\n// window also counts, so newer events are accepted there too.\nconst KNOWN = new Set((\n 'abort afterprint animationcancel animationend animationiteration animationstart auxclick ' +\n 'beforeinput beforeprint beforetoggle beforeunload blur cancel canplay canplaythrough change click close ' +\n 'compositionend compositionstart compositionupdate contextlost contextmenu contextrestored copy cuechange cut ' +\n 'dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended error ' +\n 'focus focusin focusout formdata fullscreenchange fullscreenerror gotpointercapture hashchange input invalid ' +\n 'keydown keypress keyup languagechange load loadeddata loadedmetadata loadstart lostpointercapture message ' +\n 'messageerror mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup offline online pagehide ' +\n 'pageshow paste pause play playing pointercancel pointerdown pointerenter pointerleave pointermove pointerout ' +\n 'pointerover pointerrawupdate pointerup popstate progress ratechange rejectionhandled reset resize scroll ' +\n 'scrollend search securitypolicyviolation seeked seeking select selectionchange selectstart slotchange stalled ' +\n 'storage submit suspend timeupdate toggle touchcancel touchend touchmove touchstart transitioncancel ' +\n 'transitionend transitionrun transitionstart unhandledrejection unload visibilitychange volumechange waiting wheel'\n).split(' '))\n\nconst isKnown = (name: string): boolean => {\n // PLAN-5 0-S6: a hyphenated name is a custom element's event (DOM['wa-hover']('.food')): no\n // standard DOM event has a hyphen, and a bracketed name is no typo for one\n if (KNOWN.has(name) || name.includes('-')) return true\n const on = 'on' + name\n const g: any = globalThis\n try {\n return !!((g.HTMLElement && on in g.HTMLElement.prototype) || (g.window && on in g.window) ||\n (g.Document && on in g.Document.prototype))\n } catch (_) { return false }\n}\n\n// Names agents reach for that are enriched-stream methods or key names, not events\nconst KEY_FIX = (sel: string, key?: string) =>\n `Listen for the real event and read the key: DOM.keydown(${sel}).key()` +\n (key ? `.filter(k => k === '${key}')` : '')\nconst SPECIAL: Record<string, (sel: string) => string> = {\n key: sel => KEY_FIX(sel),\n keys: sel => KEY_FIX(sel),\n enter: sel => KEY_FIX(sel, 'Enter'),\n escape: sel => KEY_FIX(sel, 'Escape'),\n esc: sel => KEY_FIX(sel, 'Escape'),\n value: sel => `Listen for the real event and read the value: DOM.input(${sel}).value()`,\n checked: sel => `Listen for the real event and read the box: DOM.change(${sel}).checked()`,\n data: sel => `Listen for the real event and read the attribute: DOM.click(${sel}).data('name')`,\n doubleclick: sel => `Use DOM.dblclick(${sel})`,\n}\n\nconst fixFor = (name: string, selector: any): string => {\n const sel = typeof selector === 'string' ? `'${selector}'` : 'sel'\n const special = SPECIAL[name.toLowerCase()]\n if (special) return special(sel)\n const s = suggest(name, KNOWN)\n return (s ? `Did you mean DOM.${s}(${sel})? ` : '') +\n `If '${name}' is a custom event you dispatch yourself, use the explicit form DOM.select(${sel}).events('${name}')`\n}\n\nconst wrapped = new WeakMap<object, any>()\n\nfunction checkedDOM(component: any, dom: any): any {\n if (!dom || typeof dom != 'object') return dom\n let proxy = wrapped.get(dom)\n if (proxy) return proxy\n const name = nameOf(component)\n proxy = new Proxy(dom, {\n get(t: any, k: any) {\n const v = t[k]\n if (typeof k != 'string' || k in t || typeof v != 'function' || isKnown(k)) return v\n return function (this: any, selector: any, ...rest: any[]) {\n if (once(`SYG115:${name}:${k}`)) {\n devReport('SYG115', {\n component,\n message: `${name}.intent uses DOM.${k}(${typeof selector == 'string' ? `'${selector}'` : '…'}), but '${k}' is not a DOM event, so it never fires`,\n fix: fixFor(k, selector),\n data: {event: k, selector},\n })\n }\n return v.call(this, selector, ...rest)\n }\n },\n })\n wrapped.set(dom, proxy)\n return proxy\n}\n\nexport const shorthandCheck: DiagnosticCheck = {\n id: 'shorthand',\n\n sources(component, sources) {\n if (!sources || typeof Proxy != 'function') return\n const domName = component?.DOMSourceName || 'DOM'\n if (!sources[domName]) return\n return new Proxy(sources, {\n get(t: any, k: any) {\n const v = t[k]\n return k === domName ? checkedDOM(component, v) : v\n },\n })\n },\n}\n","/**\n * PLAN-4 GS-2: element command diagnostics (dev entry; the core carries no text).\n *\n * The core (src/extra/elementCommands.ts) calls `__SYGNAL_DIAGNOSTICS__.elementCommand(component,\n * command, element?)` when a command can't run:\n * - no element (`element` falsy): SYG640 (warn): nothing in the sending instance's DOM scope\n * matched the target within about 1 s;\n * - an element, but neither the control's spec command nor a method of the element: SYG641\n * (error). It names the control's declared commands. When the element is a widget's host\n * (PLAN-5 W-1, `__sw`): SYG142 (error), naming the widget's declared commands.\n * installElementCommandHooks() publishes it on the core bridge.\n *\n * When a command is sent (checkSentCommand, from the elementCommands check's onModel, which wraps\n * the instance's ELEMENT stream before the core subscribes it): SYG641 for a value that is not a\n * command object, and for a method that changes the DOM Sygnal renders (remove, append,\n * setAttribute...): the core runs any method the element has, and those break the next patch.\n *\n * renderComponent uses these functions too (mock DOM, and the real DOM without the dev entry), so\n * this module has no side effects and doesn't import ./shared (which registers codes when loaded).\n */\nimport type {DiagnosticCheck} from '../index'\nimport {DEV_CODE_SEVERITY} from '../codes'\n\n/** The element commands Sygnal documents and types (the core runs any method of the element) */\nexport const NATIVE_COMMAND_NAMES = ['focus', 'blur', 'select', 'click', 'scrollIntoView', 'showModal', 'show', 'close', 'showPopover', 'hidePopover', 'togglePopover']\n\nconst core = (): any => (globalThis as any).__SYGNAL_DIAGNOSTICS__\n\nconst send = (code: string, details: any): void => {\n try {\n core()?.report(code, {severity: DEV_CODE_SEVERITY[code], ...details})\n } catch (err) {\n // 'error' mode: rethrown asynchronously (never into the caller)\n setTimeout(() => { throw err })\n }\n}\n\nconst isControl = (x: any): boolean => typeof x == 'function' && !!x.__sygnalControl\nconst keyOf = (control: any): string => String(control).slice(15, -2)\n\n/** a command as written: `{ focus: Email, preventScroll: true }` */\nexport const describeCommand = (cmd: any): string => {\n if (!cmd || typeof cmd != 'object') return JSON.stringify(cmd) ?? String(cmd)\n const parts = Object.keys(cmd).map(k => {\n const v = cmd[k]\n let text: string\n if (isControl(v)) text = keyOf(v)\n else try { text = JSON.stringify(v) ?? String(v) } catch (_) { text = String(v) }\n return `${k}: ${text}`\n })\n return `{ ${parts.join(', ')} }`\n}\n\nconst 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 cur = 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 = cur\n }\n }\n return row[b.length]\n}\n\nconst closest = (name: string, names: string[]): string | undefined => {\n let best: string | undefined, d = 3\n for (const n of names) {\n const x = n.toLowerCase() == name.toLowerCase() ? 0 : distance(name, n)\n if (x < d) { d = x; best = n }\n }\n return best\n}\n\nconst tagOf = (el: any): string => el && typeof el.tagName == 'string' ? `<${el.tagName.toLowerCase()}>` : 'element'\n\nconst notACommand = (component: any, name: string, cmd: any) => send('SYG641', {\n component,\n message: `${name} sent ${describeCommand(cmd)} to the ELEMENT sink, which is not a command`,\n fix: `Send { <method>: control or selector, ...options }, e.g. { focus: Email }, or an array of them`,\n data: {command: cmd},\n})\n\n/** SYG640 (no `el`) or SYG641 (an element, but no command of that name) for `cmd` sent by `component` */\nexport function reportElementCommand(component: any, cmd: any, el?: any): void {\n // a disposed instance's pending commands are dropped silently\n if (component && component._disposed) return\n const name = (component && component.name) || 'component'\n const method = cmd && typeof cmd == 'object' ? Object.keys(cmd)[0] : undefined\n if (method === undefined) return notACommand(component, name, cmd)\n const target = cmd[method]\n const what = `ELEMENT ${describeCommand(cmd)}`\n const control = isControl(target) ? keyOf(target) : undefined\n const data: any = {method, command: cmd, ...(control ? {control} : {selector: target == null ? target : String(target)})}\n if (!el) {\n const missing = target == null || target === ''\n return send('SYG640', {\n component,\n message: missing\n ? `${what} in ${name} has no target (${String(target)}), so the command was dropped`\n : `${what} in ${name} matched no element: nothing in ${name}'s own view matches ${control ? `the control ${control}` : `'${String(target)}'`} (waited 1 s), so the command was dropped`,\n fix: missing\n ? `Give the method a control or a selector: { ${method}: Email }`\n : `Render the element in ${name}'s view, or send the command from the component that renders it: a child component's elements are isolated from its parent, and a command reaches only its sender's own elements (in a Collection, each item sends its own)`,\n data,\n })\n }\n // PLAN-5 W-1: the matched element is a widget's host (selector or control target): SYG142 names\n // the widget's declared commands\n const widget = el.__sw?.w\n if (widget) {\n const declared = Object.keys(widget.commands)\n const hint = closest(method, [...declared, ...NATIVE_COMMAND_NAMES])\n return send('SYG142', {\n component,\n message: `${what} in ${name}: the matched ${tagOf(el)} is a widget's host, and the widget declares no '${method}' command` +\n (hint ? ` (did you mean '${hint}'?)` : '') + (declared.length ? `; it declares: ${declared.join(', ')}` : '; it declares none'),\n fix: `Add '${method}' to the widget's commands (defineWidget({ commands: { ${method}: (instance, options) => … } })), or send one it declares`,\n data: {...data, element: tagOf(el), commands: declared},\n })\n }\n const commands = control && target.spec && typeof target.spec == 'object' && target.spec.commands\n ? Object.keys(target.spec.commands) : []\n data.element = tagOf(el)\n if (commands.length) data.commands = commands\n let message: string, fix: string\n if (NATIVE_COMMAND_NAMES.includes(method)) {\n message = `${what} in ${name}: the matched ${tagOf(el)} has no ${method}() method${commands.length ? `, and the control ${control}'s spec declares no '${method}' command (it declares: ${commands.join(', ')})` : ''}`\n fix = /^(show|showModal|close)$/.test(method)\n ? `${method}() works on a <dialog> element: render the target as a <dialog>`\n : /Popover$/.test(method)\n ? `The popover methods need an element with the popover attribute (attrs: { popover: 'auto' }) in a browser with the Popover API`\n : `Target an element that has ${method}()`\n } else {\n const hint = closest(method, [...commands, ...NATIVE_COMMAND_NAMES])\n message = `${what} in ${name}: '${method}' is not an element command` + (hint ? ` (did you mean '${hint}'?)` : '') +\n (el.tagName ? `: the matched ${tagOf(el)} has no such method` : '') +\n (commands.length ? `, and the control ${control}'s spec declares only: ${commands.join(', ')}` : '')\n fix = `Use ${commands.length ? `one of its commands (${commands.join(', ')}) or ` : ''}one of: ${NATIVE_COMMAND_NAMES.join(', ')} (or another method of the element, like play). The first key of a command is the method, the others are its options: { scrollIntoView: Row, block: 'nearest' }`\n }\n send('SYG641', {component, message, fix, data})\n}\n\n// methods that change the DOM snabbdom owns (the next patch undoes them or trips over them)\nconst DOM_MUTATORS = /^(remove|append|prepend|before|after|replaceWith|replaceChildren|appendChild|removeChild|insertBefore|replaceChild|insertAdjacent(Element|HTML|Text)|(set|remove|toggle)Attribute(NS|Node)?|attachShadow|setHTML(Unsafe)?|normalize)$/\n\n/** SYG641 when it is sent: not a command object, or a method that changes the DOM Sygnal renders */\nexport function checkSentCommand(component: any, cmd: any): void {\n if (cmd == null) return\n const name = (component && component.name) || 'component'\n if (typeof cmd != 'object' || Array.isArray(cmd) || !Object.keys(cmd).length) return notACommand(component, name, cmd)\n const method = Object.keys(cmd)[0], target = cmd[method]\n if (!DOM_MUTATORS.test(method) || (isControl(target) && target.spec?.commands?.[method])) return\n send('SYG641', {\n component,\n message: `ELEMENT ${describeCommand(cmd)} in ${name}: ${method}() changes the DOM that ${name}'s view renders, so the next render undoes it or fails`,\n fix: `Change the state and render the result instead; element commands are for what a view can't express (focus, scrolling, dialogs, popovers, media)`,\n data: {method, command: cmd},\n })\n}\n\n/** The dev entry check: checkSentCommand runs on every ELEMENT value through the core's onElementCommand hook (checks/next.ts) */\nexport const elementCommandsCheck: DiagnosticCheck = {\n id: 'elementCommands',\n}\n\n/** Publish the element command hook on the core bridge. Returns an uninstall function. */\nexport function installElementCommandHooks(): () => void {\n const c = core()\n if (!c) return () => {}\n c.elementCommand = reportElementCommand\n return () => { if (c.elementCommand === reportElementCommand) c.elementCommand = undefined }\n}\n","/**\n * PLAN-5 W-1: widget diagnostics (dev entry; `defineWidget` in src/extra/widget.ts carries no text).\n *\n * The widget module calls `__SYGNAL_DIAGNOSTICS__.widget(code, widgetTag, owner, extra)`:\n * 140 dispatch(name) (mount's third parameter) — SYG140 (warn) when `name` is not in the widget's `events`: sygnal-check and\n * the docs read `events`, so an undeclared name is a typo or a missing declaration\n * 143 the widget tag used as a selector (DOM.select(DatePicker), `${DatePicker}`) — SYG143\n * (warn, once per widget): it matches nothing\n * 144 a host mounted — SYG144 (info, once per widget): a declared event name the host element\n * also fires natively (`'change'` on an `<input>` host), so the intent sees both; not\n * for the first-party Zag parts (`def.$own`: Menu's `select`, D211)\n * 660/661/662 mount / update / unmount threw (`extra` is the error) — SYG660–662 (error);\n * 661 with a fifth argument (G-580): the widget reported the error through mount's\n * error(e) (its own timer or callback), worded as such (data.phase 'error')\n * 669 fromZag (G-410): its render returned Sygnal components / widget tags / special JSX\n * (`extra`: their tags, e.g. ['<Badge>', '<Transition>']) — SYG669 (warn, once per widget)\n * It returns the reported diagnostic (the widget module logs a bare `[Sygnal SYG66x]` otherwise).\n *\n * SYG141 (listening to an event a widget doesn't declare) is static only (sygnal-check): the\n * runtime doesn't see which listener a selector serves. SYG142 for an undeclared command sent to a\n * widget's host is reported by the element command check (checks/elementCommands.ts).\n */\nimport {devReport, once, unsee, nameOf} from './shared'\nimport {DEV_CODE_SEVERITY} from '../codes'\n\n/** a widget's name for messages: `name` from its definition, else its host tag */\nexport const widgetName = (w: any): string => w?.def?.name ? `widget ${w.def.name}` : `widget <${w?.def?.tag || 'div'}>`\n\nconst ids = new WeakMap<object, number>()\nlet next = 0\nconst idOf = (w: any): number => {\n let id = ids.get(w)\n if (id === undefined) ids.set(w, id = ++next)\n return id\n}\n\nconst PHASE: Record<number, string> = {660: 'mount', 661: 'update', 662: 'unmount'}\n\nexport function reportWidget(code: number, w: any, owner?: any, x?: any, reported?: any): any {\n const name = widgetName(w), component = owner ? nameOf(owner) : name\n if (code == 140) {\n if (w.events.includes(x) || !once(`SYG140:${idOf(w)}:${x}`)) return\n return devReport('SYG140', {\n component,\n message: `${name} dispatched '${x}', which is not one of its declared events (${w.events.length ? w.events.join(', ') : 'it declares none'})`,\n fix: `Add '${x}' to the widget's events (defineWidget({ events: [${[...w.events, x].map((e: string) => `'${e}'`).join(', ')}] })), or dispatch a declared name`,\n data: {event: x, events: w.events},\n })\n }\n if (code == 143) {\n if (!once(`SYG143:${idOf(w)}`)) return\n return devReport('SYG143', {\n component: name,\n message: `${name} was used as a selector (DOM.select(${w.def.name || 'Widget'}) or in a template string); a widget tag matches nothing`,\n fix: `Give the widget a className and select that (<${w.def.name || 'Widget'} className=\"due\" />, DOM.select('.due')), or make it a control: controls({ Due: ${w.def.name || 'Widget'} })`,\n })\n }\n if (code == 144) {\n // D211: not for Sygnal's own parts (Menu's `select` is its documented event)\n if (!x || w.def.$own || !once(`SYG144:${idOf(w)}`)) return\n const native = w.events.filter((e: string) => 'on' + e in x)\n if (!native.length) return\n return devReport('SYG144', {\n component: name,\n message: `${name} declares ${native.map((e: string) => `'${e}'`).join(', ')}, which its <${x.localName}> host also fires natively, so a listener gets both the widget's events and the element's`,\n fix: `Name the widget's event differently (e.g. 'pick' for a date picker's change), or read only what both carry`,\n data: {events: native, element: x.localName},\n })\n }\n if (code == 669) {\n // G-470: once per widget tag, counted only when reported (not with diagnostics off)\n const k = `SYG669:${idOf(w)}`\n if (!once(k)) return\n const d = devReport('SYG669', {\n component: name,\n message: `${name}'s fromZag render returned ${x.join(', ')}; the adapter patches its render outside the component tree, so they don't run there (a component isn't instantiated, a widget doesn't mount, special JSX renders as an unknown element)`,\n fix: `Render plain elements in the fromZag render (with Zag's prop getters spread on them), pass data in through the widget's props, and put components, widgets and special JSX around the widget tag in the view`,\n data: {found: x},\n })\n if (!d) unsee(k)\n return d\n }\n const phase = PHASE[code]\n if (!phase) return\n const sev = DEV_CODE_SEVERITY[`SYG${code}`]\n // G-580: a 661 from error(e) is not a throwing update()\n const by = code == 661 && reported\n const d = devReport(`SYG${code}`, {\n component,\n message: (by ? `${name} reported an error through error(e) (mount's fourth parameter)` : `${name}'s ${phase}() threw`) + `: ${x?.message ?? x}` +\n (code < 662 ? `; ${owner ? `${nameOf(owner)}'s onError fallback renders in its place` : 'it is not mounted'}` : ''),\n fix: code < 662\n ? `Fix ${by ? 'the failure the widget reports through error(e) (its own timer, callback or redraw)' : `the widget's ${phase}()`}, or give ${owner ? nameOf(owner) : 'the component'} an .onError for a custom fallback`\n : `Fix the widget's unmount()`,\n data: {phase: by ? 'error' : phase, error: x},\n severity: sev,\n })\n // the error with its stack (the text is printed by report() in 'warn' mode, collected otherwise)\n if (d) console.error(x)\n return d\n}\n\n/** Publish the widget hook on the core bridge. Returns an uninstall function. */\nexport function installWidgetHooks(): () => void {\n const c = (globalThis as any).__SYGNAL_DIAGNOSTICS__\n if (!c) return () => {}\n c.widget = reportWidget\n return () => { if (c.widget === reportWidget) c.widget = undefined }\n}\n","/**\n * PLAN-5 V-1: `<VirtualCollection>` diagnostics (dev entry; src/extra/virtual.ts carries no text).\n *\n * The VirtualCollection host calls `__SYGNAL_DIAGNOSTICS__.virtual(code, owner, extra)`:\n * 430 the container has no bounded height: `extra.reason` 'height' (laid out 0 px tall) or\n * 'grows' (as tall as all its rows and taller than the viewport, so it would render every\n * row); the window is clamped to the viewport (once per host and reason)\n * 431 items without `id` (index keys; once per host)\n * 432 an item renders a fragment or text, not one element (once per host)\n * 433 scrollToIndex / scrollToId for an index or id not in the (filtered) list\n * 434 estimateSize / overscan not a positive number (or a function, for estimateSize)\n */\nimport {devReport, nameOf} from './shared'\n\nconst tag = (owner: any) => `<VirtualCollection> in ${nameOf(owner)}`\n\nexport function reportVirtual(code: number, owner: any, x: any = {}): any {\n const component = owner ? nameOf(owner) : 'VirtualCollection'\n if (code == 430) {\n const grows = x.reason == 'grows'\n return devReport('SYG430', {\n component,\n message: grows\n ? `${tag(owner)} grows with its rows (it is ${Math.round(x.height)} px tall, as tall as all of them), so it is not a scroll container; only the rows within the viewport's height render`\n : `${tag(owner)} is 0 px tall, so no row is in view`,\n fix: 'Give its className a bounded height (height or max-height, e.g. .rows { height: 400px }, or flex: 1 with min-height: 0 in a flex column); it scrolls itself (overflow-y: auto)',\n data: x,\n })\n }\n if (code == 431) {\n return devReport('SYG431', {\n component,\n message: `${tag(owner)} has items without an id (${x.count} items): they are keyed by their index, so a row's instance and measured height follow its position, not its item, when items are added, removed or reordered`,\n fix: \"Give every item a unique id (e.g. rows: data.map((r, i) => ({ id: r.key ?? i, ...r })))\",\n data: x,\n })\n }\n if (code == 432) {\n return devReport('SYG432', {\n component,\n message: `${tag(owner)}: its item component ${x.component} renders a fragment or text, so its rows can't be measured, positioned or given aria-posinset`,\n fix: `Make ${x.component}'s view return one element (wrap its content in a <div> or <li>)`,\n data: x,\n })\n }\n if (code == 433) {\n const what = 'id' in x ? `id ${JSON.stringify(x.id) ?? String(x.id)}` : `index ${x.index}`\n return devReport('SYG433', {\n component,\n message: `${tag(owner)}: ${'id' in x ? 'scrollToId' : 'scrollToIndex'} for ${what}, which is not in its list (${x.count} rows after filter); it didn't scroll`,\n fix: 'id' in x\n ? 'Send the id of an item in the array the filter keeps: { scrollToId: \\'.rows\\', id }'\n : `Send an integer index from 0 to ${Math.max(0, x.count - 1)} into the shown (filtered, sorted) rows: { scrollToIndex: '.rows', index }`,\n data: x,\n })\n }\n if (code == 434) {\n return devReport('SYG434', {\n component,\n message: `${tag(owner)}: ${x.prop}={${typeof x.value == 'string' ? JSON.stringify(x.value) : String(x.value)}} is not ${x.prop == 'overscan' ? 'a number ≥ 0; 5 is used' : 'a positive number or a function; 32 is used'}`,\n fix: x.prop == 'overscan' ? 'Pass overscan={5} (rows rendered beyond each edge)' : 'Pass estimateSize={32} (about a row\\'s height in px), or (item, index) => px',\n data: x,\n })\n }\n}\n\n/** Publish the VirtualCollection hook on the core bridge. Returns an uninstall function. */\nexport function installVirtualHooks(): () => void {\n const c = (globalThis as any).__SYGNAL_DIAGNOSTICS__\n if (!c) return () => {}\n c.virtual = reportVirtual\n return () => { if (c.virtual === reportVirtual) c.virtual = undefined }\n}\n","/**\n * PLAN-4 GS-1, runtime behavior checks (dev entry only; the static `uses` resolution is 3-D's).\n *\n * SYG127 (error), once per component name (not per Collection item; again in each renderComponent):\n * - a `uses` key that the host's own `initialState` static already has (the behavior's slice\n * replaces it);\n * - a `uses` value that isn't a defineBehavior() result (no `merge`): the core skips it, so\n * state[key] and its actions never exist.\n * A host intent or model entry named like a behavior action ('pager.NEXT') is an override,\n * not a collision.\n * Mechanism: onModel (every instance gets one, with or without a model) reads the static\n * `view.uses` and `view.initialState`.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, nameOf, once} from './shared'\n\nconst what = (v: any): string =>\n v === null || v === undefined ? String(v)\n : typeof v == 'function' ? 'a function (a defineBehavior factory not called?)'\n : typeof v == 'object' ? 'a plain object'\n : `a ${typeof v}`\n\nexport const behaviorsCheck: DiagnosticCheck = {\n id: 'behaviors',\n\n onModel(component) {\n const view = component?.view, uses = view?.uses\n if (!uses || typeof uses != 'object' || !once('SYG127:' + nameOf(component))) return\n const init = view.initialState\n for (const key of Object.keys(uses)) {\n const b = uses[key]\n if (typeof b?.merge != 'function') {\n devReport('SYG127', {\n component,\n message: `uses entry '${key}' is ${what(b)}, not a defineBehavior() result; it was skipped, so state.${key} and its '${key}.*' actions don't exist`,\n fix: `Use a defineBehavior() factory's result: uses = { ${key}: behavior(options) }`,\n data: {key, reason: 'unresolvable'},\n })\n } else if (init && typeof init == 'object' && key in init) {\n devReport('SYG127', {\n component,\n message: `uses key '${key}' is also a key of ${nameOf(component)}'s initialState; the behavior's slice replaces that value`,\n fix: `Remove '${key}' from initialState (pass its values as the behavior's options), or rename the uses key`,\n data: {key, reason: 'initialState'},\n })\n }\n }\n },\n}\n","/*\n * PLAN-5 F-1: form helpers. The `form` behavior (./form.ts) is built on them, and they are\n * exported as the escape hatch for a form written with plain model actions (D193, shape B).\n * Pure functions over a plain `values` object, for model reducers; 0 B core.\n *\n * Field names: a field's `name=` attribute is its path in `values`, dot-separated. A segment\n * inside an array of objects is the row's `id` (not its index), so touched/errors follow a row\n * when another row is removed: `addresses.7.street` is `values.addresses.find(r => r.id == 7).street`.\n * An array of non-objects (or rows without an id) uses the index; a row with an id is named by\n * its id only (G-380: `addresses.0.city` is no field when the rows have ids).\n *\n * Validation: any Standard Schema (`schema['~standard'].validate`: zod, valibot, arktype, a\n * hand-written object), no dependency. A sync schema validates inside reducers; an async one\n * (validate returns a Promise) returns a Promise here, for an EFFECT.\n */\nimport type {SchemaIssue} from './standardSchema'\nimport {focusWithin} from './focusWithin'\nimport {ABORT} from '../shared'\n\nexport type FieldErrors = Record<string, string>\nexport type FormCheck = {errors: FieldErrors; value: any}\n\nconst isRow = (r: any) => r?.id != null\n// the key of segment `s` in `v`: an array's row with that id, else the index unless the element\n// there is a row (G-380: a row is named by its id only; -1, no element), an object's key\nconst key = (v: any, s: string): any => {\n if (!Array.isArray(v)) return s\n const i = v.findIndex(r => isRow(r) && r.id + '' == s)\n return i < 0 && !isRow(v[+s]) ? +s : i\n}\n\n/** the field name (id-based path) of a schema issue path (index-based) */\nexport const fieldName = (values: any, path: ReadonlyArray<any> = []): string => {\n let v = values\n return path.map(p => {\n p = p?.key ?? p\n const r = Array.isArray(v) && isRow(v[p]) ? v[p].id : p\n v = v?.[p]\n return r\n }).join('.')\n}\n\n/** the value at a field name (undefined when there is none) */\nexport const getField = (values: any, name: string): any =>\n name.split('.').reduce((v, s) => v?.[key(v, s)], values)\n\n/** whether `name` is a field of `values`: its path exists (G-379: also when the value is undefined) */\nexport const hasField = (values: any, name: string): boolean => {\n let v = values\n for (const s of name.split('.')) {\n const k = v && typeof v == 'object' ? key(v, s) : -1\n if (!(k in Object(v))) return false\n v = v[k]\n }\n return true\n}\n\n/** `values` with the field at `name` set to `value` (immutable; an unknown row is left alone) */\nexport const setField = (values: any, name: string, value: any): any => {\n const [s, ...rest] = name.split('.'), k = key(values, s), a = Array.isArray(values)\n const x = rest.length ? setField(values?.[k] ?? {}, rest.join('.'), value) : value\n if (x === values?.[k] || a && !(k in values)) return values\n const c = a ? values.slice() : {...values}\n c[k] = x\n return c\n}\n\n/**\n * every field name of `values`, in object order: each leaf, and each array itself (for an\n * array-level error such as \"at least one address\"); a row's `id` is not a field\n */\nexport const fieldNames = (v: any, at = '', row?: boolean): string[] => {\n if (!v || typeof v != 'object') return at ? [at] : []\n const a = Array.isArray(v), out = a ? [at] : []\n for (const k in v) {\n const x = (v as any)[k]\n if (!row || k != 'id') out.push(...fieldNames(x, (at && at + '.') + (a && isRow(x) ? x.id : k), a))\n }\n return out\n}\n\nconst errorsOf = (values: any, issues: ReadonlyArray<SchemaIssue> = []): FieldErrors => {\n const e: FieldErrors = {}\n for (const i of issues) {\n const n = fieldName(values, i.path)\n n in e || (e[n] = i.message)\n }\n return e\n}\n\n/**\n * Validates `values` with a Standard Schema: `{ errors, value }` (errors by field name, '' for\n * a form-level issue, the first message per field; `value` is the schema's output, transformed,\n * when there are none). A Promise of it when the schema is async. `schema` must be a Standard\n * Schema object (the `form` behavior reports SYG231 in dev).\n */\nexport const checkForm = (schema: any, values: any): FormCheck | Promise<FormCheck> => {\n const r = schema['~standard'].validate(values)\n const done = (r: any): FormCheck => ({errors: errorsOf(values, r.issues), value: r.issues ? undefined : r.value})\n return r.then ? r.then(done) : done(r)\n}\n\n/** the errors only, by field name ({} when valid); a Promise of them for an async schema */\nexport const formErrors = (schema: any, values: any): any => {\n const r: any = checkForm(schema, values)\n return r.then ? r.then((x: FormCheck) => x.errors) : r.errors\n}\n\n/**\n * Server errors as field errors: an error reply (a driver's `{ error, status?, body?, request }`\n * or `{ status, body }`; the body `{ errors }` or the map itself), a map `{ name: message |\n * messages }`, or a list of Standard-Schema-like issues `[{ path, message }]` (index paths\n * become field names with `values`). With `values`, a message for a name that isn't one of its\n * fields (`message`, `error`) is the form-level message (''); a reply without any becomes\n * 'Request failed (status)' under ''.\n */\nexport const replyErrors = (reply: any, values?: any): FieldErrors => {\n let e = reply && ('request' in reply || 'body' in reply && 'status' in reply) ? reply.body : reply\n e = e?.errors ?? e\n const out: FieldErrors = Array.isArray(e) ? errorsOf(values, e) : {}\n if (e && typeof e == 'object' && !Array.isArray(e)) for (const k in e) {\n const m = [].concat(e[k])[0] + ''\n k && values && !hasField(values, k) ? out[''] ||= m : out[k] = m\n }\n return Object.keys(out).length ? out : {'': 'Request failed' + (reply?.status ? ` (${reply.status})` : '')}\n}\n\n/**\n * An ELEMENT command that focuses the first field, in DOM order, whose `name` is one of `names`\n * (a list, or an errors map: its names with a message; '' is skipped), anywhere in the sender's view, fields\n * of child components and Collection items included (`focusWithin`, D194). With `within` (a\n * selector: the form element's), only fields inside a matching element (G-373: a second form,\n * or a child component's field of the same name outside the form, isn't focused). ABORT when\n * there is nothing to focus: `ELEMENT: (state) => focusInvalid(state.errors, '.signup')`.\n */\nexport const focusInvalid = (names: string[] | FieldErrors, within?: string): any => {\n const list = (Array.isArray(names) ? names : Object.keys(names).filter(n => names[n])).filter(n => n)\n return list.length ? {focus: focusWithin(list.map(n => `${within ? within + ' ' : ''}[name=${JSON.stringify(n)}]`).join())} : ABORT\n}\n","/**\n * PLAN-5 F-1: `form` behavior diagnostics (dev entry; src/extra/form.ts carries no text).\n *\n * The form module calls `__SYGNAL_DIAGNOSTICS__.form(code, ...args)`:\n * 231 form(schema) with a schema that isn't a Standard Schema: throws the SYG231 Error (in\n * production the first validation throws a plain TypeError)\n * 230 (name, values) an input / focusout from a named field whose name isn't in `values`:\n * SYG230 (warn, once per name); the event is ignored\n * 232 (slice) a submit while submitting or while a queued submit waits for a check: SYG232\n * (info, every time); the submit is dropped\n * 233 (values, output) a valid submit: each top-level `values` key missing from the schema's\n * output, SYG233 (warn, once per key): the schema strips it (zod's z.object does). G-377:\n * only when every output key is a values key (an output with other keys reshapes: a rename)\n * 235 (field, request) a check's request with `ok` / `error` / `latest` keys, which the form\n * overwrites: SYG235 (warn, once per field)\n * 234 (submit, key) G-577: a valid submit whose `submit` names one of the form's own actions,\n * so it dispatched '<key>.<submit>' instead of the host's action: SYG234 (warn, once per\n * key and name), at the submit (the form's own action then often throws: SYG214 / SYG216)\n * Host checks (onModel, once per component name), for each `uses` entry made by form():\n * SYG234 (warn) `submit` missing, not a host model entry, or one of the form's own action names\n * (G-577: every action in that form's model, CHECKED_<field> included)\n * SYG235 (warn) a `check` key that isn't a field of `values`\n * SYG236 (warn) an array of objects in `values` with a row without an `id`\n * SYG237 (warn) two form uses of one host with the same form selector (G-374)\n * SYG245 (error, reported) PLAN-6 A-3 (D291): a `tool` option not made by formTool() (no `$`\n * hook: a plain object); the form offers no tool\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, once, nameOf} from './shared'\nimport {docsUrlFor} from '../codes'\nimport {hasField} from '../../formHelpers'\n\n// the form's own action names (G-577: read from the form's model, so CHECKED_<field> counts)\nconst ownActions = (b: any): string[] => Object.keys(b?.model || {})\nconst SUBMIT_FIX = (key: string, a: string, own: string[]) =>\n `Name the submit after a host action the form doesn't define (not ${own.join(', ')}): submit: 'SAVE', and rename the model entry '${a}' to SAVE: { HTTP: (state, values) => ({ url, json: values, ok: '${key}.DONE', error: '${key}.ERRORS' }) }`\nconst RESERVED = ['ok', 'error', 'latest']\n\nconst what = (v: any): string =>\n v === null || v === undefined ? String(v)\n : typeof v == 'function' ? 'a function'\n : Array.isArray(v) ? 'an array'\n : typeof v == 'object' ? `an object without ~standard.validate${typeof v.parse == 'function' ? ' (a validator from before Standard Schema?)' : ''}`\n : `a ${typeof v}`\n\nexport function reportForm(code: number, a?: any, b?: any, c?: any): any {\n if (code == 231) {\n const err: any = new TypeError(`[Sygnal SYG231] form(schema, options): the schema is ${what(a)}, not a Standard Schema. ` +\n `Pass a Standard Schema object: a zod, valibot or arktype schema, or an object with '~standard': { version: 1, vendor, validate }. ${docsUrlFor('SYG231')}`)\n err.code = 'SYG231'\n throw err\n }\n if (code == 230) {\n if (!once(`SYG230:${a}`)) return\n devReport('SYG230', {\n component: 'form',\n message: `form: a field named '${a}' changed, but '${a}' isn't a field of the form's values (${Object.keys(b || {}).join(', ') || 'none'}); the change is ignored`,\n fix: `Name the input after a path in values (name=\"email\", name=\"addresses.<row id>.city\"), add '${a}' to values, or move the input out of the form element`,\n data: {name: a},\n })\n } else if (code == 232) {\n devReport('SYG232', {\n component: 'form',\n message: `form: a submit was dropped: ${a?.submitting ? 'the previous submit is still being sent (no form.DONE / form.ERRORS yet)' : 'a submit is already queued, waiting for an async check or an async schema'}`,\n fix: `Disable the submit button while state.form.submitting (or queued) is true; answer the submit with ok: 'form.DONE', error: 'form.ERRORS'`,\n })\n } else if (code == 233) {\n if (!b || typeof b != 'object' || Object.keys(b).some(k => !(k in (a || {})))) return\n for (const k of Object.keys(a || {})) {\n if (!(k in b) && once(`SYG233:${k}`)) devReport('SYG233', {\n component: 'form',\n message: `form: values.${k} is not in the schema's output (stripped or renamed), so the submit action doesn't get it under that name (a schema strips keys it doesn't declare)`,\n fix: `Declare '${k}' in the schema (or make the schema keep unknown keys), or remove it from values; if the schema renames it on purpose, ignore this`,\n data: {key: k},\n })\n }\n } else if (code == 234) {\n if (!once(`SYG234:run:${b}:${a}`)) return\n devReport('SYG234', {\n component: 'form',\n message: `form '${b}': a valid submit dispatched '${b}.${a}' (the form's own ${a} action), not the host's '${a}': submit: '${a}' names one of the form's own actions, which next() prefers`,\n fix: SUBMIT_FIX(b, a, ownActions(c)),\n data: {key: b, submit: a},\n })\n } else if (code == 235) {\n const set = RESERVED.filter(k => b && k in b)\n if (set.length && once(`SYG235:req:${a}`)) devReport('SYG235', {\n component: 'form',\n message: `form: the check for '${a}' returns a request with ${set.map(k => `'${k}'`).join(', ')}; the form sets them itself (its reply action and latest: true), so they are replaced`,\n fix: `Return only the request: check: { ${a}: { request: (v) => ({ url, query }), error: (body) => message } }`,\n data: {field: a, keys: set},\n })\n }\n}\n\n/** row ids missing in `values`: the names of the arrays of objects that have a row without an id */\nconst missingIds = (v: any, at = '', out: string[] = []): string[] => {\n if (v && typeof v == 'object') {\n if (Array.isArray(v) && v.some(r => r && typeof r == 'object' && !Array.isArray(r) && r.id == null)) out.push(at)\n for (const k in v) missingIds(v[k], at ? `${at}.${k}` : k, out)\n }\n return out\n}\n\nexport const formsCheck: DiagnosticCheck = {\n id: 'forms',\n\n onModel(component) {\n const view = component?.view, uses = view?.uses\n if (!uses || typeof uses != 'object') return\n const name = nameOf(component), sels: Record<string, string> = {}\n for (const key of Object.keys(uses)) {\n const b = uses[key]\n if (!b?.form) continue\n // G-374: each form listens on its selector inside the host, so two with one selector hear\n // each other's fields and submits\n const sel = b.options?.form || 'form'\n if (sel in sels) {\n if (once(`SYG237:${name}:${sel}`)) devReport('SYG237', {\n component,\n message: `${name}'s forms '${sels[sel]}' and '${key}' both listen on '${sel}', so each hears the other's fields and submits`,\n fix: `Give each form element its own class and pass it: ${sels[sel]}: form(schema, { ..., form: '.${sels[sel]}' }), ${key}: form(schema, { ..., form: '.${key}' })`,\n data: {keys: [sels[sel], key], form: sel},\n })\n } else sels[sel] = key\n if (!once(`SYG23x:${name}:${key}`)) continue\n const o = b.options || {}, values = o.values || {}\n if (o.tool && typeof o.tool.$ != 'function') devReport('SYG245', {\n component,\n message: `${name}'s form '${key}': the tool option is ${typeof o.tool == 'object' ? 'a plain object' : what(o.tool)}, not made by formTool(), so the form isn't offered to the browser's agent`,\n fix: `Wrap it: import { formTool } from 'sygnal/ai', then form(schema, { ..., tool: formTool({ name: '${o.tool?.name || 'sign_up'}', description: '...' }) })`,\n data: {key, tool: o.tool},\n })\n const model = Object.keys(view.model || {}).map(a => a.split('|')[0].trim()), own = ownActions(b)\n const clash = own.includes(o.submit)\n if (typeof o.submit != 'string' || !model.includes(o.submit) || clash) {\n devReport('SYG234', {\n component,\n message: typeof o.submit != 'string' ? `${name}'s form '${key}' has no submit action, so a valid submit dispatches nothing`\n : clash ? `${name}'s form '${key}' names submit: '${o.submit}', one of the form's own actions; a valid submit dispatches the form's '${key}.${o.submit}'${model.includes(o.submit) ? `, never ${name}'s '${o.submit}' entry` : ''}`\n : `${name}'s form '${key}' dispatches '${o.submit}' on a valid submit, but ${name} has no model entry '${o.submit}'`,\n fix: clash ? SUBMIT_FIX(key, o.submit, own)\n : `Name a host action and add it to the model: submit: 'SIGN_UP', model: { SIGN_UP: { HTTP: (state, values) => ({ url, json: values, ok: '${key}.DONE', error: '${key}.ERRORS' }) } }`,\n data: {key, submit: o.submit},\n })\n }\n for (const f of Object.keys(o.check || {})) {\n if (!hasField(values, f)) devReport('SYG235', {\n component,\n message: `${name}'s form '${key}' has a check for '${f}', which isn't a field of its values; it never runs`,\n fix: `Use a field name from values (${Object.keys(values).join(', ')})`,\n data: {key, field: f},\n })\n }\n for (const at of missingIds(values)) devReport('SYG236', {\n component,\n message: `${name}'s form '${key}': values.${at} has rows without an id, so its fields are named by index and errors, touched state and focus don't follow a row when another is removed`,\n fix: `Give each row a unique id: ${at}: [{ id: 1, ... }] (form.ADD numbers new rows itself)`,\n data: {key, field: at},\n })\n }\n },\n}\n\n/** Install the `form` hook on the core bridge (form.ts calls it). */\nexport function installFormHooks(): () => void {\n const c = (globalThis as any).__SYGNAL_DIAGNOSTICS__\n if (!c) return () => {}\n c.form = reportForm\n return () => { if (c.form === reportForm) c.form = undefined }\n}\n","/**\n * PLAN-5 B-1 (3-D): `sortable` behavior diagnostics (dev entry; src/extra/sortable.ts carries no\n * text). The behavior calls `__SYGNAL_DIAGNOSTICS__.sortable(code, ...args)`:\n * 145 (item element, item selector, attr) a press or key on an item whose element has no\n * `attr`: SYG145 (warn, once per selector); the event is ignored\n * 146 (host root, item, handle, attr) the host's first pointerdown / keydown: SYG146 (warn,\n * once per selector) when elements carry `attr` under the root but none matches `item`,\n * or items exist but none contains `handle`. Returns true once it could decide (an empty\n * list can't tell: the check runs again at the next interaction)\n * 147 (from key, host state, uses key) when the host starts: a `from` key whose value isn't\n * an array: SYG147 (warn, once per key)\n * 435 (3-H G-449) (fn, uses key, from keys, idOf): the host's own items' ids as shown, per\n * container (fn() returns [the item elements, the root]; the behavior only asks in dev), or nothing when\n * every list has been reported (3-L G-478: no scan). A row's place is its `data-index`\n * when it has one (VirtualCollection's pinned focused row is out of DOM order). (shown\n * groups, host state, from keys, idField, uses key) at a keyboard pick-up or a pointer\n * press: SYG435 (warn, once per uses key and list) when a list's shown items (those in\n * the container holding most of them: an element elsewhere with a matching id is no list\n * item; a row's container is its nearest ancestor holding another row, 3-O G-505) aren't\n * one run of the array in its order (a Collection's sort, or a filter hiding entries\n * between shown ones)\n */\nimport {devReport, once, onced, suggest} from './shared'\n\nconst all = (root: any, sel: string): any[] => {\n try { return [...root.querySelectorAll(sel)] } catch (_) { return [] }\n}\n\nexport function reportSortable(code: number, a?: any, b?: any, c?: any, d?: any, e?: any): any {\n if (code == 145) {\n if (once(`SYG145:${b}:${c}`)) devReport('SYG145', {\n component: 'sortable',\n message: `sortable: an item ('${b}') has no ${c} attribute, so it can't be moved (the behavior finds each item in the list by that id)`,\n fix: `Render the item's id on its element: <li className=\"${String(b).replace(/^\\./, '')}\" ${c}={item.id}>, or name the attribute: sortable({ ..., attr: 'data-key' })`,\n data: {item: b, attr: c},\n })\n return\n }\n if (code == 146) {\n const root = a, item = b, handle = c, attr = d\n if (!root?.querySelectorAll) return true\n const items = all(root, item).filter(el => el !== root)\n if (!items.length) {\n // nothing carries the id attribute either: an empty list (decide later)\n if (!all(root, `[${attr}]`).length) return false\n report146('item', item, `no element under the host matches it, though elements with ${attr} are rendered`, `Use the selector of the items' elements (the element with ${attr}), e.g. item: '.task'`)\n return true\n }\n if (handle && !items.some(el => all(el, handle).length)) {\n report146('handle', handle, `no item ('${item}') contains an element that matches it`, `Use the selector of the drag handle inside each item, e.g. handle: '.grip', or leave handle out to drag the whole item`)\n }\n return true\n }\n if (code == 435) {\n // (fn, uses key, from keys, idOf) the shown ids per container: computed only here (dev)\n if (typeof a == 'function') {\n if ((c || []).every((l: string) => onced(`SYG435:${b}:${l}`))) return\n try {\n const by = new Map<any, any[]>(), [els, root] = a(), n = new Map<any, number>()\n // a row's place: its data-index (a VirtualCollection row below the host's root; its\n // pinned row isn't in DOM order)\n const rows = els.map((el: any) => {\n const r0 = el.closest?.('[data-index]'), row = r0 && r0 !== root && root.contains?.(r0) ? r0 : el\n return [el, row, Number(row === el && !r0 ? NaN : row.getAttribute('data-index'))]\n })\n // 3-O G-505: a row's container is its nearest ancestor holding another row (items each in\n // their own wrapper, <li><div data-id>, a table cell, a Collection item's root, are still\n // one list); `n` counts the rows below each ancestor\n const up = (row: any, f: (p: any) => any) => { for (let p = row.parentElement; p; p = p === root ? null : p.parentElement) if (f(p)) return p }\n for (const [, row] of rows) up(row, p => void n.set(p, (n.get(p) || 0) + 1))\n for (const [el, row, at] of rows) {\n const p = up(row, p => n.get(p)! > 1) || row.parentElement\n by.has(p) || by.set(p, [])\n by.get(p)!.push([isNaN(at) ? by.get(p)!.length : at, String(d(el))])\n }\n return [...by.values()].map(g => g.sort((x, y) => x[0] - y[0]).map(x => x[1]))\n } catch (_) { return }\n }\n // (shown groups, host state, from keys, idField, uses key) at a keyboard pick-up or a press\n const groups: string[][] = Array.isArray(a?.[0]) ? a : [a || []]\n for (const l of c || []) {\n if (onced(`SYG435:${e}:${l}`)) continue\n const at = new Map<string, number>()\n if (Array.isArray(b?.[l])) b[l].forEach((x: any, i: number) => at.set(String(x?.[d]), i))\n // the list's container: the one holding most of its entries (others: stray matches)\n let dom: number[] = []\n for (const g of groups) {\n const ix = g.filter(i => at.has(i)).map(i => at.get(i)!)\n if (ix.length > dom.length) dom = ix\n }\n // a contiguous run in the array's order is fine (all of it, or a window of it)\n if (!dom.some((v, j) => v !== dom[0] + j)) continue\n if (once(`SYG435:${e}:${l}`)) devReport('SYG435', {\n component: 'sortable',\n message: `sortable '${e}': state.${l} is shown ${dom.length < at.size ? 'with entries hidden between the shown ones' : 'in another order'} (a Collection with ${dom.length < at.size ? 'filter' : 'sort'}?), but moves and the announced positions follow the array: a keyboard step can pass entries nobody sees, or change nothing visible`,\n fix: `Reorder a list that is shown as it is stored: drop the Collection's sort (sort state.${l} itself), and hide the drag handles while a filter hides entries`,\n data: {from: l, key: e},\n })\n }\n return\n }\n if (code == 147) {\n const st = b || {}, arrays = Object.keys(st).filter(k => Array.isArray(st[k]))\n const near = suggest(a, arrays)\n if (once(`SYG147:${c}:${a}`)) devReport('SYG147', {\n component: 'sortable',\n message: `sortable '${c}': from names '${a}', but state.${a} is ${st[a] === undefined ? 'missing' : 'not an array'} when the host starts${near ? ` (did you mean '${near}'?)` : ''}; nothing in it can be moved`,\n fix: `Name the host state's list: sortable({ from: '${near || arrays[0] || 'items'}', ... })${arrays.length ? ` (arrays in the state: ${arrays.join(', ')})` : `, and start it as an array (initialState: { ${a}: [] })`}`,\n data: {from: a, key: c},\n })\n }\n}\n\nconst report146 = (option: string, selector: string, why: string, fix: string) => {\n if (once(`SYG146:${option}:${selector}`)) devReport('SYG146', {\n component: 'sortable',\n message: `sortable: ${option} '${selector}' matches nothing: ${why}, so no item can be dragged`,\n fix,\n data: {option, selector},\n })\n}\n\n/** Install the `sortable` hook on the core bridge (sortable.ts calls it). */\nexport function installSortableHooks(): () => void {\n const c = (globalThis as any).__SYGNAL_DIAGNOSTICS__\n if (!c) return () => {}\n c.sortable = reportSortable\n return () => { if (c.sortable === reportSortable) c.sortable = undefined }\n}\n","/**\n * SYG421 — invalid `data` (dataset) key in a view (error, G-143).\n *\n * JSX `data={{ ... }}` becomes the vnode's `data.dataset` (a `data-x-y=\"...\"` attribute is\n * camelCased to 'xY' by the pragma, G-152), which the DOM driver writes with\n * `element.dataset[key] = value`. The browser throws a SyntaxError DOMException for a key with\n * a hyphen followed by a lower-case letter (`'task-id'`), and setAttribute() throws for a name\n * with characters an attribute can't have (spaces, quotes, `=`, ...). The patch fails, so the\n * app stops rendering, and the console shows only a bare \"DOMException {}\".\n *\n * Mechanism: onRender (before the DOM driver patches) walks the rendered vnode tree and checks\n * every dataset key. Reported once per key; the mock DOM of renderComponent never throws, so\n * this is also the only signal there.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, once, nameOf} from './shared'\n\nconst camel = (key: string): string => key.replace(/-([a-z])/g, (_, c) => c.toUpperCase())\nconst BAD_CHAR = /[\\s\"'<>\\/=`]/\n\nfunction problem(key: string): string | undefined {\n if (/-[a-z]/.test(key)) return `has a hyphen followed by a lower-case letter, which a dataset name can't have`\n if (BAD_CHAR.test(key)) return `contains a character an HTML attribute name can't have`\n return undefined\n}\n\nfunction walk(vnode: any, visit: (dataset: Record<string, any>, sel: string) => void, depth = 0): void {\n if (!vnode || typeof vnode != 'object' || depth > 500) return\n const ds = vnode.data && vnode.data.dataset\n if (ds && typeof ds == 'object') visit(ds, vnode.sel)\n const children = vnode.children\n if (Array.isArray(children)) for (const c of children) walk(c, visit, depth + 1)\n}\n\nexport const datasetCheck: DiagnosticCheck = {\n id: 'dataset',\n\n onRender(component, rootVnode) {\n walk(rootVnode, (dataset, sel) => {\n for (const key of Object.keys(dataset)) {\n const why = problem(key)\n if (!why || !once(`SYG421:${key}`)) continue\n const good = camel(key).replace(new RegExp(BAD_CHAR.source, 'g'), '')\n const attr = good.replace(/[A-Z]/g, c => '-' + c.toLowerCase())\n const name = good || 'name'\n devReport('SYG421', {\n component,\n message: `The view of ${nameOf(component)} renders the data key '${key}'${sel ? ` on <${String(sel).split(/[.#]/)[0]}>` : ''} ` +\n `(from data={{ '${key}': … }}), but '${key}' ${why}. ` +\n `Writing it throws a DOMException, which can stop rendering`,\n fix: `Use a camelCase key in the data prop: data={{ ${name}: … }} renders the attribute data-${attr || 'name'}; read it with .data('${name}')`,\n data: {key, suggested: good, attribute: `data-${attr}`},\n })\n }\n })\n },\n}\n","/**\n * Reply actions (PLAN-3 §1.1, workstream 1-D).\n *\n * SYG112 — a request names a reply action the sending component has no\n * model entry for (error: the reply is dropped). Dev-entry code\n * (DEV_CODE_SEVERITY).\n * SYG508 — strict: the component reads the replies to its own request with\n * X.select('cat') / X.errors('cat') where reply actions would do.\n *\n * Mechanism:\n * onSink (checks/next.ts: checkRequest) every value an instance sends to a\n * reply-capable sink (`__sygnalReplies === true`: makeFetchDriver,\n * driverFromAsync, the socket driver) is checked as it is sent.\n * The names it sees feed inspect()'s 'reply' trigger.\n * sources (strict only) wraps those sources for the intent, recording the\n * select()/errors() categories the instance reads.\n * A request's `category` is compared for SYG508 (driverFromAsync's custom\n * `selector` property is not known at run time; sygnal-check covers it).\n * Reported once per component name and action / category.\n *\n * `{ connections }` values (the `connections` static, which the core sends to\n * the same sink, or one a model entry sends) are checked the same way:\n * each connection's message / open / close / error and its SSE `events` names.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {STRICT_CODE_SEVERITY} from '../codes'\nimport {devReport, reportSafely, once, nameOf, suggest, replySeen} from './shared'\nimport {isStrictEnabled} from './strict'\n\nconst REPLY_KEYS = ['ok', 'error']\n// PLAN-3 5-4b: on the router's sink, `{ route }` (the route static) and `{ block }` name reply actions\nconst ROUTER_KEYS = ['route', 'block']\nconst CONNECTION_KEYS = ['message', 'open', 'close', 'error']\n\n/** [action, key, connection name?] for every reply action name a sink value names */\nfunction replyNames(req: any, router?: boolean): Array<[string, string, string?]> {\n const out: Array<[string, string, string?]> = []\n for (const key of router ? REPLY_KEYS.concat(ROUTER_KEYS) : REPLY_KEYS) if (typeof req[key] === 'string') out.push([req[key], key])\n const conns = req.connections\n if (conns && typeof conns === 'object') {\n for (const name of Object.keys(conns)) {\n const spec = conns[name]\n if (!spec || typeof spec !== 'object') continue\n for (const key of CONNECTION_KEYS) if (typeof spec[key] === 'string') out.push([spec[key], key, name])\n const events = spec.events\n if (events && typeof events === 'object') {\n for (const ev of Object.keys(events)) if (typeof events[ev] === 'string') out.push([events[ev], `events.${ev}`, name])\n }\n }\n }\n return out\n}\n\n/** instance → 'SINK\\0category' → the select/errors call that read it */\nconst selected = new WeakMap<object, Map<string, string>>()\n\n\nfunction readingSource(component: any, sink: string, source: any) {\n const wrapped = Object.create(source)\n for (const method of ['select', 'errors']) {\n if (typeof source[method] !== 'function') continue\n wrapped[method] = (category?: any, ...rest: any[]) => {\n if (typeof category === 'string') {\n let reads = selected.get(component)\n if (!reads) selected.set(component, reads = new Map())\n reads.set(`${sink}\\0${category}`, `${sink}.${method}('${category}')`)\n }\n return source[method](category, ...rest)\n }\n }\n return wrapped\n}\n\nexport function checkRequest(component: any, sink: string, req: any, modelActions: string[]) {\n if (!req || typeof req !== 'object') return\n const name = nameOf(component)\n let replies = false\n for (const [action, key, connection] of replyNames(req, !!component?.sources?.[sink]?.__sygnalRouter)) {\n replies = true\n let seen = replySeen.get(component)\n if (!seen) replySeen.set(component, seen = new Set())\n seen.add(action)\n if (modelActions.includes(action) || !once(`SYG112:${name}:${action}`)) continue\n const near = suggest(action, modelActions.filter(a => !a.startsWith('__')))\n devReport('SYG112', {\n component,\n message: (connection\n ? `${sink} connection '${connection}' names '${action}' as its ${key} reply action, but ${name} has no model entry '${action}', so those events are dropped`\n : `A ${sink} request names '${action}' as its ${key} reply action, but ${name} has no model entry '${action}', so the reply is dropped`) +\n (near ? ` (did you mean '${near}'?)` : ''),\n fix: near\n ? `Use the existing entry: ${key.startsWith('events.') ? `events: { '${key.slice(7)}': '${near}' }` : `${key}: '${near}'`}`\n : `Add '${action}' to ${name}.model, e.g. ${action}: (state, data) => ({ ...state, ... }), or fix the name`,\n data: {action, key, sink, ...(connection ? {connection} : {}), ...(near ? {suggestion: near} : {}), modelActions},\n })\n }\n\n // SYG508 (strict): a request without reply actions whose replies this instance reads back with select()/errors()\n if (replies || 'abort' in req || typeof req.category !== 'string' || !isStrictEnabled()) return\n const read = selected.get(component)?.get(`${sink}\\0${req.category}`)\n if (!read || !once(`SYG508:${name}:${sink}:${req.category}`)) return\n // (inside a sink stream: reportSafely, so 'error' mode can't break the stream)\n reportSafely('SYG508', {\n severity: STRICT_CODE_SEVERITY.SYG508,\n component,\n message: `${name} sends a ${sink} request with category: '${req.category}' and reads the reply back with ${read}`,\n fix: `Use reply actions instead: name them in the request, ${sink}: (state) => ({ url, ok: 'LOADED', error: 'FAILED' }), ` +\n `handle LOADED (the parsed body) and FAILED ({ error, status, body, request }) in the model, and remove ${read} from the intent`,\n data: {sink, category: req.category, read},\n })\n}\n\nexport const repliesCheck: DiagnosticCheck = {\n id: 'replies',\n\n sources(component, sources) {\n if (!isStrictEnabled() || typeof Proxy != 'function') return\n const cache = new Map<string, any>()\n return new Proxy(sources, {\n get(t: any, k: any) {\n const v = t[k]\n if (typeof k != 'string' || !v || v.__sygnalReplies !== true) return v\n if (!cache.has(k)) cache.set(k, readingSource(component, k, v))\n return cache.get(k)\n },\n })\n },\n}\n","/**\n * Router and declaration statics (PLAN-3 5-4b). Dev-entry-only codes (DEV_CODE_SEVERITY):\n *\n * SYG130 — href() names no route, or leaves out a param its pattern needs (the link is broken).\n * (A `{ to }` command with the same problem is SYG620, reported by the router itself\n * in production too, and not navigated.)\n * SYG131 — href() or a `{ to, params }` command passes params the route's pattern doesn't use.\n * SYG132 — G-167: a component declares a static the core sends to a driver (`route`,\n * `resources`, `connections`, `head`) but never sends it: it has no model (the core\n * wires statics in its model setup), or it is a root without initialState (a static is\n * computed from the state stream, which a root without state never emits).\n * SYG133 — the SPA router (makeRouter().driver without `navigate`) runs inside a Vike app,\n * where Vike owns links and history.\n *\n * Mechanism: the router's href() calls `__SYGNAL_DIAGNOSTICS__.routerHref(routes, name, params)`\n * when it exists (installRouterHooks() sets it); onModel looks at the component's sources for\n * `__sygnalStatic` / `__sygnalRouter` markers.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {bridge, devReport, once, nameOf, suggest} from './shared'\n\nconst PARAM = /:(\\w+)/g\nconst paramsOf = (pat: string) => (pat.match(PARAM) || []).map(p => p.slice(1))\n\nfunction checkHref(routes: Record<string, string>, name: string, params: any) {\n const names = Object.keys(routes).filter(k => routes[k] != '*')\n const pat = routes[name]\n if (pat == null || pat == '*') {\n if (!once(`SYG130:${name}`)) return\n const near = suggest(String(name), names)\n devReport('SYG130', {\n message: `href('${name}') names no route, so the link points to '/'` + (near ? ` (did you mean '${near}'?)` : ''),\n fix: `Use one of the route names: ${names.join(', ')}`,\n data: {name, routes: names, ...(near ? {suggestion: near} : {})},\n })\n return\n }\n const wanted = paramsOf(pat)\n const given = params && typeof params == 'object' ? params : {}\n const missing = wanted.filter(k => given[k] == null)\n const extra = Object.keys(given).filter(k => !wanted.includes(k))\n if (missing.length && once(`SYG130:${name}:${missing}`)) {\n devReport('SYG130', {\n message: `href('${name}') leaves out ${missing.map(k => `'${k}'`).join(', ')} (${pat}), so that segment is empty`,\n fix: `href('${name}', { ${wanted.join(', ')} })`,\n data: {name, pattern: pat, missing},\n })\n }\n if (extra.length && once(`SYG131:${name}:${extra}`)) {\n devReport('SYG131', {\n message: `Route '${name}' (${pat}) has no param ${extra.map(k => `'${k}'`).join(', ')}; it is ignored`,\n fix: wanted.length ? `Pass only ${wanted.join(', ')}; put other values in the query: href('${name}', params, { ${extra[0]} })` : `Put it in the query: href('${name}', {}, { ${extra[0]} })`,\n data: {name, pattern: pat, extra},\n })\n }\n}\n\n/** install the hook the router's href() calls (removed by the returned function) */\nexport function installRouterHooks(): () => void {\n const core = bridge()\n if (!core) return () => {}\n core.routerHref = checkHref\n return () => { if (core.routerHref === checkHref) core.routerHref = undefined }\n}\n\nexport const routerCheck: DiagnosticCheck = {\n id: 'router',\n\n onModel(component) {\n const sources = component?.sources\n if (!sources || typeof sources != 'object') return\n const name = nameOf(component)\n for (const n of component.sourceNames || Object.keys(sources)) {\n const src = sources[n]\n const k = src?.__sygnalStatic\n if (typeof k == 'string' && component.view?.[k] != null) {\n // statics are computed from state (G-167: with or without a model): a root whose state\n // never emits (a model but no initialState) never sends one\n if (!component.isSubComponent && component.initialState === undefined && once(`SYG132:${name}:${k}`)) {\n devReport('SYG132', {\n component,\n message: `${name} declares ${name}.${k}, but a root without initialState has no state, so ${k} is never sent to ${n}`,\n fix: `Add ${name}.initialState (e.g. { }${k == 'route' ? ', or { route: router.current() }' : ''})`,\n data: {static: k, source: n, reason: 'state'},\n })\n }\n }\n const opts = src?.__sygnalRouter\n const g: any = globalThis\n if (opts && typeof opts == 'object' && !opts.navigate && g.document?.getElementById?.('vike_pageContext') && once('SYG133')) {\n devReport('SYG133', {\n component,\n message: `The SPA router (${n}) runs inside a Vike app: Vike owns links and history, so both would handle a click`,\n fix: \"Pass Vike's navigate: makeRouter({ routes, navigate }) with import { navigate } from 'vike/client/router', or use Vike's routing\",\n data: {source: n},\n })\n }\n }\n },\n}\n","/*\n * Standard Schema (https://standardschema.dev) without a dependency: any validator that exposes\n * `schema['~standard'].validate(value)` (zod, valibot, arktype, ...), sync or async.\n * Used by makeFetchDriver's `validate` (PLAN-3 §1.6, D80); PLAN-4's forms and server functions\n * reuse it.\n */\n\n/** One validation failure, as the schema reports it */\nexport type SchemaIssue = {message: string; path?: ReadonlyArray<PropertyKey | {key: PropertyKey}>};\n\n/** true for a Standard Schema object (it has `~standard.validate`) */\nexport const isStandardSchema = (schema: any): boolean =>\n !!schema && (typeof schema == 'object' || typeof schema == 'function') && typeof schema['~standard']?.validate == 'function';\n\n/**\n * Validates `value`: resolves with the schema's (possibly transformed) value, or rejects with an\n * Error named 'ValidationError' whose `issues` are the schema's issues. A `schema` that isn't a\n * Standard Schema rejects with a TypeError.\n */\nexport const validateWith = async (schema: any, value: any): Promise<any> => {\n const r = await schema['~standard'].validate(value);\n if (!r.issues) return r.value;\n const e: any = new Error('Validation failed: ' + r.issues.map((i: SchemaIssue) => i.message).join('; '));\n e.name = 'ValidationError';\n e.issues = r.issues;\n throw e;\n};\n","/**\n * makeFetchDriver requests (PLAN-3 5-3: the query cache, D79/D80; G-175). Dev-entry codes\n * (DEV_CODE_SEVERITY):\n *\n * SYG630 — a cached request that is not idempotent: `cache: true` or `staleTime` on a\n * POST/PUT/PATCH/DELETE (a request with a body defaults to POST) (warn)\n * SYG631 — `validate` is not a Standard Schema (no `~standard.validate`): the request\n * fails (error)\n * SYG632 — `{ invalidate }` matched no cache entry and no mounted resource (info)\n * SYG633 — `{ abort: 'X' }` cancels the lane 'X', but this instance sends its `ok: 'X'`\n * requests under another `key`, so nothing is cancelled (warn)\n * SYG635 — `cache: true` / `staleTime` / `{ prefetch }` sent to a driver without a\n * `queryCache()` (D88): nothing is cached (warn). The source's `__inspect().cache`\n * is undefined without one\n *\n * Mechanism: onModel wraps the component's own model stream for every sink whose source\n * takes the `resources` static (makeFetchDriver and renderComponent's HTTP fake) and checks\n * each value as it is sent: requests, and each entry of a `{ resources }` declaration.\n * SYG632 asks the source how many entries/resources the value matches (`__matches`).\n * Each is reported once per component name and request URL / name.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, once, nameOf} from './shared'\nimport {isStandardSchema} from '../../standardSchema'\n\nconst IDEMPOTENT = /^(GET|HEAD)$/i\n\n/** instance → reply key lanes it has sent, and ok name → the other key it was sent under */\nconst lanes = new WeakMap<object, {used: Set<string>; keyed: Map<string, string>}>()\n\nconst fetchSink = (component: any, name: string) => component?.sources?.[name]?.__sygnalStatic === 'resources'\n/** 5-5: the sink's driver has no queryCache() */\nconst noCache = (component: any, sink: string) => {\n const i = component?.sources?.[sink]?.__inspect?.()\n return !!i && i.cache === undefined\n}\nconst reportNoCache = (component: any, sink: string, what: string, url: string) => {\n if (!noCache(component, sink) || !once(`SYG635:${nameOf(component)}:${what}:${url}`)) return\n devReport('SYG635', {\n component,\n message: `${sink} ${url ? url + ' ' : ''}uses ${what}, but the ${sink} driver has no queryCache(), so nothing is cached`,\n fix: `Give the driver a cache: makeFetchDriver({ cache: queryCache({ staleTime: 30000 }) }) (import { queryCache } from 'sygnal'); in tests renderComponent(C, { http: { cache: queryCache() } }). Or remove ${what}`,\n data: {sink, url, what},\n })\n}\n\nfunction checkOne(component: any, sink: string, req: any, where: string) {\n if (!req || typeof req !== 'object') return\n const name = nameOf(component)\n const url = typeof req.url === 'string' ? req.url : ''\n const method = String(req.method || (req.json !== undefined || req.body !== undefined ? 'POST' : 'GET')).toUpperCase()\n if ((req.cache === true || req.staleTime != null) && !IDEMPOTENT.test(method) && once(`SYG630:${name}:${method}:${url}`)) {\n devReport('SYG630', {\n component,\n message: `${where} ${method} ${url} sets ${req.cache === true ? 'cache: true' : 'staleTime'}, so a cached reply answers it instead of sending it again`,\n fix: `Cache reads only: remove ${req.cache === true ? 'cache' : 'staleTime'} from the ${method}, and refresh the cached reads after it succeeds with invalidates: ['tag']`,\n data: {sink, method, url},\n })\n }\n if (req.cache === true || req.staleTime != null) reportNoCache(component, sink, req.cache === true ? 'cache: true' : 'staleTime', url)\n if ('validate' in req && !isStandardSchema(req.validate) && once(`SYG631:${name}:${url}`)) {\n devReport('SYG631', {\n component,\n message: `${where} ${url} has validate: ${typeof req.validate}, which is not a Standard Schema, so the request fails`,\n fix: \"Pass a Standard Schema object (zod, valibot, arktype, ...: anything with a '~standard'.validate function), e.g. validate: QuoteSchema\",\n data: {sink, url},\n })\n }\n}\n\nexport function check(component: any, sink: string, req: any) {\n if (!req || typeof req !== 'object') return\n const name = nameOf(component)\n const res = req.resources\n if (res && typeof res === 'object') {\n for (const k of Object.keys(res)) checkOne(component, sink, typeof res[k] === 'string' ? {url: res[k]} : res[k], `${name}.resources.${k}:`)\n return\n }\n if (req.prefetch) {\n const p = req.prefetch\n reportNoCache(component, sink, '{ prefetch }', typeof p === 'string' ? p : String(p?.url ?? ''))\n return\n }\n if ('invalidate' in req) {\n const count = component.sources[sink]?.__matches?.(req.invalidate)\n const what = typeof req.invalidate === 'function' ? 'the predicate' : JSON.stringify(req.invalidate)\n if (count === 0 && once(`SYG632:${name}:${what}`)) {\n devReport('SYG632', {\n component,\n message: `${sink} { invalidate: ${what} } matched no cache entry and no mounted resource`,\n fix: \"Give the resources (or cached requests) to refresh tags: ['quotes'] and invalidate that tag, or a URL prefix starting with '/' ('/api/quotes')\",\n data: {sink, invalidate: what},\n })\n }\n return\n }\n let l = lanes.get(component)\n if (!l) lanes.set(component, (l = {used: new Set(), keyed: new Map()}))\n const {ok, error, key, abort} = req\n if (typeof abort === 'string' && key === undefined) {\n const other = l.keyed.get(abort)\n if (other !== undefined && !l.used.has(abort) && once(`SYG633:${name}:${abort}`)) {\n devReport('SYG633', {\n component,\n message: `${sink} { abort: '${abort}' } cancels the requests with key '${abort}', but ${name} sends its ok: '${abort}' requests with key: '${other}', so nothing is cancelled`,\n fix: `Cancel by that key: { abort: true, key: '${other}' } (or drop the key, so the lane is the ok action)`,\n data: {sink, abort, key: other},\n })\n }\n return\n }\n if (typeof ok === 'string' || typeof error === 'string') {\n const lane = key ?? ok ?? error\n l.used.add(lane)\n if (typeof ok === 'string' && key !== undefined && key !== ok) l.keyed.set(ok, String(key))\n }\n checkOne(component, sink, req, `A ${sink} request`)\n}\n\nexport const fetchCheck: DiagnosticCheck = {\n id: 'fetch',\n\n onModel(component) {\n const model$ = component?.model$\n if (!model$ || typeof model$ !== 'object') return\n for (const sink of Object.keys(model$)) {\n const s$ = model$[sink]\n if (!fetchSink(component, sink) || !s$ || typeof s$.map !== 'function') continue\n model$[sink] = s$.map((req: any) => {\n try { check(component, sink, req) } catch (_) {}\n return req\n })\n }\n },\n}\n","/**\n * Timers and declaration statics without a driver (PLAN-4 GS-7). Dev-entry-only codes\n * (DEV_CODE_SEVERITY):\n *\n * SYG643 — a component declares a static that only a registered driver acts on (`timers`:\n * makeTimerDriver(), `connections`: makeSocketDriver(), `resources`: makeFetchDriver(),\n * `browser`: makeBrowserDriver())\n * and no source of the app takes it (no `__sygnalStatic` marker for it), so nothing\n * happens and nothing else says so. Also closes PLAN-3's \"connections without a driver\n * report nothing\" gap. (`route` and `head` are left out: renderComponent asks for the\n * router itself, and `head` is also collected by renderToString without a driver.)\n * SYG422 — a timer spec makeTimerDriver() can't run (non-positive `every`, negative `after`,\n * `every` with `after`, no action, `frame` that isn't an action name): it isn't started.\n * The driver calls `__SYGNAL_DIAGNOSTICS__.timerSpec(name, spec, componentName)`, which\n * installTimerHooks() sets.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {bridge, devReport, once, nameOf} from './shared'\n\nconst NEEDS: Record<string, string> = {\n timers: 'makeTimerDriver()',\n connections: 'makeSocketDriver()',\n resources: 'makeFetchDriver()',\n browser: 'makeBrowserDriver()',\n}\nconst KEY: Record<string, string> = {timers: 'TIMER', connections: 'WS', resources: 'HTTP', browser: 'BROWSER'}\n\nconst brief = (v: any) => { try { return JSON.stringify(v) } catch (_) { return String(v) } }\n\n/** why a timer spec can't run ('' when it can; mirrors timers.ts's valid()) */\nexport function timerSpecProblem(s: any): string {\n if (!s || typeof s != 'object') return 'is not an object ({ every, action }, { after, action } or { frame: action })'\n if ('frame' in s && s.frame) return typeof s.frame == 'string' ? '' : 'frame must be the action name (a string)'\n if (!s.action || typeof s.action != 'string') return 'has no action (a string)'\n if (s.every == null && s.after == null) return 'has neither every nor after'\n if (s.every != null && s.after != null) return 'has both every and after'\n if (s.every != null) return s.every > 0 && s.every < 1 / 0 ? '' : `every must be a positive number of ms (got ${brief(s.every)})`\n return s.after >= 0 && s.after < 1 / 0 ? '' : `after must be a number of ms, 0 or more (got ${brief(s.after)})`\n}\n\nfunction checkSpec(name: string, spec: any, component?: string) {\n const problem = timerSpecProblem(spec) || 'is invalid'\n if (!once(`SYG422:${component}:${name}:${brief(spec)}`)) return\n devReport('SYG422', {\n component,\n message: `Timer '${name}' ${problem}; it is not started`,\n fix: `Declare ${name}: { every: 100, action: 'TICK' }, { after: 5000, action: 'EXPIRE' } or { frame: 'FRAME' } (falsy to stop it)`,\n data: {name, spec},\n })\n}\n\n/** install the hook makeTimerDriver() calls for an invalid spec (removed by the returned function) */\nexport function installTimerHooks(): () => void {\n const core = bridge()\n if (!core) return () => {}\n core.timerSpec = checkSpec\n return () => { if (core.timerSpec === checkSpec) core.timerSpec = undefined }\n}\n\nexport const timersCheck: DiagnosticCheck = {\n id: 'timers',\n\n onModel(component) {\n const sources = component?.sources, view = component?.view\n if (!sources || typeof sources != 'object' || !view) return\n const names = component.sourceNames || Object.keys(sources)\n for (const k in NEEDS) {\n if (view[k] == null) continue\n if (names.some((n: string) => sources[n]?.__sygnalStatic === k)) continue\n const name = nameOf(component)\n if (!once(`SYG643:${name}:${k}`)) continue\n devReport('SYG643', {\n component,\n message: `${name} declares ${name}.${k}, but no ${NEEDS[k]} driver is registered, so ${k == 'timers' ? 'its timers never run' : k == 'connections' ? 'its connections never open' : k == 'browser' ? 'its browser sources never start' : 'its resources are never fetched'}`,\n fix: `Register the driver: run(App, { ${KEY[k]}: ${NEEDS[k]} })`,\n data: {static: k, driver: NEEDS[k]},\n })\n }\n },\n}\n","/**\n * Browser sources (PLAN-5 B-3, src/extra/browserSources.ts). Dev-entry-only codes\n * (DEV_CODE_SEVERITY), reported when the driver calls\n * `__SYGNAL_DIAGNOSTICS__.browserSource(code, name, spec, componentName, extra)`:\n *\n * SYG663 — a `browser` entry the driver can't start (no known kind, no `action`, an intersection\n * / resize target that is neither a selector nor `true`), or a BROWSER sink command\n * with an unknown method. It isn't started / run.\n * SYG664 — a kind the driver wasn't made with (`makeBrowserDriverWith(...)` without its source).\n * SYG665 — a source or command failed (permission denied, API missing, storage blocked) and its\n * spec names no `error` action, so nothing else would say so.\n * SYG668 — an intersection / resize declaration with nothing to observe: no DOM source reached\n * the driver for the instance (extra 'dom'), or, in renderComponent's fake with\n * `dom: 'real'`, its selector matches no element of the component (extra 'none').\n *\n * A component declaring `browser` with no browser driver is SYG643 (checks/timers.ts).\n */\nimport {bridge, devReport, once} from './shared'\n\nconst KINDS = ['intersection', 'resize', 'media', 'storage', 'visibility', 'online', 'geolocation']\nconst SOURCE: Record<string, string> = {\n intersection: 'intersectionSource', resize: 'resizeSource', media: 'mediaSource', storage: 'storageSource',\n visibility: 'visibilitySource', online: 'onlineSource', geolocation: 'geolocationSource',\n copy: 'clipboardSource', paste: 'clipboardSource', setItem: 'storageSource', removeItem: 'storageSource',\n}\nconst brief = (v: any) => { try { return JSON.stringify(v) } catch (_) { return String(v) } }\n\n/** why a declared spec can't start ('' when it can; mirrors browserDriver's checks) */\nexport function browserSpecProblem(s: any): string {\n if (!s || typeof s != 'object') return `is not an object ({ ${KINDS.join(' | ')}: …, action })`\n const k = KINDS.find(k => k in s)\n if (!k) return `names no source (one of ${KINDS.join(', ')})`\n if (!s.action || typeof s.action != 'string') return 'has no action (a string)'\n if ((k == 'intersection' || k == 'resize') && s[k] !== true && (typeof s[k] != 'string' || !s[k])) return `${k} must be a selector in the component or true (its root element), got ${brief(s[k])}`\n return ''\n}\n\nfunction onBrowserSource(code: string, name: string, spec: any, component?: string, extra?: any, commands?: string[]) {\n if (code == 'SYG663' && extra === 0) {\n // an unknown command (extra 0; `commands`: the driver's)\n if (!once(`SYG663:${component}:cmd:${name}`)) return\n devReport('SYG663', {\n component,\n message: `BROWSER command '${name}' is unknown; it is not run`,\n fix: `Name the method as a key of the command: ${(commands || []).map(c => `{ ${c}: … }`).join(', ') || 'this driver takes no commands'}`,\n data: {name, command: spec},\n })\n return\n }\n if (code == 'SYG663') {\n if (!once(`SYG663:${component}:${name}:${brief(spec)}`)) return\n devReport('SYG663', {\n component,\n message: `browser entry '${name}' ${browserSpecProblem(spec) || 'is invalid'}; it is not started`,\n fix: `Declare ${name}: { media: '(prefers-color-scheme: dark)', action: 'DARK' }, { intersection: '.card', action: 'SEEN' }, … (falsy to stop it)`,\n data: {name, spec},\n })\n } else if (code == 'SYG664') {\n if (!once(`SYG664:${component}:${name}`)) return\n devReport('SYG664', {\n component,\n message: `browser entry '${name}' uses the ${extra} source, which this browser driver wasn't made with; it is not started`,\n fix: `Add it: makeBrowserDriverWith(${SOURCE[extra]}, …), or use makeBrowserDriver() (every source)`,\n data: {name, spec, kind: extra},\n })\n } else if (code == 'SYG668') {\n if (!once(`SYG668:${component}:${name}:${extra}`)) return\n const k = KINDS.find(k => spec && k in spec) || 'intersection', target = spec?.[k]\n devReport('SYG668', {\n component,\n message: extra == 'none'\n ? `browser entry '${name}' observes ${brief(target)}, which matches no element of the component; it reports nothing`\n : `browser entry '${name}' (${k}) has no DOM to observe: the component's DOM source didn't reach the browser driver; it reports nothing`,\n fix: extra == 'none'\n ? `Use a selector the component's own view renders (or true for its root element), and declare the entry only while that element exists`\n : `Run the app with a DOM driver (run() with a mount point) and declare intersection / resize in a component's own \\`browser\\` static`,\n data: {name, spec, reason: extra},\n })\n } else if (code == 'SYG665') {\n if (!once(`SYG665:${component}:${name}:${extra?.name ?? extra?.code}`)) return\n devReport('SYG665', {\n component,\n message: `browser ${spec && 'action' in spec ? `entry '${name}'` : `command '${name}'`} failed (${extra?.message || extra?.name || 'error'}) and names no error action`,\n fix: `Name one to handle it, e.g. { ..., error: 'FAILED' }, and a model entry FAILED: (state, { message }) => ...`,\n data: {name, spec, failure: extra},\n })\n }\n}\n\n/** install the hook the browser driver calls (removed by the returned function) */\nexport function installBrowserSourceHooks(): () => void {\n const core = bridge()\n if (!core) return () => {}\n core.browserSource = onBrowserSource\n return () => { if (core.browserSource === onBrowserSource) core.browserSource = undefined }\n}\n","/**\n * The chat driver (PLAN-6 L-1, src/extra/ai/chat/driver.ts). Dev-entry-only codes\n * (DEV_CODE_SEVERITY), reported when the driver calls `__SYGNAL_DIAGNOSTICS__.chat(code, request, …)`,\n * so their text costs apps nothing:\n *\n * SYG673 — the transport yielded a known event type with the wrong shape (`why`: 'type' not an\n * object with a string type, 'delta' not a string, 'name' a tool call with no name,\n * 'id' a tool result / error for no known call); it was skipped. The driver sends the\n * first five per driver.\n * SYG677 — a request with no sender stamp (not sent by a component): dropped.\n * SYG675 — (info) an L-2 transport with `strict: strictSchemas` sent a tool (or the `output`\n * schema) non-strict because it has no strict form, or (Anthropic) it is over the\n * provider's per-request limits (`data`: { tool, errors }); once per tool and transport.\n * SYG672 — (3-W2, D285) a transport with `strict: true` (not the strictSchemas import): sent\n * non-strict (`data`: { transport }); once per transport.\n *\n * SYG678 (a failure with no error action) and SYG679 (an invalid request) are printed by the\n * driver itself, in production too (legacy error()).\n */\nimport {bridge, devReport} from './shared'\n\nconst brief = (v: any) => { try { const s = JSON.stringify(v); return s && s.length > 120 ? s.slice(0, 120) + '…' : s } catch (_) { return String(v) } }\nconst WHY: Record<string, string> = {\n type: 'not an object with a string type',\n delta: 'its delta is not a string',\n name: 'a tool call with no tool name',\n id: 'its id matches no tool call of this reply',\n}\n\nfunction onChat(code: string, request: any, event?: any, why?: string) {\n const component = request && request.__emitterName\n if (code == 'SYG673') {\n devReport('SYG673', {\n component,\n message: `makeChatDriver: the transport sent a malformed ${event && typeof event.type == 'string' ? `'${event.type}' ` : ''}event (${WHY[why!] || why}): ${brief(event)}. It was skipped`,\n fix: \"Fix the transport: it yields ChatEvents such as { type: 'text', delta: 'Hi' }, { type: 'tool-call', id, name, input } (see ChatEvent in sygnal/ai)\",\n data: {event, reason: why},\n })\n } else if (code == 'SYG675') {\n const {tool, errors} = event || {}\n devReport('SYG675', {\n component,\n message: `strict mode: ${tool == '(output)' ? 'the output schema' : `the tool '${tool}'`} was sent non-strict: ${(errors || []).join('; ')}. The model may send arguments outside the schema; validation still checks them`,\n fix: 'Give it a strict form (an object root, no records: z.record() / additionalProperties with a schema), or accept the non-strict call',\n data: {tool, errors},\n })\n } else if (code == 'SYG672') {\n const {transport} = event || {}\n devReport('SYG672', {\n component,\n message: `${transport}({ strict: true }): strict mode takes the strict layer, strictSchemas from 'sygnal/ai' (a separate import, so apps that don't use it don't carry it), not true. The request was sent non-strict`,\n fix: `import { ${transport}, strictSchemas } from 'sygnal/ai' and pass ${transport}({ ..., strict: strictSchemas })`,\n data: {transport},\n })\n } else if (code == 'SYG677') {\n devReport('SYG677', {\n component,\n message: 'makeChatDriver: a request reached the driver from outside a component, so no reply action could reach anyone; it was dropped',\n fix: \"Send chat requests from a component's model: SEND: { LLM: (state) => ({ messages: state.messages, ok: 'DONE', error: 'FAILED' }) }\",\n data: {request},\n })\n }\n}\n\n/** install the hook the chat driver calls (removed by the returned function) */\nexport function installChatHooks(): () => void {\n const core = bridge()\n if (!core) return () => {}\n core.chat = onChat\n return () => { if (core.chat === onChat) core.chat = undefined }\n}\n","/**\n * PLAN-4 GS-5: persist() checks (dev entry only; sygnal-check reports both statically).\n *\n * SYG224 (error) — a `persist` static on a component that isn't the root: the core only sets it\n * up on the root (the one run() or renderComponent() is given), so nothing is saved\n * or restored. Under Vike's Layout/Wrapper shell (the `__vike` source) the message says\n * persist isn't supported on Vike pages, layouts or wrappers yet.\n * SYG223 (warn) — a `pick` / `omit` key of persist() that isn't a key of the component's\n * `initialState` static (a typo: that key is never saved, or never left out).\n * Once per component name. Mechanism: onModel reads the static `view.persist` (the persist()\n * value carries its options) and `view.initialState`.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, nameOf, once, didYouMean} from './shared'\n\nexport const persistCheck: DiagnosticCheck = {\n id: 'persist',\n\n onModel(component) {\n const view = component?.view, p = view?.persist\n if (!p) return\n const name = nameOf(component)\n if (component.isSubComponent) {\n // 3-B2: under Vike's Layout/Wrapper shell (onRenderClient's `__vike` source) the Page,\n // Layouts and Wrappers are all sub-components of the shell root\n const vike = component.sources?.__vike\n if (once('SYG224:' + name)) devReport('SYG224', {\n component,\n message: vike\n ? `${name}.persist is set, but ${name} renders in Vike's Layout/Wrapper shell (the shell is the app's root), so its state is never saved or restored: persist() isn't supported on Vike pages, layouts or wrappers yet`\n : `${name}.persist is set, but ${name} is not the root component, so its state is never saved or restored (persist() works on the root only)`,\n fix: vike\n ? `Remove persist from ${name}. Save the state yourself (STATE.watch writing to localStorage, read back in BOOTSTRAP), or use persist() on a component you run() yourself, or on a Vike page with no Layout or Wrapper (it is its own root)`\n : `Move persist to the root component (the one passed to run()) and pick the keys it holds: persist({ key, pick: ['${name.toLowerCase()}'] })`,\n data: {key: p.options?.key, ...(vike && {vike: true})},\n })\n return\n }\n const o = p.options, init = view.initialState\n if (!o || !init || typeof init != 'object') return\n const keys = Object.keys(init)\n for (const opt of ['pick', 'omit']) {\n for (const k of Array.isArray(o[opt]) ? o[opt] : []) {\n if (keys.includes(k) || !once(`SYG223:${name}:${opt}:${k}`)) continue\n devReport('SYG223', {\n component,\n message: `persist ${opt} names '${k}', which is not a key of ${name}.initialState, so it is ${opt == 'pick' ? 'never saved' : 'never left out'}${didYouMean(k, keys)}`,\n fix: `Use top-level keys of initialState in ${opt} (${keys.join(', ')}), or add '${k}' to initialState`,\n data: {option: opt, key: k, stateKeys: keys},\n })\n }\n }\n },\n}\n","/**\n * View Transitions (PLAN-4 GS-12, D129). Dev-entry-only code (DEV_CODE_SEVERITY):\n *\n * SYG645 — a component declares `viewTransitions`, but its app's DOM driver can't run them (run()'s\n * default makeDOMDriver, not makeViewTransitionDOMDriver()), so its actions patch at once\n * and nothing else says so. The helper marks its IsolateModule (`vtDriver`). Not reported\n * for renderComponent's mock DOM (no IsolateModule) or its `dom: 'real'` container\n * (`.sygnal-test`): tests don't animate.\n * Also (G-228): the static is not an array (`true`, `'MOVE'`): no action is listed (the core\n * reads it with `includes?.()`, so a string matches substrings; anything else matches none).\n */\nimport type {DiagnosticCheck} from '../index'\nimport {devReport, once, nameOf} from './shared'\n\nexport const viewTransitionsCheck: DiagnosticCheck = {\n id: 'viewTransitions',\n\n onModel(component) {\n const list = component?.view?.viewTransitions\n if (list == null) return\n if (!Array.isArray(list)) {\n const name = nameOf(component)\n if (!once(`SYG645:${name}`)) return\n const actions = Object.keys(component.model || {}).filter(a => !a.includes('|'))\n devReport('SYG645', {\n component,\n message: `${name}.viewTransitions is not an array (it is ${typeof list == 'string' ? `'${list}'` : typeof list}), so no action is listed for a View Transition`,\n fix: `List the action names in an array: ${name}.viewTransitions = [${(typeof list == 'string' ? [list] : actions.slice(0, 2)).map(a => `'${a}'`).join(', ') || \"'ACTION'\"}] (an array of action names)`,\n data: {value: list},\n })\n return\n }\n if (!list.length) return\n const im = component.sources?.[component.DOMSourceName || 'DOM']?._isolateModule\n // the core's DOM source proxy answers any unknown key with an event shorthand (a function)\n if (typeof im != 'object' || !im || im.vtDriver) return\n if (typeof document != 'undefined' && document.querySelector?.('.sygnal-test')) return\n const name = nameOf(component)\n if (!once(`SYG645:${name}`)) return\n devReport('SYG645', {\n component,\n message: `${name} declares ${name}.viewTransitions (${list.map((a: any) => `'${a}'`).join(', ')}), but the app's DOM driver can't run View Transitions, so those actions patch without one`,\n fix: `Give run() the View Transition DOM driver: run(App, { DOM: makeViewTransitionDOMDriver('#root') })`,\n data: {actions: list},\n })\n },\n}\n","/**\n * PLAN-4.5 G-275: marks an initial state that a wrapper built from its caller's values (an\n * element's host props, Vike's pageContext.data or hydrated state, renderComponent's\n * initialState option). The dev statics freeze (D152, checks/statics.ts) leaves a marked object\n * and everything in it alone: the caller may still change those values. A non-enumerable symbol\n * key: spreads, JSON and Object.keys don't see it.\n */\nexport const OWNED = Symbol.for('sygnal.owned')\n\nexport const owned = <T>(v: T): T => {\n // G-289: an object that refuses the key (a Proxy) is returned as is\n try { if (v && typeof v == 'object' && Object.isExtensible(v)) Object.defineProperty(v, OWNED, {value: 1}) } catch {}\n return v\n}\n\n/**\n * G-289: owned() of a shallow copy of a plain object or array (the caller's own object stays\n * unmarked: it may be a component's static, which the freeze must still cover, or sealed, which\n * can't be marked); anything else as owned()\n */\nexport const ownedCopy = <T>(v: T): T => {\n const p = v && typeof v == 'object' ? Object.getPrototypeOf(v) : 0\n return owned(Array.isArray(v) ? [...v] as any : p == Object.prototype || p === null ? {...v} : v)\n}\n","/**\n * PLAN-4.5 D152: shared statics are frozen in dev (dev entry only; the core never freezes).\n *\n * Since P45-B a component's `initialState`, `model`, `context` and `calculated` statics are\n * shared by all its instances (no per-instance deep copy). Mutating one in place (a reducer's\n * `state.items.push(x)` on the initial state, a view that writes into state) would change every\n * instance, and every later one. With diagnostics on, `initialState` is deep-frozen (its plain\n * objects and arrays; class instances such as Map or Date are left as they are) and the other\n * statics are frozen at the top level, so such a mutation throws a TypeError where it happens\n * (in a reducer: reported as SYG216 with the error attached; in a view: SYG406).\n *\n * Frozen: the component function's own statics, and the options given to component() (G-280:\n * `component({ view, model, initialState })`; the instance's `_o`, the values before behaviors or\n * persist() made per-instance copies). Not frozen: the instance's values (G-268), and an\n * initial state a wrapper built from its caller's objects (G-275: marked with `owned()` by\n * sygnal/element (host props), Vike (pageContext.data, hydrated state) and renderComponent's\n * `initialState` option; the caller may still change those). Mechanism: onIntent, which runs\n * during construction, before the model is wired.\n */\nimport type {DiagnosticCheck} from '../index'\nimport {OWNED} from '../../owned'\n\nconst plain = (v: any): boolean => {\n if (!v || typeof v != 'object') return false\n const p = Object.getPrototypeOf(v)\n return Array.isArray(v) || p === Object.prototype || p === null\n}\n\nconst deepFreeze = (v: any): void => {\n if (!plain(v) || Object.isFrozen(v) || v[OWNED]) return\n Object.freeze(v)\n for (const k of Object.keys(v)) deepFreeze(v[k])\n}\n\nconst freeze = (o: any): void => {\n if (!o || (typeof o != 'object' && typeof o != 'function')) return\n deepFreeze(o.initialState)\n for (const k of ['model', 'context', 'calculated']) if (plain(o[k])) Object.freeze(o[k])\n}\n\nexport const staticsCheck: DiagnosticCheck = {\n id: 'statics',\n\n onIntent(component) {\n if (typeof component?.view == 'function') freeze(component.view)\n freeze(component?._o)\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 the core.\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 * PLAN-4 2-C (GS-10): the action log. Records every action a component instance runs as\n * { type, data, component, instance, sinks, cause, time }\n * for renderComponent's t.actions / t.explain() (src/extra/testing.ts), inspect({ actions }) in\n * the 'sygnal/diagnostics' dev entry (./inspect.ts) and the DevTools action log\n * (src/extra/devtoolsActions.ts).\n *\n * 0 B in apps: nothing in the core calls this. actionHooks() is a hook layer of the core\n * (04-hooks-contract §3.3): onAction opens the record (the core passes the cause: 'intent',\n * 'next', 'reply', 'built-in', 'simulateAction', 'agent' (PLAN-6 A-1, G-597); an intent action a behavior owns is\n * 'behavior'), wrapHandler sees which sinks produced a value. (The old core's version patched\n * each instance; R5 removed it.)\n *\n * Sinks: a function reducer counts when it returns a value: not ABORT (or another symbol, which\n * the core drops), and for STATE not the state it was given (GS-4: no change); EFFECT counts when\n * the handler ran without ABORT. A constant / `true` entry always sends. A throwing reducer\n * sends nothing.\n */\nimport {isAbort, ORIGINAL} from '../../../shared'\n\nexport type ActionCause = 'intent' | 'next' | 'reply' | 'built-in' | 'simulateAction' | 'behavior' | 'agent'\n\nexport interface ActionRecord {\n type: string\n data: any\n /** the component's name */\n component: string\n /** the instance's id (its component number, as inspect()'s component ids) */\n instance: string\n /** sinks that produced a value for this action (live: STATE fills in when the reducer runs) */\n sinks: string[]\n cause: ActionCause\n /** clock time (fake-timer aware) when the action reached the model */\n time: number\n /** a reply: the source that delivered it */\n source?: string\n}\n\nexport interface ActionListener {\n action(record: ActionRecord, component: any): void\n /** a sink produced a value for `record` (reducer: the model's function, when there is one) */\n sink?(record: ActionRecord, sink: string, reducer: any): void\n}\n\nconst BUILT_IN = /^(BOOTSTRAP|INITIALIZE|DISPOSE|RESOURCE)$/\n\n/** now on the test's fake clock when there is one (vi.useFakeTimers()), else Date.now() */\nexport const clockNow = (): number => {\n const c = (setTimeout as any).clock\n return c ? c.now : Date.now()\n}\n\n/**\n * PLAN-4.6 R4: the same log on the core, from its hooks (04 §3.3) instead of instance\n * patches: onAction opens the record (the core passes the cause: 'intent', 'next', 'reply',\n * 'built-in', 'simulateAction'), wrapHandler sees which sinks produced a value. Same records,\n * same cause rules: a built-in type is 'built-in' unless simulated; an intent action a behavior\n * owns is 'behavior'. `only(inst)`: the instances to record (renderComponent: its own tree).\n */\nexport function actionHooks(listener: ActionListener, only?: (inst: any) => boolean): any {\n const cur = new WeakMap<object, [ActionRecord, string[]]>()\n // INITIALIZE: the core writes the initial state at creation (no action, unless the model\n // has an INITIALIZE entry); today's log has an INITIALIZE record with STATE, so it is opened here\n const init = new WeakMap<object, ActionRecord>()\n return {\n onCreate(inst: any) {\n const d = inst.def\n if ((only && !only(inst)) || d.initialState === undefined || !(inst.isRoot || d.isolated)) return\n const rec: ActionRecord = {type: 'INITIALIZE', data: d.initialState, component: inst.name, instance: String(inst.id), sinks: [], cause: 'built-in', time: clockNow()}\n init.set(inst, rec)\n try { listener.action(rec, inst) } catch (_) { /* ignore */ }\n addSink(listener, rec, ['STATE'], 'STATE', undefined)\n },\n onAction(inst: any, a: any) {\n if (only && !only(inst)) return\n const type = String(a.type), owned = inst.def.behaviorActions\n const hs = inst.def.handlers.get(type) || [], order = hs.map((h: any) => h[0])\n const opened = type == 'INITIALIZE' && init.get(inst)\n if (opened) { init.delete(inst); cur.set(inst, [opened, order]); return }\n const cause: ActionCause = a.cause == 'simulateAction' ? a.cause : BUILT_IN.test(type) ? 'built-in'\n : a.cause == 'next' || a.cause == 'reply' || a.cause == 'agent' ? a.cause\n : owned && Object.prototype.hasOwnProperty.call(owned, type) ? 'behavior' : 'intent'\n const rec: ActionRecord = {type, data: a.data, component: inst.name, instance: String(inst.id), sinks: [], cause, time: clockNow(), ...(a.source !== undefined && {source: a.source})}\n cur.set(inst, [rec, order])\n try { listener.action(rec, inst) } catch (_) { /* a listener never breaks the app */ }\n // a constant / `true` entry always sends (EFFECT runs functions only)\n for (const [sink, h] of hs) if (typeof h != 'function' && sink != 'EFFECT') addSink(listener, rec, order, sink, undefined)\n },\n wrapHandler(inst: any, type: string, sink: string, fn: any) {\n const c = cur.get(inst)\n if (!c || c[0].type !== type || typeof fn != 'function') return\n const [rec, order] = c, isState = sink == 'STATE', isEffect = sink == 'EFFECT'\n return function (this: any, state: any) {\n const r = fn.apply(this, arguments)\n if (!isAbort(r) && (isEffect || typeof r != 'symbol') && !(isState && r === state)) addSink(listener, rec, order, sink, fn[ORIGINAL] || fn)\n return r\n }\n },\n }\n}\n\nfunction addSink(l: ActionListener, rec: ActionRecord, order: string[], sink: string, reducer: any): void {\n if (!rec.sinks.includes(sink)) {\n rec.sinks.push(sink)\n rec.sinks.sort((a, b) => order.indexOf(a) - order.indexOf(b))\n }\n try { l.sink?.(rec, sink, reducer) } catch (_) { /* ignore */ }\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\n * onSink (checks/next.ts: eventEmitted) the EVENTS types the instance emitted. Since\n * B-023 the driver-side emitter name (onBusEmit) is the emitting\n * component's, but it is only a name, and this graph is per instance\n * onReducer which model-only actions actually ran (=> dispatched by next(),\n * unless a request named them as reply actions: replies.ts, 'reply')\n * onBusEmit EVENTS types seen on the bus\n * onBusSelect EVENTS types selected (see onIntent)\n * onRender (PLAN-4 CT-1) the controls the instance renders: its own vtree, up to the\n * isolated child components, through ./controls' vnode -> control map\n * onDispose prunes the instance\n * (PLAN-4 2-C) the action log (./actionLog: actionHooks, a layer of checks/next.ts) feeds\n * inspect({ actions }): the recent actions (the last RECENT_MAX, any 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, InspectResource, InspectControl, InspectRecentAction} from './public'\nimport {clockNow} from './actionLog'\nimport type {ActionListener, ActionRecord} from './actionLog'\nimport {bridge, onReset, nameOf, isPlainObject, BUILTIN_ACTIONS, replySeen} from './shared'\nimport {checkEventBus} from './events'\nimport {selectorStatus} from './dom'\nimport {controlOfVnode, keyOfSelector} from './controls'\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 /** CT-1: controls seen in its renders, by key (first-seen order) */\n controls: Map<string, {element: string | null; kind?: 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/** PLAN-4 2-C (GS-10): the most recent actions of any instance, oldest first */\nconst RECENT_MAX = 200\nlet recent: ActionRecord[] = []\nlet epoch = clockNow()\nexport const actionListener: ActionListener = {\n action(r) { if (recent.push(r) > RECENT_MAX) recent.shift() },\n}\n\nonReset(() => {\n records = new Map()\n pendingSelects = []\n busTypes = new Set()\n recent = []\n epoch = clockNow()\n})\nconst uniq = <T>(list: Iterable<T>): T[] => [...new Set(list)]\n\nconst NEXT_KIND: Record<string, Kind> = {root: 'root', child: 'child', item: 'collection-item', page: 'switchable'}\n\nfunction kindOf(c: any): Kind {\n // PLAN-4.6 R4: the core's instance view says it (checks/next.ts)\n return (c && c.__next && NEXT_KIND[c.__next.kind]) || 'child'\n}\n\nfunction ensure(c: any): Rec {\n let r = records.get(c)\n if (!r) {\n const parent = c && c.__next && c.__next.parentId\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 controls: new Map(),\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 = 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 },\n\n onRender(component, root) {\n const r = records.get(component)\n if (r) collectControls(root, r.controls, true)\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\n/** PLAN-4.6 R4 (onSink): an EVENTS value the instance sent */\nexport function eventEmitted(component: any, ev: any): void {\n const r = records.get(component)\n if (r && ev && typeof ev.type === 'string') r.eventsEmitted.add(ev.type)\n}\n\n/**\n * CT-1: record the controls in a component's rendered tree (data-control=\"<Key>\"), stopping at\n * isolated child components (their root carries data.isolate on the real DOM, a '.___<scope>'\n * class in the mock DOM): the controls inside belong to the child.\n */\nfunction collectControls(v: any, out: Rec['controls'], root: boolean): void {\n if (!v || typeof v != 'object') return\n if (!root && typeof v.sel == 'string' && ((v.data && v.data.isolate) || v.sel.includes('.___'))) return\n const key = v.data && v.data.attrs && v.data.attrs['data-control']\n if (typeof key == 'string' && !out.has(key)) {\n const control = controlOfVnode(v)\n const spec = control && control.spec\n out.set(key, spec && typeof spec == 'object'\n ? {element: null, kind: String(spec.kind)}\n : {element: typeof spec == 'string' ? spec : typeof v.sel == 'string' ? v.sel.split(/[.#]/)[0] : null})\n }\n for (const k of [].concat(v.children || [], (v.data && v.data.portalChildren) || [])) collectControls(k, out, false)\n}\n\n/** CT-1: the controls a component rendered, `listened` from its intent's selectors */\nfunction controlsOf(r: Rec, selectors: InspectSelector[]): InspectControl[] | undefined {\n if (!r.controls.size) return undefined\n const listened = new Set<string>()\n for (const s of selectors) for (const m of s.selector.matchAll(/\\[data-control=\"([^\"]+)\"\\]/g)) listened.add(m[1])\n return [...r.controls].map(([name, {element, kind}]) => ({name, element, ...(kind ? {kind} : {}), listened: listened.has(name)}))\n}\n\n/** CT-1: mark a selector that is a control ([data-control=\"<Key>\"]) with its key */\nconst withControl = (s: InspectSelector): InspectSelector => {\n const key = keyOfSelector(s.selector)\n return key ? {...s, control: key} : s\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 const replies = replySeen.get(r.instance)\n return names.map(name => ({\n name,\n trigger: BUILTIN_ACTIONS.has(name) ? 'builtin'\n : intent.includes(name) ? 'intent'\n : replies?.has(name) ? 'reply'\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/** PLAN-3 5-3: the instance's resources (`resources` static) and their state slots */\nfunction resourcesOf(c: any): InspectResource[] | undefined {\n const res = c && c.view && c.view.resources\n if (!res || typeof res !== 'object') return undefined\n const s = c.currentState || {}\n return Object.keys(res).map(name => {\n const r = s[name] || {}\n return {name, status: r.status ?? 'idle', refreshing: !!r.refreshing, hasData: r.data !== undefined, error: r.error ? String(r.error.message ?? r.error) : undefined}\n })\n}\n\n/** PLAN-3 5-3: the cache entries of every makeFetchDriver source the instances use, by sink name (sinks with an empty cache left out) */\nfunction cacheOf(recs: Rec[]): InspectGraph['cache'] {\n const out: NonNullable<InspectGraph['cache']> = {}\n for (const r of recs) {\n const sources = r.instance && r.instance.sources\n if (!sources || typeof sources !== 'object') continue\n for (const k of Object.keys(sources)) {\n const src = sources[k]\n if (out[k] || !src || src.__sygnalStatic !== 'resources' || typeof src.__inspect !== 'function') continue\n try { const list = src.__inspect().cache; if (list.length) out[k] = list } catch (_) { /* a driver without the cache listing */ }\n }\n }\n return out\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 => withControl({...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 withControl({\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 const selectors = selectorsOf(r, options, diags)\n const controls = controlsOf(r, selectors)\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,\n ...(controls ? {controls} : {}),\n diagnostics: diags.filter(d => d && d.component === r.name).map(slim),\n ...(resourcesOf(c) ? {resources: resourcesOf(c)} : {}),\n }\n })\n\n const cache = cacheOf(recs) || {}\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 ...(Object.keys(cache).length ? {cache} : {}),\n ...(options.actions ? {recentActions: recentActions(options.actions, ids)} : {}),\n }\n}\n\n/** a JSON-safe copy of an action's data (dropped when it doesn't serialize, or is large: a DOM event) */\nfunction jsonData(d: any): {data?: any} {\n if (d === undefined) return {}\n try {\n const text = JSON.stringify(d)\n return text === undefined || text.length > 1000 ? {} : {data: JSON.parse(text)}\n } catch (_) { return {} }\n}\n\n/** PLAN-4 2-C: the last `limit` actions (true: all kept) of the listed instances */\nfunction recentActions(limit: true | number, ids: Set<string> | undefined): InspectRecentAction[] {\n const list = ids ? recent.filter(r => ids.has(r.instance)) : recent\n const n = limit === true ? list.length : Math.max(0, Math.floor(limit))\n return list.slice(list.length - n).map(r => ({\n type: r.type,\n ...jsonData(r.data),\n component: r.component,\n instance: r.instance,\n sinks: [...r.sinks],\n cause: r.cause,\n at: r.time - epoch,\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 * PLAN-4.6 R4: the dev entry's checks on the next component core (src/core/).\n *\n * The core has no instance to patch and no diagnostics calls of its own: it reads this\n * entry's hooks once per app (`__SYGNAL_DIAGNOSTICS__.nextHooks(api)`, 04-hooks-contract §2.2)\n * and calls them with read-only InstanceViews. This module maps them onto the existing checks:\n *\n * - each instance gets a facade with the fields the checks read from today's instances (name,\n * view, model, sources, currentState, ...), so the DiagnosticCheck hooks (onIntent, onModel,\n * onRender, onReducer, onDispose, sources) run unchanged through the core's dispatchers;\n * - what the checks did by patching an instance becomes a hook: SYG222's reducer wrapping\n * (wrapHandler), the reply / fetch / EVENTS taps of a sink (onSink), the ELEMENT check\n * (onElementCommand), the Collection check (onHostProps), the action log (actionLog.ts);\n * - the core's own dev codes: SYG423 (D168: a view context tracking skipped would have\n * rendered differently), SYG424 (D169/D177: duplicate Collection ids), SYG425 (D174: an\n * isolatedState child kept a slice that lacks its initialState keys), SYG148 / SYG149 (G-419:\n * a Collection's viewTransitionName that isn't an identifier, the same name twice on the\n * page after a patch, G-460: on rendered elements), SYG612 (D173: a form\n * 6.0 removed, met at runtime; once per form and component, with a link to the migration\n * guide).\n *\n * Only while diagnostics are on (the checks' own rule); production builds never load this.\n */\nimport {bridge, devReport, reportSafely, once, onReset, nameOf, isPlainObject} from './shared'\nimport {DEV_CODE_SEVERITY} from '../codes'\nimport {watchMutation} from './state'\nimport {checkRequest} from './replies'\nimport {check as checkFetch} from './fetch'\nimport {checkSentCommand} from './elementCommands'\nimport {checkCollection} from './collections'\nimport {eventEmitted, actionListener as recentActions} from './inspect'\nimport {actionHooks} from './actionLog'\n\nconst MIGRATE = 'https://sygnal.js.org/guide/migrating-to-6'\n\n/** the removed forms (D162-D164) by migration-guide anchor: what it was, how to write it now */\nexport const REMOVED: Record<string, [what: string, fix: string]> = {\n 'string-tags': ['a component named by a string tag (<Name /> as a string, looked up in .components)', 'Import the component and use it as a JSX tag: <Badge />'],\n 'components': ['the .components registry', 'Import each component and use it as a JSX tag; remove .components'],\n 'collection-of-name': ['<Collection of=\"Name\"> (a name)', 'Pass the component itself: <Collection of={Item} from=\"items\" />'],\n 'collection-wrapper': [\"the Collection's wrapper element (className, style, class, attrs, data-*, on, ref or hook on <Collection>)\", 'Collection renders its items directly into its parent: put them on your own wrapping element, <ul className=\"x\"><Collection of={Item} from=\"items\" /></ul>'],\n 'child-select-name': [\"CHILD.select('Name') (a name)\", 'Pass the component itself: CHILD.select(Item)'],\n 'pipe-keys': [\"'ACTION | SINK' model keys\", \"Use the object form: ACTION: { SINK: (state, data) => ... }\"],\n 'peers': ['.peers', 'Render the peer as a sibling in the parent view'],\n 'hmractions': ['hmrActions', 'Remove hmrActions; sygnal/vite keeps the state across a hot update'],\n 'positional-views': ['a view with positional parameters (props, state, context, peers)', 'Destructure the one argument: function C({ state, context, ...props })'],\n 'source-names': ['DOMSourceName / stateSourceName', \"Remove them: the sources are always DOM and STATE\"],\n 'storecalculatedinstate': ['storeCalculatedInState', 'Remove it: calculated fields are always part of the state the view and reducers get'],\n 'component-factory': ['the component({ ... }) factory (with sources / isolateOpts)', 'Write a function component with statics (C.model, C.intent, C.initialState), or use defineComponent({ ... })'],\n}\n\n/** 4-H: the marker's props / data buckets the removed Collection wrapper element took */\nconst WRAPPER = ['className', 'style', 'class', 'attrs', 'dataset', 'on', 'hook']\n\nconst STATICS: Array<[string, string]> = [['components', 'components'], ['peers', 'peers'], ['hmrActions', 'hmractions'], ['DOMSourceName', 'source-names'], ['stateSourceName', 'source-names'], ['storeCalculatedInState', 'storecalculatedinstate']]\n\nfunction removed(component: any, name: string, anchor: string, detail?: string): void {\n if (!once(`SYG612:${name}:${anchor}`)) return\n const [what, fix] = REMOVED[anchor]\n devReport('SYG612', {\n component: name,\n message: `${name} uses ${what}${detail ? ` (${detail})` : ''}, which Sygnal 6.0 removed, so it is ignored or fails`,\n fix: `${fix}. See ${MIGRATE}#${anchor}`,\n data: {form: anchor, guide: `${MIGRATE}#${anchor}`, ...(detail ? {detail} : {})},\n })\n}\n\n/** the removed forms a definition shows (statics, view arity, model keys), once per function */\nlet seenDefs = new WeakSet<object>()\n// G-332: resetChecks() forgets them (as the once() dedupe)\nonReset(() => { seenDefs = new WeakSet<object>() })\nfunction removedStatics(f: any): void {\n const view = f.view\n if (!view || seenDefs.has(view)) return\n seenDefs.add(view)\n const name = f.name\n if (view.isSygnalComponent) removed(f, name, 'component-factory')\n for (const [k, anchor] of STATICS) if (view[k] !== undefined && !(k == 'components' && isPlainObject(view[k]) && !Object.keys(view[k]).length)) removed(f, name, anchor, k)\n // G-343: a defineComponent() wrapper's own arity is 1; the view it calls is __sygnalView\n const arity = typeof view == 'function' ? (view.__sygnalView || view).length : 0\n if (arity > 1 && !view.__sygnalLazy && !view.isSygnalComponent) removed(f, name, 'positional-views', `${arity} parameters`)\n const model = view.model\n if (isPlainObject(model)) for (const k of Object.keys(model)) if (k.includes('|')) removed(f, name, 'pipe-keys', `'${k}'`)\n}\n\n/** string tags left in a rendered vnode (the core renders them as elements) */\nfunction removedTags(f: any, v: any, depth = 0): void {\n if (!v || typeof v != 'object' || depth > 300) return\n const sel = v.sel\n // G-329: a component name is PascalCase; an all-caps tag (h('SPAN'), h(el.tagName)) is an element\n const tag = typeof sel == 'string' ? sel.split(/[.#]/)[0] : ''\n if (/^[A-Z]/.test(tag) && /[a-z]/.test(tag) && !(v.data && v.data.c)) removed(f, f.name, 'string-tags', `<${tag}>`)\n const kids = v.children\n if (Array.isArray(kids)) for (const k of kids) removedTags(f, k, depth + 1)\n}\n\n/** the instance fields the checks read from today's Component instances */\nclass Facade {\n _so: any\n constructor(public __next: any) {}\n get name() { return this.__next.name }\n get view() { return this.__next.def.view }\n get model() {\n const m: Record<string, any> = {}\n this.__next.def.handlers.forEach((hs: any[], a: string) => { const e: any = m[a] = {}; for (const [s, fn] of hs) e[s] = fn })\n return m\n }\n get modelMap(): Record<string, string[]> {\n const m: Record<string, string[]> = {}\n this.__next.def.handlers.forEach((hs: any[], a: string) => { m[a] = hs.map(h => h[0]) })\n // the built-in INITIALIZE (today's model map ends with it for every component)\n if (!m.INITIALIZE) m.INITIALIZE = ['STATE']\n return m\n }\n get sources() { return this._so || this.__next.sources }\n get sourceNames() { return Object.keys(this.__next.sources) }\n get stateSourceName() { return 'STATE' }\n get DOMSourceName() { return 'DOM' }\n get isSubComponent() { return !this.__next.isRoot }\n get initialState() { return this.__next.def.initialState }\n get currentState() { return this.__next.state }\n get currentProps() { return this.__next.props }\n get currentContext() { return this.__next.context }\n get _componentNumber() { return this.__next.id }\n get calculated() { return this.__next.def.view.calculated }\n get _calculatedFieldNames() { return this.__next.def.calcNames }\n get context() { return this.__next.def.view.context }\n get _uses() { return Object.entries(this.__next.def.view.uses || {}) }\n get _behaviorActions() { return this.__next.def.behaviorActions }\n get intent$() { return {__sygnalTestActions: this.__next.def.testActions || []} }\n get _disposed() { return this.__next.disposed }\n /** the state already has its calculated fields */\n addCalculated(s: any) { return s }\n}\n\nconst facades = new WeakMap<object, Facade>()\nconst fac = (iv: any): Facade => {\n let f = facades.get(iv)\n if (!f) facades.set(iv, f = new Facade(iv))\n return f\n}\n\n/** structural vnode equality (functions equal: a view may make new closures every call) */\nfunction same(a: any, b: any, d = 0): boolean {\n if (a === b || (typeof a == 'function' && typeof b == 'function')) return true\n if (!a || !b || typeof a != 'object' || typeof b != 'object') return a !== a && b !== b\n if (d > 300) return true\n if (Array.isArray(a) != Array.isArray(b)) return false\n const ka = Object.keys(a).filter(k => k != 'elm' && a[k] !== undefined), kb = Object.keys(b).filter(k => k != 'elm' && b[k] !== undefined)\n if (ka.length != kb.length) return false\n for (const k of ka) if (!same(a[k], b[k], d + 1)) return false\n return true\n}\n\nconst SAMPLE = 16, CAP = 20\n\n/** a CSS identifier's start, then identifier characters (`<prefix>-<id>` is one when the prefix starts one) */\nconst IDENT = /^(--|-?[A-Za-z_\\u0080-\\uffff])[\\w\\u0080-\\uffff-]*$/\n\n/** G-419 SYG148: a Collection's viewTransitionName that is not a CSS identifier (true: a valid one) */\nfunction vtPrefix(name: string, p: any): boolean {\n if (typeof p == 'string' && IDENT.test(p)) return true\n const shown = typeof p == 'string' ? JSON.stringify(p) : `{${typeof p}}`\n if (once(`SYG148:${name}:${String(p)}`)) devReport('SYG148', {\n component: name,\n message: `A Collection in ${name} has viewTransitionName=${shown}, which is not a CSS identifier, so every item's view-transition-name (${typeof p == 'string' ? p : '<prefix>'}-<id>) is invalid CSS: the browser ignores it and nothing animates`,\n fix: 'Use a CSS identifier as the prefix: letters, digits, - and _, not starting with a digit (viewTransitionName=\"card\")',\n data: {value: p},\n })\n return false\n}\n\n/**\n * G-460: an element the browser renders (a View Transition captures only those): not in a\n * display: none subtree (a hidden tab panel, a list shown only at another width). checkVisibility()\n * where there is one; else (jsdom) no display: none on it or an ancestor\n */\nfunction rendered(el: any): boolean {\n if (!el?.isConnected) return false\n if (typeof el.checkVisibility == 'function') return el.checkVisibility()\n const cs = el.ownerDocument?.defaultView?.getComputedStyle\n for (let n = el; n && n.nodeType == 1; n = n.parentNode) if (n.hidden || cs?.(n).display == 'none') return false\n return true\n}\n\n/**\n * G-419 SYG149: two elements of the patched page with the same view-transition-name from\n * Collections with the same prefix (the same id shown in two of them): the browser skips the\n * whole View Transition. Walks the vnode tree (dev only, while a named Collection is mounted);\n * G-460: a name found twice is checked on the DOM after the patch (a microtask later; when a View\n * Transition defers the patch, again a little later): only rendered elements count. Returns the\n * groups of vnodes with one name (none: an empty list)\n */\nfunction vtDuplicates(root: any, prefixes: Set<string>): any[][] {\n const seen = new Map<string, any[]>(), dup: any[][] = []\n const stack = [root]\n while (stack.length) {\n const v = stack.pop()\n if (!v || typeof v != 'object') continue\n const st = v.data?.style, n = st?.viewTransitionName\n if (typeof n == 'string' && prefixes.has(st.viewTransitionClass)) {\n const g = seen.get(n)\n if (!g) seen.set(n, [v])\n else if (g.push(v) == 2) dup.push(g)\n }\n if (Array.isArray(v.children)) for (let i = v.children.length; i--;) stack.push(v.children[i])\n }\n return dup\n}\n\n// G-538: a fragment root never gets an element (the DOM driver flattens it into the container):\n// it has run when each of its children has one (a kept child has its old one: a View Transition\n// patch of a fragment root whose children are all kept is checked before it runs)\nconst patched = (v: any): any => v.elm || !v.sel && v.children?.every((c: any) => !c || patched(c))\n\n/**\n * G-527: the patches waiting for their SYG149 check ([root vnode, duplicate groups], newest last,\n * at most 8) and one chain of checks over them: a microtask after the first, then every 50 ms\n * while some wait. The patch of a root has run when it has its element (a View Transition patches\n * in its update callback, and replaces a held vnode it hasn't patched yet; kept vnodes have their\n * old elements before that): each check takes the newest patch that ran and drops it and the older\n * ones. A newer patch joins the queue and doesn't restart the chain, so patches closer than 50 ms\n * (View Transitions back to back) can't starve it. A patch without duplicates joins only a queue\n * that waits (once it has run, the older ones are moot). G-501: the chain stops once the app (or\n * every named Collection) is gone, and after 10 tries without a patched root (the mock DOM; a root\n * that never gets its element isn't checked on its children's old elements)\n */\nfunction vtChecker(live: () => any) {\n let q: any[][] = [], busy = false, tries = 0\n const vtRendered = (): void => {\n if (!live()) { q = []; busy = false; return }\n let i = q.length\n while (i-- && !patched(q[i][0]));\n if (i >= 0) { vtReport(q[i][1]); q = q.slice(i + 1); tries = 0 }\n else tries++\n if (!q.length || tries > 10) { q = []; busy = false; return }\n setTimeout(vtRendered, 50)\n }\n return (root: any, dup: any[][]) => {\n if (!dup.length && !q.length) return\n q.push([root, dup])\n if (q.length > 8) q.shift()\n if (!busy) { busy = true; tries = 0; queueMicrotask(vtRendered) }\n }\n}\n\nfunction vtReport(dup: any[][]): void {\n for (const g of dup) {\n const v = g[0], st = v.data.style, n = st.viewTransitionName\n if (g.filter(x => rendered(x.elm)).length < 2 || !once(`SYG149:${n}`)) continue\n devReport('SYG149', {\n component: 'Collection',\n message: `Two elements on the page have view-transition-name '${n}': Collections with viewTransitionName=\"${st.viewTransitionClass}\" show the item with that id at the same time. Names must be unique when a View Transition starts, so the browser skips every transition while both are shown`,\n fix: `Give Collections that can show the same item at once different prefixes (viewTransitionName=\"${st.viewTransitionClass}\" and another), or name the item yourself with its own style`,\n data: {name: n, prefix: st.viewTransitionClass},\n })\n }\n}\n\n/** The hooks one app gets (installChecks publishes this on the bridge). */\nexport function nextHooks(_api: any): any {\n const core = bridge(), H = core.hooks\n const on = () => H.on()\n const modelOf = (f: Facade) => f.modelMap\n const wired = new WeakSet<object>()\n const wire = (iv: any, names: string[]) => {\n const f = fac(iv)\n if (wired.has(f)) return\n wired.add(f)\n H.onIntent(f, names)\n H.onModel(f, modelOf(f))\n }\n // D168: the views context tracking skipped, checked on a sample (each instance's first two\n // skips, then 1 in 16; at most CAP per tick)\n const skips = new WeakMap<object, number>()\n let budget = 0\n const log = actionHooks(recentActions, () => on())\n // G-419: the viewTransitionName prefixes this app's Collections use; G-460: per instance that\n // renders them, so the SYG149 walk stops once every one of them is disposed\n const vtp = new Map<any, Set<string>>()\n // G-527: one chain of SYG149 checks over the latest patches (G-501: it stops once every instance\n // that renders a named Collection is disposed, the app's dispose included)\n const vtCheck = vtChecker(() => vtp.size && on())\n return {\n onCreate(iv: any) {\n if (!on()) return\n log.onCreate(iv)\n const f = fac(iv)\n removedStatics(f)\n if (!iv.def.intent) wire(iv, [])\n },\n wrapSources(iv: any, so: any) {\n const f = fac(iv)\n f._so = so\n let out\n try { out = H.sourcesFor(f) } finally { f._so = undefined }\n if (!on() || typeof Proxy != 'function') return out\n // D173: CHILD.select('Name')\n const s = out || so\n return new Proxy(s, {\n get(t: any, k: any) {\n const v = t[k]\n if (k !== 'CHILD' || !v || typeof v.select != 'function') return v\n return {...v, select: (x: any, ...r: any[]) => { if (typeof x == 'string') removed(f, f.name, 'child-select-name', `CHILD.select('${x}')`); return v.select(x, ...r) }}\n },\n })\n },\n onIntent(iv: any, names: string[]) {\n wire(iv, names)\n },\n onRender(iv: any, vnode: any) {\n const f = fac(iv)\n H.onRender(f, vnode)\n if (on()) removedTags(f, vnode)\n },\n onReducer(iv: any, type: string, prev: any, next: any) {\n H.onReducer(fac(iv), type, prev, next, 'STATE')\n },\n onDispose(iv: any) {\n vtp.delete(iv)\n H.onDispose(fac(iv))\n },\n onAction(iv: any, a: any) { log.onAction(iv, a) },\n wrapHandler(iv: any, type: string, sink: string, fn: any) {\n let h = log.wrapHandler(iv, type, sink, fn) || fn\n // SYG222: the STATE reducers, wrapped (today the check rewrote the instance's model)\n if (on() && sink == 'STATE' && typeof fn == 'function') h = watchMutation(fac(iv), type, h)\n return h === fn ? undefined : h\n },\n onSink(iv: any, type: string | null, sink: string, v: any) {\n if (!on()) return\n const f = fac(iv), src = iv.sources[sink]\n try {\n if (sink == 'EVENTS') eventEmitted(f, v)\n if (src && src.__sygnalReplies === true) checkRequest(f, sink, v, Object.keys(f.modelMap))\n if (src && src.__sygnalStatic === 'resources') checkFetch(f, sink, v)\n } catch (_) { /* a check never breaks the app */ }\n },\n onElementCommand(iv: any, cmd: any) {\n if (!on()) return\n const f = fac(iv)\n for (const c of ([] as any[]).concat(cmd)) checkSentCommand(f, c)\n },\n onHostProps(owner: any, sel: string, props: any, data?: any) {\n if (!on() || (sel != 'collection' && sel != 'virtual-collection')) return\n const f = fac(owner)\n if (typeof props.of == 'string') removed(f, f.name, 'collection-of-name', `of=\"${props.of}\"`)\n // 4-H (D229): what went only to the removed wrapper div (VirtualCollection keeps its container)\n if (sel == 'collection') {\n const w = WRAPPER.filter(k => k == 'className' ? props.className != null : data?.[k] != null)\n if (w.length) removed(f, f.name, 'collection-wrapper', w.map(k => k == 'dataset' ? 'data-*' : k == 'hook' ? 'ref / hook' : k).join(', '))\n }\n try { checkCollection(f, {data: {props}}) } catch (_) { /* ignore */ }\n // G-419: SYG148 for a prefix that isn't an identifier; a valid one is checked for\n // duplicate names after each patch (SYG149). G-460: a falsy one names nothing (as the host)\n const p = props.viewTransitionName\n if (p && vtPrefix(f.name, p)) {\n let s = vtp.get(owner)\n if (!s) vtp.set(owner, s = new Set())\n s.add(p)\n }\n },\n onPatch(vnode: any) {\n if (!vtp.size || !on()) return\n const all = new Set<string>()\n for (const s of vtp.values()) for (const p of s) all.add(p)\n try { vtCheck(vnode, vtDuplicates(vnode, all)) } catch (_) { /* a check never breaks the app */ }\n },\n onDuplicateKey(owner: any, key: any) {\n if (!on()) return\n const name = owner.name\n if (!once(`SYG424:${name}:${String(key)}`)) return\n devReport('SYG424', {\n component: name,\n message: `A Collection in ${name} has more than one item with the id ${JSON.stringify(key) ?? String(key)} (duplicate ids); only the first of them renders, and their writes go to it`,\n fix: 'Give every item a unique id (or no id: an item without one is keyed by its index)',\n data: {id: key},\n })\n },\n onStateSeed(iv: any, slice: any, init: any) {\n if (!on() || !isPlainObject(init) || !isPlainObject(slice)) return\n // G-333: a key initialState sets to undefined is no data the slice lacks\n const missing = Object.keys(init).filter(k => init[k] !== undefined && !(k in slice))\n const name = iv.name\n if (!missing.length || !once(`SYG425:${name}:${missing.join(',')}`)) return\n const list = missing.map(k => `'${k}'`).join(', ')\n devReport('SYG425', {\n component: name,\n message: `${name} has isolatedState and is bound to a slice of its parent's state that already exists, so it keeps that slice instead of its initialState; the slice has no ${list}, which ${name}.initialState defines`,\n fix: `To start ${name} from its initialState instead, add resetState to the tag (<${name} state=\"...\" resetState />). To keep the parent's data, initialize ${list} in the parent's state`,\n data: {missing, slice: Object.keys(slice)},\n })\n },\n onContextSkip(iv: any, render: (c: any) => any, prev: any, next: any, keys: string[]) {\n if (!on() || !prev || !next) return\n const n = (skips.get(iv) || 0) + 1\n skips.set(iv, n)\n if ((n > 2 && n % SAMPLE) || budget >= CAP) return\n if (!budget++) queueMicrotask(() => { budget = 0 })\n let a, b, c\n try { a = render(prev); b = render(next); c = render(prev) } catch (_) { return }\n // G-327: a control render: a view whose output differs between two calls with the same\n // context (a render counter, Date.now(), Math.random(), generated ids) proves nothing\n if (same(a, b) || !same(a, c)) return\n const name = iv.name\n const changed = Object.keys(next).filter(k => next[k] !== prev[k])\n if (!once(`SYG423:${name}`)) return\n reportSafely('SYG423', {\n severity: DEV_CODE_SEVERITY.SYG423,\n component: name,\n message: `The context keys ${changed.map(k => `'${k}'`).join(', ')} changed and ${name}'s view was not re-rendered, because the view read none of them during its last call (it read: ${keys.length ? keys.map(k => `'${k}'`).join(', ') : 'nothing'}). Calling it with the new context renders something else, so the page shows a stale render`,\n fix: `Read context entries in the view itself (context.theme), not through a value kept from an earlier render or a function that runs later; Object.getOwnPropertyDescriptor and similar reflection aren't tracked`,\n data: {keysRead: keys, changed},\n })\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 * | SYG112 | reply action has no model entry | replies.ts |\n * | SYG630 | cached request that isn't idempotent (POST + cache) | fetch.ts |\n * | SYG631 | validate is not a Standard Schema | fetch.ts |\n * | SYG632 | invalidate matched nothing (info) | fetch.ts |\n * | SYG633 | abort names a lane its requests don't use | fetch.ts |\n * | SYG635 | cache: true / staleTime / prefetch without queryCache() | fetch.ts |\n * | SYG115 | unknown DOM event shorthand (DOM.key(...)) | shorthand.ts |\n * | SYG124 | component where a control or selector is expected | controls.ts |\n * | SYG140 | widget emitted an event it doesn't declare | widgets.ts |\n * | SYG142 | widget command not declared (also a reserved name) | elementCommands.ts, widgets.ts |\n * | SYG143 | widget tag used as a selector | widgets.ts |\n * | SYG144 | declared widget event the host also fires (info) | widgets.ts |\n * | SYG660 | widget mount / update / unmount threw (660/661/662) | widgets.ts |\n * | SYG430 | VirtualCollection: no bounded height; SYG431 items without ids; SYG432 item not one element; SYG433 scroll target not in the list; SYG434 bad estimateSize / overscan | virtual.ts |\n * | SYG125 | control given component statics / bad spec vnode() | controls.ts |\n * | SYG127 | behavior key in initialState / unresolvable uses entry | behaviors.ts |\n * | SYG230 | form: field name not in values; SYG231 not a Standard Schema; SYG232 submit dropped (info); SYG233 value missing from the schema output | forms.ts |\n * | SYG234 | form submit action has no model entry; SYG235 check names an unknown field / sets reply fields; SYG236 rows without an id | forms.ts |\n * | SYG145 | sortable: item without its id attribute; SYG146 item / handle selector matches nothing; SYG147 from is not an array | sortable.ts |\n * | SYG116 | EVENTS value with no string type (a function) | events.ts |\n * | SYG130 | href() names no route / leaves out a param | router.ts |\n * | SYG131 | route params the pattern doesn't use | router.ts |\n * | SYG132 | declaration static never sent: a root without initialState | router.ts |\n * | SYG133 | SPA router inside a Vike app | router.ts |\n * | SYG422 | timer spec makeTimerDriver() can't run | timers.ts |\n * | SYG643 | timers/connections/resources/browser with no driver | timers.ts |\n * | SYG663 | browser entry / BROWSER command that can't run | browserSources.ts |\n * | SYG664 | browser source the driver wasn't made with | browserSources.ts |\n * | SYG665 | browser source failed with no error action | browserSources.ts |\n * | SYG668 | intersection / resize with no element to observe | browserSources.ts |\n * | SYG673 | malformed chat stream event (makeChatDriver) | chat.ts |\n * | SYG675 | tool sent non-strict under strict (L-2 transports, info)| chat.ts |\n * | SYG677 | chat request sent from outside a component | chat.ts |\n * | SYG238 | a root with a model but no initialState: renders nothing | state.ts |\n * | SYG223 | persist pick/omit key not in initialState | persist.ts |\n * | SYG224 | persist on a component that isn't the root | persist.ts |\n * | SYG645 | viewTransitions without makeViewTransitionDOMDriver(), or not an array | viewTransitions.ts |\n * | SYG201 | STATE reducer dropped keys | state.ts |\n * | SYG202 | STATE reducer returned undefined | state.ts |\n * | SYG221 | set() called with a string | state.ts |\n * | SYG222 | same object returned after an in-place mutation | 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 * | SYG421 | invalid data (dataset) key in a view | dataset.ts |\n * | SYG612 | a form 6.0 removed (also SYG501/504 statically) | next.ts |\n * | SYG502 | retired in 6.0 (never reported; GS-4) | — |\n * | SYG508 | strict: select()/errors() round trip on a reply source | replies.ts |\n * | — | D152: shared statics frozen (initialState deep) | statics.ts |\n * | — | inspect(): the runtime app graph (2B) | inspect.ts |\n *\n * SYG112, SYG130-133 (PLAN-3), SYG115/116/221/421 (G-143) SYG124/125 (PLAN-4 CT-1) and SYG127 (GS-1) are dev-entry-only codes: their severities live in\n * DEV_CODE_SEVERITY (codes.ts), registered by ./shared, not in the main bundle.\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 {shorthandCheck} from './shorthand'\nimport {controlsCheck, installControlHooks} from './controls'\nimport {elementCommandsCheck, installElementCommandHooks} from './elementCommands'\nimport {installWidgetHooks} from './widgets'\nimport {installVirtualHooks} from './virtual'\nimport {behaviorsCheck} from './behaviors'\nimport {formsCheck, installFormHooks} from './forms'\nimport {installSortableHooks} from './sortable'\nimport {datasetCheck} from './dataset'\nimport {strictCheck} from './strict'\nimport {repliesCheck} from './replies'\nimport {routerCheck, installRouterHooks} from './router'\nimport {fetchCheck} from './fetch'\nimport {timersCheck, installTimerHooks} from './timers'\nimport {installBrowserSourceHooks} from './browserSources'\nimport {installChatHooks} from './chat'\nimport {persistCheck} from './persist'\nimport {viewTransitionsCheck} from './viewTransitions'\nimport {staticsCheck} from './statics'\nimport {installRxjsHints} from './rxjsHints'\nimport {inspectCheck, installInspect} from './inspect'\nimport {nextHooks} from './next'\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 {InspectResource, InspectCacheEntry, InspectGraph, InspectComponent, InspectAction, InspectActionTrigger, InspectChild, InspectSelector, InspectControl, InspectDiagnostic, InspectRelatedLocation, InspectFix, InspectTextEdit, InspectOptions, InspectRecentAction} 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 shorthandCheck,\n controlsCheck,\n elementCommandsCheck,\n behaviorsCheck,\n formsCheck,\n datasetCheck,\n strictCheck,\n repliesCheck,\n routerCheck,\n fetchCheck,\n timersCheck,\n persistCheck,\n viewTransitionsCheck,\n staticsCheck,\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 uninstallRouter = installRouterHooks()\n const uninstallControls = installControlHooks()\n const uninstallTimers = installTimerHooks()\n const uninstallBrowser = installBrowserSourceHooks()\n const uninstallChat = installChatHooks()\n const uninstallElementCommands = installElementCommandHooks()\n const uninstallWidgets = installWidgetHooks()\n const uninstallVirtual = installVirtualHooks()\n const uninstallForms = installFormHooks()\n const uninstallSortable = installSortableHooks()\n // PLAN-4.6 R4: the core reads its hooks from the bridge once per app (checks/next.ts)\n ;(core.layers ||= new Set()).add(nextHooks)\n const uninstall = () => {\n core.layers?.delete(nextHooks)\n unregister.forEach(fn => fn())\n uninstallHints()\n uninstallInspect()\n uninstallRouter()\n uninstallControls()\n uninstallTimers()\n uninstallBrowser()\n uninstallChat()\n uninstallElementCommands()\n uninstallWidgets()\n uninstallVirtual()\n uninstallForms()\n uninstallSortable()\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","distance","WRAPPED","selected","RESERVED","describe","isControl","STATICS","wrapped","checkedDOM","keyOf","what","brief","recentActions","checkFetch"],"mappings":"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IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,MAAM;;;AAGd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;;;AAGd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;;;AAGd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MA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"}