@alloy-js/core 0.23.0-dev.11 → 0.23.0-dev.12
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/dist/dev/src/binder.js +488 -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 +66 -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 +11 -0
- package/dist/dev/src/components/MemberName.js.map +1 -0
- package/dist/dev/src/components/MemberScope.js +57 -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 +50 -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 +12 -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 +32 -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 +13 -0
- package/dist/dev/src/context/scope.js.map +1 -0
- package/dist/dev/src/context/source-directory.js +3 -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 +163 -0
- package/dist/dev/src/debug/cli.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.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 +658 -0
- package/dist/dev/src/debug/trace-writer.js.map +1 -0
- package/dist/dev/src/debug/trace.js +459 -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 +33 -0
- package/dist/dev/src/devtools/devtools-server.browser.js.map +1 -0
- package/dist/dev/src/devtools/devtools-server.js +444 -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 +89 -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/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 +5 -0
- package/dist/dev/src/library-symbol-reference.js.map +1 -0
- package/dist/dev/src/name-policy.js +24 -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 +426 -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 +251 -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 +202 -0
- package/dist/dev/src/symbols/output-scope.js.map +1 -0
- package/dist/dev/src/symbols/output-space.js +36 -0
- package/dist/dev/src/symbols/output-space.js.map +1 -0
- package/dist/dev/src/symbols/output-symbol.js +504 -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 +68 -0
- package/dist/dev/src/symbols/symbol-slot.js.map +1 -0
- package/dist/dev/src/symbols/symbol-slot.test.js +43 -0
- package/dist/dev/src/symbols/symbol-slot.test.js.map +1 -0
- package/dist/dev/src/symbols/symbol-table.js +93 -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 +47 -0
- package/dist/dev/src/write-output.js.map +1 -0
- package/dist/dev/test/browser-build.test.js +86 -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 +52 -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/output-scope.test.js +180 -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 +76 -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 +167 -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 +23 -0
- package/dist/dev/testing/render.js.map +1 -0
- package/dist/dev/testing/vitest.d.js +2 -0
- package/dist/dev/testing/vitest.d.js.map +1 -0
- package/dist/src/debug/effects.d.ts.map +1 -1
- package/dist/src/debug/effects.js +2 -67
- package/dist/src/debug/effects.js.map +1 -1
- package/dist/src/debug/render.d.ts.map +1 -1
- package/dist/src/debug/render.js +15 -8
- package/dist/src/debug/render.js.map +1 -1
- 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/trace.d.ts.map +1 -1
- package/dist/src/debug/trace.js +13 -0
- package/dist/src/debug/trace.js.map +1 -1
- package/dist/test/browser-build.test.js +1 -1
- package/dist/test/browser-build.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -3
- package/src/debug/effects.ts +2 -82
- package/src/debug/render.ts +25 -13
- package/src/debug/source-map.ts +135 -0
- package/src/debug/trace.ts +16 -0
- package/test/browser-build.test.ts +1 -1
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
import { computed, shallowRef } from "@vue/reactivity";
|
|
2
|
+
import { useBinder } from "./context/binder.js";
|
|
3
|
+
import { useMemberContext } from "./context/member-scope.js";
|
|
4
|
+
import { useScope } from "./context/scope.js";
|
|
5
|
+
import { debug, TracePhase } from "./debug/index.js";
|
|
6
|
+
import { emitDiagnostic } from "./diagnostics.js";
|
|
7
|
+
import { effect, onCleanup } from "./reactivity.js";
|
|
8
|
+
import { inspectRefkey, isMemberRefkey, refkey, toRefkey } from "./refkey.js";
|
|
9
|
+
import { formatRefkeys, formatSymbolName } from "./tracer.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The binder tracks all output scopes and symbols. Scopes are nested containers
|
|
13
|
+
* for symbols.
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
*
|
|
17
|
+
* Symbol information is reactive because in certain situations this data may
|
|
18
|
+
* change. For example, when a symbol becomes conflicted with another symbol,
|
|
19
|
+
* one of the symbol names may change. Ensure that you interact with binder
|
|
20
|
+
* values in a reactive context (i.e. within JSX/code template, or within
|
|
21
|
+
* memo/computed/etc).
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* A successful resolution of a refkey.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
*
|
|
30
|
+
* Let's say we have the following scopes and symbols:
|
|
31
|
+
*
|
|
32
|
+
* ```
|
|
33
|
+
* scope: global scope
|
|
34
|
+
* ├── scope: namespace scope 1
|
|
35
|
+
* │ └── symbol: foo
|
|
36
|
+
* │ └── static members
|
|
37
|
+
* │ └── symbol: bar
|
|
38
|
+
* └── scope: namespace scope 2
|
|
39
|
+
* └── (resolve bar from here)
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* When we resolve the refkey for `bar` from within `namespace scope 2`, we will get the following
|
|
43
|
+
* resolution result:
|
|
44
|
+
*
|
|
45
|
+
* * **targetDeclaration**: symbol bar, the symbol we resolved.
|
|
46
|
+
* * **commonScope**: global scope, because this is the most specific scope that contains both the declaration and the reference.
|
|
47
|
+
* * **pathUp**: [namespace scope 2], because this is the scope between the reference and the common scope.
|
|
48
|
+
* * **pathDown**: [namespace scope 1], because this is the scope between the common scope and the declaration
|
|
49
|
+
* * **memberPath**: [foo, bar], because we resolved a member symbol and these are the symbols that lead from the base declaration to the member symbol.
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Describes a member in a member access chain, tracking both the symbol
|
|
54
|
+
* and whether this specific member was accessed via a memberRefkey.
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The context for a member resolution. This is used to properly resolve a
|
|
59
|
+
* member in the MemberResolver.
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
*
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
export function createScope(ctor, ...args) {
|
|
67
|
+
const scope = new ctor(...args);
|
|
68
|
+
debug.symbols.registerScope(scope);
|
|
69
|
+
return scope;
|
|
70
|
+
}
|
|
71
|
+
export function createSymbol(ctor, ...args) {
|
|
72
|
+
const symbol = new ctor(...args);
|
|
73
|
+
debug.symbols.registerSymbol(symbol);
|
|
74
|
+
return symbol;
|
|
75
|
+
}
|
|
76
|
+
export function createOutputBinder(options = {}) {
|
|
77
|
+
const binder = {
|
|
78
|
+
resolveDeclarationByKey,
|
|
79
|
+
getSymbolForRefkey,
|
|
80
|
+
notifyScopeCreated,
|
|
81
|
+
notifySymbolCreated,
|
|
82
|
+
notifySymbolDeleted,
|
|
83
|
+
nameConflictResolver: options.nameConflictResolver
|
|
84
|
+
};
|
|
85
|
+
const knownDeclarations = new Map();
|
|
86
|
+
const waitingDeclarations = new Map();
|
|
87
|
+
const waitingSymbolNames = new Map();
|
|
88
|
+
const waitingScopeNames = new Map();
|
|
89
|
+
return binder;
|
|
90
|
+
function notifyScopeCreated(scope) {
|
|
91
|
+
if (!scope.parent || !waitingScopeNames.has(scope.parent)) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const waiting = waitingScopeNames.get(scope.parent);
|
|
95
|
+
if (waiting?.has(scope.name)) {
|
|
96
|
+
const ref = waiting.get(scope.name);
|
|
97
|
+
ref.value = scope;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function notifySymbolDeleted(symbol) {
|
|
101
|
+
debug.symbols.unregisterSymbol(symbol);
|
|
102
|
+
if (!refkey) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
for (const refkey of symbol.refkeys) {
|
|
106
|
+
const resolution = waitingDeclarations.get(refkey);
|
|
107
|
+
if (!resolution) return;
|
|
108
|
+
resolution.value = undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function buildResult(currentScope, targetDeclarationBase) {
|
|
112
|
+
const {
|
|
113
|
+
memberPath: targetMemberPath,
|
|
114
|
+
scopeChain: targetChain
|
|
115
|
+
} = scopeAndMemberChain(targetDeclarationBase);
|
|
116
|
+
let targetLexicalDeclaration = targetMemberPath && targetMemberPath.length > 0 ? targetMemberPath[0].ownerSymbol : targetDeclarationBase;
|
|
117
|
+
// when we are resolving from a scope which is a member scope and might have
|
|
118
|
+
// member scope parents, and any symbols in the member path are members of
|
|
119
|
+
// the member scope's owner symbol (i.e., those symbols are in scope where
|
|
120
|
+
// the reference is made), we replace the target member path with an entry
|
|
121
|
+
// on the scope chain.
|
|
122
|
+
|
|
123
|
+
// So, first we find all the owner symbols for any member scopes in scope
|
|
124
|
+
// for the reference.
|
|
125
|
+
const referenceChain = scopeChain(currentScope);
|
|
126
|
+
const inScopeSymbols = new Map();
|
|
127
|
+
for (const scope of referenceChain) {
|
|
128
|
+
if (scope.isMemberScope) {
|
|
129
|
+
inScopeSymbols.set(scope.ownerSymbol, scope);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// then if the lexical declaration symbol's members are in scope, remove the
|
|
134
|
+
// symbol from the member path and add its corresponding member scope to the
|
|
135
|
+
// target chain.
|
|
136
|
+
while (targetMemberPath.length > 0 && inScopeSymbols.has(targetLexicalDeclaration)) {
|
|
137
|
+
targetChain.push(inScopeSymbols.get(targetLexicalDeclaration));
|
|
138
|
+
targetLexicalDeclaration = targetMemberPath.shift();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Now we replace any scopes in the target chain with corresponding scopes
|
|
142
|
+
// from the reference chain.
|
|
143
|
+
for (const [index, scope] of targetChain.entries()) {
|
|
144
|
+
if (inScopeSymbols.has(scope.ownerSymbol)) {
|
|
145
|
+
targetChain[index] = inScopeSymbols.get(scope.ownerSymbol);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Next we look for member scopes in the target chain that correspond to
|
|
150
|
+
// member scopes in the reference chain. We splice the reference chain into
|
|
151
|
+
// the target chain at that point. This ensures that we establish the proper
|
|
152
|
+
// common scope and path up/down even if the reference chain has additional
|
|
153
|
+
// scopes above it (e.g. a scope for the current source file).
|
|
154
|
+
const commonMemberContainer = targetChain.findIndex(scope => scope.isMemberScope && inScopeSymbols.has(scope.ownerSymbol));
|
|
155
|
+
if (commonMemberContainer > -1) {
|
|
156
|
+
const sourceLocation = referenceChain.findIndex(scope => scope.isMemberScope && scope.ownerSymbol === targetChain[commonMemberContainer].ownerSymbol);
|
|
157
|
+
|
|
158
|
+
// source location is guaranteed to exist at this point.
|
|
159
|
+
targetChain.splice(0, commonMemberContainer + 1, ...referenceChain.slice(0, sourceLocation + 1));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Now that we have the target chain and scopes, we can determine the common
|
|
163
|
+
// scopes and paths.
|
|
164
|
+
let diffStart = 0;
|
|
165
|
+
while (targetChain[diffStart] && referenceChain[diffStart] && targetChain[diffStart] === referenceChain[diffStart]) {
|
|
166
|
+
diffStart++;
|
|
167
|
+
}
|
|
168
|
+
const pathUp = referenceChain.slice(diffStart);
|
|
169
|
+
const pathDown = targetChain.slice(diffStart);
|
|
170
|
+
const commonScope = targetChain[diffStart - 1] ?? undefined;
|
|
171
|
+
return {
|
|
172
|
+
pathUp,
|
|
173
|
+
pathDown,
|
|
174
|
+
memberPath: targetMemberPath,
|
|
175
|
+
commonScope,
|
|
176
|
+
symbol: targetDeclarationBase,
|
|
177
|
+
lexicalDeclaration: targetLexicalDeclaration,
|
|
178
|
+
fullSymbolPath: targetChain,
|
|
179
|
+
fullReferencePath: referenceChain
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Walk from the provided symbol up to the non-member symbol. This constitutes
|
|
185
|
+
* the member path. Then, walk from the first non-member symbol's scope up to
|
|
186
|
+
* the global scope. This constitutes the scope chain.
|
|
187
|
+
*/
|
|
188
|
+
function scopeAndMemberChain(symbol) {
|
|
189
|
+
const result = {
|
|
190
|
+
memberPath: [],
|
|
191
|
+
scopeChain: []
|
|
192
|
+
};
|
|
193
|
+
let currentSymbol = symbol;
|
|
194
|
+
if (currentSymbol.isMemberSymbol) {
|
|
195
|
+
result.memberPath = [];
|
|
196
|
+
while (currentSymbol.isMemberSymbol) {
|
|
197
|
+
result.memberPath.unshift(currentSymbol);
|
|
198
|
+
currentSymbol = currentSymbol.ownerSymbol;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const startScope = currentSymbol.scope;
|
|
202
|
+
result.scopeChain = scopeChain(startScope);
|
|
203
|
+
return result;
|
|
204
|
+
}
|
|
205
|
+
function scopeChain(scope) {
|
|
206
|
+
const chain = [];
|
|
207
|
+
while (scope) {
|
|
208
|
+
chain.unshift(scope);
|
|
209
|
+
scope = scope.parent;
|
|
210
|
+
}
|
|
211
|
+
return chain;
|
|
212
|
+
}
|
|
213
|
+
function getSymbolForRefkey(refkeyable) {
|
|
214
|
+
const refkey = toRefkey(refkeyable);
|
|
215
|
+
if (waitingDeclarations.has(refkey)) {
|
|
216
|
+
return waitingDeclarations.get(refkey);
|
|
217
|
+
}
|
|
218
|
+
let symbolRef;
|
|
219
|
+
if (isMemberRefkey(refkey)) {
|
|
220
|
+
const baseSymbolRef = getSymbolForRefkey(refkey.base);
|
|
221
|
+
const memberSymbolRef = getMemberSymbolFromMemberRefkey(refkey);
|
|
222
|
+
symbolRef = computed(() => {
|
|
223
|
+
// even though we don't necessarily need the base symbol to be available
|
|
224
|
+
// yet (the member symbol might already be declared on a type), we wait
|
|
225
|
+
// to resolve the member refkey until the base symbol is available.
|
|
226
|
+
const baseSymbol = baseSymbolRef.value;
|
|
227
|
+
const memberSymbol = memberSymbolRef.value;
|
|
228
|
+
if (!baseSymbol || !memberSymbol) {
|
|
229
|
+
return undefined;
|
|
230
|
+
}
|
|
231
|
+
return memberSymbol;
|
|
232
|
+
});
|
|
233
|
+
} else {
|
|
234
|
+
symbolRef = shallowRef();
|
|
235
|
+
}
|
|
236
|
+
waitingDeclarations.set(refkey, symbolRef);
|
|
237
|
+
if (knownDeclarations.has(refkey)) {
|
|
238
|
+
symbolRef.value = knownDeclarations.get(refkey);
|
|
239
|
+
}
|
|
240
|
+
return symbolRef;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* There are two ways to reference a member symbol - directly via its refkey,
|
|
245
|
+
* and via a member refkey. In the former case, we just find the member
|
|
246
|
+
* symbol, and then compute its path directly from there. In hte latter case,
|
|
247
|
+
* we need to find the base of the member expression, and then add the members
|
|
248
|
+
* from the (possibly nested) member refkey to result.
|
|
249
|
+
*/
|
|
250
|
+
function resolveDeclarationByKey(currentScope, refkey, options = {}) {
|
|
251
|
+
const resolvedSymbol = getSymbolForRefkey(refkey);
|
|
252
|
+
return computed(() => {
|
|
253
|
+
debug.trace(TracePhase.resolve.pending, () => `Resolving ${formatRefkeys(refkey)}.`);
|
|
254
|
+
const symbol = resolvedSymbol.value;
|
|
255
|
+
if (!symbol) {
|
|
256
|
+
debug.trace(TracePhase.resolve.failure, () => `No symbol for ${formatRefkeys(refkey)}.`);
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
debug.trace(TracePhase.resolve.pending, () => `${formatRefkeys(refkey)} resolved to ${formatSymbolName(symbol)}.`);
|
|
260
|
+
if (symbol.isTransient) {
|
|
261
|
+
debug.trace(TracePhase.resolve.failure, () => `Symbol ${formatSymbolName(symbol)} is transient.`);
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
const chain = scopeChain(symbol.scope);
|
|
265
|
+
if (chain.some(scope => scope.isTransient)) {
|
|
266
|
+
debug.trace(TracePhase.resolve.failure, () => `Symbol ${formatSymbolName(symbol)} is in a transient scope.`);
|
|
267
|
+
return undefined;
|
|
268
|
+
}
|
|
269
|
+
let result;
|
|
270
|
+
let memberDescriptorsFromRefkey;
|
|
271
|
+
if (isMemberRefkey(refkey)) {
|
|
272
|
+
memberDescriptorsFromRefkey = getMemberPathFromRefkey(refkey);
|
|
273
|
+
result = buildResult(currentScope, memberDescriptorsFromRefkey[0].symbol);
|
|
274
|
+
} else {
|
|
275
|
+
memberDescriptorsFromRefkey = [];
|
|
276
|
+
result = buildResult(currentScope, symbol);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// When we have member descriptors, this first entry is already part of the result due to passing it
|
|
280
|
+
// to buildResult above, so we don't need it here.
|
|
281
|
+
const newMemberPathDescriptors = memberDescriptorsFromRefkey.slice(1);
|
|
282
|
+
const allDescriptors = [...result.memberPath.map(s => ({
|
|
283
|
+
symbol: s,
|
|
284
|
+
isMemberAccess: false
|
|
285
|
+
})), ...newMemberPathDescriptors];
|
|
286
|
+
|
|
287
|
+
// update the member path and resolved symbol from our member descriptors
|
|
288
|
+
// (if we have them)
|
|
289
|
+
if (memberDescriptorsFromRefkey.length > 0) {
|
|
290
|
+
for (const descriptor of newMemberPathDescriptors) {
|
|
291
|
+
result.memberPath.push(descriptor.symbol);
|
|
292
|
+
}
|
|
293
|
+
result.symbol = memberDescriptorsFromRefkey.at(-1).symbol;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// a subcomputed here ensures we don't lose the progress above When
|
|
297
|
+
// we fail to resolve because a type isn't available yet.
|
|
298
|
+
return computed(() => {
|
|
299
|
+
// resolve each member in the member path
|
|
300
|
+
let currentBase = result.lexicalDeclaration;
|
|
301
|
+
for (const descriptor of allDescriptors) {
|
|
302
|
+
const member = descriptor.symbol;
|
|
303
|
+
if (currentBase.isTyped && !currentBase.hasTypeSymbol) {
|
|
304
|
+
debug.trace(TracePhase.resolve.pending, () => `${formatRefkeys(refkey)} needs type information from a parent type.`);
|
|
305
|
+
// waiting for type
|
|
306
|
+
return undefined;
|
|
307
|
+
}
|
|
308
|
+
resolveMember(currentBase, member, options.memberResolver, {
|
|
309
|
+
referencePath: result.fullReferencePath,
|
|
310
|
+
isMemberAccess: descriptor.isMemberAccess
|
|
311
|
+
});
|
|
312
|
+
currentBase = member;
|
|
313
|
+
}
|
|
314
|
+
debug.trace(TracePhase.resolve.success, () => `${formatRefkeys(refkey)} successfully resolved to ${formatSymbolName(symbol)}.`);
|
|
315
|
+
return result;
|
|
316
|
+
}).value;
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Extracts member descriptors from a refkey, tracking which members
|
|
322
|
+
* were accessed via memberRefkey for proper member resolution context.
|
|
323
|
+
*/
|
|
324
|
+
function getMemberPathFromRefkey(refkey) {
|
|
325
|
+
if (isMemberRefkey(refkey)) {
|
|
326
|
+
return [...getMemberPathFromRefkey(refkey.base), {
|
|
327
|
+
symbol: getMemberSymbolFromMemberRefkey(refkey).value,
|
|
328
|
+
isMemberAccess: true
|
|
329
|
+
}];
|
|
330
|
+
}
|
|
331
|
+
return [{
|
|
332
|
+
symbol: getSymbolForRefkey(refkey).value,
|
|
333
|
+
isMemberAccess: false
|
|
334
|
+
}];
|
|
335
|
+
}
|
|
336
|
+
function getMemberSymbolFromMemberRefkey(refkey) {
|
|
337
|
+
if (typeof refkey.member === "string") {
|
|
338
|
+
return computed(() => {
|
|
339
|
+
const baseSymbol = getSymbolForRefkey(refkey.base).value;
|
|
340
|
+
if (!baseSymbol) {
|
|
341
|
+
return undefined;
|
|
342
|
+
}
|
|
343
|
+
return baseSymbol.resolveMemberByName(refkey.member);
|
|
344
|
+
});
|
|
345
|
+
} else {
|
|
346
|
+
return getSymbolForRefkey(refkey.member);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
function resolveMember(base, member, memberResolver, context) {
|
|
350
|
+
if (memberResolver) {
|
|
351
|
+
memberResolver(base, member, context);
|
|
352
|
+
} else {
|
|
353
|
+
// default member resolution
|
|
354
|
+
if (!member.isMemberSymbol) {
|
|
355
|
+
throw new Error(`${formatSymbolName(member)} is not a member symbol.`);
|
|
356
|
+
}
|
|
357
|
+
const memberOwner = base.hasTypeSymbol ? base.type : base.dealias();
|
|
358
|
+
if (member.ownerSymbol !== memberOwner) {
|
|
359
|
+
throw new Error(`${formatSymbolName(member)} is not a member of ${formatSymbolName(base)}.`);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
function notifySymbolCreated(symbol) {
|
|
364
|
+
effect(oldRefkeys => {
|
|
365
|
+
if (symbol.refkeys) {
|
|
366
|
+
debug.trace(TracePhase.resolve.pending, () => `Notifying resolutions for ${formatRefkeys(symbol.refkeys)}.`);
|
|
367
|
+
}
|
|
368
|
+
if (oldRefkeys) {
|
|
369
|
+
for (const refkey of oldRefkeys) {
|
|
370
|
+
if (!symbol.refkeys.includes(refkey)) {
|
|
371
|
+
// remove the old refkey from the known declarations
|
|
372
|
+
knownDeclarations.delete(refkey);
|
|
373
|
+
|
|
374
|
+
// reset any waiting declarations
|
|
375
|
+
if (waitingDeclarations.has(refkey)) {
|
|
376
|
+
const signal = waitingDeclarations.get(refkey);
|
|
377
|
+
signal.value = undefined;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
for (const refkey of symbol.refkeys) {
|
|
383
|
+
// notify those waiting for this refkey
|
|
384
|
+
knownDeclarations.set(refkey, symbol);
|
|
385
|
+
if (waitingDeclarations.has(refkey)) {
|
|
386
|
+
const signal = waitingDeclarations.get(refkey);
|
|
387
|
+
signal.value = symbol;
|
|
388
|
+
}
|
|
389
|
+
const scope = symbol.scope;
|
|
390
|
+
if (!scope) {
|
|
391
|
+
continue;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// notify those waiting for this symbol name
|
|
395
|
+
const waitingScope = waitingSymbolNames.get(scope);
|
|
396
|
+
if (waitingScope) {
|
|
397
|
+
const waitingName = waitingScope.get(symbol.name);
|
|
398
|
+
if (waitingName) {
|
|
399
|
+
waitingName.value = symbol;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return [...symbol.refkeys];
|
|
404
|
+
}, undefined, {
|
|
405
|
+
debug: {
|
|
406
|
+
name: "binder:notifySymbolCreated",
|
|
407
|
+
type: "binder"
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/**
|
|
414
|
+
* Resolve a refkey in the current scope. Returns a Ref for the resolution result.
|
|
415
|
+
* The value of the ref will be undefined if the identifier hasn't been resolved yet.
|
|
416
|
+
*
|
|
417
|
+
* @remarks
|
|
418
|
+
*
|
|
419
|
+
* This API may return a ref for undefined, but that does not mean that the symbol is
|
|
420
|
+
* not found. The symbol you're looking for may not have been declared yet. When the symbol
|
|
421
|
+
* is declared, the ref will be updated with the resolution result.
|
|
422
|
+
*/
|
|
423
|
+
export function resolve(refkey, options = {}) {
|
|
424
|
+
const scope = useScope();
|
|
425
|
+
const memberScope = useMemberContext();
|
|
426
|
+
const binder = scope?.binder ?? memberScope?.ownerSymbol.binder;
|
|
427
|
+
if (!binder) {
|
|
428
|
+
throw new Error("Can't resolve refkey without a binder");
|
|
429
|
+
}
|
|
430
|
+
const result = binder.resolveDeclarationByKey(scope, refkey, options);
|
|
431
|
+
let diagnosticHandle = null;
|
|
432
|
+
effect(() => {
|
|
433
|
+
if (result.value === undefined) {
|
|
434
|
+
// Emit diagnostic for this specific reference site
|
|
435
|
+
if (!diagnosticHandle) {
|
|
436
|
+
diagnosticHandle = emitDiagnostic({
|
|
437
|
+
severity: "warning",
|
|
438
|
+
message: `Unresolved refkey: ${inspectRefkey(refkey)}`
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
} else {
|
|
442
|
+
// Dismiss diagnostic when resolved
|
|
443
|
+
if (diagnosticHandle) {
|
|
444
|
+
diagnosticHandle.dismiss();
|
|
445
|
+
diagnosticHandle = null;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}, undefined, {
|
|
449
|
+
debug: {
|
|
450
|
+
name: `binder:resolve:${inspectRefkey(refkey)}`,
|
|
451
|
+
type: "binder"
|
|
452
|
+
}
|
|
453
|
+
});
|
|
454
|
+
onCleanup(() => {
|
|
455
|
+
if (diagnosticHandle) {
|
|
456
|
+
diagnosticHandle.dismiss();
|
|
457
|
+
diagnosticHandle = null;
|
|
458
|
+
}
|
|
459
|
+
});
|
|
460
|
+
return result;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* Get a ref to the symbol for the given refkey using the current binder. The
|
|
465
|
+
* value of the ref will be undefined when no symbol with that refkey has been
|
|
466
|
+
* created.
|
|
467
|
+
*
|
|
468
|
+
* @remarks
|
|
469
|
+
*
|
|
470
|
+
* This API may return a ref for undefined, but that does not mean that the symbol is
|
|
471
|
+
* not found. The symbol you're looking for may not have been declared yet. When the symbol
|
|
472
|
+
* is declared, the ref will be updated with the symbol.
|
|
473
|
+
*/
|
|
474
|
+
export function symbolForRefkey(refkey) {
|
|
475
|
+
const binder = useBinder();
|
|
476
|
+
if (!binder) {
|
|
477
|
+
throw new Error("Can't resolve refkey without a binder");
|
|
478
|
+
}
|
|
479
|
+
return binder.getSymbolForRefkey(refkey);
|
|
480
|
+
}
|
|
481
|
+
const createSymbolsSymbol = Symbol();
|
|
482
|
+
export function getSymbolCreator(creator) {
|
|
483
|
+
return creator[createSymbolsSymbol];
|
|
484
|
+
}
|
|
485
|
+
export function getSymbolCreatorSymbol() {
|
|
486
|
+
return createSymbolsSymbol;
|
|
487
|
+
}
|
|
488
|
+
//# sourceMappingURL=binder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["computed","shallowRef","useBinder","useMemberContext","useScope","debug","TracePhase","emitDiagnostic","effect","onCleanup","inspectRefkey","isMemberRefkey","refkey","toRefkey","formatRefkeys","formatSymbolName","createScope","ctor","args","scope","symbols","registerScope","createSymbol","symbol","registerSymbol","createOutputBinder","options","binder","resolveDeclarationByKey","getSymbolForRefkey","notifyScopeCreated","notifySymbolCreated","notifySymbolDeleted","nameConflictResolver","knownDeclarations","Map","waitingDeclarations","waitingSymbolNames","waitingScopeNames","parent","has","waiting","get","name","ref","value","unregisterSymbol","refkeys","resolution","undefined","buildResult","currentScope","targetDeclarationBase","memberPath","targetMemberPath","scopeChain","targetChain","scopeAndMemberChain","targetLexicalDeclaration","length","ownerSymbol","referenceChain","inScopeSymbols","isMemberScope","set","push","shift","index","entries","commonMemberContainer","findIndex","sourceLocation","splice","slice","diffStart","pathUp","pathDown","commonScope","lexicalDeclaration","fullSymbolPath","fullReferencePath","result","currentSymbol","isMemberSymbol","unshift","startScope","chain","refkeyable","symbolRef","baseSymbolRef","base","memberSymbolRef","getMemberSymbolFromMemberRefkey","baseSymbol","memberSymbol","resolvedSymbol","trace","resolve","pending","failure","isTransient","some","memberDescriptorsFromRefkey","getMemberPathFromRefkey","newMemberPathDescriptors","allDescriptors","map","s","isMemberAccess","descriptor","at","currentBase","member","isTyped","hasTypeSymbol","resolveMember","memberResolver","referencePath","success","resolveMemberByName","context","Error","memberOwner","type","dealias","oldRefkeys","includes","delete","signal","waitingScope","waitingName","memberScope","diagnosticHandle","severity","message","dismiss","symbolForRefkey","createSymbolsSymbol","Symbol","getSymbolCreator","creator","getSymbolCreatorSymbol"],"sources":["../../../src/binder.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|