@alloy-js/core 0.23.0-dev.8 → 0.23.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.
- package/CHANGELOG.md +34 -0
- package/api-extractor.json +1 -8
- package/api-extractor.testing.json +19 -0
- package/dist/dev/src/binder.js +595 -0
- package/dist/dev/src/binder.js.map +1 -0
- package/dist/dev/src/code.js +181 -0
- package/dist/dev/src/code.js.map +1 -0
- package/dist/dev/src/components/AccessExpression.js +230 -0
- package/dist/dev/src/components/AccessExpression.js.map +1 -0
- package/dist/dev/src/components/AccessExpression.test.js +237 -0
- package/dist/dev/src/components/AccessExpression.test.js.map +1 -0
- package/dist/dev/src/components/AppendFile.js +246 -0
- package/dist/dev/src/components/AppendFile.js.map +1 -0
- package/dist/dev/src/components/Block.js +78 -0
- package/dist/dev/src/components/Block.js.map +1 -0
- package/dist/dev/src/components/CopyFile.js +16 -0
- package/dist/dev/src/components/CopyFile.js.map +1 -0
- package/dist/dev/src/components/Declaration.js +70 -0
- package/dist/dev/src/components/Declaration.js.map +1 -0
- package/dist/dev/src/components/For.js +40 -0
- package/dist/dev/src/components/For.js.map +1 -0
- package/dist/dev/src/components/Indent.js +37 -0
- package/dist/dev/src/components/Indent.js.map +1 -0
- package/dist/dev/src/components/List.js +29 -0
- package/dist/dev/src/components/List.js.map +1 -0
- package/dist/dev/src/components/MemberDeclaration.js +70 -0
- package/dist/dev/src/components/MemberDeclaration.js.map +1 -0
- package/dist/dev/src/components/MemberName.js +18 -0
- package/dist/dev/src/components/MemberName.js.map +1 -0
- package/dist/dev/src/components/MemberScope.js +62 -0
- package/dist/dev/src/components/MemberScope.js.map +1 -0
- package/dist/dev/src/components/Name.js +11 -0
- package/dist/dev/src/components/Name.js.map +1 -0
- package/dist/dev/src/components/Output.js +72 -0
- package/dist/dev/src/components/Output.js.map +1 -0
- package/dist/dev/src/components/Prose.js +32 -0
- package/dist/dev/src/components/Prose.js.map +1 -0
- package/dist/dev/src/components/ReferenceOrContent.js +12 -0
- package/dist/dev/src/components/ReferenceOrContent.js.map +1 -0
- package/dist/dev/src/components/Scope.js +56 -0
- package/dist/dev/src/components/Scope.js.map +1 -0
- package/dist/dev/src/components/Show.js +4 -0
- package/dist/dev/src/components/Show.js.map +1 -0
- package/dist/dev/src/components/SourceDirectory.js +41 -0
- package/dist/dev/src/components/SourceDirectory.js.map +1 -0
- package/dist/dev/src/components/SourceFile.js +52 -0
- package/dist/dev/src/components/SourceFile.js.map +1 -0
- package/dist/dev/src/components/StatementList.js +20 -0
- package/dist/dev/src/components/StatementList.js.map +1 -0
- package/dist/dev/src/components/Switch.js +42 -0
- package/dist/dev/src/components/Switch.js.map +1 -0
- package/dist/dev/src/components/TemplateFile.js +153 -0
- package/dist/dev/src/components/TemplateFile.js.map +1 -0
- package/dist/dev/src/components/UpdateFile.js +71 -0
- package/dist/dev/src/components/UpdateFile.js.map +1 -0
- package/dist/dev/src/components/Wrap.js +18 -0
- package/dist/dev/src/components/Wrap.js.map +1 -0
- package/dist/dev/src/components/index.js +25 -0
- package/dist/dev/src/components/index.js.map +1 -0
- package/dist/dev/src/components/stc/index.js +27 -0
- package/dist/dev/src/components/stc/index.js.map +1 -0
- package/dist/dev/src/components/stc/sti.js +10 -0
- package/dist/dev/src/components/stc/sti.js.map +1 -0
- package/dist/dev/src/content-slot.js +78 -0
- package/dist/dev/src/content-slot.js.map +1 -0
- package/dist/dev/src/content-slot.test.js +89 -0
- package/dist/dev/src/content-slot.test.js.map +1 -0
- package/dist/dev/src/context/assignment.js +46 -0
- package/dist/dev/src/context/assignment.js.map +1 -0
- package/dist/dev/src/context/binder.js +17 -0
- package/dist/dev/src/context/binder.js.map +1 -0
- package/dist/dev/src/context/declaration.js +3 -0
- package/dist/dev/src/context/declaration.js.map +1 -0
- package/dist/dev/src/context/format-options.js +45 -0
- package/dist/dev/src/context/format-options.js.map +1 -0
- package/dist/dev/src/context/index.js +11 -0
- package/dist/dev/src/context/index.js.map +1 -0
- package/dist/dev/src/context/member-declaration.js +11 -0
- package/dist/dev/src/context/member-declaration.js.map +1 -0
- package/dist/dev/src/context/member-scope.js +12 -0
- package/dist/dev/src/context/member-scope.js.map +1 -0
- package/dist/dev/src/context/name-policy.js +13 -0
- package/dist/dev/src/context/name-policy.js.map +1 -0
- package/dist/dev/src/context/scope.js +18 -0
- package/dist/dev/src/context/scope.js.map +1 -0
- package/dist/dev/src/context/source-directory.js +12 -0
- package/dist/dev/src/context/source-directory.js.map +1 -0
- package/dist/dev/src/context/source-file.js +3 -0
- package/dist/dev/src/context/source-file.js.map +1 -0
- package/dist/dev/src/context.js +47 -0
- package/dist/dev/src/context.js.map +1 -0
- package/dist/dev/src/debug/cli.js +164 -0
- package/dist/dev/src/debug/cli.js.map +1 -0
- package/dist/dev/src/debug/diagnostics-broadcast.test.js +100 -0
- package/dist/dev/src/debug/diagnostics-broadcast.test.js.map +1 -0
- package/dist/dev/src/debug/diagnostics.test.js +50 -0
- package/dist/dev/src/debug/diagnostics.test.js.map +1 -0
- package/dist/dev/src/debug/effects.js +293 -0
- package/dist/dev/src/debug/effects.js.map +1 -0
- package/dist/dev/src/debug/effects.test.js +280 -0
- package/dist/dev/src/debug/effects.test.js.map +1 -0
- package/dist/dev/src/debug/files.js +29 -0
- package/dist/dev/src/debug/files.js.map +1 -0
- package/dist/dev/src/debug/files.test.js +78 -0
- package/dist/dev/src/debug/files.test.js.map +1 -0
- package/dist/dev/src/debug/index.js +71 -0
- package/dist/dev/src/debug/index.js.map +1 -0
- package/dist/dev/src/debug/message-format.test.js +836 -0
- package/dist/dev/src/debug/message-format.test.js.map +1 -0
- package/dist/dev/src/debug/render-tree-orphans.test.js +365 -0
- package/dist/dev/src/debug/render-tree-orphans.test.js.map +1 -0
- package/dist/dev/src/debug/render.js +479 -0
- package/dist/dev/src/debug/render.js.map +1 -0
- package/dist/dev/src/debug/render.test.js +363 -0
- package/dist/dev/src/debug/render.test.js.map +1 -0
- package/dist/dev/src/debug/serialize.js +70 -0
- package/dist/dev/src/debug/serialize.js.map +1 -0
- package/dist/dev/src/debug/source-map.browser.js +24 -0
- package/dist/dev/src/debug/source-map.browser.js.map +1 -0
- package/dist/dev/src/debug/source-map.js +111 -0
- package/dist/dev/src/debug/source-map.js.map +1 -0
- package/dist/dev/src/debug/symbols.js +196 -0
- package/dist/dev/src/debug/symbols.js.map +1 -0
- package/dist/dev/src/debug/symbols.test.js +93 -0
- package/dist/dev/src/debug/symbols.test.js.map +1 -0
- package/dist/dev/src/debug/trace-writer.js +674 -0
- package/dist/dev/src/debug/trace-writer.js.map +1 -0
- package/dist/dev/src/debug/trace.js +460 -0
- package/dist/dev/src/debug/trace.js.map +1 -0
- package/dist/dev/src/devtools/devtools-protocol.js +2 -0
- package/dist/dev/src/devtools/devtools-protocol.js.map +1 -0
- package/dist/dev/src/devtools/devtools-server.browser.js +36 -0
- package/dist/dev/src/devtools/devtools-server.browser.js.map +1 -0
- package/dist/dev/src/devtools/devtools-server.js +458 -0
- package/dist/dev/src/devtools/devtools-server.js.map +1 -0
- package/dist/dev/src/devtools/devtools-transport.js +114 -0
- package/dist/dev/src/devtools/devtools-transport.js.map +1 -0
- package/dist/dev/src/devtools-entry.browser.js +2 -0
- package/dist/dev/src/devtools-entry.browser.js.map +1 -0
- package/dist/dev/src/devtools-entry.js +2 -0
- package/dist/dev/src/devtools-entry.js.map +1 -0
- package/dist/dev/src/diagnostics.js +97 -0
- package/dist/dev/src/diagnostics.js.map +1 -0
- package/dist/dev/src/host/alloy-host.browser.js +32 -0
- package/dist/dev/src/host/alloy-host.browser.js.map +1 -0
- package/dist/dev/src/host/alloy-host.js +144 -0
- package/dist/dev/src/host/alloy-host.js.map +1 -0
- package/dist/dev/src/host/interface.js +2 -0
- package/dist/dev/src/host/interface.js.map +1 -0
- package/dist/dev/src/host/node-host.browser.js +21 -0
- package/dist/dev/src/host/node-host.browser.js.map +1 -0
- package/dist/dev/src/host/node-host.js +20 -0
- package/dist/dev/src/host/node-host.js.map +1 -0
- package/dist/dev/src/index.browser.js +3 -0
- package/dist/dev/src/index.browser.js.map +1 -0
- package/dist/dev/src/index.js +27 -0
- package/dist/dev/src/index.js.map +1 -0
- package/dist/dev/src/inspect.browser.js +6 -0
- package/dist/dev/src/inspect.browser.js.map +1 -0
- package/dist/dev/src/inspect.js +2 -0
- package/dist/dev/src/inspect.js.map +1 -0
- package/dist/dev/src/jsx-runtime.js +17 -0
- package/dist/dev/src/jsx-runtime.js.map +1 -0
- package/dist/dev/src/library-symbol-reference.js +59 -0
- package/dist/dev/src/library-symbol-reference.js.map +1 -0
- package/dist/dev/src/name-policy.js +51 -0
- package/dist/dev/src/name-policy.js.map +1 -0
- package/dist/dev/src/pretty-string/pretty-string.js +100 -0
- package/dist/dev/src/pretty-string/pretty-string.js.map +1 -0
- package/dist/dev/src/pretty-string/pretty-string.test.js +38 -0
- package/dist/dev/src/pretty-string/pretty-string.test.js.map +1 -0
- package/dist/dev/src/print-hook.js +10 -0
- package/dist/dev/src/print-hook.js.map +1 -0
- package/dist/dev/src/props-combinators.js +109 -0
- package/dist/dev/src/props-combinators.js.map +1 -0
- package/dist/dev/src/reactive-union-set.js +213 -0
- package/dist/dev/src/reactive-union-set.js.map +1 -0
- package/dist/dev/src/reactivity.js +452 -0
- package/dist/dev/src/reactivity.js.map +1 -0
- package/dist/dev/src/refkey.js +167 -0
- package/dist/dev/src/refkey.js.map +1 -0
- package/dist/dev/src/render-stack.js +252 -0
- package/dist/dev/src/render-stack.js.map +1 -0
- package/dist/dev/src/render.js +872 -0
- package/dist/dev/src/render.js.map +1 -0
- package/dist/dev/src/resource.js +124 -0
- package/dist/dev/src/resource.js.map +1 -0
- package/dist/dev/src/runtime/component.js +41 -0
- package/dist/dev/src/runtime/component.js.map +1 -0
- package/dist/dev/src/runtime/intrinsic.js +12 -0
- package/dist/dev/src/runtime/intrinsic.js.map +1 -0
- package/dist/dev/src/scheduler.js +217 -0
- package/dist/dev/src/scheduler.js.map +1 -0
- package/dist/dev/src/stc.js +40 -0
- package/dist/dev/src/stc.js.map +1 -0
- package/dist/dev/src/sti.js +31 -0
- package/dist/dev/src/sti.js.map +1 -0
- package/dist/dev/src/symbols/basic-scope.js +21 -0
- package/dist/dev/src/symbols/basic-scope.js.map +1 -0
- package/dist/dev/src/symbols/basic-symbol.js +34 -0
- package/dist/dev/src/symbols/basic-symbol.js.map +1 -0
- package/dist/dev/src/symbols/decl.js +26 -0
- package/dist/dev/src/symbols/decl.js.map +1 -0
- package/dist/dev/src/symbols/index.js +10 -0
- package/dist/dev/src/symbols/index.js.map +1 -0
- package/dist/dev/src/symbols/output-scope.js +235 -0
- package/dist/dev/src/symbols/output-scope.js.map +1 -0
- package/dist/dev/src/symbols/output-space.js +51 -0
- package/dist/dev/src/symbols/output-space.js.map +1 -0
- package/dist/dev/src/symbols/output-symbol.js +644 -0
- package/dist/dev/src/symbols/output-symbol.js.map +1 -0
- package/dist/dev/src/symbols/symbol-flow.js +106 -0
- package/dist/dev/src/symbols/symbol-flow.js.map +1 -0
- package/dist/dev/src/symbols/symbol-slot.js +75 -0
- package/dist/dev/src/symbols/symbol-slot.js.map +1 -0
- package/dist/dev/src/symbols/symbol-slot.test.js +68 -0
- package/dist/dev/src/symbols/symbol-slot.test.js.map +1 -0
- package/dist/dev/src/symbols/symbol-table.js +103 -0
- package/dist/dev/src/symbols/symbol-table.js.map +1 -0
- package/dist/dev/src/tap.js +109 -0
- package/dist/dev/src/tap.js.map +1 -0
- package/dist/dev/src/trace.js +2 -0
- package/dist/dev/src/trace.js.map +1 -0
- package/dist/dev/src/tracer.js +180 -0
- package/dist/dev/src/tracer.js.map +1 -0
- package/dist/dev/src/utils.js +487 -0
- package/dist/dev/src/utils.js.map +1 -0
- package/dist/dev/src/write-output.js +48 -0
- package/dist/dev/src/write-output.js.map +1 -0
- package/dist/dev/test/browser-build.test.js +85 -0
- package/dist/dev/test/browser-build.test.js.map +1 -0
- package/dist/dev/test/children.test.js +44 -0
- package/dist/dev/test/children.test.js.map +1 -0
- package/dist/dev/test/components/append-file.test.js +394 -0
- package/dist/dev/test/components/append-file.test.js.map +1 -0
- package/dist/dev/test/components/block.test.js +83 -0
- package/dist/dev/test/components/block.test.js.map +1 -0
- package/dist/dev/test/components/copy-file.test.js +119 -0
- package/dist/dev/test/components/copy-file.test.js.map +1 -0
- package/dist/dev/test/components/declaration.test.js +40 -0
- package/dist/dev/test/components/declaration.test.js.map +1 -0
- package/dist/dev/test/components/list.test.js +250 -0
- package/dist/dev/test/components/list.test.js.map +1 -0
- package/dist/dev/test/components/prose.test.js +42 -0
- package/dist/dev/test/components/prose.test.js.map +1 -0
- package/dist/dev/test/components/reference-or-content.test.js +246 -0
- package/dist/dev/test/components/reference-or-content.test.js.map +1 -0
- package/dist/dev/test/components/source-file.test.js +271 -0
- package/dist/dev/test/components/source-file.test.js.map +1 -0
- package/dist/dev/test/components/template-file.test.js +200 -0
- package/dist/dev/test/components/template-file.test.js.map +1 -0
- package/dist/dev/test/components/update-file.test.js +210 -0
- package/dist/dev/test/components/update-file.test.js.map +1 -0
- package/dist/dev/test/components/wrap.test.js +48 -0
- package/dist/dev/test/components/wrap.test.js.map +1 -0
- package/dist/dev/test/control-flow/for.test.js +318 -0
- package/dist/dev/test/control-flow/for.test.js.map +1 -0
- package/dist/dev/test/control-flow/match.test.js +112 -0
- package/dist/dev/test/control-flow/match.test.js.map +1 -0
- package/dist/dev/test/control-flow/show.test.js +38 -0
- package/dist/dev/test/control-flow/show.test.js.map +1 -0
- package/dist/dev/test/lazy-isempty.test.js +121 -0
- package/dist/dev/test/lazy-isempty.test.js.map +1 -0
- package/dist/dev/test/name-policy.test.js +28 -0
- package/dist/dev/test/name-policy.test.js.map +1 -0
- package/dist/dev/test/props-with-defaults.test.js +94 -0
- package/dist/dev/test/props-with-defaults.test.js.map +1 -0
- package/dist/dev/test/reactive-union-set-disposers.test.js +98 -0
- package/dist/dev/test/reactive-union-set-disposers.test.js.map +1 -0
- package/dist/dev/test/reactive-union-set.test.js +171 -0
- package/dist/dev/test/reactive-union-set.test.js.map +1 -0
- package/dist/dev/test/reactivity/circular-reactives.test.js +62 -0
- package/dist/dev/test/reactivity/circular-reactives.test.js.map +1 -0
- package/dist/dev/test/reactivity/cleanup.test.js +96 -0
- package/dist/dev/test/reactivity/cleanup.test.js.map +1 -0
- package/dist/dev/test/reactivity/memo.test.js +17 -0
- package/dist/dev/test/reactivity/memo.test.js.map +1 -0
- package/dist/dev/test/reactivity/ref-rendering.test.js +38 -0
- package/dist/dev/test/reactivity/ref-rendering.test.js.map +1 -0
- package/dist/dev/test/reactivity/shallow-reactive.test.js +56 -0
- package/dist/dev/test/reactivity/shallow-reactive.test.js.map +1 -0
- package/dist/dev/test/reactivity/test.test.js +74 -0
- package/dist/dev/test/reactivity/test.test.js.map +1 -0
- package/dist/dev/test/reactivity/untrack.test.js +27 -0
- package/dist/dev/test/reactivity/untrack.test.js.map +1 -0
- package/dist/dev/test/refkey.test.js +36 -0
- package/dist/dev/test/refkey.test.js.map +1 -0
- package/dist/dev/test/rendering/basic.test.js +194 -0
- package/dist/dev/test/rendering/basic.test.js.map +1 -0
- package/dist/dev/test/rendering/code.test.js +64 -0
- package/dist/dev/test/rendering/code.test.js.map +1 -0
- package/dist/dev/test/rendering/formatting.test.js +797 -0
- package/dist/dev/test/rendering/formatting.test.js.map +1 -0
- package/dist/dev/test/rendering/indent.test.js +183 -0
- package/dist/dev/test/rendering/indent.test.js.map +1 -0
- package/dist/dev/test/rendering/memoization.test.js +37 -0
- package/dist/dev/test/rendering/memoization.test.js.map +1 -0
- package/dist/dev/test/rendering/print-render-stack.test.js +287 -0
- package/dist/dev/test/rendering/print-render-stack.test.js.map +1 -0
- package/dist/dev/test/rendering/refkeys.test.js +37 -0
- package/dist/dev/test/rendering/refkeys.test.js.map +1 -0
- package/dist/dev/test/scheduler-extended.test.js +96 -0
- package/dist/dev/test/scheduler-extended.test.js.map +1 -0
- package/dist/dev/test/scheduler.test.js +46 -0
- package/dist/dev/test/scheduler.test.js.map +1 -0
- package/dist/dev/test/split-props.test.js +78 -0
- package/dist/dev/test/split-props.test.js.map +1 -0
- package/dist/dev/test/stc.test.js +35 -0
- package/dist/dev/test/stc.test.js.map +1 -0
- package/dist/dev/test/symbols/deconflicted-name.test.js +120 -0
- package/dist/dev/test/symbols/deconflicted-name.test.js.map +1 -0
- package/dist/dev/test/symbols/output-scope.test.js +221 -0
- package/dist/dev/test/symbols/output-scope.test.js.map +1 -0
- package/dist/dev/test/symbols/output-symbol.test.js +202 -0
- package/dist/dev/test/symbols/output-symbol.test.js.map +1 -0
- package/dist/dev/test/symbols/resolution.test.js +487 -0
- package/dist/dev/test/symbols/resolution.test.js.map +1 -0
- package/dist/dev/test/symbols/symbol-table.test.js +15 -0
- package/dist/dev/test/symbols/symbol-table.test.js.map +1 -0
- package/dist/dev/test/symbols/utils.js +26 -0
- package/dist/dev/test/symbols/utils.js.map +1 -0
- package/dist/dev/test/utils.test.js +317 -0
- package/dist/dev/test/utils.test.js.map +1 -0
- package/dist/dev/testing/create-test-wrapper.js +130 -0
- package/dist/dev/testing/create-test-wrapper.js.map +1 -0
- package/dist/dev/testing/devtools-utils.js +162 -0
- package/dist/dev/testing/devtools-utils.js.map +1 -0
- package/dist/dev/testing/extend-expect.js +187 -0
- package/dist/dev/testing/extend-expect.js.map +1 -0
- package/dist/dev/testing/extend-expect.test.js +234 -0
- package/dist/dev/testing/extend-expect.test.js.map +1 -0
- package/dist/dev/testing/index.js +4 -0
- package/dist/dev/testing/index.js.map +1 -0
- package/dist/dev/testing/render.js +34 -0
- package/dist/dev/testing/render.js.map +1 -0
- package/dist/dev/testing/vitest.d.js +14 -0
- package/dist/dev/testing/vitest.d.js.map +1 -0
- package/dist/devtools/index.html +29 -17
- package/dist/src/binder.d.ts +107 -3
- package/dist/src/binder.d.ts.map +1 -1
- package/dist/src/binder.js +113 -1
- package/dist/src/binder.js.map +1 -1
- package/dist/src/components/AccessExpression.d.ts +78 -0
- package/dist/src/components/AccessExpression.d.ts.map +1 -0
- package/dist/src/components/AccessExpression.js +218 -0
- package/dist/src/components/AccessExpression.js.map +1 -0
- package/dist/src/components/AccessExpression.test.d.ts +2 -0
- package/dist/src/components/AccessExpression.test.d.ts.map +1 -0
- package/dist/src/components/AccessExpression.test.js +137 -0
- package/dist/src/components/AccessExpression.test.js.map +1 -0
- package/dist/src/components/Block.d.ts +12 -0
- package/dist/src/components/Block.d.ts.map +1 -1
- package/dist/src/components/Block.js +12 -0
- package/dist/src/components/Block.js.map +1 -1
- package/dist/src/components/For.d.ts.map +1 -1
- package/dist/src/components/For.js +1 -1
- package/dist/src/components/For.js.map +1 -1
- package/dist/src/components/List.d.ts +11 -1
- package/dist/src/components/List.d.ts.map +1 -1
- package/dist/src/components/List.js +1 -1
- package/dist/src/components/List.js.map +1 -1
- package/dist/src/components/MemberDeclaration.d.ts +6 -6
- package/dist/src/components/MemberDeclaration.js +6 -6
- package/dist/src/components/MemberName.d.ts +6 -0
- package/dist/src/components/MemberName.d.ts.map +1 -1
- package/dist/src/components/MemberName.js +7 -0
- package/dist/src/components/MemberName.js.map +1 -1
- package/dist/src/components/MemberScope.d.ts +5 -0
- package/dist/src/components/MemberScope.d.ts.map +1 -1
- package/dist/src/components/MemberScope.js +5 -0
- package/dist/src/components/MemberScope.js.map +1 -1
- package/dist/src/components/Output.d.ts +4 -2
- package/dist/src/components/Output.d.ts.map +1 -1
- package/dist/src/components/Output.js.map +1 -1
- package/dist/src/components/Prose.js +2 -2
- package/dist/src/components/Prose.js.map +1 -1
- package/dist/src/components/Scope.d.ts +6 -0
- package/dist/src/components/Scope.d.ts.map +1 -1
- package/dist/src/components/Scope.js +8 -0
- package/dist/src/components/Scope.js.map +1 -1
- package/dist/src/components/SourceDirectory.d.ts.map +1 -1
- package/dist/src/components/SourceDirectory.js +1 -2
- package/dist/src/components/SourceDirectory.js.map +1 -1
- package/dist/src/components/SourceFile.d.ts +22 -2
- package/dist/src/components/SourceFile.d.ts.map +1 -1
- package/dist/src/components/SourceFile.js.map +1 -1
- package/dist/src/components/Switch.d.ts.map +1 -1
- package/dist/src/components/Switch.js +1 -1
- package/dist/src/components/Switch.js.map +1 -1
- package/dist/src/components/index.d.ts +1 -0
- package/dist/src/components/index.d.ts.map +1 -1
- package/dist/src/components/index.js +1 -0
- package/dist/src/components/index.js.map +1 -1
- package/dist/src/content-slot.js +2 -2
- package/dist/src/content-slot.js.map +1 -1
- package/dist/src/context/binder.d.ts +4 -0
- package/dist/src/context/binder.d.ts.map +1 -1
- package/dist/src/context/binder.js +5 -0
- package/dist/src/context/binder.js.map +1 -1
- package/dist/src/context/format-options.d.ts +14 -1
- package/dist/src/context/format-options.d.ts.map +1 -1
- package/dist/src/context/format-options.js +14 -1
- package/dist/src/context/format-options.js.map +1 -1
- package/dist/src/context/scope.d.ts +4 -0
- package/dist/src/context/scope.d.ts.map +1 -1
- package/dist/src/context/scope.js +5 -0
- package/dist/src/context/scope.js.map +1 -1
- package/dist/src/context/source-directory.d.ts +9 -0
- package/dist/src/context/source-directory.d.ts.map +1 -1
- package/dist/src/context/source-directory.js +9 -0
- package/dist/src/context/source-directory.js.map +1 -1
- package/dist/src/context.js +2 -2
- package/dist/src/context.js.map +1 -1
- package/dist/src/debug/cli.d.ts.map +1 -1
- package/dist/src/debug/cli.js +3 -2
- package/dist/src/debug/cli.js.map +1 -1
- package/dist/src/debug/diagnostics-broadcast.test.d.ts +2 -0
- package/dist/src/debug/diagnostics-broadcast.test.d.ts.map +1 -0
- package/dist/src/debug/diagnostics-broadcast.test.js +100 -0
- package/dist/src/debug/diagnostics-broadcast.test.js.map +1 -0
- package/dist/src/debug/diagnostics.test.js +3 -2
- package/dist/src/debug/diagnostics.test.js.map +1 -1
- package/dist/src/debug/effects.d.ts +16 -4
- package/dist/src/debug/effects.d.ts.map +1 -1
- package/dist/src/debug/effects.js +119 -54
- package/dist/src/debug/effects.js.map +1 -1
- package/dist/src/debug/effects.test.js +206 -36
- package/dist/src/debug/effects.test.js.map +1 -1
- package/dist/src/debug/files.d.ts.map +1 -1
- package/dist/src/debug/files.js +7 -18
- package/dist/src/debug/files.js.map +1 -1
- package/dist/src/debug/files.test.js +13 -36
- package/dist/src/debug/files.test.js.map +1 -1
- package/dist/src/debug/index.d.ts +6 -3
- package/dist/src/debug/index.d.ts.map +1 -1
- package/dist/src/debug/index.js +6 -3
- package/dist/src/debug/index.js.map +1 -1
- package/dist/src/debug/message-format.test.d.ts +2 -0
- package/dist/src/debug/message-format.test.d.ts.map +1 -0
- package/dist/src/debug/message-format.test.js +700 -0
- package/dist/src/debug/message-format.test.js.map +1 -0
- package/dist/src/debug/render-tree-orphans.test.d.ts +2 -0
- package/dist/src/debug/render-tree-orphans.test.d.ts.map +1 -0
- package/dist/src/debug/render-tree-orphans.test.js +297 -0
- package/dist/src/debug/render-tree-orphans.test.js.map +1 -0
- package/dist/src/debug/render.d.ts.map +1 -1
- package/dist/src/debug/render.js +91 -131
- package/dist/src/debug/render.js.map +1 -1
- package/dist/src/debug/render.test.js +91 -128
- package/dist/src/debug/render.test.js.map +1 -1
- package/dist/src/debug/source-map.browser.d.ts +16 -0
- package/dist/src/debug/source-map.browser.d.ts.map +1 -0
- package/dist/src/debug/source-map.browser.js +24 -0
- package/dist/src/debug/source-map.browser.js.map +1 -0
- package/dist/src/debug/source-map.d.ts +22 -0
- package/dist/src/debug/source-map.d.ts.map +1 -0
- package/dist/src/debug/source-map.js +111 -0
- package/dist/src/debug/source-map.js.map +1 -0
- package/dist/src/debug/symbols.d.ts +7 -0
- package/dist/src/debug/symbols.d.ts.map +1 -1
- package/dist/src/debug/symbols.js +46 -14
- package/dist/src/debug/symbols.js.map +1 -1
- package/dist/src/debug/symbols.test.js +15 -26
- package/dist/src/debug/symbols.test.js.map +1 -1
- package/dist/src/debug/trace-writer.d.ts +56 -0
- package/dist/src/debug/trace-writer.d.ts.map +1 -0
- package/dist/src/debug/trace-writer.js +674 -0
- package/dist/src/debug/trace-writer.js.map +1 -0
- package/dist/src/debug/trace.d.ts +10 -10
- package/dist/src/debug/trace.d.ts.map +1 -1
- package/dist/src/debug/trace.js +41 -24
- package/dist/src/debug/trace.js.map +1 -1
- package/dist/src/devtools/devtools-protocol.d.ts +318 -161
- package/dist/src/devtools/devtools-protocol.d.ts.map +1 -1
- package/dist/src/devtools/devtools-server.browser.d.ts +1 -5
- package/dist/src/devtools/devtools-server.browser.d.ts.map +1 -1
- package/dist/src/devtools/devtools-server.browser.js +3 -3
- package/dist/src/devtools/devtools-server.browser.js.map +1 -1
- package/dist/src/devtools/devtools-server.d.ts +5 -6
- package/dist/src/devtools/devtools-server.d.ts.map +1 -1
- package/dist/src/devtools/devtools-server.js +227 -25
- package/dist/src/devtools/devtools-server.js.map +1 -1
- package/dist/src/devtools/devtools-transport.d.ts +2 -2
- package/dist/src/devtools/devtools-transport.d.ts.map +1 -1
- package/dist/src/devtools/devtools-transport.js +2 -2
- package/dist/src/devtools/devtools-transport.js.map +1 -1
- package/dist/src/devtools-entry.browser.d.ts +1 -1
- package/dist/src/devtools-entry.browser.d.ts.map +1 -1
- package/dist/src/devtools-entry.browser.js.map +1 -1
- package/dist/src/devtools-entry.d.ts +1 -1
- package/dist/src/devtools-entry.d.ts.map +1 -1
- package/dist/src/devtools-entry.js.map +1 -1
- package/dist/src/diagnostics.d.ts +1 -1
- package/dist/src/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics.js +27 -19
- package/dist/src/diagnostics.js.map +1 -1
- package/dist/src/host/node-host.browser.d.ts +11 -0
- package/dist/src/host/node-host.browser.d.ts.map +1 -0
- package/dist/src/host/node-host.browser.js +21 -0
- package/dist/src/host/node-host.browser.js.map +1 -0
- package/dist/src/host/node-host.d.ts +11 -0
- package/dist/src/host/node-host.d.ts.map +1 -0
- package/dist/src/host/node-host.js +20 -0
- package/dist/src/host/node-host.js.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/library-symbol-reference.d.ts +52 -0
- package/dist/src/library-symbol-reference.d.ts.map +1 -1
- package/dist/src/library-symbol-reference.js +54 -0
- package/dist/src/library-symbol-reference.js.map +1 -1
- package/dist/src/name-policy.d.ts +30 -3
- package/dist/src/name-policy.d.ts.map +1 -1
- package/dist/src/name-policy.js +27 -0
- package/dist/src/name-policy.js.map +1 -1
- package/dist/src/reactive-union-set.d.ts.map +1 -1
- package/dist/src/reactive-union-set.js +13 -3
- package/dist/src/reactive-union-set.js.map +1 -1
- package/dist/src/reactivity.d.ts +60 -6
- package/dist/src/reactivity.d.ts.map +1 -1
- package/dist/src/reactivity.js +302 -155
- package/dist/src/reactivity.js.map +1 -1
- package/dist/src/render-stack.d.ts +1 -0
- package/dist/src/render-stack.d.ts.map +1 -1
- package/dist/src/render-stack.js +8 -3
- package/dist/src/render-stack.js.map +1 -1
- package/dist/src/render.d.ts +2 -0
- package/dist/src/render.d.ts.map +1 -1
- package/dist/src/render.js +90 -34
- package/dist/src/render.js.map +1 -1
- package/dist/src/scheduler.d.ts +10 -0
- package/dist/src/scheduler.d.ts.map +1 -1
- package/dist/src/scheduler.js +115 -21
- package/dist/src/scheduler.js.map +1 -1
- package/dist/src/symbols/output-scope.d.ts +33 -1
- package/dist/src/symbols/output-scope.d.ts.map +1 -1
- package/dist/src/symbols/output-scope.js +36 -3
- package/dist/src/symbols/output-scope.js.map +1 -1
- package/dist/src/symbols/output-space.d.ts +12 -0
- package/dist/src/symbols/output-space.d.ts.map +1 -1
- package/dist/src/symbols/output-space.js +15 -0
- package/dist/src/symbols/output-space.js.map +1 -1
- package/dist/src/symbols/output-symbol.d.ts +128 -12
- package/dist/src/symbols/output-symbol.d.ts.map +1 -1
- package/dist/src/symbols/output-symbol.js +160 -20
- package/dist/src/symbols/output-symbol.js.map +1 -1
- package/dist/src/symbols/symbol-flow.d.ts.map +1 -1
- package/dist/src/symbols/symbol-flow.js +2 -2
- package/dist/src/symbols/symbol-flow.js.map +1 -1
- package/dist/src/symbols/symbol-slot.d.ts.map +1 -1
- package/dist/src/symbols/symbol-slot.js +7 -0
- package/dist/src/symbols/symbol-slot.js.map +1 -1
- package/dist/src/symbols/symbol-slot.test.js +18 -1
- package/dist/src/symbols/symbol-slot.test.js.map +1 -1
- package/dist/src/symbols/symbol-table.d.ts.map +1 -1
- package/dist/src/symbols/symbol-table.js +13 -3
- package/dist/src/symbols/symbol-table.js.map +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +12 -9
- package/dist/src/utils.js.map +1 -1
- package/dist/src/write-output.d.ts.map +1 -1
- package/dist/src/write-output.js +6 -5
- package/dist/src/write-output.js.map +1 -1
- package/dist/test/browser-build.test.js +66 -67
- package/dist/test/browser-build.test.js.map +1 -1
- package/dist/test/lazy-isempty.test.d.ts +2 -0
- package/dist/test/lazy-isempty.test.d.ts.map +1 -0
- package/dist/test/lazy-isempty.test.js +89 -0
- package/dist/test/lazy-isempty.test.js.map +1 -0
- package/dist/test/reactive-union-set-disposers.test.d.ts +2 -0
- package/dist/test/reactive-union-set-disposers.test.d.ts.map +1 -0
- package/dist/test/reactive-union-set-disposers.test.js +98 -0
- package/dist/test/reactive-union-set-disposers.test.js.map +1 -0
- package/dist/test/reactivity/shallow-reactive.test.d.ts +2 -0
- package/dist/test/reactivity/shallow-reactive.test.d.ts.map +1 -0
- package/dist/test/reactivity/shallow-reactive.test.js +56 -0
- package/dist/test/reactivity/shallow-reactive.test.js.map +1 -0
- package/dist/test/scheduler-extended.test.d.ts +2 -0
- package/dist/test/scheduler-extended.test.d.ts.map +1 -0
- package/dist/test/scheduler-extended.test.js +96 -0
- package/dist/test/scheduler-extended.test.js.map +1 -0
- package/dist/test/scheduler.test.d.ts +2 -0
- package/dist/test/scheduler.test.d.ts.map +1 -0
- package/dist/test/scheduler.test.js +46 -0
- package/dist/test/scheduler.test.js.map +1 -0
- package/dist/test/symbols/deconflicted-name.test.d.ts +2 -0
- package/dist/test/symbols/deconflicted-name.test.d.ts.map +1 -0
- package/dist/test/symbols/deconflicted-name.test.js +120 -0
- package/dist/test/symbols/deconflicted-name.test.js.map +1 -0
- package/dist/test/symbols/output-scope.test.js +41 -0
- package/dist/test/symbols/output-scope.test.js.map +1 -1
- package/dist/testing/create-test-wrapper.d.ts +75 -2
- package/dist/testing/create-test-wrapper.d.ts.map +1 -1
- package/dist/testing/create-test-wrapper.js +55 -1
- package/dist/testing/create-test-wrapper.js.map +1 -1
- package/dist/testing/devtools-utils.d.ts +12 -3
- package/dist/testing/devtools-utils.d.ts.map +1 -1
- package/dist/testing/devtools-utils.js +26 -4
- package/dist/testing/devtools-utils.js.map +1 -1
- package/dist/testing/extend-expect.d.ts +26 -0
- package/dist/testing/extend-expect.d.ts.map +1 -1
- package/dist/testing/extend-expect.js +20 -0
- package/dist/testing/extend-expect.js.map +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/render.d.ts +9 -0
- package/dist/testing/render.d.ts.map +1 -1
- package/dist/testing/render.js +11 -0
- package/dist/testing/render.js.map +1 -1
- package/dist/testing/vitest.d.js +12 -0
- package/dist/testing/vitest.d.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/api/components/AppendRegion.md +83 -0
- package/docs/api/components/Block.md +49 -0
- package/docs/api/components/CopyFile.md +26 -0
- package/docs/api/components/Declaration.md +85 -0
- package/docs/api/components/For.md +91 -0
- package/docs/api/components/Indent.md +40 -0
- package/docs/api/components/List.md +68 -0
- package/docs/api/components/MemberDeclaration.md +89 -0
- package/docs/api/components/MemberName.md +21 -0
- package/docs/api/components/MemberScope.md +81 -0
- package/docs/api/components/Name.md +19 -0
- package/docs/api/components/Output.md +62 -0
- package/docs/api/components/Prose.md +29 -0
- package/docs/api/components/ReferenceOrContent.md +28 -0
- package/docs/api/components/Scope.md +83 -0
- package/docs/api/components/Show.md +32 -0
- package/docs/api/components/SourceDirectory.md +28 -0
- package/docs/api/components/SourceFile.md +60 -0
- package/docs/api/components/StatementList.md +29 -0
- package/docs/api/components/Switch.md +42 -0
- package/docs/api/components/TemplateFile.md +71 -0
- package/docs/api/components/TemplateVariable.md +57 -0
- package/docs/api/components/UpdateFile.md +56 -0
- package/docs/api/components/Wrap.md +40 -0
- package/docs/api/components/createAccessExpression.md +55 -0
- package/docs/api/components/index.md +27 -0
- package/docs/api/contexts/Assignment-context.md +43 -0
- package/docs/api/contexts/Binder-context.md +22 -0
- package/docs/api/contexts/Declaration-context.md +15 -0
- package/docs/api/contexts/Member-context.md +17 -0
- package/docs/api/contexts/MemberDeclaration-context.md +24 -0
- package/docs/api/contexts/NamePolicy-context.md +18 -0
- package/docs/api/contexts/Scope-context.md +20 -0
- package/docs/api/contexts/SourceDirectory-context.md +26 -0
- package/docs/api/contexts/SourceFile-context.md +19 -0
- package/docs/api/contexts/index.md +11 -0
- package/docs/api/functions/attachDiagnosticsCollector.md +18 -0
- package/docs/api/functions/baseListPropsToMapJoinArgs.md +20 -0
- package/docs/api/functions/children.md +27 -0
- package/docs/api/functions/childrenArray.md +25 -0
- package/docs/api/functions/code.md +25 -0
- package/docs/api/functions/computed.md +18 -0
- package/docs/api/functions/createComponent.md +20 -0
- package/docs/api/functions/createContentSlot.md +33 -0
- package/docs/api/functions/createContext.md +19 -0
- package/docs/api/functions/createCustomContext.md +18 -0
- package/docs/api/functions/createDeclarationTap.md +20 -0
- package/docs/api/functions/createFileResource.md +35 -0
- package/docs/api/functions/createFormatOptionsContextFor.md +28 -0
- package/docs/api/functions/createIntrinsic.md +19 -0
- package/docs/api/functions/createMemberTap.md +20 -0
- package/docs/api/functions/createNamePolicy.md +37 -0
- package/docs/api/functions/createNamedContext.md +19 -0
- package/docs/api/functions/createOutputBinder.md +24 -0
- package/docs/api/functions/createRenderTreeHook.md +19 -0
- package/docs/api/functions/createResource.md +77 -0
- package/docs/api/functions/createScope.md +35 -0
- package/docs/api/functions/createScopeTap.md +20 -0
- package/docs/api/functions/createSourceFileTap.md +20 -0
- package/docs/api/functions/createSymbol.md +25 -0
- package/docs/api/functions/createSymbolSlot.md +19 -0
- package/docs/api/functions/createTap.md +55 -0
- package/docs/api/functions/decl.md +20 -0
- package/docs/api/functions/defaultProps.md +21 -0
- package/docs/api/functions/effect.md +26 -0
- package/docs/api/functions/emitDiagnostic.md +18 -0
- package/docs/api/functions/emitSymbol.md +18 -0
- package/docs/api/functions/ensureIsEmpty.md +20 -0
- package/docs/api/functions/findCurrentEffectId.md +19 -0
- package/docs/api/functions/findKeyedChild.md +19 -0
- package/docs/api/functions/findKeyedChildren.md +19 -0
- package/docs/api/functions/findUnkeyedChildren.md +18 -0
- package/docs/api/functions/formatReactivePropertyLabel.md +21 -0
- package/docs/api/functions/getAssignmentSymbol.md +19 -0
- package/docs/api/functions/getContext.md +17 -0
- package/docs/api/functions/getContextForRenderNode.md +18 -0
- package/docs/api/functions/getDiagnosticsForTree.md +18 -0
- package/docs/api/functions/getEffectDebugId.md +18 -0
- package/docs/api/functions/getElementCache.md +17 -0
- package/docs/api/functions/getReactiveCreationLocation.md +18 -0
- package/docs/api/functions/getSymbolCreator.md +18 -0
- package/docs/api/functions/getSymbolCreatorSymbol.md +17 -0
- package/docs/api/functions/index.md +105 -0
- package/docs/api/functions/inspectRefkey.md +18 -0
- package/docs/api/functions/instantiateTakenMembersTo.md +20 -0
- package/docs/api/functions/isComponentCreator.md +19 -0
- package/docs/api/functions/isCustomContext.md +18 -0
- package/docs/api/functions/isIntrinsicElement.md +18 -0
- package/docs/api/functions/isKeyedChild.md +18 -0
- package/docs/api/functions/isLibrarySymbolReference.md +18 -0
- package/docs/api/functions/isMemberRefkey.md +18 -0
- package/docs/api/functions/isNamekey.md +18 -0
- package/docs/api/functions/isPrintHook.md +18 -0
- package/docs/api/functions/isRefkey.md +18 -0
- package/docs/api/functions/isRefkeyable.md +18 -0
- package/docs/api/functions/isRenderableObject.md +20 -0
- package/docs/api/functions/isSymbolRefkey.md +18 -0
- package/docs/api/functions/join.md +33 -0
- package/docs/api/functions/mapJoin.md +106 -0
- package/docs/api/functions/memberRefkey.md +27 -0
- package/docs/api/functions/memo.md +29 -0
- package/docs/api/functions/mergeProps.md +64 -0
- package/docs/api/functions/moveTakenMembersTo.md +18 -0
- package/docs/api/functions/namekey.md +41 -0
- package/docs/api/functions/nextReactiveId.md +19 -0
- package/docs/api/functions/notifyContentState.md +17 -0
- package/docs/api/functions/onCleanup.md +26 -0
- package/docs/api/functions/printTree.md +31 -0
- package/docs/api/functions/reactivePropertyRefId.md +21 -0
- package/docs/api/functions/ref.md +21 -0
- package/docs/api/functions/refId.md +18 -0
- package/docs/api/functions/refkey.md +24 -0
- package/docs/api/functions/render.md +31 -0
- package/docs/api/functions/renderAsync.md +31 -0
- package/docs/api/functions/renderTree.md +18 -0
- package/docs/api/functions/reportDiagnostics.md +18 -0
- package/docs/api/functions/resetRefIdCounter.md +17 -0
- package/docs/api/functions/resolve.md +31 -0
- package/docs/api/functions/root.md +25 -0
- package/docs/api/functions/shallowReactive.md +18 -0
- package/docs/api/functions/shallowRef.md +21 -0
- package/docs/api/functions/sourceFilesForTree.md +31 -0
- package/docs/api/functions/splitProps.md +19 -0
- package/docs/api/functions/stc.md +18 -0
- package/docs/api/functions/sti.md +18 -0
- package/docs/api/functions/symbolForRefkey.md +24 -0
- package/docs/api/functions/taggedComponent.md +19 -0
- package/docs/api/functions/takeSymbols.md +18 -0
- package/docs/api/functions/text.md +19 -0
- package/docs/api/functions/toRef.md +20 -0
- package/docs/api/functions/toRefkey.md +18 -0
- package/docs/api/functions/toRefs.md +20 -0
- package/docs/api/functions/traverseOutput.md +21 -0
- package/docs/api/functions/unresolvedRefkey.md +18 -0
- package/docs/api/functions/untrack.md +18 -0
- package/docs/api/functions/useContext.md +18 -0
- package/docs/api/functions/useFormatOptions.md +18 -0
- package/docs/api/functions/useMemberContext.md +17 -0
- package/docs/api/functions/useMemberScope.md +17 -0
- package/docs/api/functions/writeOutput.md +21 -0
- package/docs/api/index.md +9 -0
- package/docs/api/testing/functions/createTestWrapper.md +70 -0
- package/docs/api/testing/functions/d.md +21 -0
- package/docs/api/testing/functions/dedent.md +18 -0
- package/docs/api/testing/functions/index.md +6 -0
- package/docs/api/testing/functions/renderToString.md +20 -0
- package/docs/api/testing/index.md +4 -0
- package/docs/api/testing/types/TestWrapper.md +10 -0
- package/docs/api/testing/types/ToRenderToOptions.md +24 -0
- package/docs/api/testing/types/index.md +4 -0
- package/docs/api/types/AlignIntrinsicElement.md +5 -0
- package/docs/api/types/AppendRegionProps.md +5 -0
- package/docs/api/types/BaseListProps.md +21 -0
- package/docs/api/types/BasePartProps.md +10 -0
- package/docs/api/types/BasicScope.md +15 -0
- package/docs/api/types/BasicSymbol.md +18 -0
- package/docs/api/types/Binder.md +18 -0
- package/docs/api/types/BinderOptions.md +7 -0
- package/docs/api/types/BrIntrinsicElement.md +5 -0
- package/docs/api/types/BreakParentIntrinsicElement.md +5 -0
- package/docs/api/types/Child.md +5 -0
- package/docs/api/types/Children.md +5 -0
- package/docs/api/types/ChildrenOptions.md +7 -0
- package/docs/api/types/CommonFormatOptions.md +8 -0
- package/docs/api/types/Component.md +8 -0
- package/docs/api/types/ComponentContext.md +11 -0
- package/docs/api/types/ComponentCreator.md +11 -0
- package/docs/api/types/ComponentDefinition.md +7 -0
- package/docs/api/types/ContentOutputFile.md +10 -0
- package/docs/api/types/ContentSlot.md +12 -0
- package/docs/api/types/Context.md +19 -0
- package/docs/api/types/ContextProviderProps.md +8 -0
- package/docs/api/types/CopyFileContext.md +8 -0
- package/docs/api/types/CopyOutputFile.md +9 -0
- package/docs/api/types/CustomContext.md +10 -0
- package/docs/api/types/CustomContextChildrenCallback.md +5 -0
- package/docs/api/types/DeclarationProps.md +5 -0
- package/docs/api/types/DedentIntrinsicElement.md +5 -0
- package/docs/api/types/DedentToRootIntrinsicElement.md +5 -0
- package/docs/api/types/Diagnostic.md +11 -0
- package/docs/api/types/DiagnosticHandle.md +7 -0
- package/docs/api/types/DiagnosticInput.md +10 -0
- package/docs/api/types/DiagnosticSeverity.md +5 -0
- package/docs/api/types/DiagnosticStackEntry.md +9 -0
- package/docs/api/types/DiagnosticsCollector.md +8 -0
- package/docs/api/types/Disposable_2.md +7 -0
- package/docs/api/types/EffectDebugOptions.md +8 -0
- package/docs/api/types/EffectOptions.md +7 -0
- package/docs/api/types/ElementCache.md +5 -0
- package/docs/api/types/ElementCacheKey.md +5 -0
- package/docs/api/types/FillIntrinsicElement.md +5 -0
- package/docs/api/types/ForCallbackArgs.md +5 -0
- package/docs/api/types/ForSupportedCollections.md +5 -0
- package/docs/api/types/GroupIntrinsicElement.md +5 -0
- package/docs/api/types/HardlineIntrinsicElement.md +5 -0
- package/docs/api/types/HbrIntrinsicElement.md +5 -0
- package/docs/api/types/IfBreakIntrinsicElement.md +5 -0
- package/docs/api/types/IndentIfBreakIntrinsicElement.md +5 -0
- package/docs/api/types/IndentIntrinsicElement.md +5 -0
- package/docs/api/types/IntrinsicElement.md +5 -0
- package/docs/api/types/IntrinsicElementBase.md +9 -0
- package/docs/api/types/IntrinsicElements.md +26 -0
- package/docs/api/types/JoinOptions.md +9 -0
- package/docs/api/types/LbrIntrinsicElement.md +5 -0
- package/docs/api/types/LibrarySymbolReference.md +13 -0
- package/docs/api/types/LineIntrinsicElement.md +5 -0
- package/docs/api/types/LineSuffixBoundaryIntrinsicElement.md +5 -0
- package/docs/api/types/LineSuffixIntrinsicElement.md +5 -0
- package/docs/api/types/LiterallineIntrinsicElement.md +5 -0
- package/docs/api/types/MakeChildrenOptional.md +7 -0
- package/docs/api/types/MarkAsRootIntrinsicElement.md +5 -0
- package/docs/api/types/MatchProps.md +9 -0
- package/docs/api/types/MemberDeclarationProps.md +5 -0
- package/docs/api/types/MemberDescriptor.md +10 -0
- package/docs/api/types/MemberRefkey.md +10 -0
- package/docs/api/types/MemberResolutionContext.md +10 -0
- package/docs/api/types/MemberResolver.md +32 -0
- package/docs/api/types/MemberScopeProps.md +5 -0
- package/docs/api/types/Metadata.md +5 -0
- package/docs/api/types/NameConflictResolver.md +27 -0
- package/docs/api/types/NamePolicy.md +8 -0
- package/docs/api/types/NamePolicyGetter.md +9 -0
- package/docs/api/types/Namekey.md +10 -0
- package/docs/api/types/NamekeyOptions.md +8 -0
- package/docs/api/types/OnReactiveSetAddCallback.md +5 -0
- package/docs/api/types/OnReactiveSetDeleteCallback.md +5 -0
- package/docs/api/types/OutputDeclarationSpace.md +13 -0
- package/docs/api/types/OutputDirectory.md +59 -0
- package/docs/api/types/OutputFile.md +5 -0
- package/docs/api/types/OutputFileBase.md +8 -0
- package/docs/api/types/OutputMemberSpace.md +13 -0
- package/docs/api/types/OutputScope.md +33 -0
- package/docs/api/types/OutputScopeOptions.md +9 -0
- package/docs/api/types/OutputSpace.md +7 -0
- package/docs/api/types/OutputSymbol.md +78 -0
- package/docs/api/types/OutputSymbolOptions.md +16 -0
- package/docs/api/types/OutputVisitor.md +10 -0
- package/docs/api/types/PrintHook.md +10 -0
- package/docs/api/types/PrintTreeOptions.md +11 -0
- package/docs/api/types/Props.md +5 -0
- package/docs/api/types/ReactiveUnionSet.md +20 -0
- package/docs/api/types/ReactiveUnionSetOptions.md +8 -0
- package/docs/api/types/Refkey.md +5 -0
- package/docs/api/types/Refkeyable.md +5 -0
- package/docs/api/types/RefkeyableObject.md +7 -0
- package/docs/api/types/RenderableObject.md +9 -0
- package/docs/api/types/RenderedTextTree.md +5 -0
- package/docs/api/types/ResolutionResult.md +39 -0
- package/docs/api/types/ResolveDeclarationByKeyOptions.md +7 -0
- package/docs/api/types/Resource.md +11 -0
- package/docs/api/types/RootOptions.md +7 -0
- package/docs/api/types/SbrIntrinsicElement.md +5 -0
- package/docs/api/types/ScopeProps.md +5 -0
- package/docs/api/types/SoftlineIntrinsicElement.md +5 -0
- package/docs/api/types/SourceLocation.md +9 -0
- package/docs/api/types/SplitProps.md +12 -0
- package/docs/api/types/StcComponentCreator.md +9 -0
- package/docs/api/types/StcSignature.md +5 -0
- package/docs/api/types/StiComponentCreator.md +9 -0
- package/docs/api/types/StiSignature.md +7 -0
- package/docs/api/types/SymbolCreator.md +15 -0
- package/docs/api/types/SymbolRefkey.md +9 -0
- package/docs/api/types/SymbolSlot.md +12 -0
- package/docs/api/types/SymbolTable.md +15 -0
- package/docs/api/types/TakeSymbolCallback.md +7 -0
- package/docs/api/types/TakeSymbolsCallback.md +7 -0
- package/docs/api/types/Tap.md +11 -0
- package/docs/api/types/TapHandler.md +9 -0
- package/docs/api/types/Tapper.md +9 -0
- package/docs/api/types/TemplateVariableProps.md +5 -0
- package/docs/api/types/index.md +122 -0
- package/docs/api/variables/FormatOptions.md +5 -0
- package/docs/api/variables/Match.md +7 -0
- package/docs/api/variables/REFKEYABLE.md +5 -0
- package/docs/api/variables/RENDERABLE.md +5 -0
- package/docs/api/variables/TO_SYMBOL.md +39 -0
- package/docs/api/variables/contextsByKey.md +5 -0
- package/docs/api/variables/index.md +11 -0
- package/docs/api/variables/intrinsicElementKey.md +5 -0
- package/docs/api/variables/matchTag.md +5 -0
- package/docs/api/variables/printHookTag.md +7 -0
- package/docs/components.md +97 -0
- package/docs/context.md +67 -0
- package/docs/control-flow.md +5 -0
- package/docs/debugging.md +105 -0
- package/docs/formatting.md +99 -0
- package/docs/guides/language-package-guide.md +593 -0
- package/docs/guides/references-and-refkeys.md +210 -0
- package/docs/guides/style-guide.md +244 -0
- package/docs/index.md +22 -0
- package/docs/reactivity.md +68 -0
- package/docs/rendering.md +41 -0
- package/docs/symbols-and-scopes.md +180 -0
- package/package.json +16 -6
- package/src/binder.ts +154 -41
- package/src/components/AccessExpression.test.tsx +132 -0
- package/src/components/AccessExpression.tsx +344 -0
- package/src/components/Block.tsx +12 -0
- package/src/components/For.tsx +14 -10
- package/src/components/List.tsx +18 -5
- package/src/components/MemberDeclaration.tsx +6 -6
- package/src/components/MemberName.tsx +6 -0
- package/src/components/MemberScope.tsx +5 -0
- package/src/components/Output.tsx +4 -1
- package/src/components/Prose.tsx +1 -1
- package/src/components/Scope.tsx +8 -0
- package/src/components/SourceDirectory.tsx +1 -2
- package/src/components/SourceFile.tsx +22 -2
- package/src/components/Switch.tsx +11 -7
- package/src/components/index.tsx +1 -0
- package/src/content-slot.tsx +2 -2
- package/src/context/binder.ts +4 -0
- package/src/context/format-options.ts +14 -1
- package/src/context/scope.ts +4 -0
- package/src/context/source-directory.ts +9 -0
- package/src/context.ts +3 -3
- package/src/debug/cli.ts +3 -2
- package/src/debug/diagnostics-broadcast.test.tsx +98 -0
- package/src/debug/diagnostics.test.tsx +3 -2
- package/src/debug/effects.test.tsx +241 -36
- package/src/debug/effects.ts +202 -64
- package/src/debug/files.test.tsx +15 -35
- package/src/debug/files.ts +11 -11
- package/src/debug/index.ts +6 -0
- package/src/debug/message-format.test.tsx +759 -0
- package/src/debug/render-tree-orphans.test.tsx +344 -0
- package/src/debug/render.test.tsx +96 -118
- package/src/debug/render.ts +196 -125
- package/src/debug/source-map.browser.ts +30 -0
- package/src/debug/source-map.ts +135 -0
- package/src/debug/symbols.test.tsx +19 -20
- package/src/debug/symbols.ts +107 -15
- package/src/debug/trace-writer.ts +984 -0
- package/src/debug/trace.ts +46 -32
- package/src/devtools/devtools-protocol.ts +361 -176
- package/src/devtools/devtools-server.browser.ts +4 -9
- package/src/devtools/devtools-server.ts +226 -33
- package/src/devtools/devtools-transport.ts +4 -4
- package/src/devtools-entry.browser.ts +11 -15
- package/src/devtools-entry.ts +9 -15
- package/src/diagnostics.ts +44 -22
- package/src/host/node-host.browser.ts +23 -0
- package/src/host/node-host.ts +22 -0
- package/src/index.ts +0 -1
- package/src/library-symbol-reference.ts +52 -0
- package/src/name-policy.ts +30 -3
- package/src/reactive-union-set.ts +14 -3
- package/src/reactivity.ts +354 -171
- package/src/render-stack.ts +9 -3
- package/src/render.ts +116 -38
- package/src/scheduler.ts +167 -24
- package/src/symbols/output-scope.ts +34 -3
- package/src/symbols/output-space.ts +13 -0
- package/src/symbols/output-symbol.ts +186 -24
- package/src/symbols/symbol-flow.ts +8 -2
- package/src/symbols/symbol-slot.test.tsx +28 -1
- package/src/symbols/symbol-slot.tsx +8 -0
- package/src/symbols/symbol-table.ts +13 -3
- package/src/utils.tsx +9 -8
- package/src/write-output.ts +6 -5
- package/temp/api-testing.json +673 -0
- package/temp/api.json +1333 -100
- package/test/browser-build.test.ts +71 -78
- package/test/lazy-isempty.test.tsx +106 -0
- package/test/reactive-union-set-disposers.test.tsx +112 -0
- package/test/reactivity/shallow-reactive.test.tsx +60 -0
- package/test/scheduler-extended.test.tsx +122 -0
- package/test/scheduler.test.tsx +50 -0
- package/test/symbols/deconflicted-name.test.ts +120 -0
- package/test/symbols/output-scope.test.ts +38 -0
- package/testing/create-test-wrapper.tsx +81 -2
- package/testing/devtools-utils.ts +46 -4
- package/testing/extend-expect.ts +22 -1
- package/testing/index.ts +1 -1
- package/testing/render.ts +9 -0
- package/testing/vitest.d.ts +18 -3
- package/vitest.config.ts +8 -0
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
reactive,
|
|
4
4
|
ReactiveFlags,
|
|
5
5
|
Ref,
|
|
6
|
-
shallowReactive,
|
|
7
6
|
track,
|
|
8
7
|
TrackOpTypes,
|
|
9
8
|
trigger,
|
|
@@ -15,7 +14,7 @@ import { useBinder } from "../context/binder.js";
|
|
|
15
14
|
import { debug, TracePhase } from "../debug/index.js";
|
|
16
15
|
import { inspect } from "../inspect.js";
|
|
17
16
|
import { NamePolicyGetter } from "../name-policy.js";
|
|
18
|
-
import { untrack } from "../reactivity.js";
|
|
17
|
+
import { shallowReactive, untrack } from "../reactivity.js";
|
|
19
18
|
import {
|
|
20
19
|
isMemberRefkey,
|
|
21
20
|
isNamekey,
|
|
@@ -38,6 +37,12 @@ export interface OutputSymbolOptions {
|
|
|
38
37
|
* will be reported to this binder. This binder will be able to find this
|
|
39
38
|
* symbol via its refkey and other means. Without a binder, this symbol will
|
|
40
39
|
* be unbound, which means it cannot be referenced by refkey.
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
*
|
|
43
|
+
* When constructing an external library symbol, pass `{ binder }` here to
|
|
44
|
+
* ensure the symbol is registered with the binder. See {@link TO_SYMBOL} for
|
|
45
|
+
* the full implementation protocol.
|
|
41
46
|
*/
|
|
42
47
|
binder?: Binder;
|
|
43
48
|
|
|
@@ -98,7 +103,15 @@ export interface OutputSymbolOptions {
|
|
|
98
103
|
ignoreNameConflict?: boolean;
|
|
99
104
|
|
|
100
105
|
/**
|
|
101
|
-
* Provide a function which lazy-initializes members
|
|
106
|
+
* Provide a function which lazy-initializes members the first time
|
|
107
|
+
* `resolveMemberByName()` is called on this symbol. Called at most once.
|
|
108
|
+
*
|
|
109
|
+
* @remarks
|
|
110
|
+
*
|
|
111
|
+
* Only `resolveMemberByName()` triggers this callback — iterating
|
|
112
|
+
* `OutputMemberSpace` directly does not. The callback fires regardless of
|
|
113
|
+
* whether the symbol belongs to any scope, so it is safe to use on scopeless
|
|
114
|
+
* external library symbols.
|
|
102
115
|
*/
|
|
103
116
|
lazyMemberInitializer?: () => void;
|
|
104
117
|
}
|
|
@@ -111,11 +124,47 @@ let symbolCount = 0;
|
|
|
111
124
|
*
|
|
112
125
|
* @remarks
|
|
113
126
|
*
|
|
114
|
-
* This
|
|
115
|
-
*
|
|
116
|
-
*
|
|
127
|
+
* This is an abstract base class. Language packages must subclass it and
|
|
128
|
+
* implement the abstract {@link OutputSymbol.copy | copy()} method, which
|
|
129
|
+
* creates a clone that tracks the original's name and flags.
|
|
130
|
+
*
|
|
131
|
+
* Subtypes typically add language-specific properties (e.g., accessibility,
|
|
132
|
+
* static/abstract flags). Symbols are reactive values, so you can observe
|
|
133
|
+
* changes to their properties in a reactive context.
|
|
134
|
+
*
|
|
135
|
+
* To construct a scopeless external library symbol — one that resolves via
|
|
136
|
+
* refkey but does not appear in any declaration space — pass `undefined` as
|
|
137
|
+
* the `spaces` constructor argument and supply `{ binder }` in `options`.
|
|
138
|
+
* See {@link OutputSymbolOptions} (`binder` option) and {@link TO_SYMBOL}.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
*
|
|
142
|
+
* ```ts
|
|
143
|
+
* import { createSymbol, OutputSymbol, OutputSpace } from "@alloy-js/core";
|
|
144
|
+
*
|
|
145
|
+
* class MySymbol extends OutputSymbol {
|
|
146
|
+
* copy() {
|
|
147
|
+
* // getCopyOptions() already includes binder
|
|
148
|
+
* const opts = this.getCopyOptions();
|
|
149
|
+
* const sym = createSymbol(MySymbol, this.name, undefined, opts);
|
|
150
|
+
* this.initializeCopy(sym);
|
|
151
|
+
* return sym;
|
|
152
|
+
* }
|
|
153
|
+
* }
|
|
154
|
+
*
|
|
155
|
+
* // name: string | Namekey; spaces: OutputSpace | OutputSpace[] | undefined; options: OutputSymbolOptions
|
|
156
|
+
* const sym = createSymbol(MySymbol, namekey, scope.symbols, { binder });
|
|
157
|
+
*
|
|
158
|
+
* // Construct a scopeless external library symbol (resolves via refkey only):
|
|
159
|
+
* const extSym = createSymbol(MySymbol, namekey, undefined, { binder });
|
|
160
|
+
* ```
|
|
117
161
|
*/
|
|
118
162
|
export abstract class OutputSymbol {
|
|
163
|
+
/**
|
|
164
|
+
* The member space keys for this symbol type. Subclasses override this to
|
|
165
|
+
* declare which member spaces are created on construction (e.g.,
|
|
166
|
+
* `["static", "instance"]`).
|
|
167
|
+
*/
|
|
119
168
|
public static readonly memberSpaces: Readonly<string[]> = [];
|
|
120
169
|
|
|
121
170
|
#originalName: string;
|
|
@@ -129,30 +178,113 @@ export abstract class OutputSymbol {
|
|
|
129
178
|
return this.#originalName;
|
|
130
179
|
}
|
|
131
180
|
|
|
132
|
-
//
|
|
133
|
-
|
|
181
|
+
// The user-assigned name (as set by constructor or direct `.name =`
|
|
182
|
+
// assignments). Always defined after construction.
|
|
183
|
+
#userName!: string;
|
|
184
|
+
|
|
185
|
+
// The name assigned by a name-conflict resolver, if any. When present, this
|
|
186
|
+
// takes precedence over `#userName` in the computed `name` getter. Resolvers
|
|
187
|
+
// assign via the `deconflictedName` setter; clearing (setting to undefined)
|
|
188
|
+
// causes the symbol to fall back to its user-assigned name.
|
|
189
|
+
#deconflictedName: string | undefined;
|
|
190
|
+
|
|
134
191
|
/**
|
|
135
|
-
* The name of this symbol.
|
|
192
|
+
* The name of this symbol. Assigning to this property applies the active
|
|
193
|
+
* name policy (unless `ignoreNamePolicy` is true) before storing the value.
|
|
194
|
+
*
|
|
195
|
+
* The effective name is computed as `deconflictedName ?? userName`, so if a
|
|
196
|
+
* name-conflict resolver has assigned a {@link OutputSymbol.deconflictedName | deconflictedName}, that value
|
|
197
|
+
* is returned here; otherwise the value most recently assigned to `name` is
|
|
198
|
+
* returned.
|
|
136
199
|
*
|
|
137
200
|
* @reactive
|
|
138
201
|
*/
|
|
139
202
|
get name() {
|
|
140
203
|
track(this, TrackOpTypes.GET, "name");
|
|
141
|
-
return this.#
|
|
204
|
+
return this.#deconflictedName ?? this.#userName;
|
|
142
205
|
}
|
|
143
206
|
|
|
144
207
|
set name(name: string) {
|
|
145
|
-
const
|
|
208
|
+
const policyApplied =
|
|
209
|
+
this.#namePolicy && !this.#ignoreNamePolicy ?
|
|
210
|
+
this.#namePolicy(name)
|
|
211
|
+
: name;
|
|
146
212
|
|
|
147
|
-
if (
|
|
213
|
+
if (this.#userName === policyApplied) {
|
|
148
214
|
return;
|
|
149
215
|
}
|
|
150
216
|
|
|
151
|
-
this.#
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
217
|
+
const old = this.#deconflictedName ?? this.#userName;
|
|
218
|
+
this.#userName = policyApplied;
|
|
219
|
+
const next = this.#deconflictedName ?? this.#userName;
|
|
220
|
+
if (next !== old) {
|
|
221
|
+
trigger(this, TriggerOpTypes.SET, "name", next, old);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* The name assigned by a name-conflict resolver, or `undefined` when the
|
|
227
|
+
* symbol is not currently renamed by conflict resolution.
|
|
228
|
+
*
|
|
229
|
+
* Resolvers should assign to this slot (rather than `name`) to record that a
|
|
230
|
+
* rename exists only because of a conflict. On re-deconfliction (e.g. after
|
|
231
|
+
* a conflicting symbol is removed), resolvers clear this slot by assigning
|
|
232
|
+
* `undefined`; the effective {@link OutputSymbol.name | name} then falls back to the
|
|
233
|
+
* user-assigned name, which in turn falls back to the original name.
|
|
234
|
+
*
|
|
235
|
+
* Name policy is applied to values written here (unless `ignoreNamePolicy`
|
|
236
|
+
* is true), matching `name`'s behavior.
|
|
237
|
+
*
|
|
238
|
+
* @reactive
|
|
239
|
+
*/
|
|
240
|
+
get deconflictedName(): string | undefined {
|
|
241
|
+
track(this, TrackOpTypes.GET, "deconflictedName");
|
|
242
|
+
return this.#deconflictedName;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
set deconflictedName(value: string | undefined) {
|
|
246
|
+
const policyApplied =
|
|
247
|
+
value !== undefined && this.#namePolicy && !this.#ignoreNamePolicy ?
|
|
248
|
+
this.#namePolicy(value)
|
|
249
|
+
: value;
|
|
250
|
+
|
|
251
|
+
if (this.#deconflictedName === policyApplied) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
const oldName = this.#deconflictedName ?? this.#userName;
|
|
256
|
+
const oldDeconflicted = this.#deconflictedName;
|
|
257
|
+
this.#deconflictedName = policyApplied;
|
|
258
|
+
trigger(
|
|
259
|
+
this,
|
|
260
|
+
TriggerOpTypes.SET,
|
|
261
|
+
"deconflictedName",
|
|
262
|
+
policyApplied,
|
|
263
|
+
oldDeconflicted,
|
|
264
|
+
);
|
|
265
|
+
const nextName = this.#deconflictedName ?? this.#userName;
|
|
266
|
+
if (nextName !== oldName) {
|
|
267
|
+
trigger(this, TriggerOpTypes.SET, "name", nextName, oldName);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* The canonical requested name for this symbol: the result of applying the
|
|
273
|
+
* symbol's name policy to its {@link OutputSymbol.originalName | originalName}, or the original name
|
|
274
|
+
* itself when no policy applies. This is the name the symbol would carry if
|
|
275
|
+
* there were no conflicts, and is stable across the symbol's lifetime (it
|
|
276
|
+
* depends only on the immutable `originalName` and the name policy).
|
|
277
|
+
*
|
|
278
|
+
* Used by {@link SymbolTable} as the grouping key for name-conflict
|
|
279
|
+
* resolution, so that symbols whose original names normalize to the same
|
|
280
|
+
* policy-applied name (e.g. `foo_bar` and `fooBar` under camelCase) are
|
|
281
|
+
* recognized as conflicting.
|
|
282
|
+
*/
|
|
283
|
+
get canonicalName(): string {
|
|
284
|
+
if (this.#ignoreNamePolicy || !this.#namePolicy) {
|
|
285
|
+
return this.originalName;
|
|
286
|
+
}
|
|
287
|
+
return this.#namePolicy(this.originalName);
|
|
156
288
|
}
|
|
157
289
|
|
|
158
290
|
#id: number;
|
|
@@ -339,6 +471,13 @@ export abstract class OutputSymbol {
|
|
|
339
471
|
return this.#metadata;
|
|
340
472
|
}
|
|
341
473
|
|
|
474
|
+
/**
|
|
475
|
+
* Copy this symbol into the given space. Calls {@link OutputSymbol.copy} and places
|
|
476
|
+
* the result in `space`, then returns the copy.
|
|
477
|
+
*
|
|
478
|
+
* @param space - The space to place the copy in.
|
|
479
|
+
* @returns The copy of this symbol, now belonging to `space`.
|
|
480
|
+
*/
|
|
342
481
|
copyToSpace(space: OutputSpace) {
|
|
343
482
|
const copy = this.copy();
|
|
344
483
|
copy.spaces = space;
|
|
@@ -508,6 +647,14 @@ export abstract class OutputSymbol {
|
|
|
508
647
|
// proxy.
|
|
509
648
|
[ReactiveFlags.SKIP] = true;
|
|
510
649
|
|
|
650
|
+
/**
|
|
651
|
+
* @param name - The symbol name, or a {@link Namekey} carrying name and
|
|
652
|
+
* options (e.g., `ignoreNamePolicy`).
|
|
653
|
+
* @param spaces - The declaration or member space(s) this symbol belongs to.
|
|
654
|
+
* Pass `undefined` for scopeless external library symbols (see `binder` option).
|
|
655
|
+
* @param options - Additional symbol options (binder, refkeys, metadata,
|
|
656
|
+
* type, name policy, etc.).
|
|
657
|
+
*/
|
|
511
658
|
constructor(
|
|
512
659
|
name: string | Namekey,
|
|
513
660
|
spaces: OutputSpace[] | OutputSpace | undefined,
|
|
@@ -632,17 +779,19 @@ export abstract class OutputSymbol {
|
|
|
632
779
|
}
|
|
633
780
|
|
|
634
781
|
/**
|
|
635
|
-
*
|
|
636
|
-
*
|
|
782
|
+
* Create a clone of this symbol whose name and flags reactively track the
|
|
783
|
+
* original.
|
|
637
784
|
*
|
|
638
785
|
* @remarks
|
|
639
786
|
*
|
|
640
|
-
*
|
|
641
|
-
*
|
|
642
|
-
*
|
|
643
|
-
*
|
|
787
|
+
* Called by `SymbolTable.copyTo` during scope/space transfers.
|
|
788
|
+
* Subclasses implement cloning logic and call `getCopyOptions` for
|
|
789
|
+
* base options and `initializeCopy` to wire up member copying and
|
|
790
|
+
* name tracking.
|
|
644
791
|
*
|
|
645
|
-
*
|
|
792
|
+
* **Space registration contract:** The returned clone must not be registered
|
|
793
|
+
* in any space on exit. `copyToSpace()` calls this method and assigns the
|
|
794
|
+
* space afterward.
|
|
646
795
|
*/
|
|
647
796
|
abstract copy(): OutputSymbol;
|
|
648
797
|
|
|
@@ -655,6 +804,19 @@ export abstract class OutputSymbol {
|
|
|
655
804
|
};
|
|
656
805
|
}
|
|
657
806
|
|
|
807
|
+
/**
|
|
808
|
+
* Wires up reactive member-space copying and name tracking from this symbol
|
|
809
|
+
* to its `copy`.
|
|
810
|
+
*
|
|
811
|
+
* @remarks
|
|
812
|
+
*
|
|
813
|
+
* Iterates each member space and calls `copyTo` on the corresponding space
|
|
814
|
+
* on `copy`. Then installs a reactive watcher so that any future change to
|
|
815
|
+
* `this.name` is immediately mirrored onto `copy.name`.
|
|
816
|
+
*
|
|
817
|
+
* **Must be called by every `copy()` override** before the override returns.
|
|
818
|
+
* Pair with `getCopyOptions` to supply the base constructor options.
|
|
819
|
+
*/
|
|
658
820
|
protected initializeCopy(copy: OutputSymbol) {
|
|
659
821
|
for (const sourceSpace of this.memberSpaces) {
|
|
660
822
|
const targetSpace = copy.memberSpaceFor(sourceSpace.key);
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import { isRef, Ref
|
|
2
|
-
import {
|
|
1
|
+
import { isRef, Ref } from "@vue/reactivity";
|
|
2
|
+
import {
|
|
3
|
+
Context,
|
|
4
|
+
effect,
|
|
5
|
+
getContext,
|
|
6
|
+
onCleanup,
|
|
7
|
+
shallowReactive,
|
|
8
|
+
} from "../reactivity.js";
|
|
3
9
|
|
|
4
10
|
import { MemberContext } from "../context/member-scope.js";
|
|
5
11
|
import { ScopeContext } from "../context/scope.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { shallowRef } from "@vue/reactivity";
|
|
2
2
|
import { expect, it } from "vitest";
|
|
3
|
-
import { renderTree } from "../render.js";
|
|
3
|
+
import { getDiagnosticsForTree, renderTree } from "../render.js";
|
|
4
4
|
import { flushJobs } from "../scheduler.js";
|
|
5
5
|
import { BasicSymbol } from "./basic-symbol.js";
|
|
6
6
|
import { emitSymbol } from "./symbol-flow.js";
|
|
@@ -21,6 +21,33 @@ it("captures firstSymbol", async () => {
|
|
|
21
21
|
expect(Slot.firstSymbol.value!.name).toBe("a");
|
|
22
22
|
});
|
|
23
23
|
|
|
24
|
+
it("emits error diagnostic when rendered more than once", async () => {
|
|
25
|
+
const Slot = createSymbolSlot();
|
|
26
|
+
|
|
27
|
+
const tree = renderTree(
|
|
28
|
+
<>
|
|
29
|
+
<Slot>
|
|
30
|
+
{() => {
|
|
31
|
+
emitSymbol(new BasicSymbol("a", undefined));
|
|
32
|
+
}}
|
|
33
|
+
</Slot>
|
|
34
|
+
<Slot>
|
|
35
|
+
{() => {
|
|
36
|
+
emitSymbol(new BasicSymbol("b", undefined));
|
|
37
|
+
}}
|
|
38
|
+
</Slot>
|
|
39
|
+
</>,
|
|
40
|
+
);
|
|
41
|
+
await flushJobs();
|
|
42
|
+
|
|
43
|
+
const diagnostics = getDiagnosticsForTree(tree);
|
|
44
|
+
expect(diagnostics.length).toBe(1);
|
|
45
|
+
expect(diagnostics[0].severity).toBe("error");
|
|
46
|
+
expect(diagnostics[0].message).toContain(
|
|
47
|
+
"SymbolSlot rendered more than once",
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
|
|
24
51
|
it("captures firstSymbol when emitting a ref to a symbol", async () => {
|
|
25
52
|
const Slot = createSymbolSlot();
|
|
26
53
|
const symref = shallowRef<BasicSymbol | undefined>();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Ref, ShallowReactive, shallowRef } from "@vue/reactivity";
|
|
2
|
+
import { emitDiagnostic } from "../diagnostics.js";
|
|
2
3
|
import { effect, onCleanup } from "../reactivity.js";
|
|
3
4
|
import type { Children, Component } from "../runtime/component.js";
|
|
4
5
|
import { OutputSymbol } from "./output-symbol.js";
|
|
@@ -35,6 +36,13 @@ export function createSymbolSlot(): SymbolSlot {
|
|
|
35
36
|
const symbolSlotRef: Ref<ShallowReactive<Set<OutputSymbol>> | undefined> =
|
|
36
37
|
shallowRef();
|
|
37
38
|
function SymbolSlot(props: { children: Children }) {
|
|
39
|
+
if (symbolSlotRef.value !== undefined) {
|
|
40
|
+
emitDiagnostic({
|
|
41
|
+
message:
|
|
42
|
+
"SymbolSlot rendered more than once. The second render will overwrite symbols captured by the first render.",
|
|
43
|
+
severity: "error",
|
|
44
|
+
});
|
|
45
|
+
}
|
|
38
46
|
const set = takeSymbols();
|
|
39
47
|
symbolSlotRef.value = set;
|
|
40
48
|
|
|
@@ -13,7 +13,7 @@ export abstract class SymbolTable extends ReactiveUnionSet<OutputSymbol> {
|
|
|
13
13
|
#deconflictNames = () => {
|
|
14
14
|
for (const name of this.#namesToDeconflict) {
|
|
15
15
|
const conflictedSymbols = [...this].filter(
|
|
16
|
-
(sym) => sym.
|
|
16
|
+
(sym) => sym.canonicalName === name && !sym.ignoreNameConflict,
|
|
17
17
|
);
|
|
18
18
|
if (this.#nameConflictResolver) {
|
|
19
19
|
this.#nameConflictResolver(name, conflictedSymbols);
|
|
@@ -67,7 +67,7 @@ export abstract class SymbolTable extends ReactiveUnionSet<OutputSymbol> {
|
|
|
67
67
|
`${formatSymbolName(symbol)} added to ${formatSymbolTableName(this)}`,
|
|
68
68
|
);
|
|
69
69
|
|
|
70
|
-
this.#namesToDeconflict.add(symbol.
|
|
70
|
+
this.#namesToDeconflict.add(symbol.canonicalName);
|
|
71
71
|
|
|
72
72
|
queueJob(this.#deconflictNames);
|
|
73
73
|
|
|
@@ -79,6 +79,12 @@ export abstract class SymbolTable extends ReactiveUnionSet<OutputSymbol> {
|
|
|
79
79
|
() =>
|
|
80
80
|
`${formatSymbolName(symbol)} removed from ${formatSymbolTableName(this)}`,
|
|
81
81
|
);
|
|
82
|
+
// Re-run conflict resolution for the deleted symbol's canonical name
|
|
83
|
+
// so survivors in the same cohort (those that share the canonical
|
|
84
|
+
// name) can clear any prior `deconflictedName` rename now that the
|
|
85
|
+
// collision is reduced.
|
|
86
|
+
this.#namesToDeconflict.add(symbol.canonicalName);
|
|
87
|
+
queueJob(this.#deconflictNames);
|
|
82
88
|
},
|
|
83
89
|
});
|
|
84
90
|
|
|
@@ -135,8 +141,12 @@ export abstract class SymbolTable extends ReactiveUnionSet<OutputSymbol> {
|
|
|
135
141
|
* to have a suffix of _2, _3, etc.
|
|
136
142
|
*/
|
|
137
143
|
function defaultConflictHandler(_: string, conflictedSymbols: OutputSymbol[]) {
|
|
144
|
+
if (conflictedSymbols.length === 0) return;
|
|
145
|
+
// The first symbol keeps its original name; clear any prior deconflict
|
|
146
|
+
// rename so it reverts after a collision is resolved.
|
|
147
|
+
conflictedSymbols[0].deconflictedName = undefined;
|
|
138
148
|
for (let i = 1; i < conflictedSymbols.length; i++) {
|
|
139
|
-
conflictedSymbols[i].
|
|
149
|
+
conflictedSymbols[i].deconflictedName =
|
|
140
150
|
conflictedSymbols[i].originalName + "_" + (i + 1);
|
|
141
151
|
}
|
|
142
152
|
}
|
package/src/utils.tsx
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ref, toRaw } from "@vue/reactivity";
|
|
2
2
|
import { BaseListProps } from "./components/List.jsx";
|
|
3
3
|
import {
|
|
4
4
|
createCustomContext,
|
|
5
5
|
CustomContext,
|
|
6
6
|
Disposable,
|
|
7
7
|
effect,
|
|
8
|
+
ensureIsEmpty,
|
|
8
9
|
getContext,
|
|
9
10
|
memo,
|
|
10
11
|
onCleanup,
|
|
12
|
+
ref,
|
|
11
13
|
root,
|
|
12
14
|
untrack,
|
|
13
15
|
} from "./reactivity.js";
|
|
@@ -128,14 +130,16 @@ export function mapJoin<T, U, V>(
|
|
|
128
130
|
}
|
|
129
131
|
return slot;
|
|
130
132
|
}
|
|
131
|
-
const firstNonEmptyIndex = ref(-1);
|
|
132
|
-
const lastNonEmptyIndex = ref(-1);
|
|
133
|
+
const firstNonEmptyIndex = ref(-1, { isInfrastructure: true });
|
|
134
|
+
const lastNonEmptyIndex = ref(-1, { isInfrastructure: true });
|
|
133
135
|
const mapped: Children[] = [];
|
|
134
136
|
let enderMemo: (() => Children) | undefined;
|
|
135
137
|
|
|
136
138
|
// Creates a ref placeholder that stores the joiner node for a boundary.
|
|
137
139
|
function createJoinerRef(): Ref<Children | undefined> {
|
|
138
|
-
return ref<unknown>(undefined) as Ref<
|
|
140
|
+
return ref<unknown>(undefined, { isInfrastructure: true }) as Ref<
|
|
141
|
+
Children | undefined
|
|
142
|
+
>;
|
|
139
143
|
}
|
|
140
144
|
|
|
141
145
|
// Makes sure we have a joiner ref at the requested boundary index.
|
|
@@ -278,9 +282,6 @@ export function mapJoin<T, U, V>(
|
|
|
278
282
|
}
|
|
279
283
|
|
|
280
284
|
const context = getContext();
|
|
281
|
-
if (context) {
|
|
282
|
-
context.isEmpty ??= ref(true);
|
|
283
|
-
}
|
|
284
285
|
// this is important to access here in reactive context so we are
|
|
285
286
|
// notified of new items from reactives.
|
|
286
287
|
const itemsLen = items.length;
|
|
@@ -326,7 +327,7 @@ export function mapJoin<T, U, V>(
|
|
|
326
327
|
mapped[startIndex * 2] = createCustomContext((cb) => {
|
|
327
328
|
return root((disposer) => {
|
|
328
329
|
const nestedContext = getContext()!;
|
|
329
|
-
const isEmptyFlag = nestedContext
|
|
330
|
+
const isEmptyFlag = ensureIsEmpty(nestedContext);
|
|
330
331
|
|
|
331
332
|
slot.disposer = disposer;
|
|
332
333
|
disposer();
|
package/src/write-output.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { dirname, relative, resolve } from "pathe";
|
|
2
2
|
import { AlloyHost } from "./host/alloy-host.js";
|
|
3
|
+
import { cwd } from "./host/node-host.js";
|
|
3
4
|
import { OutputDirectory } from "./render.js";
|
|
4
5
|
import { traverseOutput } from "./utils.js";
|
|
5
6
|
/**
|
|
@@ -17,7 +18,7 @@ export async function writeOutput(
|
|
|
17
18
|
return;
|
|
18
19
|
}
|
|
19
20
|
// eslint-disable-next-line no-console
|
|
20
|
-
console.log("create", relative(
|
|
21
|
+
console.log("create", relative(cwd(), path));
|
|
21
22
|
await AlloyHost.mkdir(path);
|
|
22
23
|
},
|
|
23
24
|
async visitFile(file) {
|
|
@@ -25,10 +26,10 @@ export async function writeOutput(
|
|
|
25
26
|
const path = resolve(basePath, file.path);
|
|
26
27
|
if (await AlloyHost.exists(path)) {
|
|
27
28
|
// eslint-disable-next-line no-console
|
|
28
|
-
console.log("overwrite", relative(
|
|
29
|
+
console.log("overwrite", relative(cwd(), path));
|
|
29
30
|
} else {
|
|
30
31
|
// eslint-disable-next-line no-console
|
|
31
|
-
console.log("create", relative(
|
|
32
|
+
console.log("create", relative(cwd(), path));
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
await AlloyHost.write(path, file.contents);
|
|
@@ -38,10 +39,10 @@ export async function writeOutput(
|
|
|
38
39
|
const target = resolve(basePath, file.path);
|
|
39
40
|
if (await AlloyHost.exists(target)) {
|
|
40
41
|
// eslint-disable-next-line no-console
|
|
41
|
-
console.log("copy over", relative(
|
|
42
|
+
console.log("copy over", relative(cwd(), target));
|
|
42
43
|
} else {
|
|
43
44
|
// eslint-disable-next-line no-console
|
|
44
|
-
console.log("copy", relative(
|
|
45
|
+
console.log("copy", relative(cwd(), target));
|
|
45
46
|
}
|
|
46
47
|
await AlloyHost.mkdir(dirname(target));
|
|
47
48
|
await AlloyHost.write(target, AlloyHost.read(source).stream());
|