@alloy-js/core 0.20.0-dev.3 → 0.20.0-dev.6
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 +62 -38
- package/dist/src/binder.d.ts.map +1 -1
- package/dist/src/binder.js +214 -173
- 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 +8 -2
- 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 +9 -5
- 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 +37 -15
- package/dist/src/components/Output.d.ts.map +1 -1
- package/dist/src/components/Output.js +2 -5
- package/dist/src/components/ReferenceOrContent.d.ts +1 -1
- package/dist/src/components/ReferenceOrContent.d.ts.map +1 -1
- 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 +9 -5
- 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 +5 -5
- package/dist/src/context/name-policy.d.ts.map +1 -1
- package/dist/src/context/name-policy.js +3 -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 +7 -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 +5 -0
- package/dist/src/inspect.d.ts +2 -0
- package/dist/src/inspect.d.ts.map +1 -0
- package/dist/src/inspect.js +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 +3 -0
- package/dist/src/reactive-union-set.d.ts.map +1 -1
- package/dist/src/reactive-union-set.js +12 -8
- package/dist/src/refkey.d.ts +39 -3
- package/dist/src/refkey.d.ts.map +1 -1
- package/dist/src/refkey.js +52 -8
- 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 +20 -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 +28 -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 +3 -1
- 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 +98 -130
- 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 +35 -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 +323 -203
- 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 +22 -7
- 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 +20 -4
- 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 +65 -16
- package/dist/src/tracer.d.ts +15 -3
- package/dist/src/tracer.d.ts.map +1 -1
- package/dist/src/tracer.js +39 -63
- package/dist/src/utils.d.ts +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +4 -4
- package/dist/src/write-output.d.ts +1 -1
- package/dist/src/write-output.d.ts.map +1 -1
- package/dist/src/write-output.js +31 -37
- package/dist/test/components/declaration.test.js +9 -14
- package/dist/test/components/reference-or-content.test.js +2 -2
- package/dist/test/symbols/output-scope.test.js +33 -198
- package/dist/test/symbols/output-symbol.test.js +139 -385
- package/dist/test/symbols/resolution.test.js +431 -114
- 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 +14 -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 +23 -45
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -2
- package/src/binder.ts +348 -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 +88 -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/src/utils.tsx +4 -4
- package/src/write-output.ts +33 -45
- package/temp/api.json +5551 -3066
- 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,8 +1,8 @@
|
|
|
1
1
|
import { isRef, shallowReactive } from "@vue/reactivity";
|
|
2
2
|
import { effect, getContext, onCleanup } from "../reactivity.js";
|
|
3
|
-
import {
|
|
3
|
+
import { MemberContext } from "../context/member-scope.js";
|
|
4
4
|
import { ScopeContext } from "../context/scope.js";
|
|
5
|
-
import {
|
|
5
|
+
import { formatSymbolName, trace, TracePhase } from "../tracer.js";
|
|
6
6
|
export function takeSymbols(cb) {
|
|
7
7
|
const context = getContext();
|
|
8
8
|
context.takesSymbols = true;
|
|
@@ -21,6 +21,11 @@ export function takeSymbols(cb) {
|
|
|
21
21
|
return context.takenSymbols;
|
|
22
22
|
}
|
|
23
23
|
export function emitSymbol(symbol) {
|
|
24
|
+
if (isRef(symbol)) {
|
|
25
|
+
trace(TracePhase.symbol.flow, () => `Emitting ref to symbol`);
|
|
26
|
+
} else {
|
|
27
|
+
trace(TracePhase.symbol.flow, () => `Emitting symbol ${formatSymbolName(symbol)}`);
|
|
28
|
+
}
|
|
24
29
|
let symbolTaker;
|
|
25
30
|
let context = getContext().owner;
|
|
26
31
|
while (context) {
|
|
@@ -28,13 +33,15 @@ export function emitSymbol(symbol) {
|
|
|
28
33
|
symbolTaker = context;
|
|
29
34
|
break;
|
|
30
35
|
}
|
|
31
|
-
if (context.context && (context.context[ScopeContext.id] || context.context[
|
|
36
|
+
if (context.context && (context.context[ScopeContext.id] || context.context[MemberContext.id])) {
|
|
32
37
|
// don't cross scope boundaries.
|
|
38
|
+
trace(TracePhase.symbol.flow, () => `Not emitting symbol across scope boundary`);
|
|
33
39
|
break;
|
|
34
40
|
}
|
|
35
41
|
context = context.owner;
|
|
36
42
|
}
|
|
37
43
|
if (!symbolTaker) {
|
|
44
|
+
trace(TracePhase.symbol.flow, () => `No symbol taker found, not emitting`);
|
|
38
45
|
return;
|
|
39
46
|
}
|
|
40
47
|
if (isRef(symbol)) {
|
|
@@ -53,6 +60,7 @@ export function emitSymbol(symbol) {
|
|
|
53
60
|
}
|
|
54
61
|
});
|
|
55
62
|
} else {
|
|
63
|
+
trace(TracePhase.symbol.flow, () => `Emitting symbol ${formatSymbolName(symbol)} taken by ${symbolTaker.componentOwner?.name ?? "unknown component"}`);
|
|
56
64
|
symbolTaker.takenSymbols.add(symbol);
|
|
57
65
|
onCleanup(() => {
|
|
58
66
|
context.takenSymbols.delete(symbol);
|
|
@@ -63,12 +71,19 @@ export function moveTakenMembersTo(baseSymbol) {
|
|
|
63
71
|
const taken = takeSymbols();
|
|
64
72
|
effect(() => {
|
|
65
73
|
for (const symbol of taken) {
|
|
66
|
-
if (symbol.
|
|
67
|
-
symbol.
|
|
74
|
+
if (symbol.isTransient) {
|
|
75
|
+
symbol.moveMembersTo(baseSymbol);
|
|
76
|
+
}
|
|
77
|
+
for (const refkey of symbol.refkeys) {
|
|
78
|
+
if (!baseSymbol.refkeys.includes(refkey)) {
|
|
79
|
+
baseSymbol.refkeys.push(refkey);
|
|
80
|
+
}
|
|
68
81
|
}
|
|
69
82
|
}
|
|
70
83
|
});
|
|
71
84
|
}
|
|
72
|
-
export function instantiateTakenMembersTo(baseSymbol) {
|
|
73
|
-
takeSymbols(symbol =>
|
|
85
|
+
export function instantiateTakenMembersTo(baseSymbol, toSpaceKey, fromSpaceKey) {
|
|
86
|
+
takeSymbols(symbol => {
|
|
87
|
+
baseSymbol.type = symbol;
|
|
88
|
+
});
|
|
74
89
|
}
|
|
@@ -1,12 +1,30 @@
|
|
|
1
1
|
import { Ref, ShallowReactive } from "@vue/reactivity";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Component } from "../runtime/component.js";
|
|
3
3
|
import { OutputSymbol } from "./output-symbol.js";
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
export interface SymbolSlot extends Component<{}> {
|
|
5
|
+
/**
|
|
6
|
+
* A ref for the set of symbols taken by this slot. Undefined when the Slot component
|
|
7
|
+
* has not been rendered yet.
|
|
8
|
+
*/
|
|
9
|
+
ref: Ref<ShallowReactive<Set<OutputSymbol>> | undefined>;
|
|
10
|
+
/**
|
|
11
|
+
* A ref for the first symbol taken by this slot. Undefined when the Slot component
|
|
12
|
+
* has not been rendered yet or has not taken any symbols.
|
|
13
|
+
*/
|
|
14
|
+
firstSymbol: Ref<OutputSymbol | undefined>;
|
|
15
|
+
/**
|
|
16
|
+
* Copy any members from taken symbols to the given symbol.
|
|
17
|
+
*/
|
|
18
|
+
copyMembersTo(baseSymbol: OutputSymbol): void;
|
|
19
|
+
/**
|
|
20
|
+
* Move any members from transient taken symbols to the given symbol.
|
|
21
|
+
*/
|
|
22
|
+
moveMembersTo(baseSymbol: OutputSymbol): void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create a component which accepts emitted symbols. The returned component has
|
|
26
|
+
* a `ref` property which is a ref to a reactive set of all symbols emitted by
|
|
27
|
+
* children of the component.
|
|
28
|
+
*/
|
|
29
|
+
export declare function createSymbolSlot(): SymbolSlot;
|
|
12
30
|
//# sourceMappingURL=symbol-slot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-slot.d.ts","sourceRoot":"","sources":["../../../src/symbols/symbol-slot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAc,MAAM,iBAAiB,CAAC;AAEnE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"symbol-slot.d.ts","sourceRoot":"","sources":["../../../src/symbols/symbol-slot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAc,MAAM,iBAAiB,CAAC;AAEnE,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,UAAW,SAAQ,SAAS,CAAC,EAAE,CAAC;IAC/C;;;OAGG;IACH,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzD;;;OAGG;IACH,WAAW,EAAE,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IAE3C;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,CAAC;IAE9C;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/C;AACD;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAoD7C"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { shallowRef } from "@vue/reactivity";
|
|
2
2
|
import { effect, onCleanup } from "../reactivity.js";
|
|
3
3
|
import { takeSymbols } from "./symbol-flow.js";
|
|
4
|
+
/**
|
|
5
|
+
* Create a component which accepts emitted symbols. The returned component has
|
|
6
|
+
* a `ref` property which is a ref to a reactive set of all symbols emitted by
|
|
7
|
+
* children of the component.
|
|
8
|
+
*/
|
|
4
9
|
export function createSymbolSlot() {
|
|
5
10
|
const symbolSlotRef = shallowRef();
|
|
6
11
|
function SymbolSlot(props) {
|
|
@@ -12,23 +17,34 @@ export function createSymbolSlot() {
|
|
|
12
17
|
return props.children;
|
|
13
18
|
}
|
|
14
19
|
SymbolSlot.ref = symbolSlotRef;
|
|
15
|
-
SymbolSlot
|
|
20
|
+
Object.defineProperty(SymbolSlot, "firstSymbol", {
|
|
21
|
+
get() {
|
|
22
|
+
const ref = shallowRef();
|
|
23
|
+
effect(() => {
|
|
24
|
+
ref.value = symbolSlotRef.value?.values().next().value;
|
|
25
|
+
});
|
|
26
|
+
return ref;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
SymbolSlot.copyMembersTo = baseSymbol => {
|
|
16
30
|
effect(() => {
|
|
17
31
|
if (!symbolSlotRef.value) {
|
|
18
32
|
return;
|
|
19
33
|
}
|
|
20
34
|
for (const symbol of symbolSlotRef.value) {
|
|
21
|
-
symbol.
|
|
35
|
+
symbol.copyMembersTo(baseSymbol);
|
|
22
36
|
}
|
|
23
37
|
});
|
|
24
38
|
};
|
|
25
|
-
SymbolSlot.
|
|
39
|
+
SymbolSlot.moveMembersTo = baseSymbol => {
|
|
26
40
|
effect(() => {
|
|
27
41
|
if (!symbolSlotRef.value) {
|
|
28
42
|
return;
|
|
29
43
|
}
|
|
30
44
|
for (const symbol of symbolSlotRef.value) {
|
|
31
|
-
symbol.
|
|
45
|
+
if (symbol.isTransient) {
|
|
46
|
+
symbol.moveMembersTo(baseSymbol);
|
|
47
|
+
}
|
|
32
48
|
}
|
|
33
49
|
});
|
|
34
50
|
};
|
|
@@ -1,14 +1,25 @@
|
|
|
1
|
-
import type { NameConflictResolver } from "../binder.js";
|
|
1
|
+
import type { Binder, NameConflictResolver } from "../binder.js";
|
|
2
2
|
import { ReactiveUnionSet } from "../reactive-union-set.js";
|
|
3
|
-
import
|
|
3
|
+
import { Refkey } from "../refkey.js";
|
|
4
4
|
import type { OutputSymbol } from "./output-symbol.js";
|
|
5
|
-
export declare class SymbolTable extends ReactiveUnionSet<OutputSymbol> {
|
|
6
|
-
private
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
export declare abstract class SymbolTable extends ReactiveUnionSet<OutputSymbol> {
|
|
6
|
+
#private;
|
|
7
|
+
get binder(): Binder | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* The key of this symbol table, e.g. "static" or "instance".
|
|
10
|
+
*/
|
|
11
|
+
get key(): string;
|
|
12
|
+
/**
|
|
13
|
+
* The symbols defined within this scope, indexed by refkey.
|
|
14
|
+
*/
|
|
15
|
+
get symbolsByRefkey(): ReadonlyMap<Refkey, OutputSymbol>;
|
|
16
|
+
get symbolNames(): ReadonlyMap<string, OutputSymbol>;
|
|
17
|
+
constructor(key: string, binder?: Binder, options?: {
|
|
11
18
|
nameConflictResolver?: NameConflictResolver;
|
|
12
19
|
});
|
|
20
|
+
moveTo(target: SymbolTable): void;
|
|
21
|
+
copyTo(target: SymbolTable, options?: {
|
|
22
|
+
createRefkeys?(sourceSymbol: OutputSymbol): Refkey[];
|
|
23
|
+
}): void;
|
|
13
24
|
}
|
|
14
25
|
//# sourceMappingURL=symbol-table.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-table.d.ts","sourceRoot":"","sources":["../../../src/symbols/symbol-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"symbol-table.d.ts","sourceRoot":"","sources":["../../../src/symbols/symbol-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAStC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,8BAAsB,WAAY,SAAQ,gBAAgB,CAAC,YAAY,CAAC;;IAmBtE,IAAI,MAAM,uBAET;IAID;;OAEG;IACH,IAAI,GAAG,WAEN;IAGD;;OAEG;IACH,IAAI,eAAe,sCAElB;IAGD,IAAI,WAAW,sCAEd;gBAGC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE;QACP,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;KACxC;IAmCR,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAejC,MAAM,CACJ,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;QACP,aAAa,CAAC,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAAC;KACjD,GACL,IAAI;CAgBR"}
|
|
@@ -1,33 +1,82 @@
|
|
|
1
1
|
import { ReactiveUnionSet } from "../reactive-union-set.js";
|
|
2
2
|
import { queueJob } from "../scheduler.js";
|
|
3
|
-
import {
|
|
3
|
+
import { formatSymbolName, formatSymbolTableName, trace, TracePhase } from "../tracer.js";
|
|
4
4
|
export class SymbolTable extends ReactiveUnionSet {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
#namesToDeconflict = new Set();
|
|
6
|
+
#nameConflictResolver;
|
|
7
|
+
#deconflictNames = () => {
|
|
8
|
+
for (const name of this.#namesToDeconflict) {
|
|
9
|
+
const conflictedSymbols = [...this].filter(sym => sym.originalName === name && !sym.ignoreNameConflict);
|
|
10
|
+
if (this.#nameConflictResolver) {
|
|
11
|
+
this.#nameConflictResolver(name, conflictedSymbols);
|
|
11
12
|
} else {
|
|
12
13
|
defaultConflictHandler(name, conflictedSymbols);
|
|
13
14
|
}
|
|
14
|
-
this.
|
|
15
|
+
this.#namesToDeconflict.delete(name);
|
|
15
16
|
}
|
|
16
17
|
};
|
|
17
|
-
|
|
18
|
+
#binder;
|
|
19
|
+
get binder() {
|
|
20
|
+
return this.#binder;
|
|
21
|
+
}
|
|
22
|
+
#key;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The key of this symbol table, e.g. "static" or "instance".
|
|
26
|
+
*/
|
|
27
|
+
get key() {
|
|
28
|
+
return this.#key;
|
|
29
|
+
}
|
|
30
|
+
#symbolsByRefkey;
|
|
31
|
+
/**
|
|
32
|
+
* The symbols defined within this scope, indexed by refkey.
|
|
33
|
+
*/
|
|
34
|
+
get symbolsByRefkey() {
|
|
35
|
+
return this.#symbolsByRefkey;
|
|
36
|
+
}
|
|
37
|
+
#symbolNames;
|
|
38
|
+
get symbolNames() {
|
|
39
|
+
return this.#symbolNames;
|
|
40
|
+
}
|
|
41
|
+
constructor(key, binder, options = {}) {
|
|
18
42
|
super({
|
|
19
43
|
onAdd: symbol => {
|
|
20
|
-
trace(TracePhase.symbol.addToScope, () => `${formatSymbolName(symbol)}
|
|
21
|
-
this.
|
|
22
|
-
queueJob(this
|
|
44
|
+
trace(TracePhase.symbol.addToScope, () => `${formatSymbolName(symbol)} added to ${formatSymbolTableName(this)}`);
|
|
45
|
+
this.#namesToDeconflict.add(symbol.name);
|
|
46
|
+
queueJob(this.#deconflictNames);
|
|
23
47
|
return symbol;
|
|
24
48
|
},
|
|
25
|
-
onDelete
|
|
26
|
-
trace(TracePhase.symbol.removeFromScope, () => `${formatSymbolName(symbol)}
|
|
49
|
+
onDelete: symbol => {
|
|
50
|
+
trace(TracePhase.symbol.removeFromScope, () => `${formatSymbolName(symbol)} removed from ${formatSymbolTableName(this)}`);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
this.#nameConflictResolver = options.nameConflictResolver ?? binder?.nameConflictResolver;
|
|
54
|
+
this.#binder = binder;
|
|
55
|
+
this.#key = key;
|
|
56
|
+
this.#symbolsByRefkey = this.createIndex(s => s.refkeys);
|
|
57
|
+
this.#symbolNames = this.createIndex(s => {
|
|
58
|
+
return s.name;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
moveTo(target) {
|
|
62
|
+
trace(TracePhase.scope.moveSymbols, () => `${formatSymbolTableName(this)} -> ${formatSymbolTableName(target)}`);
|
|
63
|
+
target.addSubset(this, {
|
|
64
|
+
onAdd: symbol => {
|
|
65
|
+
symbol.spaces = [target];
|
|
66
|
+
return symbol;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
copyTo(target, options = {}) {
|
|
71
|
+
trace(TracePhase.scope.copySymbols, () => `${formatSymbolTableName(this)} copied to ${formatSymbolTableName(target)}`);
|
|
72
|
+
target.addSubset(this, {
|
|
73
|
+
onAdd: symbol => {
|
|
74
|
+
const copy = symbol.copy();
|
|
75
|
+
copy.spaces = [target];
|
|
76
|
+
copy.refkeys = options.createRefkeys?.(symbol) ?? [];
|
|
77
|
+
return copy;
|
|
27
78
|
}
|
|
28
79
|
});
|
|
29
|
-
this.scope = scope;
|
|
30
|
-
this._nameConflictResolver = options.nameConflictResolver;
|
|
31
80
|
}
|
|
32
81
|
}
|
|
33
82
|
|
package/dist/src/tracer.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Refkey } from "./refkey.js";
|
|
2
2
|
import { type OutputScope } from "./symbols/output-scope.js";
|
|
3
3
|
import { type OutputSymbol } from "./symbols/output-symbol.js";
|
|
4
|
+
import { SymbolTable } from "./symbols/symbol-table.js";
|
|
4
5
|
export declare const TracePhase: {
|
|
5
6
|
readonly scope: {
|
|
6
7
|
readonly update: {
|
|
@@ -30,6 +31,15 @@ export declare const TracePhase: {
|
|
|
30
31
|
readonly b: 100;
|
|
31
32
|
};
|
|
32
33
|
};
|
|
34
|
+
readonly moveSymbols: {
|
|
35
|
+
readonly area: "scope";
|
|
36
|
+
readonly subarea: "moveSymbols";
|
|
37
|
+
readonly bg: {
|
|
38
|
+
readonly r: 0;
|
|
39
|
+
readonly g: 100;
|
|
40
|
+
readonly b: 100;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
33
43
|
};
|
|
34
44
|
readonly symbol: {
|
|
35
45
|
readonly update: {
|
|
@@ -226,13 +236,15 @@ interface TextFormat {
|
|
|
226
236
|
*/
|
|
227
237
|
export declare function formatSymbolName(symbol: OutputSymbol): string;
|
|
228
238
|
export declare function formatSymbol(symbol: OutputSymbol): string;
|
|
229
|
-
export declare function
|
|
239
|
+
export declare function formatSpaceSymbols(space: SymbolTable): string;
|
|
240
|
+
export declare function formatScopeName(scope: OutputScope | undefined): string;
|
|
241
|
+
export declare function formatSymbolTableName(table: SymbolTable): string;
|
|
230
242
|
/**
|
|
231
243
|
* Format an OutputScope for display, showing information in a concise format
|
|
232
244
|
* @param scope The scope to format
|
|
233
245
|
* @returns A formatted string representation of the scope
|
|
234
246
|
*/
|
|
235
|
-
export declare function formatScope(scope:
|
|
247
|
+
export declare function formatScope(scope: OutputScope): string;
|
|
236
248
|
export declare function formatRefkeys(refkeys: Refkey[] | Refkey | undefined): string;
|
|
237
249
|
export {};
|
|
238
250
|
//# sourceMappingURL=tracer.d.ts.map
|
package/dist/src/tracer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/tracer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/tracer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAK7D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AA0BxD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyHb,CAAC;AAEX,UAAU,UAAW,SAAQ,UAAU;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,wBAAgB,KAAK,CACnB,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,MAAM,EAChB,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,QA4BpC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,MAAM,QA8B9D;AAED,UAAU,KAAK;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,4CAA4C;AAC5C,UAAU,UAAU;IAClB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAqCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAQ7D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAoCzD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,UAEpD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAYtE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAahE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAwCtD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,UAUnE"}
|
package/dist/src/tracer.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { effect } from "@vue/reactivity";
|
|
2
2
|
import { untrack } from "./reactivity.js";
|
|
3
|
+
import { isMemberRefkey } from "./refkey.js";
|
|
3
4
|
import { scheduler } from "./scheduler.js";
|
|
4
|
-
import { OutputScopeFlags, OutputSymbolFlags } from "./symbols/flags.js";
|
|
5
5
|
// enable tracing for specific phases using a comma separated list of
|
|
6
6
|
// dotted identifiers, e.g. `scope.update,symbol.create`.
|
|
7
7
|
const traceEnv = process.env.ALLOY_TRACE ?? "";
|
|
@@ -46,6 +46,15 @@ export const TracePhase = {
|
|
|
46
46
|
g: 100,
|
|
47
47
|
b: 100
|
|
48
48
|
}
|
|
49
|
+
},
|
|
50
|
+
moveSymbols: {
|
|
51
|
+
area: "scope",
|
|
52
|
+
subarea: "moveSymbols",
|
|
53
|
+
bg: {
|
|
54
|
+
r: 0,
|
|
55
|
+
g: 100,
|
|
56
|
+
b: 100
|
|
57
|
+
}
|
|
49
58
|
}
|
|
50
59
|
},
|
|
51
60
|
symbol: {
|
|
@@ -316,16 +325,6 @@ function colorText(text, fmt) {
|
|
|
316
325
|
return `${prefix}${text}${reset}`;
|
|
317
326
|
}
|
|
318
327
|
|
|
319
|
-
/**
|
|
320
|
-
* Format flag values in a concise way, showing only the flags that are set
|
|
321
|
-
* @param flags The numeric flags value to format
|
|
322
|
-
* @param flagEnum The enum containing flag definitions
|
|
323
|
-
* @returns An array of flag names that are set
|
|
324
|
-
*/
|
|
325
|
-
function formatFlags(flags, flagEnum) {
|
|
326
|
-
return Object.entries(flagEnum).filter(([name, value]) => typeof value === "number" && value !== 0 && (flags & value) === value).map(([name]) => name);
|
|
327
|
-
}
|
|
328
|
-
|
|
329
328
|
/**
|
|
330
329
|
* Format a symbol name with its ID in a blue-green color
|
|
331
330
|
* @param symbol The symbol to format
|
|
@@ -340,18 +339,6 @@ export function formatSymbolName(symbol) {
|
|
|
340
339
|
}
|
|
341
340
|
});
|
|
342
341
|
}
|
|
343
|
-
|
|
344
|
-
/**
|
|
345
|
-
* Format the symbols in a member scope, showing their names and IDs
|
|
346
|
-
* @param scope The member scope containing the symbols to format
|
|
347
|
-
* @returns A formatted string representation of the member scope symbols
|
|
348
|
-
*/
|
|
349
|
-
function formatMemberScopeSymbols(scope) {
|
|
350
|
-
if (!scope || scope.symbols.size === 0) {
|
|
351
|
-
return "none";
|
|
352
|
-
}
|
|
353
|
-
return Array.from(scope.symbols).map(symbol => formatSymbolName(symbol)).join(", ");
|
|
354
|
-
}
|
|
355
342
|
export function formatSymbol(symbol) {
|
|
356
343
|
// Base display with name and ID
|
|
357
344
|
let result = formatSymbolName(symbol);
|
|
@@ -368,29 +355,15 @@ export function formatSymbol(symbol) {
|
|
|
368
355
|
}));
|
|
369
356
|
}
|
|
370
357
|
|
|
371
|
-
// Show only enabled flags
|
|
372
|
-
const flagsInfo = formatFlags(symbol.flags, OutputSymbolFlags);
|
|
373
|
-
if (flagsInfo.length > 0) {
|
|
374
|
-
details.push(` flags: ${flagsInfo.join(", ")}`);
|
|
375
|
-
}
|
|
376
|
-
|
|
377
358
|
// Show scope info with formatted name
|
|
378
359
|
if (symbol.scope) {
|
|
379
360
|
details.push(untrack(() => ` scope: ${formatScopeName(symbol.scope)}`));
|
|
380
361
|
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
if (symbol.instanceMemberScope) {
|
|
384
|
-
untrack(() => {
|
|
385
|
-
const memberCount = symbol.instanceMemberScope.symbols.size;
|
|
386
|
-
details.push(` instance members: ${memberCount} - ${formatMemberScopeSymbols(symbol.instanceMemberScope)}`);
|
|
387
|
-
});
|
|
362
|
+
for (const space of symbol.memberSpaces) {
|
|
363
|
+
details.push(untrack(() => formatSpaceSymbols(space)));
|
|
388
364
|
}
|
|
389
|
-
if (symbol.
|
|
390
|
-
untrack(() => {
|
|
391
|
-
const memberCount = symbol.staticMemberScope.symbols.size;
|
|
392
|
-
details.push(` static members: ${memberCount} - ${formatMemberScopeSymbols(symbol.staticMemberScope)}`);
|
|
393
|
-
});
|
|
365
|
+
if (symbol.ownerSymbol) {
|
|
366
|
+
details.push(untrack(() => ` ownerSymbol: ${formatSymbolName(symbol.ownerSymbol)}`));
|
|
394
367
|
}
|
|
395
368
|
|
|
396
369
|
// Show all refkeys with proper formatting
|
|
@@ -402,18 +375,31 @@ export function formatSymbol(symbol) {
|
|
|
402
375
|
}
|
|
403
376
|
return result;
|
|
404
377
|
}
|
|
378
|
+
export function formatSpaceSymbols(space) {
|
|
379
|
+
return ` ${space.key} symbols (${space.size}): ${[...space].map(s => s.name).join(", ")}`;
|
|
380
|
+
}
|
|
405
381
|
export function formatScopeName(scope) {
|
|
406
|
-
|
|
382
|
+
if (!scope) {
|
|
383
|
+
return "no scope";
|
|
384
|
+
}
|
|
385
|
+
return colorText(`${scope.name}[${scope.id}]`, {
|
|
407
386
|
fg: {
|
|
408
387
|
r: 0,
|
|
409
388
|
g: 150,
|
|
410
389
|
b: 50
|
|
411
390
|
}
|
|
412
391
|
});
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
392
|
+
}
|
|
393
|
+
export function formatSymbolTableName(table) {
|
|
394
|
+
// avoid instance of checks here in order to not create circular module imports.
|
|
395
|
+
const name = "symbol" in table ? formatSymbolName(table.symbol) : formatScopeName(table.scope);
|
|
396
|
+
return colorText(`${name}:${table.key}`, {
|
|
397
|
+
fg: {
|
|
398
|
+
r: 0,
|
|
399
|
+
g: 125,
|
|
400
|
+
b: 25
|
|
401
|
+
}
|
|
402
|
+
});
|
|
417
403
|
}
|
|
418
404
|
|
|
419
405
|
/**
|
|
@@ -445,32 +431,21 @@ export function formatScope(scope) {
|
|
|
445
431
|
}
|
|
446
432
|
}));
|
|
447
433
|
}
|
|
448
|
-
// Show only enabled flags
|
|
449
|
-
const flagsInfo = formatFlags(scope.flags, OutputScopeFlags);
|
|
450
|
-
if (flagsInfo.length > 0) {
|
|
451
|
-
details.push(` flags: ${flagsInfo.join(", ")}`);
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
// Show symbol count
|
|
455
|
-
const symbolCount = scope.symbols.size;
|
|
456
|
-
if (symbolCount > 0) {
|
|
457
|
-
details.push(` symbols: ${symbolCount}`);
|
|
458
|
-
}
|
|
459
434
|
|
|
460
435
|
// Show parent scope if present
|
|
461
436
|
if (scope.parent) {
|
|
462
437
|
details.push(` parent: ${formatScopeName(scope.parent)}`);
|
|
463
438
|
}
|
|
464
439
|
|
|
465
|
-
// Show owner if present (for member scopes)
|
|
466
|
-
if (scope.owner) {
|
|
467
|
-
details.push(` owner: ${formatSymbolName(scope.owner)}`);
|
|
468
|
-
}
|
|
469
|
-
|
|
470
440
|
// Show child scopes if present
|
|
471
441
|
if (scope.children && scope.children.size > 0) {
|
|
472
442
|
details.push(` children: ${scope.children.size}`);
|
|
473
443
|
}
|
|
444
|
+
|
|
445
|
+
// Show declaration spaces
|
|
446
|
+
for (const space of scope.spaces) {
|
|
447
|
+
details.push(` ${untrack(() => formatSpaceSymbols(space))}`);
|
|
448
|
+
}
|
|
474
449
|
if (details.length > 0) {
|
|
475
450
|
result += "\n" + details.join("\n");
|
|
476
451
|
}
|
|
@@ -486,7 +461,8 @@ export function formatRefkeys(refkeys) {
|
|
|
486
461
|
return formatRefkey(refkeys);
|
|
487
462
|
}
|
|
488
463
|
function formatRefkey(refkey) {
|
|
489
|
-
|
|
464
|
+
const text = isMemberRefkey(refkey) ? `memberRefkey[${formatRefkey(refkey.base)} -> ${formatRefkey(refkey.member)}]` : `refkey[${refkey.key}]`;
|
|
465
|
+
return colorText(text, {
|
|
490
466
|
fg: {
|
|
491
467
|
r: 150,
|
|
492
468
|
g: 0,
|
package/dist/src/utils.d.ts
CHANGED
|
@@ -80,7 +80,7 @@ export interface OutputVisitor {
|
|
|
80
80
|
* @param sourceDirectory - The root directory to traverse.
|
|
81
81
|
* @param visitor - The visitor to call for each file and directory.
|
|
82
82
|
*/
|
|
83
|
-
export declare function traverseOutput(sourceDirectory: OutputDirectory, visitor: OutputVisitor): void
|
|
83
|
+
export declare function traverseOutput(sourceDirectory: OutputDirectory, visitor: OutputVisitor): Promise<void>;
|
|
84
84
|
/**
|
|
85
85
|
* Convert a list of props to a joiner and ender for use in {@link (mapJoin:1)}.
|
|
86
86
|
*/
|
package/dist/src/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAEL,aAAa,EAMd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAU,MAAM,aAAa,CAAC;AAClE,OAAO,EACL,QAAQ,EACR,gBAAgB,EAEjB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7B,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,EAC1C,OAAO,CAAC,EAAE,WAAW,GACpB,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC;AACpD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAC1B,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,EACpC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,EAClC,OAAO,CAAC,EAAE,WAAW,GACpB,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC;AAmHpD;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EACrC,GAAG,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,EACtB,OAAO,GAAE,WAAgB,GACxB,QAAQ,CAmBV;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,MAAM,QAAQ,EAClB,OAAO,GAAE,eAAoB,GAC5B,MAAM,QAAQ,CAsBhB;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,QAAQ,EAClB,OAAO,CAAC,EAAE,eAAe,GACxB,QAAQ,EAAE,CASZ;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,mEAQ/D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,8DAQlE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAEvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,IAAI,gBAAgB,CAEvE;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IACjD,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;GAMG;AACH,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAEL,aAAa,EAMd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAU,MAAM,aAAa,CAAC;AAClE,OAAO,EACL,QAAQ,EACR,gBAAgB,EAEjB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7B,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,EAC1C,OAAO,CAAC,EAAE,WAAW,GACpB,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC;AACpD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAC1B,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,EACpC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,EAClC,OAAO,CAAC,EAAE,WAAW,GACpB,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC;AAmHpD;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EACrC,GAAG,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,EACtB,OAAO,GAAE,WAAgB,GACxB,QAAQ,CAmBV;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,MAAM,QAAQ,EAClB,OAAO,GAAE,eAAoB,GAC5B,MAAM,QAAQ,CAsBhB;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,QAAQ,EAClB,OAAO,CAAC,EAAE,eAAe,GACxB,QAAQ,EAAE,CASZ;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,mEAQ/D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,8DAQlE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAEvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,IAAI,gBAAgB,CAEvE;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IACjD,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,aAAa,iBAUvB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAuC5E"}
|
package/dist/src/utils.js
CHANGED
|
@@ -211,13 +211,13 @@ export function isKeyedChild(child) {
|
|
|
211
211
|
* @param sourceDirectory - The root directory to traverse.
|
|
212
212
|
* @param visitor - The visitor to call for each file and directory.
|
|
213
213
|
*/
|
|
214
|
-
export function traverseOutput(sourceDirectory, visitor) {
|
|
215
|
-
visitor.visitDirectory(sourceDirectory);
|
|
214
|
+
export async function traverseOutput(sourceDirectory, visitor) {
|
|
215
|
+
await visitor.visitDirectory(sourceDirectory);
|
|
216
216
|
for (const item of sourceDirectory.contents) {
|
|
217
217
|
if (item.kind === "directory") {
|
|
218
|
-
traverseOutput(item, visitor);
|
|
218
|
+
await traverseOutput(item, visitor);
|
|
219
219
|
} else {
|
|
220
|
-
visitor.visitFile(item);
|
|
220
|
+
await visitor.visitFile(item);
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
}
|
|
@@ -3,5 +3,5 @@ import { OutputDirectory } from "./render.js";
|
|
|
3
3
|
* Write the output from {@link render} to the file system.
|
|
4
4
|
*
|
|
5
5
|
*/
|
|
6
|
-
export declare function writeOutput(output: OutputDirectory, basePath?: string): Promise<void
|
|
6
|
+
export declare function writeOutput(output: OutputDirectory, basePath?: string): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=write-output.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-output.d.ts","sourceRoot":"","sources":["../../src/write-output.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,EACvB,QAAQ,GAAE,MAAW,
|
|
1
|
+
{"version":3,"file":"write-output.d.ts","sourceRoot":"","sources":["../../src/write-output.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,EACvB,QAAQ,GAAE,MAAW,iBAwCtB"}
|