@alloy-js/core 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/src/binder.d.ts +18 -235
  3. package/dist/src/binder.d.ts.map +1 -1
  4. package/dist/src/binder.js +85 -386
  5. package/dist/src/components/Block.d.ts +1 -1
  6. package/dist/src/components/Block.d.ts.map +1 -1
  7. package/dist/src/components/Block.js +3 -1
  8. package/dist/src/components/Declaration.d.ts +1 -1
  9. package/dist/src/components/Declaration.d.ts.map +1 -1
  10. package/dist/src/components/Declaration.js +5 -4
  11. package/dist/src/components/For.d.ts +1 -1
  12. package/dist/src/components/For.d.ts.map +1 -1
  13. package/dist/src/components/For.js +1 -1
  14. package/dist/src/components/Indent.d.ts +1 -1
  15. package/dist/src/components/Indent.d.ts.map +1 -1
  16. package/dist/src/components/List.d.ts +1 -1
  17. package/dist/src/components/List.d.ts.map +1 -1
  18. package/dist/src/components/List.js +2 -1
  19. package/dist/src/components/MemberDeclaration.d.ts +1 -1
  20. package/dist/src/components/MemberDeclaration.d.ts.map +1 -1
  21. package/dist/src/components/MemberDeclaration.js +3 -4
  22. package/dist/src/components/MemberScope.d.ts +1 -1
  23. package/dist/src/components/MemberScope.d.ts.map +1 -1
  24. package/dist/src/components/MemberScope.js +0 -2
  25. package/dist/src/components/Prose.d.ts +1 -1
  26. package/dist/src/components/Prose.d.ts.map +1 -1
  27. package/dist/src/components/ReferenceOrContent.d.ts +1 -1
  28. package/dist/src/components/ReferenceOrContent.d.ts.map +1 -1
  29. package/dist/src/components/Scope.d.ts +1 -1
  30. package/dist/src/components/Scope.d.ts.map +1 -1
  31. package/dist/src/components/Scope.js +3 -6
  32. package/dist/src/components/Show.d.ts +1 -1
  33. package/dist/src/components/Show.d.ts.map +1 -1
  34. package/dist/src/components/StatementList.d.ts +1 -1
  35. package/dist/src/components/StatementList.d.ts.map +1 -1
  36. package/dist/src/components/StatementList.js +1 -1
  37. package/dist/src/components/Switch.d.ts +1 -1
  38. package/dist/src/components/Switch.d.ts.map +1 -1
  39. package/dist/src/components/Switch.js +1 -1
  40. package/dist/src/components/Wrap.d.ts +1 -1
  41. package/dist/src/components/Wrap.d.ts.map +1 -1
  42. package/dist/src/context/assignment.d.ts +1 -1
  43. package/dist/src/context/assignment.d.ts.map +1 -1
  44. package/dist/src/context/binder.d.ts +2 -2
  45. package/dist/src/context/binder.d.ts.map +1 -1
  46. package/dist/src/context/declaration.d.ts +1 -1
  47. package/dist/src/context/declaration.d.ts.map +1 -1
  48. package/dist/src/context/member-declaration.d.ts +1 -1
  49. package/dist/src/context/member-declaration.d.ts.map +1 -1
  50. package/dist/src/context/member-declaration.js +0 -1
  51. package/dist/src/context/member-scope.d.ts +1 -1
  52. package/dist/src/context/member-scope.d.ts.map +1 -1
  53. package/dist/src/context/name-policy.d.ts +1 -1
  54. package/dist/src/context/name-policy.d.ts.map +1 -1
  55. package/dist/src/context/scope.d.ts +1 -1
  56. package/dist/src/context/scope.d.ts.map +1 -1
  57. package/dist/src/context/source-directory.d.ts +1 -1
  58. package/dist/src/context/source-directory.d.ts.map +1 -1
  59. package/dist/src/context/source-file.d.ts +2 -2
  60. package/dist/src/context/source-file.d.ts.map +1 -1
  61. package/dist/src/index.d.ts +4 -1
  62. package/dist/src/index.d.ts.map +1 -1
  63. package/dist/src/index.js +4 -1
  64. package/dist/src/jsx-runtime.d.ts +12 -3
  65. package/dist/src/jsx-runtime.d.ts.map +1 -1
  66. package/dist/src/jsx-runtime.js +6 -2
  67. package/dist/src/reactive-union-set.d.ts +29 -0
  68. package/dist/src/reactive-union-set.d.ts.map +1 -0
  69. package/dist/src/reactive-union-set.js +183 -0
  70. package/dist/src/refkey.d.ts +36 -0
  71. package/dist/src/refkey.d.ts.map +1 -1
  72. package/dist/src/refkey.js +40 -0
  73. package/dist/src/scheduler.d.ts +2 -2
  74. package/dist/src/scheduler.d.ts.map +1 -1
  75. package/dist/src/scheduler.js +27 -6
  76. package/dist/src/slot.d.ts +1 -1
  77. package/dist/src/slot.d.ts.map +1 -1
  78. package/dist/src/stc.d.ts +1 -1
  79. package/dist/src/stc.d.ts.map +1 -1
  80. package/dist/src/sti.d.ts +1 -1
  81. package/dist/src/sti.d.ts.map +1 -1
  82. package/dist/src/sti.js +1 -1
  83. package/dist/src/symbols/index.d.ts +6 -0
  84. package/dist/src/symbols/index.d.ts.map +1 -0
  85. package/dist/src/symbols/index.js +5 -0
  86. package/dist/src/symbols/output-scope.d.ts +116 -0
  87. package/dist/src/symbols/output-scope.d.ts.map +1 -0
  88. package/dist/src/symbols/output-scope.js +246 -0
  89. package/dist/src/symbols/output-symbol.d.ts +134 -0
  90. package/dist/src/symbols/output-symbol.d.ts.map +1 -0
  91. package/dist/src/symbols/output-symbol.js +379 -0
  92. package/dist/src/symbols/symbol-flow.d.ts +13 -0
  93. package/dist/src/symbols/symbol-flow.d.ts.map +1 -0
  94. package/dist/src/symbols/symbol-flow.js +74 -0
  95. package/dist/src/symbols/symbol-slot.d.ts +12 -0
  96. package/dist/src/symbols/symbol-slot.d.ts.map +1 -0
  97. package/dist/src/symbols/symbol-slot.js +36 -0
  98. package/dist/src/symbols/symbol-table.d.ts +14 -0
  99. package/dist/src/symbols/symbol-table.d.ts.map +1 -0
  100. package/dist/src/symbols/symbol-table.js +42 -0
  101. package/dist/src/tap.d.ts +2 -1
  102. package/dist/src/tap.d.ts.map +1 -1
  103. package/dist/src/tracer.d.ts +181 -0
  104. package/dist/src/tracer.d.ts.map +1 -0
  105. package/dist/src/tracer.js +441 -0
  106. package/dist/src/tsdoc-metadata.json +1 -1
  107. package/dist/test/components/slot.test.js +5 -7
  108. package/dist/test/reactive-union-set.test.d.ts +2 -0
  109. package/dist/test/reactive-union-set.test.d.ts.map +1 -0
  110. package/dist/test/reactive-union-set.test.js +170 -0
  111. package/dist/test/symbols/output-scope.test.d.ts +2 -0
  112. package/dist/test/symbols/output-scope.test.d.ts.map +1 -0
  113. package/dist/test/symbols/output-scope.test.js +342 -0
  114. package/dist/test/symbols/output-symbol.test.d.ts +2 -0
  115. package/dist/test/symbols/output-symbol.test.d.ts.map +1 -0
  116. package/dist/test/symbols/output-symbol.test.js +446 -0
  117. package/dist/test/symbols/resolution.test.d.ts +2 -0
  118. package/dist/test/symbols/resolution.test.d.ts.map +1 -0
  119. package/dist/test/symbols/resolution.test.js +140 -0
  120. package/dist/test/symbols/utils.d.ts +24 -0
  121. package/dist/test/symbols/utils.d.ts.map +1 -0
  122. package/dist/test/symbols/utils.js +46 -0
  123. package/dist/tsconfig.tsbuildinfo +1 -1
  124. package/package.json +3 -3
  125. package/src/binder.ts +148 -672
  126. package/src/components/Block.tsx +4 -1
  127. package/src/components/Declaration.tsx +6 -6
  128. package/src/components/For.tsx +1 -1
  129. package/src/components/Indent.tsx +1 -1
  130. package/src/components/List.tsx +1 -1
  131. package/src/components/MemberDeclaration.tsx +4 -4
  132. package/src/components/MemberScope.tsx +2 -5
  133. package/src/components/Prose.tsx +1 -1
  134. package/src/components/ReferenceOrContent.tsx +1 -1
  135. package/src/components/Scope.tsx +2 -6
  136. package/src/components/Show.tsx +1 -1
  137. package/src/components/StatementList.tsx +2 -1
  138. package/src/components/Switch.tsx +1 -1
  139. package/src/components/Wrap.tsx +1 -1
  140. package/src/context/assignment.ts +1 -1
  141. package/src/context/binder.ts +2 -2
  142. package/src/context/declaration.ts +1 -1
  143. package/src/context/member-declaration.ts +1 -1
  144. package/src/context/member-scope.ts +1 -1
  145. package/src/context/name-policy.ts +1 -1
  146. package/src/context/scope.ts +1 -1
  147. package/src/context/source-directory.ts +1 -1
  148. package/src/context/source-file.ts +2 -2
  149. package/src/index.ts +11 -0
  150. package/src/jsx-runtime.ts +18 -2
  151. package/src/reactive-union-set.ts +238 -0
  152. package/src/refkey.ts +40 -0
  153. package/src/scheduler.ts +31 -6
  154. package/src/slot.ts +1 -1
  155. package/src/stc.ts +3 -3
  156. package/src/sti.ts +5 -5
  157. package/src/symbols/index.ts +5 -0
  158. package/src/symbols/output-scope.ts +323 -0
  159. package/src/symbols/output-symbol.ts +512 -0
  160. package/src/symbols/symbol-flow.ts +104 -0
  161. package/src/symbols/symbol-slot.tsx +47 -0
  162. package/src/symbols/symbol-table.ts +72 -0
  163. package/src/tap.ts +2 -1
  164. package/src/tracer.ts +440 -0
  165. package/temp/api.json +4172 -1582
  166. package/test/components/slot.test.tsx +8 -11
  167. package/test/reactive-union-set.test.tsx +191 -0
  168. package/test/symbols/output-scope.test.ts +302 -0
  169. package/test/symbols/output-symbol.test.ts +459 -0
  170. package/test/symbols/resolution.test.ts +172 -0
  171. package/test/symbols/utils.ts +95 -0
  172. package/dist/test/symbols.test.d.ts +0 -2
  173. package/dist/test/symbols.test.d.ts.map +0 -1
  174. package/dist/test/symbols.test.js +0 -884
  175. package/test/symbols.test.ts +0 -1006
@@ -0,0 +1,183 @@
1
+ import { effect } from "@alloy-js/core/jsx-runtime";
2
+ import { ITERATE_KEY, ReactiveFlags, shallowReactive, shallowReadonly, track, TrackOpTypes, trigger, TriggerOpTypes } from "@vue/reactivity";
3
+ export class ReactiveUnionSet extends Set {
4
+ _refcounts = new Map();
5
+ _indexes = [];
6
+ [ReactiveFlags.IS_REACTIVE] = true;
7
+ _handleAdd(value) {
8
+ value = this._onAdd ? this._onAdd(value) : value;
9
+ for (const index of this._indexes) {
10
+ index.add(value);
11
+ }
12
+ return value;
13
+ }
14
+ _handleDelete(value) {
15
+ if (this._onDelete) {
16
+ this._onDelete(value);
17
+ }
18
+ for (const index of this._indexes) {
19
+ index.delete(value);
20
+ }
21
+ return value;
22
+ }
23
+ constructor(options = {}) {
24
+ super();
25
+ this._subsets = new Set();
26
+ this._onAdd = options.onAdd;
27
+ this._onDelete = options.onDelete;
28
+ return this;
29
+ }
30
+ get size() {
31
+ track(this, TrackOpTypes.ITERATE, ITERATE_KEY);
32
+ return super.size;
33
+ }
34
+ [Symbol.iterator]() {
35
+ track(this, TrackOpTypes.ITERATE, ITERATE_KEY);
36
+ return super[Symbol.iterator]();
37
+ }
38
+ keys() {
39
+ track(this, TrackOpTypes.ITERATE, ITERATE_KEY);
40
+ return super.keys();
41
+ }
42
+ values() {
43
+ track(this, TrackOpTypes.ITERATE, ITERATE_KEY);
44
+ return super.values();
45
+ }
46
+ entries() {
47
+ track(this, TrackOpTypes.ITERATE, ITERATE_KEY);
48
+ return super.entries();
49
+ }
50
+ add(item) {
51
+ if (this._refcounts.has(item)) {
52
+ this._refcounts.set(item, this._refcounts.get(item) + 1);
53
+ } else {
54
+ this._refcounts.set(item, 1);
55
+ super.add(item);
56
+ this._handleAdd(item);
57
+ trigger(this, TriggerOpTypes.ADD, item, item);
58
+ }
59
+ return this;
60
+ }
61
+ delete(item) {
62
+ const count = this._refcounts.get(item);
63
+ if (count === undefined) {
64
+ return false;
65
+ }
66
+ if (count > 1) {
67
+ this._refcounts.set(item, count - 1);
68
+ } else {
69
+ this._refcounts.delete(item);
70
+ super.delete(item);
71
+ this._handleDelete(item);
72
+ trigger(this, TriggerOpTypes.DELETE, undefined, item);
73
+ }
74
+ return true;
75
+ }
76
+ addSubset(subset, options = {}) {
77
+ if (this._subsets.has(subset)) {
78
+ return;
79
+ }
80
+ const {
81
+ onAdd,
82
+ onDelete
83
+ } = options;
84
+ this._subsets.add(subset);
85
+
86
+ /**
87
+ * Contains a map of the previous values and their mapped values
88
+ * that were added to the parent set.
89
+ */
90
+ const prevValues = new Map();
91
+ effect(() => {
92
+ for (const [prevSourceValue, prevTargetValue] of prevValues) {
93
+ if (!subset.has(prevSourceValue)) {
94
+ onDelete?.(prevSourceValue);
95
+ prevValues.delete(prevSourceValue);
96
+ this.delete(prevTargetValue);
97
+ }
98
+ }
99
+ for (const value of subset) {
100
+ if (!prevValues.has(value)) {
101
+ if (onAdd) {
102
+ const added = onAdd(value);
103
+ prevValues.set(value, added);
104
+ } else {
105
+ this.add(value);
106
+ prevValues.set(value, value);
107
+ }
108
+ }
109
+ }
110
+ });
111
+ }
112
+ createDerivedSet(mapper) {
113
+ const set = shallowReactive(new Set());
114
+ const refcounts = new Map();
115
+ function ref(value) {
116
+ if (refcounts.has(value)) {
117
+ const count = refcounts.get(value) + 1;
118
+ refcounts.set(value, count);
119
+ return count;
120
+ } else {
121
+ refcounts.set(value, 1);
122
+ set.add(value);
123
+ return 1;
124
+ }
125
+ }
126
+ function unref(value) {
127
+ const count = refcounts.get(value);
128
+ if (count > 1) {
129
+ refcounts.set(value, count - 1);
130
+ return count - 1;
131
+ } else {
132
+ refcounts.delete(value);
133
+ set.delete(value);
134
+ return 0;
135
+ }
136
+ }
137
+ this._indexes.push({
138
+ add: value => {
139
+ effect(prev => {
140
+ for (const id of [prev].flat()) {
141
+ unref(id);
142
+ }
143
+ const mappedValue = mapper(value);
144
+ for (const id of [mappedValue].flat()) {
145
+ ref(id);
146
+ }
147
+ return mappedValue;
148
+ });
149
+ },
150
+ delete: value => {
151
+ const mappedValue = mapper(value);
152
+ for (const id of [mappedValue].flat()) {
153
+ unref(id);
154
+ }
155
+ }
156
+ });
157
+ return shallowReadonly(set);
158
+ }
159
+ createIndex(mapper) {
160
+ const index = shallowReactive(new Map());
161
+ this._indexes.push({
162
+ add: value => {
163
+ effect(oldValue => {
164
+ for (const id of [oldValue].flat()) {
165
+ index.delete(id);
166
+ }
167
+ const mappedValue = mapper(value);
168
+ for (const id of [mappedValue].flat()) {
169
+ index.set(id, value);
170
+ }
171
+ return mappedValue;
172
+ });
173
+ },
174
+ delete: value => {
175
+ const mappedValue = mapper(value);
176
+ for (const id of [mappedValue].flat()) {
177
+ index.delete(id);
178
+ }
179
+ }
180
+ });
181
+ return shallowReadonly(index);
182
+ }
183
+ }
@@ -4,6 +4,42 @@ export type Refkey = {
4
4
  [RefkeySym]: true;
5
5
  };
6
6
  export declare function isRefkey(value: unknown): value is Refkey;
7
+ /**
8
+ * Create a refkey for the provided arguments. Passing no arguments returns a
9
+ * fresh refkey that is guaranteed to be unique. Otherwise, the arguments passed
10
+ * will be used to create a refkey for those values. Providing the same
11
+ * arguments will always return the same refkey.
12
+ *
13
+ * @remarks
14
+ *
15
+ * Values are compared using the SameValueZero algorithm, which considers
16
+ * objects the same if they are reference identical, and primitives the same if
17
+ * they are the same value, with the exception of `NaN`, which is always considered
18
+ * equal to other `NaN` values, and `-0`, which is considered identical to `+0`
19
+ */
7
20
  export declare function refkey(...args: unknown[]): Refkey;
21
+ /**
22
+ * Create a refkey for an instantiation of a symbol.
23
+ *
24
+ * @param base - The refkey of the symbol holding the instantiation.
25
+ * @param member - The refkey of the non-instantiated member symbol (either the
26
+ * instance or static member symbol)
27
+ *
28
+ * @remarks
29
+ *
30
+ * Refkeys for instantiated and copied members are a composite refkey of the
31
+ * owner's refkey and the member's refkey. So for example, given a refkey for an
32
+ * instantiation of a class `rk1`, and a refkey for the instance member of that
33
+ * class `rk2`, the refkey for the instantiated static member is
34
+ * `refkey(rk1, rk2)`. This function will return the same refkey given those
35
+ * same parameters.
36
+ *
37
+ * When a static member symbol `rk3` is owned by another static or instance
38
+ * member symbol (i.e. the outer symbol is itself a member container), the
39
+ * refkey of the instaniated static member is still just the composite of the
40
+ * instantiated variable refkey and the refkey of the inner member
41
+ * `refkey(rk1, rk3)`.
42
+ */
43
+ export declare function memberRefkey(base: Refkey, member: Refkey): Refkey;
8
44
  export {};
9
45
  //# sourceMappingURL=refkey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"refkey.d.ts","sourceRoot":"","sources":["../../src/refkey.ts"],"names":[],"mappings":"AAgBA,QAAA,MAAM,SAAS,EAAE,OAAO,MAAiB,CAAC;AAE1C,MAAM,MAAM,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAaxD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAMxD;AAaD,wBAAgB,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAWjD"}
1
+ {"version":3,"file":"refkey.d.ts","sourceRoot":"","sources":["../../src/refkey.ts"],"names":[],"mappings":"AAgBA,QAAA,MAAM,SAAS,EAAE,OAAO,MAAiB,CAAC;AAE1C,MAAM,MAAM,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAaxD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAMxD;AAcD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAWjD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjE"}
@@ -31,6 +31,20 @@ function getKey(value) {
31
31
  }
32
32
  }
33
33
  const knownRefkeys = new Map();
34
+
35
+ /**
36
+ * Create a refkey for the provided arguments. Passing no arguments returns a
37
+ * fresh refkey that is guaranteed to be unique. Otherwise, the arguments passed
38
+ * will be used to create a refkey for those values. Providing the same
39
+ * arguments will always return the same refkey.
40
+ *
41
+ * @remarks
42
+ *
43
+ * Values are compared using the SameValueZero algorithm, which considers
44
+ * objects the same if they are reference identical, and primitives the same if
45
+ * they are the same value, with the exception of `NaN`, which is always considered
46
+ * equal to other `NaN` values, and `-0`, which is considered identical to `+0`
47
+ */
34
48
  export function refkey(...args) {
35
49
  const keys = args.length === 0 ? [getKey({})] : args.map(v => getKey(v));
36
50
  const compositeKey = keys.map(v => v.key).join("\u2063");
@@ -40,4 +54,30 @@ export function refkey(...args) {
40
54
  const key = createRefkey(compositeKey);
41
55
  knownRefkeys.set(compositeKey, key);
42
56
  return key;
57
+ }
58
+
59
+ /**
60
+ * Create a refkey for an instantiation of a symbol.
61
+ *
62
+ * @param base - The refkey of the symbol holding the instantiation.
63
+ * @param member - The refkey of the non-instantiated member symbol (either the
64
+ * instance or static member symbol)
65
+ *
66
+ * @remarks
67
+ *
68
+ * Refkeys for instantiated and copied members are a composite refkey of the
69
+ * owner's refkey and the member's refkey. So for example, given a refkey for an
70
+ * instantiation of a class `rk1`, and a refkey for the instance member of that
71
+ * class `rk2`, the refkey for the instantiated static member is
72
+ * `refkey(rk1, rk2)`. This function will return the same refkey given those
73
+ * same parameters.
74
+ *
75
+ * When a static member symbol `rk3` is owned by another static or instance
76
+ * member symbol (i.e. the outer symbol is itself a member container), the
77
+ * refkey of the instaniated static member is still just the composite of the
78
+ * instantiated variable refkey and the refkey of the inner member
79
+ * `refkey(rk1, rk3)`.
80
+ */
81
+ export function memberRefkey(base, member) {
82
+ return refkey(base, member);
43
83
  }
@@ -2,7 +2,7 @@ import { ReactiveEffectRunner } from "@vue/reactivity";
2
2
  export interface QueueJob {
3
3
  (): any;
4
4
  }
5
- export declare function scheduler(jobGetter: () => ReactiveEffectRunner): () => void;
6
- export declare function queueJob(job: QueueJob): void;
5
+ export declare function scheduler(jobGetter: () => ReactiveEffectRunner, immediate?: boolean): () => void;
6
+ export declare function queueJob(job: QueueJob, immediate?: boolean): void;
7
7
  export declare function flushJobs(): void;
8
8
  //# sourceMappingURL=scheduler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,IAAI,GAAG,CAAC;CACT;AAGD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,oBAAoB,cAI9D;AACD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,QAIrC;AAED,wBAAgB,SAAS,SAKxB"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,IAAI,GAAG,CAAC;CACT;AAID,wBAAgB,SAAS,CACvB,SAAS,EAAE,MAAM,oBAAoB,EACrC,SAAS,UAAQ,cAKlB;AACD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,UAAQ,QASxD;AAED,wBAAgB,SAAS,SAKxB"}
@@ -1,17 +1,38 @@
1
+ const immediateQueue = new Set();
1
2
  const queue = new Set();
2
- export function scheduler(jobGetter) {
3
+ export function scheduler(jobGetter, immediate = false) {
3
4
  return () => {
4
- queueJob(jobGetter());
5
+ queueJob(jobGetter(), immediate);
5
6
  };
6
7
  }
7
- export function queueJob(job) {
8
+ export function queueJob(job, immediate = false) {
9
+ // if we have an immediate job, we don't need to queue the normal job.
8
10
  // the set is serving an important purpose here in deduping the effects we run
9
11
  // (which in effect coalesces multiple update effects together).
10
- queue.add(job);
12
+ if (immediate) {
13
+ immediateQueue.add(job);
14
+ } else {
15
+ queue.add(job);
16
+ }
11
17
  }
12
18
  export function flushJobs() {
13
- for (const job of queue) {
14
- queue.delete(job);
19
+ let job;
20
+ while ((job = takeJob()) !== null) {
15
21
  job();
16
22
  }
23
+ }
24
+ function takeJob() {
25
+ if (immediateQueue.size > 0) {
26
+ // return first item in immediateQueue
27
+ const job = immediateQueue.values().next().value;
28
+ immediateQueue.delete(job);
29
+ return job;
30
+ }
31
+ if (queue.size > 0) {
32
+ // return first item in queue
33
+ const job = queue.values().next().value;
34
+ queue.delete(job);
35
+ return job;
36
+ }
37
+ return null;
17
38
  }
@@ -1,6 +1,6 @@
1
1
  import { Ref } from "@vue/reactivity";
2
- import { OutputSymbol } from "./binder.js";
3
2
  import { Children, Component, ComponentDefinition } from "./jsx-runtime.js";
3
+ import { OutputSymbol } from "./symbols/output-symbol.js";
4
4
  export interface SlotInstance extends ComponentDefinition {
5
5
  }
6
6
  export interface SlotDefinition<TSlotProps> {
@@ -1 +1 @@
1
- {"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../src/slot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,mBAAmB,EAGpB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,YAAa,SAAQ,mBAAmB;CAAG;AAE5D,MAAM,WAAW,cAAc,CAAC,UAAU;IACxC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,CACJ,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,UAAU,EACjB,cAAc,CAAC,EAAE,QAAQ,GACxB,mBAAmB,CAAC;CACxB;AAED,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAInC,wBAAgB,UAAU,CACxB,UAAU,EACV,OAAO,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAC3D,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,EAC3B,MAAM,EAAE,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAsB7C;AAED,eAAO,MAAM,gBAAgB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAO,CAAC;AAEnD,wBAAgB,OAAO,CAAC,CAAC,EACvB,SAAS,EAAE,MAAM,OAAO,EACxB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,QAkB1B;AAED,wBAAgB,MAAM,CACpB,SAAS,EAAE,MAAM,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,EAC9C,OAAO,EAAE,MAAM,QAShB"}
1
+ {"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../src/slot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,mBAAmB,EAGpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,MAAM,WAAW,YAAa,SAAQ,mBAAmB;CAAG;AAE5D,MAAM,WAAW,cAAc,CAAC,UAAU;IACxC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,CACJ,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,UAAU,EACjB,cAAc,CAAC,EAAE,QAAQ,GACxB,mBAAmB,CAAC;CACxB;AAED,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAInC,wBAAgB,UAAU,CACxB,UAAU,EACV,OAAO,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAC3D,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,EAC3B,MAAM,EAAE,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAsB7C;AAED,eAAO,MAAM,gBAAgB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAO,CAAC;AAEnD,wBAAgB,OAAO,CAAC,CAAC,EACvB,SAAS,EAAE,MAAM,OAAO,EACxB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,QAkB1B;AAED,wBAAgB,MAAM,CACpB,SAAS,EAAE,MAAM,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,EAC9C,OAAO,EAAE,MAAM,QAShB"}
package/dist/src/stc.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Children, ComponentCreator, ComponentDefinition } from "@alloy-js/core/jsx-runtime";
1
+ import type { Children, ComponentCreator, ComponentDefinition } from "./jsx-runtime.js";
2
2
  export type MakeChildrenOptional<T extends object> = T extends {
3
3
  children?: any;
4
4
  } ? Omit<T, "children"> & Partial<Pick<T, "children">> : T;
@@ -1 +1 @@
1
- {"version":3,"file":"stc.d.ts","sourceRoot":"","sources":["../../src/stc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAC/C,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GAC1B,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAClD,CAAC,CAAC;AAEN,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,EAAE,IAAI,CACvC,GAAG,IAAI,EAAE,OAAO,SAAS,CAAC,GAAG,EAAE,GAC7B,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAClE,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAC/B,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE5B,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG;IACzD,IAAI,CACF,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,aAAa,EAAE,QAAQ,EAAE,GAC3B,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CACF,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,aAAa,EAAE,QAAQ,EAAE,GAC3B,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;CACxD,CAAC;AAEF,wBAAgB,GAAG,CAAC,CAAC,SAAS,EAAE,EAC9B,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAChC,YAAY,CAAC,CAAC,CAAC,CAyCjB"}
1
+ {"version":3,"file":"stc.d.ts","sourceRoot":"","sources":["../../src/stc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAC/C,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GAC1B,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAClD,CAAC,CAAC;AAEN,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,EAAE,IAAI,CACvC,GAAG,IAAI,EAAE,OAAO,SAAS,CAAC,GAAG,EAAE,GAC7B,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAClE,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAC/B,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE5B,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG;IACzD,IAAI,CACF,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,aAAa,EAAE,QAAQ,EAAE,GAC3B,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CACF,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,aAAa,EAAE,QAAQ,EAAE,GAC3B,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;CACxD,CAAC;AAEF,wBAAgB,GAAG,CAAC,CAAC,SAAS,EAAE,EAC9B,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAChC,YAAY,CAAC,CAAC,CAAC,CAyCjB"}
package/dist/src/sti.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Children, IntrinsicElementBase, JSX } from "@alloy-js/core/jsx-runtime";
1
+ import { type Children, type IntrinsicElementBase, type JSX } from "./jsx-runtime.js";
2
2
  export type StiSignature<T extends keyof JSX.IntrinsicElements> = (...args: unknown extends T ? [] : {} extends Omit<JSX.IntrinsicElements[T], "children"> ? [
3
3
  props?: JSX.IntrinsicElements[T]
4
4
  ] : [props: JSX.IntrinsicElements[T]]) => StiComponentCreator<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"sti.d.ts","sourceRoot":"","sources":["../../src/sti.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,oBAAoB,EACpB,GAAG,EACJ,MAAM,4BAA4B,CAAC;AAGpC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,IAAI,CAChE,GAAG,IAAI,EAAE,OAAO,SAAS,CAAC,GAAG,EAAE,GAC7B,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GACrD;IAAC,KAAK,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;CAAC,GAClC,CAAC,KAAK,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAChC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE5B,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,IACnE,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG;IAChC,IAAI,CACF,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,aAAa,EAAE,QAAQ,EAAE,GAC3B,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CACF,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,aAAa,EAAE,QAAQ,EAAE,GAC3B,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAClE,CAAC;AAEJ,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,EACvD,IAAI,EAAE,CAAC,GACN,YAAY,CAAC,CAAC,CAAC,CAgCjB"}
1
+ {"version":3,"file":"sti.d.ts","sourceRoot":"","sources":["../../src/sti.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,oBAAoB,EACzB,KAAK,GAAG,EACT,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,IAAI,CAChE,GAAG,IAAI,EAAE,OAAO,SAAS,CAAC,GAAG,EAAE,GAC7B,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GACrD;IAAC,KAAK,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;CAAC,GAClC,CAAC,KAAK,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAChC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE5B,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,IACnE,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG;IAChC,IAAI,CACF,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,aAAa,EAAE,QAAQ,EAAE,GAC3B,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CACF,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,aAAa,EAAE,QAAQ,EAAE,GAC3B,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAClE,CAAC;AAEJ,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,EACvD,IAAI,EAAE,CAAC,GACN,YAAY,CAAC,CAAC,CAAC,CAgCjB"}
package/dist/src/sti.js CHANGED
@@ -1,5 +1,5 @@
1
- import { createIntrinsic } from "@alloy-js/core/jsx-runtime";
2
1
  import { code, text } from "./code.js";
2
+ import { createIntrinsic } from "./jsx-runtime.js";
3
3
  export function sti(name) {
4
4
  return (...args) => {
5
5
  const props = args[0];
@@ -0,0 +1,6 @@
1
+ export * from "./output-scope.js";
2
+ export * from "./output-symbol.js";
3
+ export * from "./symbol-flow.js";
4
+ export * from "./symbol-slot.js";
5
+ export * from "./symbol-table.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/symbols/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./output-scope.js";
2
+ export * from "./output-symbol.js";
3
+ export * from "./symbol-flow.js";
4
+ export * from "./symbol-slot.js";
5
+ export * from "./symbol-table.js";
@@ -0,0 +1,116 @@
1
+ import { ReactiveFlags } from "@vue/reactivity";
2
+ import type { Binder } from "../binder.js";
3
+ import type { ReactiveUnionSetOptions } from "../reactive-union-set.js";
4
+ import type { Refkey } from "../refkey.js";
5
+ import { OutputSymbol } from "./output-symbol.js";
6
+ import { SymbolTable } from "./symbol-table.js";
7
+ /**
8
+ * Flags that describe an output scope.
9
+ */
10
+ export declare enum OutputScopeFlags {
11
+ None = 0,
12
+ /**
13
+ * This scope is a static member scope.
14
+ */
15
+ StaticMemberScope = 1,
16
+ /**
17
+ * This scope is an instance member scope.
18
+ */
19
+ InstanceMemberScope = 2,
20
+ /**
21
+ * This scope is transient, and only exists to be merged with other scopes.
22
+ */
23
+ Transient = 4,
24
+ /**
25
+ * This scope is a member scope. Scopes with this flag will have an `owner`
26
+ * property that points to the symbol whose member this scope holds.
27
+ */
28
+ MemberScope = 3
29
+ }
30
+ export interface OutputScopeOptions {
31
+ flags?: OutputScopeFlags;
32
+ kind?: string;
33
+ metadata?: Record<string, unknown>;
34
+ parent?: OutputScope;
35
+ owner?: OutputSymbol;
36
+ binder?: Binder;
37
+ }
38
+ /**
39
+ * A container of symbols accessible within some scope in your output code.
40
+ *
41
+ * @remarks
42
+ *
43
+ * Scopes form a tree. All scopes except the global scope have a parent scope
44
+ * identified by `parent`. Scopes can have nested scopes which can be accessed
45
+ * using the `children` property. Whether a child scope can be accessed from
46
+ * the parent scope is determined by each language's scoping rules.
47
+ *
48
+ * This interface is the base implementation of scope. Generally, most languages
49
+ * will have subtypes of this interface that provide additional metadata about
50
+ * the scope. For example, TypeScript scopes need to track whether the scope
51
+ * represents a package, module, class, function, etc.
52
+ *
53
+ * Scopes are reactive values, which allows you to observe changes to the scope
54
+ * within a reactive context.
55
+ */
56
+ export declare class OutputScope {
57
+ #private;
58
+ /**
59
+ * The name of the scope.
60
+ */
61
+ get name(): string;
62
+ set name(name: string);
63
+ /**
64
+ * The unique id of this scope.
65
+ */
66
+ get id(): number;
67
+ /**
68
+ * The kind of scope. Subtypes will likely provide a set of known scope kinds.
69
+ * The kind is not used by the binder itself.
70
+ */
71
+ get kind(): string;
72
+ /**
73
+ * The flags that describe this scope.
74
+ */
75
+ get flags(): OutputScopeFlags;
76
+ set flags(flags: OutputScopeFlags);
77
+ get metadata(): Record<string, unknown>;
78
+ /**
79
+ * The container of this scope. This is only defined for scopes which don't
80
+ * have the {@link OutputScopeFlags.StaticMemberScope} or
81
+ * {@link OutputScopeFlags.InstanceMemberScope} flag.
82
+ */
83
+ get parent(): OutputScope | undefined;
84
+ /**
85
+ * The symbol that owns this scope. This is only defined for scopes that have
86
+ * the {@link OutputScopeFlags.StaticMemberScope} or
87
+ * {@link OutputScopeFlags.InstanceMemberScope} flag.
88
+ */
89
+ get owner(): OutputSymbol | undefined;
90
+ /**
91
+ * The symbols defined within this scope.
92
+ */
93
+ get symbols(): SymbolTable;
94
+ /**
95
+ * The symbols defined within this scope, indexed by refkey.
96
+ */
97
+ get symbolsByRefkey(): ReadonlyMap<Refkey, OutputSymbol>;
98
+ get symbolNames(): ReadonlySet<string>;
99
+ /**
100
+ * The scopes nested within this scope.
101
+ */
102
+ get children(): Set<OutputScope>;
103
+ /**
104
+ * The binder that created this scope.
105
+ */
106
+ get binder(): Binder | undefined;
107
+ [ReactiveFlags.SKIP]: this;
108
+ constructor(name: string, options?: OutputScopeOptions);
109
+ moveSymbolsFrom(source: OutputScope, options?: ReactiveUnionSetOptions<OutputSymbol>): void;
110
+ copySymbolsFrom(source: OutputScope, options?: ReactiveUnionSetOptions<OutputSymbol>): void;
111
+ clone(options?: {
112
+ parent?: OutputScope;
113
+ owner?: OutputSymbol;
114
+ }): OutputScope;
115
+ }
116
+ //# sourceMappingURL=output-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-scope.d.ts","sourceRoot":"","sources":["../../../src/symbols/output-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAOd,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAQ3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,IAAI,IAAI;IAER;;OAEG;IACH,iBAAiB,IAAS;IAE1B;;OAEG;IACH,mBAAmB,IAAS;IAE5B;;OAEG;IACH,SAAS,IAAS;IAElB;;;OAGG;IACH,WAAW,IAA0C;CACtD;AAID,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,WAAW;;IAGtB;;OAEG;IACH,IAAI,IAAI,IAIO,MAAM,CADpB;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAIpB;IAGD;;OAEG;IACH,IAAI,EAAE,WAEL;IAID;;;OAGG;IACH,IAAI,IAAI,WAEP;IAGD;;OAEG;IACH,IAAI,KAAK,IAIQ,gBAAgB,CADhC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAIhC;IAID,IAAI,QAAQ,4BAEX;IAGD;;;;OAIG;IACH,IAAI,MAAM,4BAET;IAGD;;;;OAIG;IACH,IAAI,KAAK,6BAER;IAGD;;OAEG;IACH,IAAI,OAAO,gBAEV;IAGD;;OAEG;IACH,IAAI,eAAe,sCAElB;IAGD,IAAI,WAAW,wBAEd;IAGD;;OAEG;IACH,IAAI,QAAQ,qBAEX;IAGD;;OAEG;IACH,IAAI,MAAM,uBAET;IAED,CAAC,aAAa,CAAC,IAAI,CAAC,OAAQ;gBAEhB,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;IA6C1D,eAAe,CACb,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC;IAuBjD,eAAe,CACb,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,uBAAuB,CAAC,YAAY,CAAC;IAsBjD,KAAK,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,KAAK,CAAC,EAAE,YAAY,CAAA;KAAO;CAiCnE"}