@alloy-js/core 0.20.0-dev.4 → 0.20.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/dist/src/binder.d.ts +74 -38
- package/dist/src/binder.d.ts.map +1 -1
- package/dist/src/binder.js +235 -173
- package/dist/src/binder.js.map +1 -0
- package/dist/src/code.js +2 -1
- package/dist/src/code.js.map +1 -0
- package/dist/src/components/AppendFile.js +2 -1
- package/dist/src/components/AppendFile.js.map +1 -0
- package/dist/src/components/Block.js +2 -1
- package/dist/src/components/Block.js.map +1 -0
- package/dist/src/components/CopyFile.js +2 -1
- package/dist/src/components/CopyFile.js.map +1 -0
- package/dist/src/components/Declaration.d.ts +2 -2
- package/dist/src/components/Declaration.d.ts.map +1 -1
- package/dist/src/components/Declaration.js +10 -3
- package/dist/src/components/Declaration.js.map +1 -0
- package/dist/src/components/For.js +2 -1
- package/dist/src/components/For.js.map +1 -0
- package/dist/src/components/Indent.js +2 -1
- package/dist/src/components/Indent.js.map +1 -0
- package/dist/src/components/List.js +2 -1
- package/dist/src/components/List.js.map +1 -0
- package/dist/src/components/MemberDeclaration.d.ts +2 -2
- package/dist/src/components/MemberDeclaration.d.ts.map +1 -1
- package/dist/src/components/MemberDeclaration.js +11 -6
- package/dist/src/components/MemberDeclaration.js.map +1 -0
- package/dist/src/components/MemberName.js +2 -1
- package/dist/src/components/MemberName.js.map +1 -0
- package/dist/src/components/MemberScope.d.ts +30 -13
- package/dist/src/components/MemberScope.d.ts.map +1 -1
- package/dist/src/components/MemberScope.js +39 -16
- package/dist/src/components/MemberScope.js.map +1 -0
- package/dist/src/components/Name.js +2 -1
- package/dist/src/components/Name.js.map +1 -0
- package/dist/src/components/Output.d.ts.map +1 -1
- package/dist/src/components/Output.js +4 -6
- package/dist/src/components/Output.js.map +1 -0
- package/dist/src/components/Prose.js +2 -1
- package/dist/src/components/Prose.js.map +1 -0
- package/dist/src/components/ReferenceOrContent.d.ts +1 -1
- package/dist/src/components/ReferenceOrContent.d.ts.map +1 -1
- package/dist/src/components/ReferenceOrContent.js +2 -1
- package/dist/src/components/ReferenceOrContent.js.map +1 -0
- package/dist/src/components/Scope.d.ts +5 -5
- package/dist/src/components/Scope.d.ts.map +1 -1
- package/dist/src/components/Scope.js +11 -6
- package/dist/src/components/Scope.js.map +1 -0
- package/dist/src/components/Show.js +2 -1
- package/dist/src/components/Show.js.map +1 -0
- package/dist/src/components/SourceDirectory.js +2 -1
- package/dist/src/components/SourceDirectory.js.map +1 -0
- package/dist/src/components/SourceFile.js +2 -1
- package/dist/src/components/SourceFile.js.map +1 -0
- package/dist/src/components/StatementList.js +2 -1
- package/dist/src/components/StatementList.js.map +1 -0
- package/dist/src/components/Switch.js +2 -1
- package/dist/src/components/Switch.js.map +1 -0
- package/dist/src/components/TemplateFile.js +2 -1
- package/dist/src/components/TemplateFile.js.map +1 -0
- package/dist/src/components/UpdateFile.js +2 -1
- package/dist/src/components/UpdateFile.js.map +1 -0
- package/dist/src/components/Wrap.js +2 -1
- package/dist/src/components/Wrap.js.map +1 -0
- package/dist/src/components/index.js +2 -1
- package/dist/src/components/index.js.map +1 -0
- package/dist/src/components/stc/index.js +2 -1
- package/dist/src/components/stc/index.js.map +1 -0
- package/dist/src/components/stc/sti.js +2 -1
- package/dist/src/components/stc/sti.js.map +1 -0
- package/dist/src/context/assignment.js +2 -1
- package/dist/src/context/assignment.js.map +1 -0
- package/dist/src/context/binder.js +2 -1
- package/dist/src/context/binder.js.map +1 -0
- package/dist/src/context/declaration.js +2 -1
- package/dist/src/context/declaration.js.map +1 -0
- package/dist/src/context/index.js +2 -1
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/context/member-declaration.js +2 -1
- package/dist/src/context/member-declaration.js.map +1 -0
- package/dist/src/context/member-scope.d.ts +7 -8
- package/dist/src/context/member-scope.d.ts.map +1 -1
- package/dist/src/context/member-scope.js +7 -6
- package/dist/src/context/member-scope.js.map +1 -0
- package/dist/src/context/name-policy.d.ts.map +1 -1
- package/dist/src/context/name-policy.js +5 -1
- package/dist/src/context/name-policy.js.map +1 -0
- package/dist/src/context/scope.d.ts +1 -0
- package/dist/src/context/scope.d.ts.map +1 -1
- package/dist/src/context/scope.js +9 -1
- package/dist/src/context/scope.js.map +1 -0
- package/dist/src/context/source-directory.js +2 -1
- package/dist/src/context/source-directory.js.map +1 -0
- package/dist/src/context/source-file.js +2 -1
- package/dist/src/context/source-file.js.map +1 -0
- package/dist/src/context.js +2 -1
- package/dist/src/context.js.map +1 -0
- package/dist/src/debug.js +2 -1
- package/dist/src/debug.js.map +1 -0
- package/dist/src/host/alloy-host.browser.js +2 -1
- package/dist/src/host/alloy-host.browser.js.map +1 -0
- package/dist/src/host/alloy-host.js +2 -1
- package/dist/src/host/alloy-host.js.map +1 -0
- package/dist/src/host/interface.js +2 -1
- package/dist/src/host/interface.js.map +1 -0
- package/dist/src/index.browser.js +2 -1
- package/dist/src/index.browser.js.map +1 -0
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -0
- package/dist/src/inspect.browser.d.ts +5 -0
- package/dist/src/inspect.browser.d.ts.map +1 -0
- package/dist/src/inspect.browser.js +6 -0
- package/dist/src/inspect.browser.js.map +1 -0
- package/dist/src/inspect.d.ts +2 -0
- package/dist/src/inspect.d.ts.map +1 -0
- package/dist/src/inspect.js +2 -0
- package/dist/src/inspect.js.map +1 -0
- package/dist/src/jsx-runtime.js +2 -1
- package/dist/src/jsx-runtime.js.map +1 -0
- package/dist/src/name-policy.d.ts +11 -0
- package/dist/src/name-policy.d.ts.map +1 -1
- package/dist/src/name-policy.js +5 -1
- package/dist/src/name-policy.js.map +1 -0
- package/dist/src/props-combinators.js +2 -1
- package/dist/src/props-combinators.js.map +1 -0
- package/dist/src/reactive-union-set.d.ts.map +1 -1
- package/dist/src/reactive-union-set.js +14 -9
- package/dist/src/reactive-union-set.js.map +1 -0
- package/dist/src/reactivity.js +2 -1
- package/dist/src/reactivity.js.map +1 -0
- package/dist/src/refkey.d.ts +39 -3
- package/dist/src/refkey.d.ts.map +1 -1
- package/dist/src/refkey.js +65 -10
- package/dist/src/refkey.js.map +1 -0
- package/dist/src/render.js +2 -1
- package/dist/src/render.js.map +1 -0
- package/dist/src/resource.js +2 -1
- package/dist/src/resource.js.map +1 -0
- package/dist/src/runtime/component.js +2 -1
- package/dist/src/runtime/component.js.map +1 -0
- package/dist/src/runtime/intrinsic.js +2 -1
- package/dist/src/runtime/intrinsic.js.map +1 -0
- package/dist/src/scheduler.js +2 -1
- package/dist/src/scheduler.js.map +1 -0
- package/dist/src/stc.js +2 -1
- package/dist/src/stc.js.map +1 -0
- package/dist/src/sti.js +2 -1
- package/dist/src/sti.js.map +1 -0
- package/dist/src/symbols/basic-scope.d.ts +14 -0
- package/dist/src/symbols/basic-scope.d.ts.map +1 -0
- package/dist/src/symbols/basic-scope.js +21 -0
- package/dist/src/symbols/basic-scope.js.map +1 -0
- package/dist/src/symbols/basic-symbol.d.ts +19 -0
- package/dist/src/symbols/basic-symbol.d.ts.map +1 -0
- package/dist/src/symbols/basic-symbol.js +29 -0
- package/dist/src/symbols/basic-symbol.js.map +1 -0
- package/dist/src/symbols/index.d.ts +3 -1
- package/dist/src/symbols/index.d.ts.map +1 -1
- package/dist/src/symbols/index.js +5 -2
- package/dist/src/symbols/index.js.map +1 -0
- package/dist/src/symbols/output-scope.d.ts +70 -41
- package/dist/src/symbols/output-scope.d.ts.map +1 -1
- package/dist/src/symbols/output-scope.js +100 -131
- package/dist/src/symbols/output-scope.js.map +1 -0
- package/dist/src/symbols/output-space.d.ts +25 -0
- package/dist/src/symbols/output-space.d.ts.map +1 -0
- package/dist/src/symbols/output-space.js +36 -0
- package/dist/src/symbols/output-space.js.map +1 -0
- package/dist/src/symbols/output-symbol.d.ts +213 -37
- package/dist/src/symbols/output-symbol.d.ts.map +1 -1
- package/dist/src/symbols/output-symbol.js +325 -204
- package/dist/src/symbols/output-symbol.js.map +1 -0
- package/dist/src/symbols/symbol-flow.d.ts +1 -1
- package/dist/src/symbols/symbol-flow.d.ts.map +1 -1
- package/dist/src/symbols/symbol-flow.js +24 -8
- package/dist/src/symbols/symbol-flow.js.map +1 -0
- package/dist/src/symbols/symbol-slot.d.ts +27 -9
- package/dist/src/symbols/symbol-slot.d.ts.map +1 -1
- package/dist/src/symbols/symbol-slot.js +22 -5
- package/dist/src/symbols/symbol-slot.js.map +1 -0
- package/dist/src/symbols/symbol-table.d.ts +19 -8
- package/dist/src/symbols/symbol-table.d.ts.map +1 -1
- package/dist/src/symbols/symbol-table.js +67 -17
- package/dist/src/symbols/symbol-table.js.map +1 -0
- package/dist/src/tap.js +2 -1
- package/dist/src/tap.js.map +1 -0
- package/dist/src/tracer.d.ts +15 -3
- package/dist/src/tracer.d.ts.map +1 -1
- package/dist/src/tracer.js +41 -64
- package/dist/src/tracer.js.map +1 -0
- package/dist/src/utils.js +2 -1
- package/dist/src/utils.js.map +1 -0
- package/dist/src/write-output.js +2 -1
- package/dist/src/write-output.js.map +1 -0
- package/dist/test/browser-build.test.js +2 -1
- package/dist/test/browser-build.test.js.map +1 -0
- package/dist/test/children.test.js +2 -1
- package/dist/test/children.test.js.map +1 -0
- package/dist/test/components/append-file.test.js +2 -1
- package/dist/test/components/append-file.test.js.map +1 -0
- package/dist/test/components/block.test.js +2 -1
- package/dist/test/components/block.test.js.map +1 -0
- package/dist/test/components/copy-file.test.js +2 -1
- package/dist/test/components/copy-file.test.js.map +1 -0
- package/dist/test/components/declaration.test.js +11 -15
- package/dist/test/components/declaration.test.js.map +1 -0
- package/dist/test/components/list.test.js +2 -1
- package/dist/test/components/list.test.js.map +1 -0
- package/dist/test/components/prose.test.js +2 -1
- package/dist/test/components/prose.test.js.map +1 -0
- package/dist/test/components/reference-or-content.test.js +4 -3
- package/dist/test/components/reference-or-content.test.js.map +1 -0
- package/dist/test/components/source-file.test.js +2 -1
- package/dist/test/components/source-file.test.js.map +1 -0
- package/dist/test/components/template-file.test.js +2 -1
- package/dist/test/components/template-file.test.js.map +1 -0
- package/dist/test/components/update-file.test.js +2 -1
- package/dist/test/components/update-file.test.js.map +1 -0
- package/dist/test/components/wrap.test.js +2 -1
- package/dist/test/components/wrap.test.js.map +1 -0
- package/dist/test/control-flow/for.test.js +2 -1
- package/dist/test/control-flow/for.test.js.map +1 -0
- package/dist/test/control-flow/match.test.js +2 -1
- package/dist/test/control-flow/match.test.js.map +1 -0
- package/dist/test/control-flow/show.test.js +2 -1
- package/dist/test/control-flow/show.test.js.map +1 -0
- package/dist/test/name-policy.test.js +2 -1
- package/dist/test/name-policy.test.js.map +1 -0
- package/dist/test/props-with-defaults.test.js +2 -1
- package/dist/test/props-with-defaults.test.js.map +1 -0
- package/dist/test/reactive-union-set.test.js +2 -1
- package/dist/test/reactive-union-set.test.js.map +1 -0
- package/dist/test/reactivity/circular-reactives.test.js +2 -1
- package/dist/test/reactivity/circular-reactives.test.js.map +1 -0
- package/dist/test/reactivity/cleanup.test.js +2 -1
- package/dist/test/reactivity/cleanup.test.js.map +1 -0
- package/dist/test/reactivity/memo.test.js +2 -1
- package/dist/test/reactivity/memo.test.js.map +1 -0
- package/dist/test/reactivity/ref-rendering.test.js +2 -1
- package/dist/test/reactivity/ref-rendering.test.js.map +1 -0
- package/dist/test/reactivity/test.test.js +2 -1
- package/dist/test/reactivity/test.test.js.map +1 -0
- package/dist/test/reactivity/untrack.test.js +2 -1
- package/dist/test/reactivity/untrack.test.js.map +1 -0
- package/dist/test/refkey.test.js +2 -1
- package/dist/test/refkey.test.js.map +1 -0
- package/dist/test/rendering/basic.test.js +2 -1
- package/dist/test/rendering/basic.test.js.map +1 -0
- package/dist/test/rendering/code.test.js +2 -1
- package/dist/test/rendering/code.test.js.map +1 -0
- package/dist/test/rendering/formatting.test.js +2 -1
- package/dist/test/rendering/formatting.test.js.map +1 -0
- package/dist/test/rendering/indent.test.js +2 -1
- package/dist/test/rendering/indent.test.js.map +1 -0
- package/dist/test/rendering/memoization.test.js +2 -1
- package/dist/test/rendering/memoization.test.js.map +1 -0
- package/dist/test/rendering/refkeys.test.js +2 -1
- package/dist/test/rendering/refkeys.test.js.map +1 -0
- package/dist/test/split-props.test.js +2 -1
- package/dist/test/split-props.test.js.map +1 -0
- package/dist/test/stc.test.js +2 -1
- package/dist/test/stc.test.js.map +1 -0
- package/dist/test/symbols/output-scope.test.js +34 -198
- package/dist/test/symbols/output-scope.test.js.map +1 -0
- package/dist/test/symbols/output-symbol.test.js +141 -386
- package/dist/test/symbols/output-symbol.test.js.map +1 -0
- package/dist/test/symbols/resolution.test.js +433 -115
- package/dist/test/symbols/resolution.test.js.map +1 -0
- package/dist/test/symbols/symbol-table.test.d.ts +2 -0
- package/dist/test/symbols/symbol-table.test.d.ts.map +1 -0
- package/dist/test/symbols/symbol-table.test.js +15 -0
- package/dist/test/symbols/symbol-table.test.js.map +1 -0
- package/dist/test/symbols/utils.d.ts +10 -24
- package/dist/test/symbols/utils.d.ts.map +1 -1
- package/dist/test/symbols/utils.js +25 -46
- package/dist/test/symbols/utils.js.map +1 -0
- package/dist/test/utils.test.js +2 -1
- package/dist/test/utils.test.js.map +1 -0
- package/dist/testing/extend-expect.js +2 -1
- package/dist/testing/extend-expect.js.map +1 -0
- package/dist/testing/extend-expect.test.js +2 -1
- package/dist/testing/extend-expect.test.js.map +1 -0
- package/dist/testing/index.js +2 -1
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/render.js +2 -1
- package/dist/testing/render.js.map +1 -0
- package/dist/testing/vitest.d.js +2 -1
- package/dist/testing/vitest.d.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -3
- package/src/binder.ts +368 -273
- package/src/components/Declaration.tsx +13 -3
- package/src/components/MemberDeclaration.tsx +15 -8
- package/src/components/MemberScope.tsx +61 -20
- package/src/components/Output.tsx +0 -4
- package/src/components/Scope.tsx +16 -9
- package/src/context/member-scope.ts +10 -10
- package/src/context/name-policy.ts +3 -0
- package/src/context/scope.ts +9 -0
- package/src/inspect.browser.ts +6 -0
- package/src/inspect.ts +1 -0
- package/src/name-policy.ts +14 -0
- package/src/reactive-union-set.ts +14 -8
- package/src/refkey.ts +106 -14
- package/src/symbols/basic-scope.ts +23 -0
- package/src/symbols/basic-symbol.ts +32 -0
- package/src/symbols/index.ts +3 -1
- package/src/symbols/output-scope.ts +131 -170
- package/src/symbols/output-space.ts +49 -0
- package/src/symbols/output-symbol.ts +434 -258
- package/src/symbols/symbol-flow.ts +38 -9
- package/src/symbols/symbol-slot.tsx +46 -8
- package/src/symbols/symbol-table.ts +95 -21
- package/src/tracer.ts +53 -83
- package/temp/api.json +7009 -4461
- package/test/components/declaration.test.tsx +6 -19
- package/test/components/reference-or-content.test.tsx +2 -2
- package/test/symbols/output-scope.test.ts +33 -125
- package/test/symbols/output-symbol.test.ts +128 -348
- package/test/symbols/resolution.test.ts +530 -117
- package/test/symbols/symbol-table.test.ts +15 -0
- package/test/symbols/utils.ts +38 -74
- package/tsdoc.json +4 -0
- package/dist/src/slot.d.ts +0 -15
- package/dist/src/slot.d.ts.map +0 -1
- package/dist/src/slot.js +0 -50
- package/dist/src/symbols/flags.d.ts +0 -70
- package/dist/src/symbols/flags.d.ts.map +0 -1
- package/dist/src/symbols/flags.js +0 -72
- package/dist/test/components/slot.test.d.ts +0 -2
- package/dist/test/components/slot.test.d.ts.map +0 -1
- package/dist/test/components/slot.test.js +0 -134
- package/src/slot.ts +0 -89
- package/src/symbols/flags.ts +0 -82
- package/test/components/slot.test.tsx +0 -174
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { reactive, ReactiveFlags, shallowReactive, track, TrackOpTypes, trigger, TriggerOpTypes
|
|
1
|
+
import { effect, reactive, ReactiveFlags, shallowReactive, track, TrackOpTypes, trigger, TriggerOpTypes } from "@vue/reactivity";
|
|
2
2
|
import { useBinder } from "../context/binder.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { inspect } from "../inspect.js";
|
|
4
|
+
import { untrack } from "../reactivity.js";
|
|
5
|
+
import { formatScope, trace, traceEffect, TracePhase } from "../tracer.js";
|
|
6
|
+
import { OutputDeclarationSpace } from "./output-space.js";
|
|
7
7
|
let scopeCount = 0;
|
|
8
8
|
/**
|
|
9
9
|
* A container of symbols accessible within some scope in your output code.
|
|
@@ -24,10 +24,12 @@ let scopeCount = 0;
|
|
|
24
24
|
* within a reactive context.
|
|
25
25
|
*/
|
|
26
26
|
export class OutputScope {
|
|
27
|
-
|
|
27
|
+
static declarationSpaces = [];
|
|
28
28
|
#name;
|
|
29
29
|
/**
|
|
30
30
|
* The name of the scope.
|
|
31
|
+
*
|
|
32
|
+
* @reactive
|
|
31
33
|
*/
|
|
32
34
|
get name() {
|
|
33
35
|
track(this, TrackOpTypes.GET, "name");
|
|
@@ -41,77 +43,59 @@ export class OutputScope {
|
|
|
41
43
|
#id;
|
|
42
44
|
/**
|
|
43
45
|
* The unique id of this scope.
|
|
46
|
+
*
|
|
47
|
+
* @readonly
|
|
44
48
|
*/
|
|
45
49
|
get id() {
|
|
46
50
|
return this.#id;
|
|
47
51
|
}
|
|
48
|
-
#kind;
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* The kind of scope. Subtypes will likely provide a set of known scope kinds.
|
|
52
|
-
* The kind is not used by the binder itself.
|
|
53
|
-
*/
|
|
54
|
-
get kind() {
|
|
55
|
-
return this.#kind;
|
|
56
|
-
}
|
|
57
|
-
#flags;
|
|
58
|
-
/**
|
|
59
|
-
* The flags that describe this scope.
|
|
60
|
-
*/
|
|
61
|
-
get flags() {
|
|
62
|
-
track(this, TrackOpTypes.GET, "flags");
|
|
63
|
-
return this.#flags;
|
|
64
|
-
}
|
|
65
|
-
set flags(flags) {
|
|
66
|
-
const old = this.#flags;
|
|
67
|
-
this.#flags = flags;
|
|
68
|
-
trigger(this, TriggerOpTypes.SET, "flags", flags, old);
|
|
69
|
-
}
|
|
70
52
|
|
|
71
53
|
// read only
|
|
72
54
|
#metadata;
|
|
55
|
+
/**
|
|
56
|
+
* Arbitrary metadata associated with this scope. This property is not
|
|
57
|
+
* reactive but the metadata object is a reactive object.
|
|
58
|
+
*
|
|
59
|
+
* @readonly
|
|
60
|
+
*/
|
|
73
61
|
get metadata() {
|
|
74
62
|
return this.#metadata;
|
|
75
63
|
}
|
|
76
64
|
#parent;
|
|
65
|
+
|
|
77
66
|
/**
|
|
78
|
-
* The
|
|
79
|
-
*
|
|
80
|
-
*
|
|
67
|
+
* The parent scope of this scope. Undefined if this is a root scope.
|
|
68
|
+
*
|
|
69
|
+
* @reactive
|
|
81
70
|
*/
|
|
82
71
|
get parent() {
|
|
72
|
+
track(this, TrackOpTypes.GET, "parent");
|
|
83
73
|
return this.#parent;
|
|
84
74
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* The symbols defined within this scope.
|
|
97
|
-
*/
|
|
98
|
-
get symbols() {
|
|
99
|
-
return this.#symbols;
|
|
75
|
+
set parent(scope) {
|
|
76
|
+
const old = this.#parent;
|
|
77
|
+
if (old) {
|
|
78
|
+
old.children.delete(this);
|
|
79
|
+
}
|
|
80
|
+
if (scope) {
|
|
81
|
+
scope.children.add(this);
|
|
82
|
+
}
|
|
83
|
+
trigger(this, TriggerOpTypes.SET, "parent", scope, old);
|
|
84
|
+
this.#parent = scope;
|
|
100
85
|
}
|
|
101
|
-
#
|
|
86
|
+
#spaces;
|
|
87
|
+
|
|
102
88
|
/**
|
|
103
|
-
*
|
|
89
|
+
* Get the declaration space for the given key.
|
|
104
90
|
*/
|
|
105
|
-
|
|
106
|
-
return this.#
|
|
107
|
-
}
|
|
108
|
-
#symbolNames;
|
|
109
|
-
get symbolNames() {
|
|
110
|
-
return this.#symbolNames;
|
|
91
|
+
spaceFor(key) {
|
|
92
|
+
return this.#spaces[key];
|
|
111
93
|
}
|
|
112
94
|
#children;
|
|
113
95
|
/**
|
|
114
96
|
* The scopes nested within this scope.
|
|
97
|
+
*
|
|
98
|
+
* @readonly
|
|
115
99
|
*/
|
|
116
100
|
get children() {
|
|
117
101
|
return this.#children;
|
|
@@ -119,104 +103,89 @@ export class OutputScope {
|
|
|
119
103
|
#binder;
|
|
120
104
|
/**
|
|
121
105
|
* The binder that created this scope.
|
|
106
|
+
*
|
|
107
|
+
* @readonly
|
|
122
108
|
*/
|
|
123
109
|
get binder() {
|
|
124
110
|
return this.#binder;
|
|
125
111
|
}
|
|
126
112
|
[ReactiveFlags.SKIP] = this;
|
|
127
|
-
constructor(name, options = {}) {
|
|
113
|
+
constructor(name, parentScope, options = {}) {
|
|
128
114
|
this.#name = name;
|
|
129
115
|
this.#id = scopeCount++;
|
|
130
|
-
this.#flags = options.flags ?? OutputScopeFlags.None;
|
|
131
|
-
this.#kind = options.kind ?? "scope";
|
|
132
116
|
this.#metadata = reactive(options.metadata ?? {});
|
|
133
117
|
this.#binder = options.binder ?? useBinder();
|
|
134
|
-
this.#owner = options.owner;
|
|
135
118
|
this.#children = shallowReactive(new Set());
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
} else {
|
|
141
|
-
if (!this.#parent) {
|
|
142
|
-
this.#parent = options.parent ?? useScope() ?? this.#binder?.globalScope;
|
|
143
|
-
}
|
|
144
|
-
if (this.#parent) {
|
|
145
|
-
// not global scope
|
|
146
|
-
this.#parent.children.add(this);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
this.#symbols = new SymbolTable(this, {
|
|
150
|
-
nameConflictResolver: this.#binder?.nameConflictResolver
|
|
151
|
-
});
|
|
152
|
-
this.#symbolsByRefkey = this.#symbols.createIndex(s => s.refkeys);
|
|
153
|
-
this.#symbolNames = this.#symbols.createDerivedSet(s => {
|
|
154
|
-
return s.name;
|
|
119
|
+
this.#parent = parentScope;
|
|
120
|
+
effect(() => {
|
|
121
|
+
this.#setOwnerSymbol(options.ownerSymbol?.movedTo ?? options.ownerSymbol);
|
|
155
122
|
});
|
|
156
123
|
if (this.#parent) {
|
|
157
124
|
this.#parent.children.add(this);
|
|
158
125
|
}
|
|
126
|
+
const constructor = this.constructor;
|
|
127
|
+
this.#spaces = Object.fromEntries(constructor.declarationSpaces.map(spaceKey => [spaceKey, new OutputDeclarationSpace(this, spaceKey, this.#binder)]));
|
|
159
128
|
this.#binder?.notifyScopeCreated(this);
|
|
160
129
|
trace(TracePhase.scope.create, () => `${formatScope(this)}`);
|
|
161
130
|
traceEffect(TracePhase.scope.update, () => {
|
|
162
131
|
return `${formatScope(this)}`;
|
|
163
132
|
});
|
|
164
133
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
return symbol;
|
|
174
|
-
},
|
|
175
|
-
onDelete: symbol => {
|
|
176
|
-
if (options?.onDelete) {
|
|
177
|
-
options.onDelete(symbol);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
});
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Get all the declaration spaces in this scope.
|
|
137
|
+
*
|
|
138
|
+
* @readonly
|
|
139
|
+
*/
|
|
140
|
+
get spaces() {
|
|
141
|
+
return Object.values(this.#spaces);
|
|
181
142
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
});
|
|
143
|
+
#ownerSymbol;
|
|
144
|
+
/**
|
|
145
|
+
* The symbol whose members are in scope. When an owner symbol is present,
|
|
146
|
+
* this scope is considered a member scope, and does not provide its own
|
|
147
|
+
* declaration spaces.
|
|
148
|
+
*
|
|
149
|
+
* @readonly
|
|
150
|
+
* @reactive
|
|
151
|
+
*/
|
|
152
|
+
get ownerSymbol() {
|
|
153
|
+
track(this, TrackOpTypes.GET, "ownerSymbol");
|
|
154
|
+
return this.#ownerSymbol;
|
|
197
155
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
// todo: this should be reactive, but cloning non-member scopes
|
|
215
|
-
// seems like a very rare thing.
|
|
216
|
-
for (const child of this.#children) {
|
|
217
|
-
clone.children.add(child.clone());
|
|
156
|
+
#setOwnerSymbol(value) {
|
|
157
|
+
const old = this.#ownerSymbol;
|
|
158
|
+
this.#ownerSymbol = value;
|
|
159
|
+
trigger(this, TriggerOpTypes.SET, "ownerSymbol", value, old);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Whether this scope is a transient scope. Transient scopes are used for
|
|
164
|
+
* temporary values that are to be combined with other non-transient symbols.
|
|
165
|
+
* Scopes are transient when their owner symbol is transient.
|
|
166
|
+
*
|
|
167
|
+
* @readonly
|
|
168
|
+
*/
|
|
169
|
+
get isTransient() {
|
|
170
|
+
if (!this.ownerSymbol) {
|
|
171
|
+
return false;
|
|
218
172
|
}
|
|
219
|
-
|
|
220
|
-
|
|
173
|
+
return this.ownerSymbol.isTransient;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Check if this is scope is a member scope. Member scopes have no member
|
|
177
|
+
* spaces of their own, but instead put members of their owner symbol in
|
|
178
|
+
* scope.
|
|
179
|
+
*
|
|
180
|
+
* @readonly
|
|
181
|
+
* @reactive
|
|
182
|
+
*/
|
|
183
|
+
get isMemberScope() {
|
|
184
|
+
return !!this.ownerSymbol;
|
|
185
|
+
}
|
|
186
|
+
[inspect.custom]() {
|
|
187
|
+
const ownerSymbol = this.ownerSymbol ? ` for ${inspect(this.ownerSymbol)}` : "";
|
|
188
|
+
return untrack(() => `${this.constructor.name} ${this.name}[${this.id}]${ownerSymbol}`);
|
|
221
189
|
}
|
|
222
|
-
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=output-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["effect","reactive","ReactiveFlags","shallowReactive","track","TrackOpTypes","trigger","TriggerOpTypes","useBinder","inspect","untrack","formatScope","trace","traceEffect","TracePhase","OutputDeclarationSpace","scopeCount","OutputScope","declarationSpaces","name","GET","old","SET","id","metadata","parent","scope","children","delete","add","spaces","spaceFor","key","binder","SKIP","constructor","parentScope","options","Set","setOwnerSymbol","ownerSymbol","movedTo","Object","fromEntries","map","spaceKey","notifyScopeCreated","create","update","values","#setOwnerSymbol","value","isTransient","isMemberScope","custom"],"sources":["../../../src/symbols/output-scope.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,MAAM,EACNC,QAAQ,EACRC,aAAa,EACbC,eAAe,EACfC,KAAK,EACLC,YAAY,EACZC,OAAO,EACPC,cAAc,QACT,iBAAiB;AAExB,SAASC,SAAS,QAAQ,sBAAsB;AAChD,SAASC,OAAO,QAAQ,eAAe;AACvC,SAASC,OAAO,QAAQ,kBAAkB;AAC1C,SAASC,WAAW,EAAEC,KAAK,EAAEC,WAAW,EAAEC,UAAU,QAAQ,cAAc;AAC1E,SAASC,sBAAsB,QAAqB,mBAAmB;AAGvE,IAAIC,UAAU,GAAG,CAAC;AAsBlB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAeC,WAAW,CAAC;EAChC,OAAgBC,iBAAiB,GAAuB,EAAE;EAE1D,CAACC,IAAI;EACL;AACF;AACA;AACA;AACA;EACE,IAAIA,IAAIA,CAAA,EAAG;IACTf,KAAK,CAAC,IAAI,EAAEC,YAAY,CAACe,GAAG,EAAE,MAAM,CAAC;IACrC,OAAO,IAAI,CAAC,CAACD,IAAI;EACnB;EAEA,IAAIA,IAAIA,CAACA,IAAY,EAAE;IACrB,MAAME,GAAG,GAAG,IAAI,CAAC,CAACF,IAAI;IACtB,IAAI,CAAC,CAACA,IAAI,GAAGA,IAAI;IACjBb,OAAO,CAAC,IAAI,EAAEC,cAAc,CAACe,GAAG,EAAE,MAAM,EAAEH,IAAI,EAAEE,GAAG,CAAC;EACtD;EAEA,CAACE,EAAE;EACH;AACF;AACA;AACA;AACA;EACE,IAAIA,EAAEA,CAAA,EAAG;IACP,OAAO,IAAI,CAAC,CAACA,EAAE;EACjB;;EAEA;EACA,CAACC,QAAQ;EACT;AACF;AACA;AACA;AACA;AACA;EACE,IAAIA,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC,CAACA,QAAQ;EACvB;EAEA,CAACC,MAAM;;EAEP;AACF;AACA;AACA;AACA;EACE,IAAIA,MAAMA,CAAA,EAAG;IACXrB,KAAK,CAAC,IAAI,EAAEC,YAAY,CAACe,GAAG,EAAE,QAAQ,CAAC;IACvC,OAAO,IAAI,CAAC,CAACK,MAAM;EACrB;EAEA,IAAIA,MAAMA,CAACC,KAA8B,EAAE;IACzC,MAAML,GAAG,GAAG,IAAI,CAAC,CAACI,MAAM;IAExB,IAAIJ,GAAG,EAAE;MACPA,GAAG,CAACM,QAAQ,CAACC,MAAM,CAAC,IAAI,CAAC;IAC3B;IAEA,IAAIF,KAAK,EAAE;MACTA,KAAK,CAACC,QAAQ,CAACE,GAAG,CAAC,IAAI,CAAC;IAC1B;IAEAvB,OAAO,CAAC,IAAI,EAAEC,cAAc,CAACe,GAAG,EAAE,QAAQ,EAAEI,KAAK,EAAEL,GAAG,CAAC;IACvD,IAAI,CAAC,CAACI,MAAM,GAAGC,KAAK;EACtB;EAEA,CAACI,MAAM;;EAEP;AACF;AACA;EACEC,QAAQA,CAACC,GAAW,EAA2B;IAC7C,OAAO,IAAI,CAAC,CAACF,MAAM,CAACE,GAAG,CAAC;EAC1B;EAEA,CAACL,QAAQ;EACT;AACF;AACA;AACA;AACA;EACE,IAAIA,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC,CAACA,QAAQ;EACvB;EAEA,CAACM,MAAM;EACP;AACF;AACA;AACA;AACA;EACE,IAAIA,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAAC,CAACA,MAAM;EACrB;EAEA,CAAC/B,aAAa,CAACgC,IAAI,IAAI,IAAI;EAE3BC,WAAWA,CACThB,IAAY,EACZiB,WAAoC,EACpCC,OAA2B,GAAG,CAAC,CAAC,EAChC;IACA,IAAI,CAAC,CAAClB,IAAI,GAAGA,IAAI;IACjB,IAAI,CAAC,CAACI,EAAE,GAAGP,UAAU,EAAE;IACvB,IAAI,CAAC,CAACQ,QAAQ,GAAGvB,QAAQ,CAACoC,OAAO,CAACb,QAAQ,IAAI,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,CAACS,MAAM,GAAGI,OAAO,CAACJ,MAAM,IAAIzB,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,CAACmB,QAAQ,GAAGxB,eAAe,CAAC,IAAImC,GAAG,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,CAACb,MAAM,GAAGW,WAAW;IAC1BpC,MAAM,CAAC,MAAM;MACX,IAAI,CAAC,CAACuC,cAAc,CAACF,OAAO,CAACG,WAAW,EAAEC,OAAO,IAAIJ,OAAO,CAACG,WAAW,CAAC;IAC3E,CAAC,CAAC;IAEF,IAAI,IAAI,CAAC,CAACf,MAAM,EAAE;MAChB,IAAI,CAAC,CAACA,MAAM,CAACE,QAAQ,CAACE,GAAG,CAAC,IAAI,CAAC;IACjC;IAEA,MAAMM,WAAW,GAAG,IAAI,CAACA,WAAiC;IAE1D,IAAI,CAAC,CAACL,MAAM,GAAGY,MAAM,CAACC,WAAW,CAC/BR,WAAW,CAACjB,iBAAiB,CAAC0B,GAAG,CAAEC,QAAQ,IAAK,CAC9CA,QAAQ,EACR,IAAI9B,sBAAsB,CAAC,IAAI,EAAE8B,QAAQ,EAAE,IAAI,CAAC,CAACZ,MAAM,CAAC,CACzD,CACH,CAAC;IAED,IAAI,CAAC,CAACA,MAAM,EAAEa,kBAAkB,CAAC,IAAI,CAAC;IAEtClC,KAAK,CAACE,UAAU,CAACY,KAAK,CAACqB,MAAM,EAAE,MAAM,GAAGpC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5DE,WAAW,CAACC,UAAU,CAACY,KAAK,CAACsB,MAAM,EAAE,MAAM;MACzC,OAAO,GAAGrC,WAAW,CAAC,IAAI,CAAC,EAAE;IAC/B,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;EACE,IAAImB,MAAMA,CAAA,EAAG;IACX,OAAOY,MAAM,CAACO,MAAM,CAAC,IAAI,CAAC,CAACnB,MAAM,CAAC;EACpC;EAEA,CAACU,WAAW;EACZ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIA,WAAWA,CAAA,EAAG;IAChBpC,KAAK,CAAC,IAAI,EAAEC,YAAY,CAACe,GAAG,EAAE,aAAa,CAAC;IAC5C,OAAO,IAAI,CAAC,CAACoB,WAAW;EAC1B;EAEA,CAACD,cAAcW,CAACC,KAA+B,EAAE;IAC/C,MAAM9B,GAAG,GAAG,IAAI,CAAC,CAACmB,WAAW;IAC7B,IAAI,CAAC,CAACA,WAAW,GAAGW,KAAK;IACzB7C,OAAO,CAAC,IAAI,EAAEC,cAAc,CAACe,GAAG,EAAE,aAAa,EAAE6B,KAAK,EAAE9B,GAAG,CAAC;EAC9D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,IAAI+B,WAAWA,CAAA,EAAG;IAChB,IAAI,CAAC,IAAI,CAACZ,WAAW,EAAE;MACrB,OAAO,KAAK;IACd;IAEA,OAAO,IAAI,CAACA,WAAW,CAACY,WAAW;EACrC;EACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,aAAaA,CAAA,EAAG;IAClB,OAAO,CAAC,CAAC,IAAI,CAACb,WAAW;EAC3B;EAEA,CAAC/B,OAAO,CAAC6C,MAAM,IAAI;IACjB,MAAMd,WAAW,GACf,IAAI,CAACA,WAAW,GAAG,QAAQ/B,OAAO,CAAC,IAAI,CAAC+B,WAAW,CAAC,EAAE,GAAG,EAAE;IAC7D,OAAO9B,OAAO,CACZ,MAAM,GAAG,IAAI,CAACyB,WAAW,CAAChB,IAAI,IAAI,IAAI,CAACA,IAAI,IAAI,IAAI,CAACI,EAAE,IAAIiB,WAAW,EACvE,CAAC;EACH;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Binder } from "../binder.js";
|
|
2
|
+
import { inspect } from "../inspect.js";
|
|
3
|
+
import { OutputScope } from "./output-scope.js";
|
|
4
|
+
import { OutputSymbol } from "./output-symbol.js";
|
|
5
|
+
import { SymbolTable } from "./symbol-table.js";
|
|
6
|
+
export type OutputSpace = OutputDeclarationSpace | OutputMemberSpace;
|
|
7
|
+
export declare class OutputDeclarationSpace extends SymbolTable {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(scope: OutputScope, key: string, binder?: Binder);
|
|
10
|
+
/**
|
|
11
|
+
* The scope this declaration space belongs to.
|
|
12
|
+
*/
|
|
13
|
+
get scope(): OutputScope;
|
|
14
|
+
[inspect.custom](): string;
|
|
15
|
+
}
|
|
16
|
+
export declare class OutputMemberSpace extends SymbolTable {
|
|
17
|
+
#private;
|
|
18
|
+
constructor(symbol: OutputSymbol, key: string, binder?: Binder);
|
|
19
|
+
/**
|
|
20
|
+
* The symbol this member space belongs to.
|
|
21
|
+
*/
|
|
22
|
+
get symbol(): OutputSymbol;
|
|
23
|
+
[inspect.custom](): string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=output-space.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-space.d.ts","sourceRoot":"","sources":["../../../src/symbols/output-space.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,sBAAsB,GAAG,iBAAiB,CAAC;AACrE,qBAAa,sBAAuB,SAAQ,WAAW;;gBACzC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAM5D;;OAEG;IACH,IAAI,KAAK,gBAER;IAED,CAAC,OAAO,CAAC,MAAM,CAAC;CAKjB;AAED,qBAAa,iBAAkB,SAAQ,WAAW;;gBACpC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAM9D;;OAEG;IACH,IAAI,MAAM,iBAET;IAED,CAAC,OAAO,CAAC,MAAM,CAAC;CAKjB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { inspect } from "../inspect.js";
|
|
2
|
+
import { untrack } from "../reactivity.js";
|
|
3
|
+
import { SymbolTable } from "./symbol-table.js";
|
|
4
|
+
export class OutputDeclarationSpace extends SymbolTable {
|
|
5
|
+
constructor(scope, key, binder) {
|
|
6
|
+
super(key, binder);
|
|
7
|
+
this.#scope = scope;
|
|
8
|
+
}
|
|
9
|
+
#scope;
|
|
10
|
+
/**
|
|
11
|
+
* The scope this declaration space belongs to.
|
|
12
|
+
*/
|
|
13
|
+
get scope() {
|
|
14
|
+
return this.#scope;
|
|
15
|
+
}
|
|
16
|
+
[inspect.custom]() {
|
|
17
|
+
return untrack(() => `OutputDeclarationSpace for scope ${inspect(this.#scope)}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class OutputMemberSpace extends SymbolTable {
|
|
21
|
+
constructor(symbol, key, binder) {
|
|
22
|
+
super(key, binder);
|
|
23
|
+
this.#symbol = symbol;
|
|
24
|
+
}
|
|
25
|
+
#symbol;
|
|
26
|
+
/**
|
|
27
|
+
* The symbol this member space belongs to.
|
|
28
|
+
*/
|
|
29
|
+
get symbol() {
|
|
30
|
+
return this.#symbol;
|
|
31
|
+
}
|
|
32
|
+
[inspect.custom]() {
|
|
33
|
+
return untrack(() => `OutputMemberSpace for symbol ${inspect(this.#symbol)}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=output-space.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["inspect","untrack","SymbolTable","OutputDeclarationSpace","constructor","scope","key","binder","custom","OutputMemberSpace","symbol"],"sources":["../../../src/symbols/output-space.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,OAAO,QAAQ,eAAe;AACvC,SAASC,OAAO,QAAQ,kBAAkB;AAG1C,SAASC,WAAW,QAAQ,mBAAmB;AAG/C,OAAO,MAAMC,sBAAsB,SAASD,WAAW,CAAC;EACtDE,WAAWA,CAACC,KAAkB,EAAEC,GAAW,EAAEC,MAAe,EAAE;IAC5D,KAAK,CAACD,GAAG,EAAEC,MAAM,CAAC;IAClB,IAAI,CAAC,CAACF,KAAK,GAAGA,KAAK;EACrB;EAEA,CAACA,KAAK;EACN;AACF;AACA;EACE,IAAIA,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC,CAACA,KAAK;EACpB;EAEA,CAACL,OAAO,CAACQ,MAAM,IAAI;IACjB,OAAOP,OAAO,CACZ,MAAM,oCAAoCD,OAAO,CAAC,IAAI,CAAC,CAACK,KAAK,CAAC,EAChE,CAAC;EACH;AACF;AAEA,OAAO,MAAMI,iBAAiB,SAASP,WAAW,CAAC;EACjDE,WAAWA,CAACM,MAAoB,EAAEJ,GAAW,EAAEC,MAAe,EAAE;IAC9D,KAAK,CAACD,GAAG,EAAEC,MAAM,CAAC;IAClB,IAAI,CAAC,CAACG,MAAM,GAAGA,MAAM;EACvB;EAEA,CAACA,MAAM;EACP;AACF;AACA;EACE,IAAIA,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAAC,CAACA,MAAM;EACrB;EAEA,CAACV,OAAO,CAACQ,MAAM,IAAI;IACjB,OAAOP,OAAO,CACZ,MAAM,gCAAgCD,OAAO,CAAC,IAAI,CAAC,CAACU,MAAM,CAAC,EAC7D,CAAC;EACH;AACF","ignoreList":[]}
|