@alloy-js/core 0.24.0-dev.2 → 0.24.0-dev.7
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 +8 -0
- package/dist/dev/src/components/AccessExpression.test.js +30 -38
- package/dist/dev/src/components/AccessExpression.test.js.map +1 -1
- package/dist/dev/src/components/Output.js +3 -2
- package/dist/dev/src/components/Output.js.map +1 -1
- package/dist/dev/src/components/SourceFile.js.map +1 -1
- package/dist/dev/src/content-slot.test.js +16 -18
- package/dist/dev/src/content-slot.test.js.map +1 -1
- package/dist/dev/src/context.js +30 -3
- package/dist/dev/src/context.js.map +1 -1
- package/dist/dev/src/debug/diagnostics.test.js +1 -1
- package/dist/dev/src/debug/diagnostics.test.js.map +1 -1
- package/dist/dev/src/debug/effects.test.js +1 -1
- package/dist/dev/src/debug/effects.test.js.map +1 -1
- package/dist/dev/src/debug/file-streaming.js +103 -0
- package/dist/dev/src/debug/file-streaming.js.map +1 -0
- package/dist/dev/src/debug/files.test.js +4 -5
- package/dist/dev/src/debug/files.test.js.map +1 -1
- package/dist/dev/src/debug/index.js +4 -6
- package/dist/dev/src/debug/index.js.map +1 -1
- package/dist/dev/src/debug/message-format.test.js +50 -52
- package/dist/dev/src/debug/message-format.test.js.map +1 -1
- package/dist/dev/src/debug/render-tree-orphans.test.js +13 -23
- package/dist/dev/src/debug/render-tree-orphans.test.js.map +1 -1
- package/dist/dev/src/debug/render.js +529 -352
- package/dist/dev/src/debug/render.js.map +1 -1
- package/dist/dev/src/debug/render.test.js +171 -92
- package/dist/dev/src/debug/render.test.js.map +1 -1
- package/dist/dev/src/debug/trace-writer.js +127 -15
- package/dist/dev/src/debug/trace-writer.js.map +1 -1
- package/dist/dev/src/debug/trace.js +0 -36
- package/dist/dev/src/debug/trace.js.map +1 -1
- package/dist/dev/src/devtools/devtools-server.js +55 -32
- package/dist/dev/src/devtools/devtools-server.js.map +1 -1
- package/dist/dev/src/devtools-entry.browser.js.map +1 -1
- package/dist/dev/src/devtools-entry.js.map +1 -1
- package/dist/dev/src/diagnostics.js +19 -1
- package/dist/dev/src/diagnostics.js.map +1 -1
- package/dist/dev/src/index.js +5 -2
- package/dist/dev/src/index.js.map +1 -1
- package/dist/dev/src/jsx-runtime.js +14 -8
- package/dist/dev/src/jsx-runtime.js.map +1 -1
- package/dist/dev/src/output-types.js +2 -0
- package/dist/dev/src/output-types.js.map +1 -0
- package/dist/dev/src/reactivity.js +155 -13
- package/dist/dev/src/reactivity.js.map +1 -1
- package/dist/dev/src/render/get-string-width.js +61 -0
- package/dist/dev/src/render/get-string-width.js.map +1 -0
- package/dist/dev/src/render/index.js +2 -0
- package/dist/dev/src/render/index.js.map +1 -0
- package/dist/dev/src/render/node-context.js +7 -0
- package/dist/dev/src/render/node-context.js.map +1 -0
- package/dist/dev/src/render/node.js +386 -0
- package/dist/dev/src/render/node.js.map +1 -0
- package/dist/dev/src/render/printer-support.js +180 -0
- package/dist/dev/src/render/printer-support.js.map +1 -0
- package/dist/dev/src/render/printer.js +797 -0
- package/dist/dev/src/render/printer.js.map +1 -0
- package/dist/dev/src/render-error.js +79 -0
- package/dist/dev/src/render-error.js.map +1 -0
- package/dist/dev/src/render-output.js +209 -0
- package/dist/dev/src/render-output.js.map +1 -0
- package/dist/dev/src/runtime/create-intrinsic.js +53 -0
- package/dist/dev/src/runtime/create-intrinsic.js.map +1 -0
- package/dist/dev/src/runtime/fragment.js +21 -0
- package/dist/dev/src/runtime/fragment.js.map +1 -0
- package/dist/dev/src/runtime/index.js +13 -0
- package/dist/dev/src/runtime/index.js.map +1 -0
- package/dist/dev/src/runtime/insert.js +453 -0
- package/dist/dev/src/runtime/insert.js.map +1 -0
- package/dist/dev/src/runtime/intrinsic.js +1 -11
- package/dist/dev/src/runtime/intrinsic.js.map +1 -1
- package/dist/dev/src/scheduler.js +38 -14
- package/dist/dev/src/scheduler.js.map +1 -1
- package/dist/dev/src/stc.js +2 -0
- package/dist/dev/src/stc.js.map +1 -1
- package/dist/dev/src/sti.js +1 -1
- package/dist/dev/src/sti.js.map +1 -1
- package/dist/dev/src/symbols/symbol-slot.test.js +5 -5
- package/dist/dev/src/symbols/symbol-slot.test.js.map +1 -1
- package/dist/dev/src/test-render.js +78 -0
- package/dist/dev/src/test-render.js.map +1 -0
- package/dist/dev/src/utils.js +47 -35
- package/dist/dev/src/utils.js.map +1 -1
- package/dist/dev/test/babel-e2e.test.js +218 -0
- package/dist/dev/test/babel-e2e.test.js.map +1 -0
- package/dist/dev/test/children.test.js +9 -11
- package/dist/dev/test/children.test.js.map +1 -1
- package/dist/dev/test/components/append-file.test.js +26 -27
- package/dist/dev/test/components/append-file.test.js.map +1 -1
- package/dist/dev/test/components/block.test.js +9 -11
- package/dist/dev/test/components/block.test.js.map +1 -1
- package/dist/dev/test/components/copy-file.test.js +1 -2
- package/dist/dev/test/components/copy-file.test.js.map +1 -1
- package/dist/dev/test/components/declaration.test.js +2 -2
- package/dist/dev/test/components/declaration.test.js.map +1 -1
- package/dist/dev/test/components/list.test.js +41 -43
- package/dist/dev/test/components/list.test.js.map +1 -1
- package/dist/dev/test/components/prose.test.js +4 -5
- package/dist/dev/test/components/prose.test.js.map +1 -1
- package/dist/dev/test/components/reference-or-content.test.js +32 -33
- package/dist/dev/test/components/reference-or-content.test.js.map +1 -1
- package/dist/dev/test/components/source-file.test.js +8 -7
- package/dist/dev/test/components/source-file.test.js.map +1 -1
- package/dist/dev/test/components/template-file.test.js +16 -17
- package/dist/dev/test/components/template-file.test.js.map +1 -1
- package/dist/dev/test/components/update-file.test.js +11 -12
- package/dist/dev/test/components/update-file.test.js.map +1 -1
- package/dist/dev/test/components/wrap.test.js +6 -8
- package/dist/dev/test/components/wrap.test.js.map +1 -1
- package/dist/dev/test/control-flow/for.test.js +58 -42
- package/dist/dev/test/control-flow/for.test.js.map +1 -1
- package/dist/dev/test/control-flow/match.test.js +15 -17
- package/dist/dev/test/control-flow/match.test.js.map +1 -1
- package/dist/dev/test/control-flow/show.test.js +5 -8
- package/dist/dev/test/control-flow/show.test.js.map +1 -1
- package/dist/dev/test/lazy-isempty.test.js +29 -31
- package/dist/dev/test/lazy-isempty.test.js.map +1 -1
- package/dist/dev/test/name-policy.test.js +2 -3
- package/dist/dev/test/name-policy.test.js.map +1 -1
- package/dist/dev/test/node.test.js +80 -0
- package/dist/dev/test/node.test.js.map +1 -0
- package/dist/dev/test/output-e2e.test.js +194 -0
- package/dist/dev/test/output-e2e.test.js.map +1 -0
- package/dist/dev/test/reactivity/circular-reactives.test.js +9 -9
- package/dist/dev/test/reactivity/circular-reactives.test.js.map +1 -1
- package/dist/dev/test/reactivity/cleanup.test.js +5 -6
- package/dist/dev/test/reactivity/cleanup.test.js.map +1 -1
- package/dist/dev/test/reactivity/ref-rendering.test.js +15 -15
- package/dist/dev/test/reactivity/ref-rendering.test.js.map +1 -1
- package/dist/dev/test/reactivity/test.test.js +18 -18
- package/dist/dev/test/reactivity/test.test.js.map +1 -1
- package/dist/dev/test/rendering/basic.test.js +18 -19
- package/dist/dev/test/rendering/basic.test.js.map +1 -1
- package/dist/dev/test/rendering/code.test.js +2 -3
- package/dist/dev/test/rendering/code.test.js.map +1 -1
- package/dist/dev/test/rendering/formatting.test.js +115 -121
- package/dist/dev/test/rendering/formatting.test.js.map +1 -1
- package/dist/dev/test/rendering/indent.test.js +23 -24
- package/dist/dev/test/rendering/indent.test.js.map +1 -1
- package/dist/dev/test/rendering/memoization.test.js +9 -5
- package/dist/dev/test/rendering/memoization.test.js.map +1 -1
- package/dist/dev/test/rendering/print-render-stack.test.js +20 -21
- package/dist/dev/test/rendering/print-render-stack.test.js.map +1 -1
- package/dist/dev/test/rendering/refkeys.test.js +1 -2
- package/dist/dev/test/rendering/refkeys.test.js.map +1 -1
- package/dist/dev/test/rendering/render-output-diagnostics.test.js +102 -0
- package/dist/dev/test/rendering/render-output-diagnostics.test.js.map +1 -0
- package/dist/dev/test/runtime.test.js +385 -0
- package/dist/dev/test/runtime.test.js.map +1 -0
- package/dist/dev/test/stc.test.js +0 -1
- package/dist/dev/test/stc.test.js.map +1 -1
- package/dist/dev/test/tree-test-utils.js +16 -0
- package/dist/dev/test/tree-test-utils.js.map +1 -0
- package/dist/dev/test/utils.test.js +34 -33
- package/dist/dev/test/utils.test.js.map +1 -1
- package/dist/dev/test/vitest.setup.js +2 -0
- package/dist/dev/test/vitest.setup.js.map +1 -0
- package/dist/dev/testing/devtools-utils.js +1 -1
- package/dist/dev/testing/devtools-utils.js.map +1 -1
- package/dist/dev/testing/extend-expect.js +30 -34
- package/dist/dev/testing/extend-expect.js.map +1 -1
- package/dist/dev/testing/render.js +7 -17
- package/dist/dev/testing/render.js.map +1 -1
- package/dist/devtools/index.html +17 -17
- package/dist/src/components/AccessExpression.test.d.ts +1 -1
- package/dist/src/components/AccessExpression.test.d.ts.map +1 -1
- package/dist/src/components/AccessExpression.test.js +5 -13
- package/dist/src/components/AccessExpression.test.js.map +1 -1
- package/dist/src/components/Output.d.ts +1 -1
- package/dist/src/components/Output.d.ts.map +1 -1
- package/dist/src/components/Output.js +2 -1
- package/dist/src/components/Output.js.map +1 -1
- package/dist/src/components/ReferenceOrContent.d.ts +1 -1
- package/dist/src/components/ReferenceOrContent.d.ts.map +1 -1
- package/dist/src/components/SourceFile.d.ts +1 -1
- package/dist/src/components/SourceFile.d.ts.map +1 -1
- package/dist/src/components/SourceFile.js.map +1 -1
- package/dist/src/content-slot.test.d.ts +1 -1
- package/dist/src/content-slot.test.d.ts.map +1 -1
- package/dist/src/content-slot.test.js +8 -10
- package/dist/src/content-slot.test.js.map +1 -1
- package/dist/src/context/format-options.d.ts +1 -1
- package/dist/src/context/format-options.d.ts.map +1 -1
- package/dist/src/context.d.ts +9 -1
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.js +30 -3
- package/dist/src/context.js.map +1 -1
- package/dist/src/debug/diagnostics.test.js +1 -1
- package/dist/src/debug/diagnostics.test.js.map +1 -1
- package/dist/src/debug/effects.test.js +1 -1
- package/dist/src/debug/effects.test.js.map +1 -1
- package/dist/src/debug/file-streaming.d.ts +22 -0
- package/dist/src/debug/file-streaming.d.ts.map +1 -0
- package/dist/src/debug/file-streaming.js +103 -0
- package/dist/src/debug/file-streaming.js.map +1 -0
- package/dist/src/debug/files.test.js +4 -5
- package/dist/src/debug/files.test.js.map +1 -1
- package/dist/src/debug/index.d.ts +5 -7
- package/dist/src/debug/index.d.ts.map +1 -1
- package/dist/src/debug/index.js +4 -6
- package/dist/src/debug/index.js.map +1 -1
- package/dist/src/debug/message-format.test.js +16 -18
- package/dist/src/debug/message-format.test.js.map +1 -1
- package/dist/src/debug/render-tree-orphans.test.js +8 -18
- package/dist/src/debug/render-tree-orphans.test.js.map +1 -1
- package/dist/src/debug/render.d.ts +71 -21
- package/dist/src/debug/render.d.ts.map +1 -1
- package/dist/src/debug/render.js +529 -352
- package/dist/src/debug/render.js.map +1 -1
- package/dist/src/debug/render.test.js +137 -74
- package/dist/src/debug/render.test.js.map +1 -1
- package/dist/src/debug/trace-writer.d.ts +6 -1
- package/dist/src/debug/trace-writer.d.ts.map +1 -1
- package/dist/src/debug/trace-writer.js +127 -15
- package/dist/src/debug/trace-writer.js.map +1 -1
- package/dist/src/debug/trace.d.ts +0 -36
- package/dist/src/debug/trace.d.ts.map +1 -1
- package/dist/src/debug/trace.js +0 -36
- package/dist/src/debug/trace.js.map +1 -1
- package/dist/src/devtools/devtools-protocol.d.ts +34 -1
- package/dist/src/devtools/devtools-protocol.d.ts.map +1 -1
- package/dist/src/devtools/devtools-server.d.ts.map +1 -1
- package/dist/src/devtools/devtools-server.js +55 -32
- package/dist/src/devtools/devtools-server.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 +4 -0
- package/dist/src/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics.js +19 -1
- package/dist/src/diagnostics.js.map +1 -1
- package/dist/src/index.d.ts +5 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/jsx-runtime.d.ts +13 -4
- package/dist/src/jsx-runtime.d.ts.map +1 -1
- package/dist/src/jsx-runtime.js +14 -8
- package/dist/src/jsx-runtime.js.map +1 -1
- package/dist/src/output-types.d.ts +40 -0
- package/dist/src/output-types.d.ts.map +1 -0
- package/dist/src/output-types.js +2 -0
- package/dist/src/output-types.js.map +1 -0
- package/dist/src/reactivity.d.ts +49 -18
- package/dist/src/reactivity.d.ts.map +1 -1
- package/dist/src/reactivity.js +155 -13
- package/dist/src/reactivity.js.map +1 -1
- package/dist/src/render/get-string-width.d.ts +19 -0
- package/dist/src/render/get-string-width.d.ts.map +1 -0
- package/dist/src/render/get-string-width.js +61 -0
- package/dist/src/render/get-string-width.js.map +1 -0
- package/dist/src/render/index.d.ts +2 -0
- package/dist/src/render/index.d.ts.map +1 -0
- package/dist/src/render/index.js +2 -0
- package/dist/src/render/index.js.map +1 -0
- package/dist/src/render/node-context.d.ts +5 -0
- package/dist/src/render/node-context.d.ts.map +1 -0
- package/dist/src/render/node-context.js +7 -0
- package/dist/src/render/node-context.js.map +1 -0
- package/dist/src/render/node.d.ts +146 -0
- package/dist/src/render/node.d.ts.map +1 -0
- package/dist/src/render/node.js +386 -0
- package/dist/src/render/node.js.map +1 -0
- package/dist/src/render/printer-support.d.ts +50 -0
- package/dist/src/render/printer-support.d.ts.map +1 -0
- package/dist/src/render/printer-support.js +180 -0
- package/dist/src/render/printer-support.js.map +1 -0
- package/dist/src/render/printer.d.ts +35 -0
- package/dist/src/render/printer.d.ts.map +1 -0
- package/dist/src/render/printer.js +797 -0
- package/dist/src/render/printer.js.map +1 -0
- package/dist/src/render-error.d.ts +4 -0
- package/dist/src/render-error.d.ts.map +1 -0
- package/dist/src/render-error.js +79 -0
- package/dist/src/render-error.js.map +1 -0
- package/dist/src/render-output.d.ts +42 -0
- package/dist/src/render-output.d.ts.map +1 -0
- package/dist/src/render-output.js +209 -0
- package/dist/src/render-output.js.map +1 -0
- package/dist/src/runtime/component.d.ts +2 -2
- package/dist/src/runtime/component.d.ts.map +1 -1
- package/dist/src/runtime/create-intrinsic.d.ts +28 -0
- package/dist/src/runtime/create-intrinsic.d.ts.map +1 -0
- package/dist/src/runtime/create-intrinsic.js +53 -0
- package/dist/src/runtime/create-intrinsic.js.map +1 -0
- package/dist/src/runtime/fragment.d.ts +16 -0
- package/dist/src/runtime/fragment.d.ts.map +1 -0
- package/dist/src/runtime/fragment.js +21 -0
- package/dist/src/runtime/fragment.js.map +1 -0
- package/dist/src/runtime/index.d.ts +12 -0
- package/dist/src/runtime/index.d.ts.map +1 -0
- package/dist/src/runtime/index.js +13 -0
- package/dist/src/runtime/index.js.map +1 -0
- package/dist/src/runtime/insert.d.ts +29 -0
- package/dist/src/runtime/insert.d.ts.map +1 -0
- package/dist/src/runtime/insert.js +453 -0
- package/dist/src/runtime/insert.js.map +1 -0
- package/dist/src/runtime/intrinsic.d.ts +12 -29
- package/dist/src/runtime/intrinsic.d.ts.map +1 -1
- package/dist/src/runtime/intrinsic.js +1 -11
- package/dist/src/runtime/intrinsic.js.map +1 -1
- package/dist/src/scheduler.d.ts.map +1 -1
- package/dist/src/scheduler.js +38 -14
- package/dist/src/scheduler.js.map +1 -1
- package/dist/src/stc.d.ts.map +1 -1
- package/dist/src/stc.js +2 -0
- package/dist/src/stc.js.map +1 -1
- package/dist/src/sti.d.ts +7 -6
- package/dist/src/sti.d.ts.map +1 -1
- package/dist/src/sti.js +1 -1
- package/dist/src/sti.js.map +1 -1
- package/dist/src/symbols/symbol-slot.test.js +5 -5
- package/dist/src/symbols/symbol-slot.test.js.map +1 -1
- package/dist/src/test-render.d.ts +31 -0
- package/dist/src/test-render.d.ts.map +1 -0
- package/dist/src/test-render.js +78 -0
- package/dist/src/test-render.js.map +1 -0
- package/dist/src/utils.d.ts +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +40 -28
- package/dist/src/utils.js.map +1 -1
- package/dist/src/write-output.d.ts +1 -1
- package/dist/src/write-output.d.ts.map +1 -1
- package/dist/test/babel-e2e.test.d.ts +13 -0
- package/dist/test/babel-e2e.test.d.ts.map +1 -0
- package/dist/test/babel-e2e.test.js +218 -0
- package/dist/test/babel-e2e.test.js.map +1 -0
- package/dist/test/children.test.js +5 -7
- package/dist/test/children.test.js.map +1 -1
- package/dist/test/components/append-file.test.d.ts +1 -1
- package/dist/test/components/append-file.test.d.ts.map +1 -1
- package/dist/test/components/append-file.test.js +0 -1
- package/dist/test/components/append-file.test.js.map +1 -1
- package/dist/test/components/block.test.d.ts +1 -1
- package/dist/test/components/block.test.d.ts.map +1 -1
- package/dist/test/components/block.test.js +4 -6
- package/dist/test/components/block.test.js.map +1 -1
- package/dist/test/components/copy-file.test.d.ts +1 -1
- package/dist/test/components/copy-file.test.d.ts.map +1 -1
- package/dist/test/components/copy-file.test.js +1 -2
- package/dist/test/components/copy-file.test.js.map +1 -1
- package/dist/test/components/declaration.test.js +2 -2
- package/dist/test/components/declaration.test.js.map +1 -1
- package/dist/test/components/list.test.d.ts +1 -1
- package/dist/test/components/list.test.d.ts.map +1 -1
- package/dist/test/components/list.test.js +20 -22
- package/dist/test/components/list.test.js.map +1 -1
- package/dist/test/components/prose.test.d.ts +1 -1
- package/dist/test/components/prose.test.d.ts.map +1 -1
- package/dist/test/components/prose.test.js +0 -1
- package/dist/test/components/prose.test.js.map +1 -1
- package/dist/test/components/reference-or-content.test.js +8 -9
- package/dist/test/components/reference-or-content.test.js.map +1 -1
- package/dist/test/components/source-file.test.d.ts +1 -1
- package/dist/test/components/source-file.test.d.ts.map +1 -1
- package/dist/test/components/source-file.test.js +5 -4
- package/dist/test/components/source-file.test.js.map +1 -1
- package/dist/test/components/template-file.test.d.ts +1 -1
- package/dist/test/components/template-file.test.d.ts.map +1 -1
- package/dist/test/components/template-file.test.js +0 -1
- package/dist/test/components/template-file.test.js.map +1 -1
- package/dist/test/components/update-file.test.d.ts +1 -1
- package/dist/test/components/update-file.test.d.ts.map +1 -1
- package/dist/test/components/update-file.test.js +1 -2
- package/dist/test/components/update-file.test.js.map +1 -1
- package/dist/test/components/wrap.test.d.ts +1 -1
- package/dist/test/components/wrap.test.d.ts.map +1 -1
- package/dist/test/components/wrap.test.js +3 -5
- package/dist/test/components/wrap.test.js.map +1 -1
- package/dist/test/control-flow/for.test.d.ts +1 -1
- package/dist/test/control-flow/for.test.d.ts.map +1 -1
- package/dist/test/control-flow/for.test.js +40 -24
- package/dist/test/control-flow/for.test.js.map +1 -1
- package/dist/test/control-flow/match.test.d.ts +1 -1
- package/dist/test/control-flow/match.test.d.ts.map +1 -1
- package/dist/test/control-flow/match.test.js +4 -6
- package/dist/test/control-flow/match.test.js.map +1 -1
- package/dist/test/control-flow/show.test.d.ts +1 -1
- package/dist/test/control-flow/show.test.d.ts.map +1 -1
- package/dist/test/control-flow/show.test.js +3 -6
- package/dist/test/control-flow/show.test.js.map +1 -1
- package/dist/test/lazy-isempty.test.d.ts +1 -1
- package/dist/test/lazy-isempty.test.d.ts.map +1 -1
- package/dist/test/lazy-isempty.test.js +16 -18
- package/dist/test/lazy-isempty.test.js.map +1 -1
- package/dist/test/name-policy.test.d.ts +1 -1
- package/dist/test/name-policy.test.d.ts.map +1 -1
- package/dist/test/name-policy.test.js +0 -1
- package/dist/test/name-policy.test.js.map +1 -1
- package/dist/test/node.test.d.ts +2 -0
- package/dist/test/node.test.d.ts.map +1 -0
- package/dist/test/node.test.js +80 -0
- package/dist/test/node.test.js.map +1 -0
- package/dist/test/output-e2e.test.d.ts +13 -0
- package/dist/test/output-e2e.test.d.ts.map +1 -0
- package/dist/test/output-e2e.test.js +194 -0
- package/dist/test/output-e2e.test.js.map +1 -0
- package/dist/test/reactivity/circular-reactives.test.js +6 -6
- package/dist/test/reactivity/circular-reactives.test.js.map +1 -1
- package/dist/test/reactivity/cleanup.test.js +2 -3
- package/dist/test/reactivity/cleanup.test.js.map +1 -1
- package/dist/test/reactivity/ref-rendering.test.js +15 -15
- package/dist/test/reactivity/ref-rendering.test.js.map +1 -1
- package/dist/test/reactivity/test.test.js +15 -15
- package/dist/test/reactivity/test.test.js.map +1 -1
- package/dist/test/rendering/basic.test.d.ts +1 -1
- package/dist/test/rendering/basic.test.d.ts.map +1 -1
- package/dist/test/rendering/basic.test.js +0 -1
- package/dist/test/rendering/basic.test.js.map +1 -1
- package/dist/test/rendering/code.test.d.ts +1 -1
- package/dist/test/rendering/code.test.d.ts.map +1 -1
- package/dist/test/rendering/code.test.js +0 -1
- package/dist/test/rendering/code.test.js.map +1 -1
- package/dist/test/rendering/formatting.test.d.ts +1 -1
- package/dist/test/rendering/formatting.test.d.ts.map +1 -1
- package/dist/test/rendering/formatting.test.js +17 -23
- package/dist/test/rendering/formatting.test.js.map +1 -1
- package/dist/test/rendering/indent.test.d.ts +1 -1
- package/dist/test/rendering/indent.test.d.ts.map +1 -1
- package/dist/test/rendering/indent.test.js +0 -1
- package/dist/test/rendering/indent.test.js.map +1 -1
- package/dist/test/rendering/memoization.test.js +7 -3
- package/dist/test/rendering/memoization.test.js.map +1 -1
- package/dist/test/rendering/print-render-stack.test.d.ts +1 -1
- package/dist/test/rendering/print-render-stack.test.d.ts.map +1 -1
- package/dist/test/rendering/print-render-stack.test.js +0 -1
- package/dist/test/rendering/print-render-stack.test.js.map +1 -1
- package/dist/test/rendering/refkeys.test.d.ts +1 -1
- package/dist/test/rendering/refkeys.test.d.ts.map +1 -1
- package/dist/test/rendering/refkeys.test.js +0 -1
- package/dist/test/rendering/refkeys.test.js.map +1 -1
- package/dist/test/rendering/render-output-diagnostics.test.d.ts +2 -0
- package/dist/test/rendering/render-output-diagnostics.test.d.ts.map +1 -0
- package/dist/test/rendering/render-output-diagnostics.test.js +82 -0
- package/dist/test/rendering/render-output-diagnostics.test.js.map +1 -0
- package/dist/test/runtime.test.d.ts +11 -0
- package/dist/test/runtime.test.d.ts.map +1 -0
- package/dist/test/runtime.test.js +385 -0
- package/dist/test/runtime.test.js.map +1 -0
- package/dist/test/stc.test.d.ts +1 -1
- package/dist/test/stc.test.d.ts.map +1 -1
- package/dist/test/stc.test.js +0 -1
- package/dist/test/stc.test.js.map +1 -1
- package/dist/test/tree-test-utils.d.ts +3 -0
- package/dist/test/tree-test-utils.d.ts.map +1 -0
- package/dist/test/tree-test-utils.js +16 -0
- package/dist/test/tree-test-utils.js.map +1 -0
- package/dist/test/utils.test.d.ts +1 -1
- package/dist/test/utils.test.d.ts.map +1 -1
- package/dist/test/utils.test.js +12 -11
- package/dist/test/utils.test.js.map +1 -1
- package/dist/test/vitest.setup.d.ts +2 -0
- package/dist/test/vitest.setup.d.ts.map +1 -0
- package/dist/test/vitest.setup.js +2 -0
- package/dist/test/vitest.setup.js.map +1 -0
- package/dist/testing/devtools-utils.d.ts.map +1 -1
- package/dist/testing/devtools-utils.js +1 -1
- package/dist/testing/devtools-utils.js.map +1 -1
- package/dist/testing/extend-expect.d.ts.map +1 -1
- package/dist/testing/extend-expect.js +30 -34
- package/dist/testing/extend-expect.js.map +1 -1
- package/dist/testing/render.d.ts +7 -9
- package/dist/testing/render.d.ts.map +1 -1
- package/dist/testing/render.js +7 -17
- package/dist/testing/render.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/api/components/Output.md +0 -3
- package/docs/api/components/SourceFile.md +0 -3
- package/docs/api/functions/createComment.md +18 -0
- package/docs/api/functions/createElement.md +19 -0
- package/docs/api/functions/createFragment.md +17 -0
- package/docs/api/functions/createTextNode.md +18 -0
- package/docs/api/functions/emitDiagnosticForTree.md +19 -0
- package/docs/api/functions/ensureIsEmpty.md +1 -1
- package/docs/api/functions/getContextForNode.md +18 -0
- package/docs/api/functions/getContextForRenderNode.md +4 -4
- package/docs/api/functions/getDiagnosticsForTree.md +7 -5
- package/docs/api/functions/getRegisteredDiagnosticsForTree.md +18 -0
- package/docs/api/functions/index.md +17 -12
- package/docs/api/functions/isCustomContext.md +4 -4
- package/docs/api/functions/notifyContentState.md +6 -0
- package/docs/api/functions/printTree.md +6 -16
- package/docs/api/functions/registerDiagnosticsForTree.md +19 -0
- package/docs/api/functions/render.md +1 -2
- package/docs/api/functions/renderAsync.md +1 -2
- package/docs/api/functions/renderTree.md +8 -5
- package/docs/api/functions/reportDiagnosticsForTree.md +18 -0
- package/docs/api/functions/runInContext.md +28 -0
- package/docs/api/functions/sourceFilesForTree.md +6 -16
- package/docs/api/index.md +3 -3
- package/docs/api/testing/functions/index.md +1 -1
- package/docs/api/testing/functions/renderToString.md +1 -1
- package/docs/api/types/AlloyNode.md +22 -0
- package/docs/api/types/Child.md +1 -1
- package/docs/api/types/CommentNode.md +15 -0
- package/docs/api/types/Context.md +13 -15
- package/docs/api/types/ElementNode.md +18 -0
- package/docs/api/types/FragmentNode.md +12 -0
- package/docs/api/types/Insertable.md +7 -0
- package/docs/api/types/NodeType.md +5 -0
- package/docs/api/types/OutputDirectory.md +0 -50
- package/docs/api/types/PrintTreeOptions.md +0 -1
- package/docs/api/types/RenderTreeOptions.md +7 -0
- package/docs/api/types/StiComponentCreator.md +4 -4
- package/docs/api/types/StiSignature.md +1 -1
- package/docs/api/types/TextNode.md +16 -0
- package/docs/api/types/index.md +10 -28
- package/docs/api/variables/COMMENT_NODE.md +5 -0
- package/docs/api/variables/ELEMENT_NODE.md +11 -0
- package/docs/api/variables/FRAGMENT_NODE.md +5 -0
- package/docs/api/variables/TEXT_NODE.md +5 -0
- package/docs/api/variables/index.md +4 -2
- package/docs/formatting.md +1 -1
- package/docs/rendering.md +4 -4
- package/package.json +6 -6
- package/src/components/AccessExpression.test.tsx +5 -13
- package/src/components/Output.tsx +2 -1
- package/src/components/SourceFile.tsx +1 -1
- package/src/content-slot.test.tsx +8 -10
- package/src/context/format-options.ts +1 -1
- package/src/context.ts +37 -4
- package/src/debug/diagnostics.test.tsx +1 -1
- package/src/debug/effects.test.tsx +1 -1
- package/src/debug/file-streaming.ts +115 -0
- package/src/debug/files.test.tsx +15 -11
- package/src/debug/index.ts +11 -11
- package/src/debug/message-format.test.tsx +32 -19
- package/src/debug/render-tree-orphans.test.tsx +10 -19
- package/src/debug/render.test.tsx +206 -78
- package/src/debug/render.ts +642 -495
- package/src/debug/trace-writer.ts +168 -14
- package/src/debug/trace.ts +0 -20
- package/src/devtools/devtools-protocol.ts +43 -0
- package/src/devtools/devtools-server.ts +57 -32
- package/src/devtools-entry.browser.ts +5 -0
- package/src/devtools-entry.ts +5 -0
- package/src/diagnostics.ts +31 -0
- package/src/index.ts +66 -2
- package/src/jsx-runtime.ts +16 -14
- package/src/output-types.ts +47 -0
- package/src/reactivity.ts +186 -40
- package/src/render/get-string-width.ts +201 -0
- package/src/render/index.ts +1 -0
- package/src/render/node-context.ts +14 -0
- package/src/render/node.ts +442 -0
- package/src/render/printer-support.ts +209 -0
- package/src/render/printer.ts +817 -0
- package/src/render-error.ts +98 -0
- package/src/render-output.ts +243 -0
- package/src/runtime/component.ts +2 -2
- package/src/runtime/create-intrinsic.ts +56 -0
- package/src/runtime/fragment.ts +22 -0
- package/src/runtime/index.ts +12 -0
- package/src/runtime/insert.ts +569 -0
- package/src/runtime/intrinsic.ts +14 -70
- package/src/scheduler.ts +40 -25
- package/src/stc.ts +3 -0
- package/src/sti.ts +17 -20
- package/src/symbols/symbol-slot.test.tsx +5 -5
- package/src/test-render.ts +103 -0
- package/src/utils.tsx +55 -37
- package/src/write-output.ts +1 -1
- package/temp/api-testing.json +390 -14
- package/temp/api.json +4320 -4144
- package/test/babel-e2e.test.ts +224 -0
- package/test/children.test.tsx +4 -7
- package/test/components/append-file.test.tsx +0 -1
- package/test/components/block.test.tsx +4 -6
- package/test/components/copy-file.test.tsx +2 -2
- package/test/components/declaration.test.tsx +2 -2
- package/test/components/list.test.tsx +20 -29
- package/test/components/prose.test.tsx +0 -1
- package/test/components/reference-or-content.test.tsx +8 -9
- package/test/components/source-file.test.tsx +4 -4
- package/test/components/template-file.test.tsx +0 -1
- package/test/components/update-file.test.tsx +1 -2
- package/test/components/wrap.test.tsx +3 -5
- package/test/control-flow/for.test.tsx +39 -31
- package/test/control-flow/match.test.tsx +4 -6
- package/test/control-flow/show.test.tsx +3 -6
- package/test/lazy-isempty.test.tsx +17 -19
- package/test/name-policy.test.tsx +0 -1
- package/test/node.test.ts +90 -0
- package/test/output-e2e.test.ts +198 -0
- package/test/reactivity/circular-reactives.test.tsx +6 -6
- package/test/reactivity/cleanup.test.tsx +2 -3
- package/test/reactivity/ref-rendering.test.tsx +15 -15
- package/test/reactivity/test.test.tsx +14 -14
- package/test/rendering/basic.test.tsx +0 -1
- package/test/rendering/code.test.tsx +0 -1
- package/test/rendering/formatting.test.tsx +21 -29
- package/test/rendering/indent.test.tsx +0 -1
- package/test/rendering/memoization.test.tsx +7 -3
- package/test/rendering/print-render-stack.test.tsx +0 -1
- package/test/rendering/refkeys.test.tsx +0 -1
- package/test/rendering/render-output-diagnostics.test.tsx +120 -0
- package/test/runtime.test.ts +448 -0
- package/test/stc.test.tsx +0 -1
- package/test/tree-test-utils.ts +23 -0
- package/test/utils.test.tsx +10 -9
- package/test/vitest.setup.ts +1 -0
- package/testing/devtools-utils.ts +2 -0
- package/testing/extend-expect.ts +32 -47
- package/testing/render.ts +17 -21
- package/vitest.config.ts +3 -0
- package/dist/dev/src/print-hook.js +0 -10
- package/dist/dev/src/print-hook.js.map +0 -1
- package/dist/dev/src/render.js +0 -872
- package/dist/dev/src/render.js.map +0 -1
- package/dist/src/print-hook.d.ts +0 -14
- package/dist/src/print-hook.d.ts.map +0 -1
- package/dist/src/print-hook.js +0 -10
- package/dist/src/print-hook.js.map +0 -1
- package/dist/src/render.d.ts +0 -155
- package/dist/src/render.d.ts.map +0 -1
- package/dist/src/render.js +0 -872
- package/dist/src/render.js.map +0 -1
- package/docs/api/functions/createIntrinsic.md +0 -19
- package/docs/api/functions/createRenderTreeHook.md +0 -19
- package/docs/api/functions/getElementCache.md +0 -17
- package/docs/api/functions/isIntrinsicElement.md +0 -18
- package/docs/api/functions/isPrintHook.md +0 -18
- package/docs/api/types/AlignIntrinsicElement.md +0 -5
- package/docs/api/types/BrIntrinsicElement.md +0 -5
- package/docs/api/types/BreakParentIntrinsicElement.md +0 -5
- package/docs/api/types/DedentIntrinsicElement.md +0 -5
- package/docs/api/types/DedentToRootIntrinsicElement.md +0 -5
- package/docs/api/types/ElementCache.md +0 -5
- package/docs/api/types/ElementCacheKey.md +0 -5
- package/docs/api/types/FillIntrinsicElement.md +0 -5
- package/docs/api/types/GroupIntrinsicElement.md +0 -5
- package/docs/api/types/HardlineIntrinsicElement.md +0 -5
- package/docs/api/types/HbrIntrinsicElement.md +0 -5
- package/docs/api/types/IfBreakIntrinsicElement.md +0 -5
- package/docs/api/types/IndentIfBreakIntrinsicElement.md +0 -5
- package/docs/api/types/IndentIntrinsicElement.md +0 -5
- package/docs/api/types/IntrinsicElement.md +0 -5
- package/docs/api/types/IntrinsicElementBase.md +0 -9
- package/docs/api/types/LbrIntrinsicElement.md +0 -5
- package/docs/api/types/LineIntrinsicElement.md +0 -5
- package/docs/api/types/LineSuffixBoundaryIntrinsicElement.md +0 -5
- package/docs/api/types/LineSuffixIntrinsicElement.md +0 -5
- package/docs/api/types/LiterallineIntrinsicElement.md +0 -5
- package/docs/api/types/MarkAsRootIntrinsicElement.md +0 -5
- package/docs/api/types/PrintHook.md +0 -10
- package/docs/api/types/RenderedTextTree.md +0 -5
- package/docs/api/types/SbrIntrinsicElement.md +0 -5
- package/docs/api/types/SoftlineIntrinsicElement.md +0 -5
- package/docs/api/variables/intrinsicElementKey.md +0 -5
- package/docs/api/variables/printHookTag.md +0 -7
- package/src/print-hook.ts +0 -22
- package/src/render.ts +0 -1154
|
@@ -23,6 +23,11 @@ let stmtInsertRenderNode: StatementSync;
|
|
|
23
23
|
let stmtUpdateRenderNode: StatementSync;
|
|
24
24
|
let stmtUpdateRenderNodeContext: StatementSync;
|
|
25
25
|
let stmtDeleteRenderNode: StatementSync;
|
|
26
|
+
let stmtInsertComponentInstance: StatementSync;
|
|
27
|
+
let stmtUpdateComponentInstanceProps: StatementSync;
|
|
28
|
+
let stmtDeleteComponentInstance: StatementSync;
|
|
29
|
+
let stmtInsertComponentRoot: StatementSync;
|
|
30
|
+
let stmtDeleteComponentRoot: StatementSync;
|
|
26
31
|
let stmtInsertSymbol: StatementSync;
|
|
27
32
|
let stmtUpdateSymbol: StatementSync;
|
|
28
33
|
let stmtDeleteSymbol: StatementSync;
|
|
@@ -47,9 +52,7 @@ export function nextSeq(): number {
|
|
|
47
52
|
return seq++;
|
|
48
53
|
}
|
|
49
54
|
|
|
50
|
-
//
|
|
51
|
-
// Change notification bus — streams SQLite changes to devtools WS server
|
|
52
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
55
|
+
// #region Change notification bus
|
|
53
56
|
|
|
54
57
|
export type ChangeChannel =
|
|
55
58
|
| "render"
|
|
@@ -63,7 +66,9 @@ export type ChangeChannel =
|
|
|
63
66
|
| "diagnostics"
|
|
64
67
|
| "errors"
|
|
65
68
|
| "lifecycle"
|
|
66
|
-
| "scheduler"
|
|
69
|
+
| "scheduler"
|
|
70
|
+
| "components"
|
|
71
|
+
| "component_roots";
|
|
67
72
|
|
|
68
73
|
export const ALL_CHANNELS: ChangeChannel[] = [
|
|
69
74
|
"render",
|
|
@@ -78,6 +83,8 @@ export const ALL_CHANNELS: ChangeChannel[] = [
|
|
|
78
83
|
"errors",
|
|
79
84
|
"lifecycle",
|
|
80
85
|
"scheduler",
|
|
86
|
+
"components",
|
|
87
|
+
"component_roots",
|
|
81
88
|
];
|
|
82
89
|
|
|
83
90
|
export interface ChangeEvent {
|
|
@@ -115,6 +122,8 @@ const channelTableMap: Record<string, string> = {
|
|
|
115
122
|
diagnostics: "diagnostics",
|
|
116
123
|
errors: "render_errors",
|
|
117
124
|
scheduler: "scheduler_jobs",
|
|
125
|
+
components: "component_instances",
|
|
126
|
+
component_roots: "component_roots",
|
|
118
127
|
};
|
|
119
128
|
|
|
120
129
|
export function queryChannel(
|
|
@@ -124,7 +133,7 @@ export function queryChannel(
|
|
|
124
133
|
const table = channelTableMap[channel];
|
|
125
134
|
if (!table) return [];
|
|
126
135
|
if (!/^[a-z_]+$/.test(table)) return [];
|
|
127
|
-
return db.prepare(`SELECT * FROM ${table}`).all() as Record<
|
|
136
|
+
return db.prepare(`SELECT * FROM ${table} ORDER BY seq`).all() as Record<
|
|
128
137
|
string,
|
|
129
138
|
unknown
|
|
130
139
|
>[];
|
|
@@ -215,6 +224,31 @@ function createSchema(): void {
|
|
|
215
224
|
CREATE INDEX IF NOT EXISTS idx_render_nodes_parent ON render_nodes(parent_id);
|
|
216
225
|
CREATE INDEX IF NOT EXISTS idx_render_nodes_context ON render_nodes(context_id);
|
|
217
226
|
|
|
227
|
+
CREATE TABLE IF NOT EXISTS component_instances (
|
|
228
|
+
id INTEGER PRIMARY KEY,
|
|
229
|
+
parent_id INTEGER,
|
|
230
|
+
name TEXT NOT NULL,
|
|
231
|
+
props TEXT,
|
|
232
|
+
source_file TEXT,
|
|
233
|
+
source_line INTEGER,
|
|
234
|
+
source_col INTEGER,
|
|
235
|
+
context_id INTEGER,
|
|
236
|
+
seq INTEGER
|
|
237
|
+
);
|
|
238
|
+
CREATE INDEX IF NOT EXISTS idx_component_instances_parent ON component_instances(parent_id);
|
|
239
|
+
CREATE INDEX IF NOT EXISTS idx_component_instances_name ON component_instances(name);
|
|
240
|
+
CREATE INDEX IF NOT EXISTS idx_component_instances_context ON component_instances(context_id);
|
|
241
|
+
|
|
242
|
+
CREATE TABLE IF NOT EXISTS component_roots (
|
|
243
|
+
component_id INTEGER NOT NULL,
|
|
244
|
+
render_node_id INTEGER NOT NULL,
|
|
245
|
+
ordinal INTEGER NOT NULL,
|
|
246
|
+
seq INTEGER,
|
|
247
|
+
PRIMARY KEY (component_id, render_node_id)
|
|
248
|
+
);
|
|
249
|
+
CREATE INDEX IF NOT EXISTS idx_component_roots_component ON component_roots(component_id);
|
|
250
|
+
CREATE INDEX IF NOT EXISTS idx_component_roots_node ON component_roots(render_node_id);
|
|
251
|
+
|
|
218
252
|
CREATE TABLE IF NOT EXISTS symbols (
|
|
219
253
|
id INTEGER PRIMARY KEY,
|
|
220
254
|
name TEXT NOT NULL,
|
|
@@ -339,6 +373,23 @@ function prepareStatements(): void {
|
|
|
339
373
|
`UPDATE render_nodes SET context_id = ? WHERE id = ?`,
|
|
340
374
|
);
|
|
341
375
|
stmtDeleteRenderNode = db!.prepare(`DELETE FROM render_nodes WHERE id = ?`);
|
|
376
|
+
stmtInsertComponentInstance = db!.prepare(
|
|
377
|
+
`INSERT OR REPLACE INTO component_instances (id, parent_id, name, props, source_file, source_line, source_col, context_id, seq)
|
|
378
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
379
|
+
);
|
|
380
|
+
stmtUpdateComponentInstanceProps = db!.prepare(
|
|
381
|
+
`UPDATE component_instances SET props = ? WHERE id = ?`,
|
|
382
|
+
);
|
|
383
|
+
stmtDeleteComponentInstance = db!.prepare(
|
|
384
|
+
`DELETE FROM component_instances WHERE id = ?`,
|
|
385
|
+
);
|
|
386
|
+
stmtInsertComponentRoot = db!.prepare(
|
|
387
|
+
`INSERT OR REPLACE INTO component_roots (component_id, render_node_id, ordinal, seq)
|
|
388
|
+
VALUES (?, ?, ?, ?)`,
|
|
389
|
+
);
|
|
390
|
+
stmtDeleteComponentRoot = db!.prepare(
|
|
391
|
+
`DELETE FROM component_roots WHERE component_id = ? AND render_node_id = ?`,
|
|
392
|
+
);
|
|
342
393
|
stmtInsertSymbol = db!.prepare(
|
|
343
394
|
`INSERT OR REPLACE INTO symbols (id, name, original_name, scope_id, owner_symbol_id, render_node_id, is_member, is_transient, is_alias, metadata, seq)
|
|
344
395
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
@@ -385,9 +436,9 @@ function prepareStatements(): void {
|
|
|
385
436
|
);
|
|
386
437
|
}
|
|
387
438
|
|
|
388
|
-
//
|
|
389
|
-
|
|
390
|
-
//
|
|
439
|
+
// #endregion
|
|
440
|
+
|
|
441
|
+
// #region Insert methods
|
|
391
442
|
|
|
392
443
|
export function insertEffect(
|
|
393
444
|
id: number,
|
|
@@ -536,6 +587,10 @@ export function insertSchedulerFlush(jobsRun: number): void {
|
|
|
536
587
|
stmtInsertSchedulerFlush.run(nextSeq(), jobsRun);
|
|
537
588
|
}
|
|
538
589
|
|
|
590
|
+
// Track live render IDs and parent -> children edges so duplicate removals are
|
|
591
|
+
// ignored and child sets stay consistent with render-layer lifecycle events.
|
|
592
|
+
const renderChildren = new Map<number, Set<number>>();
|
|
593
|
+
const liveRenderIds = new Set<number>();
|
|
539
594
|
export function insertRenderNode(
|
|
540
595
|
id: number,
|
|
541
596
|
parentId: number | null,
|
|
@@ -550,6 +605,15 @@ export function insertRenderNode(
|
|
|
550
605
|
): void {
|
|
551
606
|
if (!db) return;
|
|
552
607
|
const s = nextSeq();
|
|
608
|
+
if (parentId !== null) {
|
|
609
|
+
let set = renderChildren.get(parentId);
|
|
610
|
+
if (!set) {
|
|
611
|
+
set = new Set();
|
|
612
|
+
renderChildren.set(parentId, set);
|
|
613
|
+
}
|
|
614
|
+
set.add(id);
|
|
615
|
+
}
|
|
616
|
+
liveRenderIds.add(id);
|
|
553
617
|
stmtInsertRenderNode.run(
|
|
554
618
|
id,
|
|
555
619
|
parentId,
|
|
@@ -595,10 +659,94 @@ export function updateRenderNodeContext(id: number, contextId: number): void {
|
|
|
595
659
|
|
|
596
660
|
export function deleteRenderNode(id: number): void {
|
|
597
661
|
if (!db) return;
|
|
662
|
+
if (!liveRenderIds.has(id)) return;
|
|
663
|
+
liveRenderIds.delete(id);
|
|
664
|
+
// Detach from parent's child set.
|
|
665
|
+
for (const set of renderChildren.values()) set.delete(id);
|
|
666
|
+
renderChildren.delete(id);
|
|
598
667
|
stmtDeleteRenderNode.run(id);
|
|
599
668
|
notifyChange("render", "removed", { id });
|
|
600
669
|
}
|
|
601
670
|
|
|
671
|
+
export function insertComponentInstance(
|
|
672
|
+
id: number,
|
|
673
|
+
parentId: number | null,
|
|
674
|
+
name: string,
|
|
675
|
+
props: string | undefined,
|
|
676
|
+
sourceFile: string | undefined,
|
|
677
|
+
sourceLine: number | undefined,
|
|
678
|
+
sourceCol: number | undefined,
|
|
679
|
+
contextId: number | null,
|
|
680
|
+
): void {
|
|
681
|
+
if (!db) return;
|
|
682
|
+
const s = nextSeq();
|
|
683
|
+
stmtInsertComponentInstance.run(
|
|
684
|
+
id,
|
|
685
|
+
parentId,
|
|
686
|
+
name,
|
|
687
|
+
props ?? null,
|
|
688
|
+
sourceFile ?? null,
|
|
689
|
+
sourceLine ?? null,
|
|
690
|
+
sourceCol ?? null,
|
|
691
|
+
contextId,
|
|
692
|
+
s,
|
|
693
|
+
);
|
|
694
|
+
notifyChange("components", "added", {
|
|
695
|
+
id,
|
|
696
|
+
parent_id: parentId,
|
|
697
|
+
name,
|
|
698
|
+
props: props ?? null,
|
|
699
|
+
source_file: sourceFile ?? null,
|
|
700
|
+
source_line: sourceLine ?? null,
|
|
701
|
+
source_col: sourceCol ?? null,
|
|
702
|
+
context_id: contextId,
|
|
703
|
+
seq: s,
|
|
704
|
+
});
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
export function updateComponentInstanceProps(
|
|
708
|
+
id: number,
|
|
709
|
+
props: string | undefined,
|
|
710
|
+
): void {
|
|
711
|
+
if (!db) return;
|
|
712
|
+
stmtUpdateComponentInstanceProps.run(props ?? null, id);
|
|
713
|
+
notifyChange("components", "updated", { id, props: props ?? null });
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
export function deleteComponentInstance(id: number): void {
|
|
717
|
+
if (!db) return;
|
|
718
|
+
stmtDeleteComponentInstance.run(id);
|
|
719
|
+
notifyChange("components", "removed", { id });
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
export function insertComponentRoot(
|
|
723
|
+
componentId: number,
|
|
724
|
+
renderNodeId: number,
|
|
725
|
+
ordinal: number,
|
|
726
|
+
): void {
|
|
727
|
+
if (!db) return;
|
|
728
|
+
const s = nextSeq();
|
|
729
|
+
stmtInsertComponentRoot.run(componentId, renderNodeId, ordinal, s);
|
|
730
|
+
notifyChange("component_roots", "added", {
|
|
731
|
+
component_id: componentId,
|
|
732
|
+
render_node_id: renderNodeId,
|
|
733
|
+
ordinal,
|
|
734
|
+
seq: s,
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
export function deleteComponentRoot(
|
|
739
|
+
componentId: number,
|
|
740
|
+
renderNodeId: number,
|
|
741
|
+
): void {
|
|
742
|
+
if (!db) return;
|
|
743
|
+
stmtDeleteComponentRoot.run(componentId, renderNodeId);
|
|
744
|
+
notifyChange("component_roots", "removed", {
|
|
745
|
+
component_id: componentId,
|
|
746
|
+
render_node_id: renderNodeId,
|
|
747
|
+
});
|
|
748
|
+
}
|
|
749
|
+
|
|
602
750
|
export function insertSymbol(
|
|
603
751
|
id: number,
|
|
604
752
|
name: string,
|
|
@@ -921,9 +1069,9 @@ export function insertSourceMap(
|
|
|
921
1069
|
stmtInsertSourceMap.run(outputPath, mapJson, outputText ?? null);
|
|
922
1070
|
}
|
|
923
1071
|
|
|
924
|
-
//
|
|
925
|
-
|
|
926
|
-
//
|
|
1072
|
+
// #endregion
|
|
1073
|
+
|
|
1074
|
+
// #region Transaction helpers
|
|
927
1075
|
|
|
928
1076
|
export function beginTransaction(): void {
|
|
929
1077
|
if (!db) return;
|
|
@@ -939,15 +1087,19 @@ export function closeTrace(): void {
|
|
|
939
1087
|
db?.close();
|
|
940
1088
|
db = null;
|
|
941
1089
|
stmtDeleteDiagnostic = undefined;
|
|
1090
|
+
renderChildren.clear();
|
|
1091
|
+
liveRenderIds.clear();
|
|
942
1092
|
}
|
|
943
1093
|
|
|
944
1094
|
export function resetTrace(): void {
|
|
945
1095
|
seq = 0;
|
|
1096
|
+
renderChildren.clear();
|
|
1097
|
+
liveRenderIds.clear();
|
|
946
1098
|
}
|
|
947
1099
|
|
|
948
|
-
//
|
|
949
|
-
|
|
950
|
-
//
|
|
1100
|
+
// #endregion
|
|
1101
|
+
|
|
1102
|
+
// #region Lifecycle signals
|
|
951
1103
|
|
|
952
1104
|
export function notifyRenderReset(): void {
|
|
953
1105
|
notifyChange("render", "reset", { _signal: "render:reset" } as any);
|
|
@@ -960,3 +1112,5 @@ export function notifyRenderComplete(): void {
|
|
|
960
1112
|
export function notifyFlushComplete(): void {
|
|
961
1113
|
notifyChange("lifecycle", "added", { _signal: "flushJobs:complete" } as any);
|
|
962
1114
|
}
|
|
1115
|
+
|
|
1116
|
+
// #endregion
|
package/src/debug/trace.ts
CHANGED
|
@@ -197,26 +197,6 @@ export const TracePhase = {
|
|
|
197
197
|
subarea: "appendChild",
|
|
198
198
|
bg: { r: 100, g: 50, b: 0 },
|
|
199
199
|
},
|
|
200
|
-
appendTextNode: {
|
|
201
|
-
area: "render",
|
|
202
|
-
subarea: "appendChild.textNode",
|
|
203
|
-
bg: { r: 100, g: 50, b: 0 },
|
|
204
|
-
},
|
|
205
|
-
appendCachedFragment: {
|
|
206
|
-
area: "render",
|
|
207
|
-
subarea: "appendChild.cachedFragment",
|
|
208
|
-
bg: { r: 100, g: 50, b: 0 },
|
|
209
|
-
},
|
|
210
|
-
appendCustomContext: {
|
|
211
|
-
area: "render",
|
|
212
|
-
subarea: "appendChild.customContext",
|
|
213
|
-
bg: { r: 100, g: 50, b: 0 },
|
|
214
|
-
},
|
|
215
|
-
appendPrintHook: {
|
|
216
|
-
area: "render",
|
|
217
|
-
subarea: "appendChild.printHook",
|
|
218
|
-
bg: { r: 100, g: 50, b: 0 },
|
|
219
|
-
},
|
|
220
200
|
appendComponent: {
|
|
221
201
|
area: "render",
|
|
222
202
|
subarea: "appendChild.component",
|
|
@@ -209,6 +209,44 @@ export interface RenderNodeRemovedMessage {
|
|
|
209
209
|
id: number;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
+
export interface ComponentAddedMessage {
|
|
213
|
+
type: "component:added";
|
|
214
|
+
id: number;
|
|
215
|
+
parent_id: number | null;
|
|
216
|
+
name: string;
|
|
217
|
+
props?: string;
|
|
218
|
+
source_file?: string;
|
|
219
|
+
source_line?: number;
|
|
220
|
+
source_col?: number;
|
|
221
|
+
context_id?: number | null;
|
|
222
|
+
seq: number;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
export interface ComponentUpdatedMessage {
|
|
226
|
+
type: "component:updated";
|
|
227
|
+
id: number;
|
|
228
|
+
props?: string;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export interface ComponentRemovedMessage {
|
|
232
|
+
type: "component:removed";
|
|
233
|
+
id: number;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export interface ComponentRootAddedMessage {
|
|
237
|
+
type: "component:root_added";
|
|
238
|
+
component_id: number;
|
|
239
|
+
render_node_id: number;
|
|
240
|
+
ordinal: number;
|
|
241
|
+
seq: number;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export interface ComponentRootRemovedMessage {
|
|
245
|
+
type: "component:root_removed";
|
|
246
|
+
component_id: number;
|
|
247
|
+
render_node_id: number;
|
|
248
|
+
}
|
|
249
|
+
|
|
212
250
|
export interface RenderErrorMessage {
|
|
213
251
|
type: "render:error";
|
|
214
252
|
name?: string;
|
|
@@ -443,6 +481,11 @@ export type ServerToClientMessage =
|
|
|
443
481
|
| RenderNodeAddedMessage
|
|
444
482
|
| RenderNodeUpdatedMessage
|
|
445
483
|
| RenderNodeRemovedMessage
|
|
484
|
+
| ComponentAddedMessage
|
|
485
|
+
| ComponentUpdatedMessage
|
|
486
|
+
| ComponentRemovedMessage
|
|
487
|
+
| ComponentRootAddedMessage
|
|
488
|
+
| ComponentRootRemovedMessage
|
|
446
489
|
| RenderErrorMessage
|
|
447
490
|
| RenderCompleteMessage
|
|
448
491
|
| FlushJobsCompleteMessage
|
|
@@ -20,9 +20,7 @@ import {
|
|
|
20
20
|
type DevtoolsTransportState,
|
|
21
21
|
} from "./devtools-transport.js";
|
|
22
22
|
|
|
23
|
-
//
|
|
24
|
-
// Public types
|
|
25
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
// #region Public types
|
|
26
24
|
|
|
27
25
|
export interface DevtoolsIncomingMessage {
|
|
28
26
|
type: string;
|
|
@@ -39,9 +37,9 @@ export interface EnableDevtoolsOptions {
|
|
|
39
37
|
port?: number;
|
|
40
38
|
}
|
|
41
39
|
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
//
|
|
40
|
+
// #endregion
|
|
41
|
+
|
|
42
|
+
// #region Session state
|
|
45
43
|
|
|
46
44
|
let transportState: DevtoolsTransportState | null = null;
|
|
47
45
|
let transportPromise: Promise<DevtoolsTransportState> | null = null;
|
|
@@ -55,9 +53,9 @@ let tempDbPath: string | null = null;
|
|
|
55
53
|
let subscribedPromise: Promise<void> | null = null;
|
|
56
54
|
let resolveSubscribed: (() => void) | null = null;
|
|
57
55
|
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
//
|
|
56
|
+
// #endregion
|
|
57
|
+
|
|
58
|
+
// #region Per-client subscription state
|
|
61
59
|
|
|
62
60
|
interface ClientState {
|
|
63
61
|
subscriptions: Set<ChangeChannel>;
|
|
@@ -73,6 +71,15 @@ function eventToMessageType(event: ChangeEvent): string {
|
|
|
73
71
|
removed: "render:node_removed",
|
|
74
72
|
reset: "render:reset",
|
|
75
73
|
},
|
|
74
|
+
components: {
|
|
75
|
+
added: "component:added",
|
|
76
|
+
updated: "component:updated",
|
|
77
|
+
removed: "component:removed",
|
|
78
|
+
},
|
|
79
|
+
component_roots: {
|
|
80
|
+
added: "component:root_added",
|
|
81
|
+
removed: "component:root_removed",
|
|
82
|
+
},
|
|
76
83
|
effects: { added: "effect:added", updated: "effect:updated" },
|
|
77
84
|
refs: { added: "ref:added" },
|
|
78
85
|
edges: { added: `edge:${(event.data as any).edge_type ?? "track"}` },
|
|
@@ -108,6 +115,8 @@ function channelToInitialMessageType(
|
|
|
108
115
|
): string {
|
|
109
116
|
const map: Record<string, string> = {
|
|
110
117
|
render: "render:node_added",
|
|
118
|
+
components: "component:added",
|
|
119
|
+
component_roots: "component:root_added",
|
|
111
120
|
effects: "effect:added",
|
|
112
121
|
refs: "ref:added",
|
|
113
122
|
symbols: "symbol:added",
|
|
@@ -141,9 +150,9 @@ function sendInitialState(socket: any, channels: ChangeChannel[]): void {
|
|
|
141
150
|
}
|
|
142
151
|
}
|
|
143
152
|
|
|
144
|
-
//
|
|
145
|
-
|
|
146
|
-
//
|
|
153
|
+
// #endregion
|
|
154
|
+
|
|
155
|
+
// #region Environment helpers
|
|
147
156
|
|
|
148
157
|
function isNodeEnvironment() {
|
|
149
158
|
return (
|
|
@@ -158,12 +167,24 @@ function isNodeEnvironment() {
|
|
|
158
167
|
let _envDebugEnabled: boolean =
|
|
159
168
|
isNodeEnvironment() && Boolean(process.env.ALLOY_DEBUG);
|
|
160
169
|
|
|
170
|
+
// Cached value of `devtoolsExplicitlyEnabled || _envDebugEnabled`. This
|
|
171
|
+
// function is called on hot paths (every effect/scheduler tick), so we
|
|
172
|
+
// avoid recomputing the OR + the `isNodeEnvironment` check on every call.
|
|
173
|
+
// The cache is invalidated whenever either underlying flag mutates.
|
|
174
|
+
let _devtoolsEnabledCache: boolean = isNodeEnvironment() && _envDebugEnabled;
|
|
175
|
+
|
|
176
|
+
function refreshDevtoolsEnabledCache(): void {
|
|
177
|
+
_devtoolsEnabledCache =
|
|
178
|
+
isNodeEnvironment() && (devtoolsExplicitlyEnabled || _envDebugEnabled);
|
|
179
|
+
}
|
|
180
|
+
|
|
161
181
|
/**
|
|
162
182
|
* Invalidates the cached env-var result for isDevtoolsEnabled(). Call this in
|
|
163
183
|
* test beforeEach hooks after modifying process.env.ALLOY_DEBUG.
|
|
164
184
|
*/
|
|
165
185
|
export function refreshDebugState(): void {
|
|
166
186
|
_envDebugEnabled = isNodeEnvironment() && Boolean(process.env.ALLOY_DEBUG);
|
|
187
|
+
refreshDevtoolsEnabledCache();
|
|
167
188
|
}
|
|
168
189
|
|
|
169
190
|
function getCwd() {
|
|
@@ -183,14 +204,13 @@ function resolveDebugPort() {
|
|
|
183
204
|
return parsed;
|
|
184
205
|
}
|
|
185
206
|
|
|
186
|
-
//
|
|
187
|
-
|
|
188
|
-
//
|
|
207
|
+
// #endregion
|
|
208
|
+
|
|
209
|
+
// #region Query functions
|
|
189
210
|
|
|
190
211
|
/** Returns true when devtools are enabled (via env var or explicit call). */
|
|
191
212
|
export function isDevtoolsEnabled() {
|
|
192
|
-
|
|
193
|
-
return devtoolsExplicitlyEnabled || _envDebugEnabled;
|
|
213
|
+
return _devtoolsEnabledCache;
|
|
194
214
|
}
|
|
195
215
|
|
|
196
216
|
/** Returns true when a devtools client is currently connected. */
|
|
@@ -204,9 +224,9 @@ export function getDevtoolsServerInfo(): DevtoolsServerInfo | null {
|
|
|
204
224
|
return { port: transportState.port, connected: transportState.connected };
|
|
205
225
|
}
|
|
206
226
|
|
|
207
|
-
//
|
|
208
|
-
|
|
209
|
-
//
|
|
227
|
+
// #endregion
|
|
228
|
+
|
|
229
|
+
// #region Temp SQLite for devtools
|
|
210
230
|
|
|
211
231
|
async function ensureSqliteForDevtools(): Promise<void> {
|
|
212
232
|
if (isTraceEnabled()) return;
|
|
@@ -236,9 +256,9 @@ async function ensureSqliteForDevtools(): Promise<void> {
|
|
|
236
256
|
});
|
|
237
257
|
}
|
|
238
258
|
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
//
|
|
259
|
+
// #endregion
|
|
260
|
+
|
|
261
|
+
// #region Server lifecycle
|
|
242
262
|
|
|
243
263
|
async function ensureServer(): Promise<DevtoolsTransportState> {
|
|
244
264
|
if (transportState) return transportState;
|
|
@@ -350,9 +370,9 @@ async function ensureServer(): Promise<DevtoolsTransportState> {
|
|
|
350
370
|
return transportPromise;
|
|
351
371
|
}
|
|
352
372
|
|
|
353
|
-
//
|
|
354
|
-
|
|
355
|
-
//
|
|
373
|
+
// #endregion
|
|
374
|
+
|
|
375
|
+
// #region Public API
|
|
356
376
|
|
|
357
377
|
/**
|
|
358
378
|
* Wait for a devtools client to connect before proceeding.
|
|
@@ -371,6 +391,7 @@ async function ensureServer(): Promise<DevtoolsTransportState> {
|
|
|
371
391
|
*/
|
|
372
392
|
export async function waitForDevtoolsConnection(): Promise<void> {
|
|
373
393
|
devtoolsExplicitlyEnabled = true;
|
|
394
|
+
refreshDevtoolsEnabledCache();
|
|
374
395
|
const server = await ensureServer();
|
|
375
396
|
if (!server.connected) {
|
|
376
397
|
await server.ready;
|
|
@@ -392,6 +413,7 @@ export async function enableDevtools(
|
|
|
392
413
|
options?: EnableDevtoolsOptions,
|
|
393
414
|
): Promise<DevtoolsServerInfo> {
|
|
394
415
|
devtoolsExplicitlyEnabled = true;
|
|
416
|
+
refreshDevtoolsEnabledCache();
|
|
395
417
|
devtoolsInitialized = true;
|
|
396
418
|
if (options?.port !== undefined) {
|
|
397
419
|
configuredPort = options.port;
|
|
@@ -435,9 +457,9 @@ export async function enableDevtoolsAndConnect(
|
|
|
435
457
|
return { port: transportState!.port, connected: true };
|
|
436
458
|
}
|
|
437
459
|
|
|
438
|
-
//
|
|
439
|
-
|
|
440
|
-
//
|
|
460
|
+
// #endregion
|
|
461
|
+
|
|
462
|
+
// #region Messaging
|
|
441
463
|
|
|
442
464
|
/** Register a handler for incoming devtools messages. Returns an unsubscribe function. */
|
|
443
465
|
export function registerDevtoolsMessageHandler(
|
|
@@ -457,9 +479,9 @@ export function assertDevtoolsConnectedForSyncRender() {
|
|
|
457
479
|
}
|
|
458
480
|
}
|
|
459
481
|
|
|
460
|
-
//
|
|
461
|
-
|
|
462
|
-
//
|
|
482
|
+
// #endregion
|
|
483
|
+
|
|
484
|
+
// #region Test utilities
|
|
463
485
|
|
|
464
486
|
/** Reset all devtools state. For use in tests only. */
|
|
465
487
|
export async function resetDevtoolsServerForTests() {
|
|
@@ -471,6 +493,7 @@ export async function resetDevtoolsServerForTests() {
|
|
|
471
493
|
transportState = null;
|
|
472
494
|
transportPromise = null;
|
|
473
495
|
devtoolsExplicitlyEnabled = false;
|
|
496
|
+
refreshDevtoolsEnabledCache();
|
|
474
497
|
devtoolsInitialized = false;
|
|
475
498
|
configuredPort = undefined;
|
|
476
499
|
loggedDevtoolsLinks = false;
|
|
@@ -481,3 +504,5 @@ export async function resetDevtoolsServerForTests() {
|
|
|
481
504
|
// Close the trace DB so each test starts fresh
|
|
482
505
|
closeTrace();
|
|
483
506
|
}
|
|
507
|
+
|
|
508
|
+
// #endregion
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export type {
|
|
2
2
|
// Individual server→client message types
|
|
3
3
|
ClientToServerMessage,
|
|
4
|
+
ComponentAddedMessage,
|
|
5
|
+
ComponentRemovedMessage,
|
|
6
|
+
ComponentRootAddedMessage,
|
|
7
|
+
ComponentRootRemovedMessage,
|
|
8
|
+
ComponentUpdatedMessage,
|
|
4
9
|
DebuggerInfoMessage,
|
|
5
10
|
DiagnosticRow,
|
|
6
11
|
DiagnosticsReportMessage,
|
package/src/devtools-entry.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export type {
|
|
2
2
|
// Individual server→client message types
|
|
3
3
|
ClientToServerMessage,
|
|
4
|
+
ComponentAddedMessage,
|
|
5
|
+
ComponentRemovedMessage,
|
|
6
|
+
ComponentRootAddedMessage,
|
|
7
|
+
ComponentRootRemovedMessage,
|
|
8
|
+
ComponentUpdatedMessage,
|
|
4
9
|
DebuggerInfoMessage,
|
|
5
10
|
DiagnosticRow,
|
|
6
11
|
DiagnosticsReportMessage,
|
package/src/diagnostics.ts
CHANGED
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
deleteDiagnostic,
|
|
4
4
|
insertDiagnostic,
|
|
5
5
|
isTraceEnabled,
|
|
6
|
+
notifyDiagnosticsReport,
|
|
6
7
|
} from "./debug/trace-writer.js";
|
|
7
8
|
import { getContext } from "./reactivity.js";
|
|
8
9
|
import { getRenderStackSnapshot } from "./render-stack.js";
|
|
@@ -107,6 +108,36 @@ export class DiagnosticsCollector {
|
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
const DIAGNOSTICS_META_KEY = "diagnostics";
|
|
111
|
+
const diagnosticsByTree = new WeakMap<object, DiagnosticsCollector>();
|
|
112
|
+
|
|
113
|
+
export function registerDiagnosticsForTree(
|
|
114
|
+
tree: object,
|
|
115
|
+
collector: DiagnosticsCollector,
|
|
116
|
+
): void {
|
|
117
|
+
diagnosticsByTree.set(tree, collector);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function getRegisteredDiagnosticsForTree(tree: object): Diagnostic[] {
|
|
121
|
+
return diagnosticsByTree.get(tree)?.getDiagnostics() ?? [];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export function emitDiagnosticForTree(
|
|
125
|
+
tree: object,
|
|
126
|
+
input: DiagnosticInput,
|
|
127
|
+
): DiagnosticHandle {
|
|
128
|
+
return diagnosticsByTree.get(tree)?.emit(input) ?? emitDiagnostic(input);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function reportDiagnosticsForTree(tree: object): void {
|
|
132
|
+
const collector = diagnosticsByTree.get(tree);
|
|
133
|
+
if (!collector) return;
|
|
134
|
+
|
|
135
|
+
const diagnostics = collector.getDiagnostics();
|
|
136
|
+
if (diagnostics.length === 0) return;
|
|
137
|
+
|
|
138
|
+
reportDiagnostics(collector);
|
|
139
|
+
notifyDiagnosticsReport(diagnostics);
|
|
140
|
+
}
|
|
110
141
|
|
|
111
142
|
export function attachDiagnosticsCollector(collector: DiagnosticsCollector) {
|
|
112
143
|
const context = getContext();
|