@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.
Files changed (334) hide show
  1. package/dist/src/binder.d.ts +74 -38
  2. package/dist/src/binder.d.ts.map +1 -1
  3. package/dist/src/binder.js +235 -173
  4. package/dist/src/binder.js.map +1 -0
  5. package/dist/src/code.js +2 -1
  6. package/dist/src/code.js.map +1 -0
  7. package/dist/src/components/AppendFile.js +2 -1
  8. package/dist/src/components/AppendFile.js.map +1 -0
  9. package/dist/src/components/Block.js +2 -1
  10. package/dist/src/components/Block.js.map +1 -0
  11. package/dist/src/components/CopyFile.js +2 -1
  12. package/dist/src/components/CopyFile.js.map +1 -0
  13. package/dist/src/components/Declaration.d.ts +2 -2
  14. package/dist/src/components/Declaration.d.ts.map +1 -1
  15. package/dist/src/components/Declaration.js +10 -3
  16. package/dist/src/components/Declaration.js.map +1 -0
  17. package/dist/src/components/For.js +2 -1
  18. package/dist/src/components/For.js.map +1 -0
  19. package/dist/src/components/Indent.js +2 -1
  20. package/dist/src/components/Indent.js.map +1 -0
  21. package/dist/src/components/List.js +2 -1
  22. package/dist/src/components/List.js.map +1 -0
  23. package/dist/src/components/MemberDeclaration.d.ts +2 -2
  24. package/dist/src/components/MemberDeclaration.d.ts.map +1 -1
  25. package/dist/src/components/MemberDeclaration.js +11 -6
  26. package/dist/src/components/MemberDeclaration.js.map +1 -0
  27. package/dist/src/components/MemberName.js +2 -1
  28. package/dist/src/components/MemberName.js.map +1 -0
  29. package/dist/src/components/MemberScope.d.ts +30 -13
  30. package/dist/src/components/MemberScope.d.ts.map +1 -1
  31. package/dist/src/components/MemberScope.js +39 -16
  32. package/dist/src/components/MemberScope.js.map +1 -0
  33. package/dist/src/components/Name.js +2 -1
  34. package/dist/src/components/Name.js.map +1 -0
  35. package/dist/src/components/Output.d.ts.map +1 -1
  36. package/dist/src/components/Output.js +4 -6
  37. package/dist/src/components/Output.js.map +1 -0
  38. package/dist/src/components/Prose.js +2 -1
  39. package/dist/src/components/Prose.js.map +1 -0
  40. package/dist/src/components/ReferenceOrContent.d.ts +1 -1
  41. package/dist/src/components/ReferenceOrContent.d.ts.map +1 -1
  42. package/dist/src/components/ReferenceOrContent.js +2 -1
  43. package/dist/src/components/ReferenceOrContent.js.map +1 -0
  44. package/dist/src/components/Scope.d.ts +5 -5
  45. package/dist/src/components/Scope.d.ts.map +1 -1
  46. package/dist/src/components/Scope.js +11 -6
  47. package/dist/src/components/Scope.js.map +1 -0
  48. package/dist/src/components/Show.js +2 -1
  49. package/dist/src/components/Show.js.map +1 -0
  50. package/dist/src/components/SourceDirectory.js +2 -1
  51. package/dist/src/components/SourceDirectory.js.map +1 -0
  52. package/dist/src/components/SourceFile.js +2 -1
  53. package/dist/src/components/SourceFile.js.map +1 -0
  54. package/dist/src/components/StatementList.js +2 -1
  55. package/dist/src/components/StatementList.js.map +1 -0
  56. package/dist/src/components/Switch.js +2 -1
  57. package/dist/src/components/Switch.js.map +1 -0
  58. package/dist/src/components/TemplateFile.js +2 -1
  59. package/dist/src/components/TemplateFile.js.map +1 -0
  60. package/dist/src/components/UpdateFile.js +2 -1
  61. package/dist/src/components/UpdateFile.js.map +1 -0
  62. package/dist/src/components/Wrap.js +2 -1
  63. package/dist/src/components/Wrap.js.map +1 -0
  64. package/dist/src/components/index.js +2 -1
  65. package/dist/src/components/index.js.map +1 -0
  66. package/dist/src/components/stc/index.js +2 -1
  67. package/dist/src/components/stc/index.js.map +1 -0
  68. package/dist/src/components/stc/sti.js +2 -1
  69. package/dist/src/components/stc/sti.js.map +1 -0
  70. package/dist/src/context/assignment.js +2 -1
  71. package/dist/src/context/assignment.js.map +1 -0
  72. package/dist/src/context/binder.js +2 -1
  73. package/dist/src/context/binder.js.map +1 -0
  74. package/dist/src/context/declaration.js +2 -1
  75. package/dist/src/context/declaration.js.map +1 -0
  76. package/dist/src/context/index.js +2 -1
  77. package/dist/src/context/index.js.map +1 -0
  78. package/dist/src/context/member-declaration.js +2 -1
  79. package/dist/src/context/member-declaration.js.map +1 -0
  80. package/dist/src/context/member-scope.d.ts +7 -8
  81. package/dist/src/context/member-scope.d.ts.map +1 -1
  82. package/dist/src/context/member-scope.js +7 -6
  83. package/dist/src/context/member-scope.js.map +1 -0
  84. package/dist/src/context/name-policy.d.ts.map +1 -1
  85. package/dist/src/context/name-policy.js +5 -1
  86. package/dist/src/context/name-policy.js.map +1 -0
  87. package/dist/src/context/scope.d.ts +1 -0
  88. package/dist/src/context/scope.d.ts.map +1 -1
  89. package/dist/src/context/scope.js +9 -1
  90. package/dist/src/context/scope.js.map +1 -0
  91. package/dist/src/context/source-directory.js +2 -1
  92. package/dist/src/context/source-directory.js.map +1 -0
  93. package/dist/src/context/source-file.js +2 -1
  94. package/dist/src/context/source-file.js.map +1 -0
  95. package/dist/src/context.js +2 -1
  96. package/dist/src/context.js.map +1 -0
  97. package/dist/src/debug.js +2 -1
  98. package/dist/src/debug.js.map +1 -0
  99. package/dist/src/host/alloy-host.browser.js +2 -1
  100. package/dist/src/host/alloy-host.browser.js.map +1 -0
  101. package/dist/src/host/alloy-host.js +2 -1
  102. package/dist/src/host/alloy-host.js.map +1 -0
  103. package/dist/src/host/interface.js +2 -1
  104. package/dist/src/host/interface.js.map +1 -0
  105. package/dist/src/index.browser.js +2 -1
  106. package/dist/src/index.browser.js.map +1 -0
  107. package/dist/src/index.js +2 -1
  108. package/dist/src/index.js.map +1 -0
  109. package/dist/src/inspect.browser.d.ts +5 -0
  110. package/dist/src/inspect.browser.d.ts.map +1 -0
  111. package/dist/src/inspect.browser.js +6 -0
  112. package/dist/src/inspect.browser.js.map +1 -0
  113. package/dist/src/inspect.d.ts +2 -0
  114. package/dist/src/inspect.d.ts.map +1 -0
  115. package/dist/src/inspect.js +2 -0
  116. package/dist/src/inspect.js.map +1 -0
  117. package/dist/src/jsx-runtime.js +2 -1
  118. package/dist/src/jsx-runtime.js.map +1 -0
  119. package/dist/src/name-policy.d.ts +11 -0
  120. package/dist/src/name-policy.d.ts.map +1 -1
  121. package/dist/src/name-policy.js +5 -1
  122. package/dist/src/name-policy.js.map +1 -0
  123. package/dist/src/props-combinators.js +2 -1
  124. package/dist/src/props-combinators.js.map +1 -0
  125. package/dist/src/reactive-union-set.d.ts.map +1 -1
  126. package/dist/src/reactive-union-set.js +14 -9
  127. package/dist/src/reactive-union-set.js.map +1 -0
  128. package/dist/src/reactivity.js +2 -1
  129. package/dist/src/reactivity.js.map +1 -0
  130. package/dist/src/refkey.d.ts +39 -3
  131. package/dist/src/refkey.d.ts.map +1 -1
  132. package/dist/src/refkey.js +65 -10
  133. package/dist/src/refkey.js.map +1 -0
  134. package/dist/src/render.js +2 -1
  135. package/dist/src/render.js.map +1 -0
  136. package/dist/src/resource.js +2 -1
  137. package/dist/src/resource.js.map +1 -0
  138. package/dist/src/runtime/component.js +2 -1
  139. package/dist/src/runtime/component.js.map +1 -0
  140. package/dist/src/runtime/intrinsic.js +2 -1
  141. package/dist/src/runtime/intrinsic.js.map +1 -0
  142. package/dist/src/scheduler.js +2 -1
  143. package/dist/src/scheduler.js.map +1 -0
  144. package/dist/src/stc.js +2 -1
  145. package/dist/src/stc.js.map +1 -0
  146. package/dist/src/sti.js +2 -1
  147. package/dist/src/sti.js.map +1 -0
  148. package/dist/src/symbols/basic-scope.d.ts +14 -0
  149. package/dist/src/symbols/basic-scope.d.ts.map +1 -0
  150. package/dist/src/symbols/basic-scope.js +21 -0
  151. package/dist/src/symbols/basic-scope.js.map +1 -0
  152. package/dist/src/symbols/basic-symbol.d.ts +19 -0
  153. package/dist/src/symbols/basic-symbol.d.ts.map +1 -0
  154. package/dist/src/symbols/basic-symbol.js +29 -0
  155. package/dist/src/symbols/basic-symbol.js.map +1 -0
  156. package/dist/src/symbols/index.d.ts +3 -1
  157. package/dist/src/symbols/index.d.ts.map +1 -1
  158. package/dist/src/symbols/index.js +5 -2
  159. package/dist/src/symbols/index.js.map +1 -0
  160. package/dist/src/symbols/output-scope.d.ts +70 -41
  161. package/dist/src/symbols/output-scope.d.ts.map +1 -1
  162. package/dist/src/symbols/output-scope.js +100 -131
  163. package/dist/src/symbols/output-scope.js.map +1 -0
  164. package/dist/src/symbols/output-space.d.ts +25 -0
  165. package/dist/src/symbols/output-space.d.ts.map +1 -0
  166. package/dist/src/symbols/output-space.js +36 -0
  167. package/dist/src/symbols/output-space.js.map +1 -0
  168. package/dist/src/symbols/output-symbol.d.ts +213 -37
  169. package/dist/src/symbols/output-symbol.d.ts.map +1 -1
  170. package/dist/src/symbols/output-symbol.js +325 -204
  171. package/dist/src/symbols/output-symbol.js.map +1 -0
  172. package/dist/src/symbols/symbol-flow.d.ts +1 -1
  173. package/dist/src/symbols/symbol-flow.d.ts.map +1 -1
  174. package/dist/src/symbols/symbol-flow.js +24 -8
  175. package/dist/src/symbols/symbol-flow.js.map +1 -0
  176. package/dist/src/symbols/symbol-slot.d.ts +27 -9
  177. package/dist/src/symbols/symbol-slot.d.ts.map +1 -1
  178. package/dist/src/symbols/symbol-slot.js +22 -5
  179. package/dist/src/symbols/symbol-slot.js.map +1 -0
  180. package/dist/src/symbols/symbol-table.d.ts +19 -8
  181. package/dist/src/symbols/symbol-table.d.ts.map +1 -1
  182. package/dist/src/symbols/symbol-table.js +67 -17
  183. package/dist/src/symbols/symbol-table.js.map +1 -0
  184. package/dist/src/tap.js +2 -1
  185. package/dist/src/tap.js.map +1 -0
  186. package/dist/src/tracer.d.ts +15 -3
  187. package/dist/src/tracer.d.ts.map +1 -1
  188. package/dist/src/tracer.js +41 -64
  189. package/dist/src/tracer.js.map +1 -0
  190. package/dist/src/utils.js +2 -1
  191. package/dist/src/utils.js.map +1 -0
  192. package/dist/src/write-output.js +2 -1
  193. package/dist/src/write-output.js.map +1 -0
  194. package/dist/test/browser-build.test.js +2 -1
  195. package/dist/test/browser-build.test.js.map +1 -0
  196. package/dist/test/children.test.js +2 -1
  197. package/dist/test/children.test.js.map +1 -0
  198. package/dist/test/components/append-file.test.js +2 -1
  199. package/dist/test/components/append-file.test.js.map +1 -0
  200. package/dist/test/components/block.test.js +2 -1
  201. package/dist/test/components/block.test.js.map +1 -0
  202. package/dist/test/components/copy-file.test.js +2 -1
  203. package/dist/test/components/copy-file.test.js.map +1 -0
  204. package/dist/test/components/declaration.test.js +11 -15
  205. package/dist/test/components/declaration.test.js.map +1 -0
  206. package/dist/test/components/list.test.js +2 -1
  207. package/dist/test/components/list.test.js.map +1 -0
  208. package/dist/test/components/prose.test.js +2 -1
  209. package/dist/test/components/prose.test.js.map +1 -0
  210. package/dist/test/components/reference-or-content.test.js +4 -3
  211. package/dist/test/components/reference-or-content.test.js.map +1 -0
  212. package/dist/test/components/source-file.test.js +2 -1
  213. package/dist/test/components/source-file.test.js.map +1 -0
  214. package/dist/test/components/template-file.test.js +2 -1
  215. package/dist/test/components/template-file.test.js.map +1 -0
  216. package/dist/test/components/update-file.test.js +2 -1
  217. package/dist/test/components/update-file.test.js.map +1 -0
  218. package/dist/test/components/wrap.test.js +2 -1
  219. package/dist/test/components/wrap.test.js.map +1 -0
  220. package/dist/test/control-flow/for.test.js +2 -1
  221. package/dist/test/control-flow/for.test.js.map +1 -0
  222. package/dist/test/control-flow/match.test.js +2 -1
  223. package/dist/test/control-flow/match.test.js.map +1 -0
  224. package/dist/test/control-flow/show.test.js +2 -1
  225. package/dist/test/control-flow/show.test.js.map +1 -0
  226. package/dist/test/name-policy.test.js +2 -1
  227. package/dist/test/name-policy.test.js.map +1 -0
  228. package/dist/test/props-with-defaults.test.js +2 -1
  229. package/dist/test/props-with-defaults.test.js.map +1 -0
  230. package/dist/test/reactive-union-set.test.js +2 -1
  231. package/dist/test/reactive-union-set.test.js.map +1 -0
  232. package/dist/test/reactivity/circular-reactives.test.js +2 -1
  233. package/dist/test/reactivity/circular-reactives.test.js.map +1 -0
  234. package/dist/test/reactivity/cleanup.test.js +2 -1
  235. package/dist/test/reactivity/cleanup.test.js.map +1 -0
  236. package/dist/test/reactivity/memo.test.js +2 -1
  237. package/dist/test/reactivity/memo.test.js.map +1 -0
  238. package/dist/test/reactivity/ref-rendering.test.js +2 -1
  239. package/dist/test/reactivity/ref-rendering.test.js.map +1 -0
  240. package/dist/test/reactivity/test.test.js +2 -1
  241. package/dist/test/reactivity/test.test.js.map +1 -0
  242. package/dist/test/reactivity/untrack.test.js +2 -1
  243. package/dist/test/reactivity/untrack.test.js.map +1 -0
  244. package/dist/test/refkey.test.js +2 -1
  245. package/dist/test/refkey.test.js.map +1 -0
  246. package/dist/test/rendering/basic.test.js +2 -1
  247. package/dist/test/rendering/basic.test.js.map +1 -0
  248. package/dist/test/rendering/code.test.js +2 -1
  249. package/dist/test/rendering/code.test.js.map +1 -0
  250. package/dist/test/rendering/formatting.test.js +2 -1
  251. package/dist/test/rendering/formatting.test.js.map +1 -0
  252. package/dist/test/rendering/indent.test.js +2 -1
  253. package/dist/test/rendering/indent.test.js.map +1 -0
  254. package/dist/test/rendering/memoization.test.js +2 -1
  255. package/dist/test/rendering/memoization.test.js.map +1 -0
  256. package/dist/test/rendering/refkeys.test.js +2 -1
  257. package/dist/test/rendering/refkeys.test.js.map +1 -0
  258. package/dist/test/split-props.test.js +2 -1
  259. package/dist/test/split-props.test.js.map +1 -0
  260. package/dist/test/stc.test.js +2 -1
  261. package/dist/test/stc.test.js.map +1 -0
  262. package/dist/test/symbols/output-scope.test.js +34 -198
  263. package/dist/test/symbols/output-scope.test.js.map +1 -0
  264. package/dist/test/symbols/output-symbol.test.js +141 -386
  265. package/dist/test/symbols/output-symbol.test.js.map +1 -0
  266. package/dist/test/symbols/resolution.test.js +433 -115
  267. package/dist/test/symbols/resolution.test.js.map +1 -0
  268. package/dist/test/symbols/symbol-table.test.d.ts +2 -0
  269. package/dist/test/symbols/symbol-table.test.d.ts.map +1 -0
  270. package/dist/test/symbols/symbol-table.test.js +15 -0
  271. package/dist/test/symbols/symbol-table.test.js.map +1 -0
  272. package/dist/test/symbols/utils.d.ts +10 -24
  273. package/dist/test/symbols/utils.d.ts.map +1 -1
  274. package/dist/test/symbols/utils.js +25 -46
  275. package/dist/test/symbols/utils.js.map +1 -0
  276. package/dist/test/utils.test.js +2 -1
  277. package/dist/test/utils.test.js.map +1 -0
  278. package/dist/testing/extend-expect.js +2 -1
  279. package/dist/testing/extend-expect.js.map +1 -0
  280. package/dist/testing/extend-expect.test.js +2 -1
  281. package/dist/testing/extend-expect.test.js.map +1 -0
  282. package/dist/testing/index.js +2 -1
  283. package/dist/testing/index.js.map +1 -0
  284. package/dist/testing/render.js +2 -1
  285. package/dist/testing/render.js.map +1 -0
  286. package/dist/testing/vitest.d.js +2 -1
  287. package/dist/testing/vitest.d.js.map +1 -0
  288. package/dist/tsconfig.tsbuildinfo +1 -1
  289. package/package.json +5 -3
  290. package/src/binder.ts +368 -273
  291. package/src/components/Declaration.tsx +13 -3
  292. package/src/components/MemberDeclaration.tsx +15 -8
  293. package/src/components/MemberScope.tsx +61 -20
  294. package/src/components/Output.tsx +0 -4
  295. package/src/components/Scope.tsx +16 -9
  296. package/src/context/member-scope.ts +10 -10
  297. package/src/context/name-policy.ts +3 -0
  298. package/src/context/scope.ts +9 -0
  299. package/src/inspect.browser.ts +6 -0
  300. package/src/inspect.ts +1 -0
  301. package/src/name-policy.ts +14 -0
  302. package/src/reactive-union-set.ts +14 -8
  303. package/src/refkey.ts +106 -14
  304. package/src/symbols/basic-scope.ts +23 -0
  305. package/src/symbols/basic-symbol.ts +32 -0
  306. package/src/symbols/index.ts +3 -1
  307. package/src/symbols/output-scope.ts +131 -170
  308. package/src/symbols/output-space.ts +49 -0
  309. package/src/symbols/output-symbol.ts +434 -258
  310. package/src/symbols/symbol-flow.ts +38 -9
  311. package/src/symbols/symbol-slot.tsx +46 -8
  312. package/src/symbols/symbol-table.ts +95 -21
  313. package/src/tracer.ts +53 -83
  314. package/temp/api.json +7009 -4461
  315. package/test/components/declaration.test.tsx +6 -19
  316. package/test/components/reference-or-content.test.tsx +2 -2
  317. package/test/symbols/output-scope.test.ts +33 -125
  318. package/test/symbols/output-symbol.test.ts +128 -348
  319. package/test/symbols/resolution.test.ts +530 -117
  320. package/test/symbols/symbol-table.test.ts +15 -0
  321. package/test/symbols/utils.ts +38 -74
  322. package/tsdoc.json +4 -0
  323. package/dist/src/slot.d.ts +0 -15
  324. package/dist/src/slot.d.ts.map +0 -1
  325. package/dist/src/slot.js +0 -50
  326. package/dist/src/symbols/flags.d.ts +0 -70
  327. package/dist/src/symbols/flags.d.ts.map +0 -1
  328. package/dist/src/symbols/flags.js +0 -72
  329. package/dist/test/components/slot.test.d.ts +0 -2
  330. package/dist/test/components/slot.test.d.ts.map +0 -1
  331. package/dist/test/components/slot.test.js +0 -134
  332. package/src/slot.ts +0 -89
  333. package/src/symbols/flags.ts +0 -82
  334. package/test/components/slot.test.tsx +0 -174
@@ -1,11 +1,9 @@
1
- import { reactive, ReactiveFlags, shallowReactive, track, TrackOpTypes, trigger, TriggerOpTypes, watch } from "@vue/reactivity";
1
+ import { isRef, reactive, ReactiveFlags, shallowReactive, track, TrackOpTypes, trigger, TriggerOpTypes, watch } from "@vue/reactivity";
2
2
  import { useBinder } from "../context/binder.js";
3
- import { useMemberScope } from "../context/member-scope.js";
4
- import { useScope } from "../context/scope.js";
5
- import { isRefkey, refkey } from "../refkey.js";
6
- import { formatScopeName, formatSymbol, formatSymbolName, trace, traceEffect, TracePhase } from "../tracer.js";
7
- import { OutputScopeFlags, OutputSymbolFlags } from "./flags.js";
8
- import { OutputScope } from "./output-scope.js";
3
+ import { inspect } from "../inspect.js";
4
+ import { untrack } from "../reactivity.js";
5
+ import { formatSymbol, formatSymbolName, trace, traceEffect, TracePhase } from "../tracer.js";
6
+ import { OutputMemberSpace } from "./output-space.js";
9
7
  let symbolCount = 0;
10
8
 
11
9
  /**
@@ -19,11 +17,25 @@ let symbolCount = 0;
19
17
  * you can observe changes to their properties in a reactive context.
20
18
  */
21
19
  export class OutputSymbol {
20
+ static memberSpaces = [];
22
21
  #originalName;
22
+ /**
23
+ * Read only. The requested name of this symbol. The symbol's actual name may
24
+ * be different depending on naming policy or conflicts with other symbols.
25
+ *
26
+ * @readonly
27
+ */
23
28
  get originalName() {
24
29
  return this.#originalName;
25
30
  }
31
+
32
+ // this field is set by calling the name accessor.
26
33
  #name;
34
+ /**
35
+ * The name of this symbol.
36
+ *
37
+ * @reactive
38
+ */
27
39
  get name() {
28
40
  track(this, TrackOpTypes.GET, "name");
29
41
  return this.#name;
@@ -33,63 +45,117 @@ export class OutputSymbol {
33
45
  if (old === name) {
34
46
  return;
35
47
  }
36
- this.#name = name;
48
+ this.#name = this.#namePolicy && !this.#ignoreNamePolicy ? this.#namePolicy(name) : name;
37
49
  trigger(this, TriggerOpTypes.SET, "name", name, old);
38
50
  }
39
51
  #id;
52
+ /**
53
+ * The unique id of this symbol.
54
+ *
55
+ * @readonly
56
+ */
40
57
  get id() {
41
58
  return this.#id;
42
59
  }
43
- #flags;
44
- get flags() {
45
- track(this, TrackOpTypes.GET, "flags");
46
- return this.#flags;
60
+ #ignoreNamePolicy = false;
61
+ /**
62
+ * Whether the name of this symbol bypasses the active name policy. When true,
63
+ * the name of this symbol will be fixed, though it may conflict with other
64
+ * symbols which are also ignoring the name policy.
65
+ *
66
+ * @readonly
67
+ */
68
+ get ignoreNamePolicy() {
69
+ return this.#ignoreNamePolicy;
47
70
  }
48
- set flags(flags) {
49
- const old = this.#flags;
50
- if (old === flags) {
51
- return;
52
- }
53
- this.#flags = flags;
54
- trigger(this, TriggerOpTypes.SET, "flags", flags, old);
55
- this.#createInstanceMemberScope();
56
- this.#createStaticMemberScope();
71
+ #ignoreNameConflict = false;
72
+
73
+ /**
74
+ * Whether the name of this symbol bypasses the active name conflict
75
+ * resolution. When true, the name of this symbol will be fixed, though it may
76
+ * conflict with other symbols which are also ignoring name conflict
77
+ * resolution.
78
+ */
79
+ get ignoreNameConflict() {
80
+ return this.#ignoreNameConflict;
57
81
  }
58
- #scope;
82
+ #memberSpaces = shallowReactive({});
83
+ /**
84
+ * The member spaces of this symbol.
85
+ *
86
+ * @readonly
87
+ */
88
+ get memberSpaces() {
89
+ return Object.values(this.#memberSpaces);
90
+ }
91
+
92
+ /**
93
+ * Get the member space for the given key.
94
+ */
95
+ memberSpaceFor(spaceKey) {
96
+ return this.#memberSpaces[spaceKey];
97
+ }
98
+
99
+ /**
100
+ * The scope this symbol is in. When this symbol is a member symbol, this will
101
+ * return undefined.
102
+ *
103
+ * @readonly
104
+ */
59
105
  get scope() {
60
- track(this, TrackOpTypes.GET, "scope");
61
- return this.#scope;
106
+ if (this.isMemberSymbol) {
107
+ return undefined;
108
+ }
109
+ if (this.spaces.length === 0) {
110
+ return undefined;
111
+ }
112
+ return this.spaces[0].scope;
62
113
  }
63
- set scope(scope) {
64
- const old = this.#scope;
65
- if (old === scope) {
114
+ #spaces;
115
+ /**
116
+ * The declaration or member spaces this symbol belongs to.
117
+ *
118
+ * @reactive
119
+ */
120
+ get spaces() {
121
+ track(this, TrackOpTypes.GET, "spaces");
122
+ return this.#spaces;
123
+ }
124
+ set spaces(spaces) {
125
+ const old = this.#spaces;
126
+ if (old === spaces) {
66
127
  return;
67
128
  }
68
- this.#handleNewScope(scope, old);
69
- this.#scope = scope;
70
- trigger(this, TriggerOpTypes.SET, "scope", scope, old);
129
+ const spacesArray = spaces === undefined ? [] : Array.isArray(spaces) ? spaces : [spaces];
130
+ this.#handleNewSpaces(spacesArray, old);
131
+ this.#spaces = spacesArray;
132
+ trigger(this, TriggerOpTypes.SET, "spaces", spaces, old);
71
133
  }
72
- #handleNewScope(newScope, oldScope) {
73
- if (oldScope) {
134
+ #handleNewSpaces(newSpaces, oldSpaces) {
135
+ if (oldSpaces) {
74
136
  // ensure when changing scope that this symbol only belongs to one of them
75
- oldScope.symbols.delete(this);
137
+ oldSpaces.forEach(oldSpace => oldSpace.delete(this));
76
138
  }
77
- if (!newScope) {
78
- return;
79
- }
80
- newScope.symbols.add(this);
81
- if (newScope.flags & OutputScopeFlags.InstanceMemberScope) {
82
- this.flags |= OutputSymbolFlags.InstanceMember;
83
- }
84
- if (newScope.flags & OutputScopeFlags.StaticMemberScope) {
85
- this.flags |= OutputSymbolFlags.StaticMember;
139
+ if (newSpaces) {
140
+ newSpaces.forEach(newSpace => newSpace.add(this));
86
141
  }
87
142
  }
88
143
  #binder;
144
+ /**
145
+ * The binder that is tracking this symbol.
146
+ *
147
+ * @readonly
148
+ */
89
149
  get binder() {
90
150
  return this.#binder;
91
151
  }
92
152
  #refkeys;
153
+
154
+ /**
155
+ * The refkeys for this symbol.
156
+ *
157
+ * @reactive
158
+ */
93
159
  get refkeys() {
94
160
  track(this, TrackOpTypes.GET, "refkeys");
95
161
  return this.#refkeys;
@@ -102,169 +168,250 @@ export class OutputSymbol {
102
168
  this.#refkeys = shallowReactive(Array.isArray(refkeys) ? refkeys : [refkeys]);
103
169
  trigger(this, TriggerOpTypes.SET, "refkeys", this.#refkeys, old);
104
170
  }
105
- #instanceMemberScope;
106
- get instanceMemberScope() {
107
- track(this, TrackOpTypes.GET, "instanceMemberScope");
108
- return this.#instanceMemberScope;
109
- }
110
171
  #aliasTarget;
172
+ /**
173
+ * The symbol that this symbol is an alias for.
174
+ *
175
+ * @readonly
176
+ */
111
177
  get aliasTarget() {
112
178
  return this.#aliasTarget;
113
179
  }
114
- #createInstanceMemberScope() {
115
- if (this.#instanceMemberScope || !(this.#flags & OutputSymbolFlags.InstanceMemberContainer)) {
116
- return;
180
+
181
+ /**
182
+ * If this symbol is an alias for another symbol, return the the aliased symbol. Otherwise, return this symbol.
183
+ */
184
+ dealias() {
185
+ if (this.#aliasTarget) {
186
+ return this.#aliasTarget.dealias();
117
187
  }
118
- this.#instanceMemberScope = new OutputScope(`${this.name} instance members`, {
119
- binder: this.#binder,
120
- owner: this,
121
- flags: OutputScopeFlags.InstanceMemberScope
122
- });
123
- trigger(this, TriggerOpTypes.SET, "instanceMemberScope", this.#instanceMemberScope, undefined);
188
+ return this;
124
189
  }
125
190
 
126
191
  /**
127
- * Create an output scope to hold member symbols. By default this just creates
128
- * an OutputScope, but can be subclassed to build scope subtypes when needed.
192
+ * Whether this symbol is an alias for another symbol.
193
+ *
194
+ * @readonly
129
195
  */
130
- createMemberScope(name, options) {
131
- return new OutputScope(name, {
132
- binder: this.#binder,
133
- owner: options.owner,
134
- flags: options.flags
135
- });
136
- }
137
- #staticMemberScope;
138
- get staticMemberScope() {
139
- track(this, TrackOpTypes.GET, "staticMemberScope");
140
- return this.#staticMemberScope;
141
- }
142
- #createStaticMemberScope() {
143
- if (this.#staticMemberScope || !(this.#flags & OutputSymbolFlags.StaticMemberContainer)) {
144
- return;
145
- }
146
- this.#staticMemberScope = new OutputScope(`${this.name} static members`, {
147
- binder: this.#binder,
148
- owner: this,
149
- flags: OutputScopeFlags.StaticMemberScope
150
- });
151
- trigger(this, TriggerOpTypes.SET, "staticMemberScope", this.#staticMemberScope, undefined);
196
+ get isAlias() {
197
+ return !!this.#aliasTarget;
152
198
  }
153
199
  #metadata;
200
+ /**
201
+ * An arbitrary bag of metadata for this symbol. This property is read only,
202
+ * but the metadata is a reactive object.
203
+ *
204
+ * @readonly
205
+ */
154
206
  get metadata() {
155
207
  return this.#metadata;
156
208
  }
209
+ copyToSpace(space) {
210
+ const copy = this.copy();
211
+ copy.spaces = space;
212
+ return copy;
213
+ }
214
+
215
+ /**
216
+ * Whether this symbol is a member of another symbol.
217
+ *
218
+ * @readonly
219
+ */
220
+ get isMemberSymbol() {
221
+ return this.spaces[0] instanceof OutputMemberSpace;
222
+ }
223
+
224
+ /**
225
+ * When this is a member symbol, this returns the symbol that this is symbol
226
+ * is a member of.
227
+ */
228
+ get ownerSymbol() {
229
+ if (!this.isMemberSymbol) {
230
+ return undefined;
231
+ }
232
+ return this.spaces[0].symbol;
233
+ }
234
+ #isTransient;
157
235
 
158
236
  /**
159
- * Tell \@vue/reactivity that this symbol should never be wrapped in a reactive
160
- * proxy.
237
+ * Whether this symbol is a transient symbol. Transient symbols cannot be
238
+ * referenced and are meant to be combined with other symbols.
239
+ *
240
+ * @readonly
161
241
  */
242
+ get isTransient() {
243
+ if (this.#isTransient) {
244
+ return true;
245
+ }
246
+ if (this.ownerSymbol) {
247
+ return this.ownerSymbol.isTransient;
248
+ }
249
+ return false;
250
+ }
251
+ #movedTo;
252
+ /**
253
+ * The symbol that this symbol's members have been moved to.
254
+ *
255
+ * @readonly
256
+ * @reactive
257
+ */
258
+ get movedTo() {
259
+ track(this, TrackOpTypes.GET, "movedTo");
260
+ return this.#movedTo;
261
+ }
262
+ #setMovedTo(value) {
263
+ this.#movedTo = value;
264
+ trigger(this, TriggerOpTypes.SET, "movedTo");
265
+ }
266
+
267
+ /**
268
+ * Whether this symbol's members have been moved to another symbol.
269
+ *
270
+ * @reactive
271
+ */
272
+ get isMoved() {
273
+ return this.movedTo !== undefined;
274
+ }
275
+ #type;
276
+
277
+ /**
278
+ * The symbol which defines the type of this symbol. The type symbol provides
279
+ * information about the value this symbol contains, such as what members it
280
+ * has.
281
+ *
282
+ * @reactive
283
+ */
284
+ get type() {
285
+ track(this, TrackOpTypes.GET, "type");
286
+ return this.#type;
287
+ }
288
+ set type(value) {
289
+ if (isRef(value)) {
290
+ watch(value, newValue => {
291
+ const old = this.#type;
292
+ this.#type = newValue && newValue.dealias();
293
+ trigger(this, TriggerOpTypes.SET, "type", newValue, old);
294
+ });
295
+ } else {
296
+ const old = this.#type;
297
+ this.#type = value && value.dealias();
298
+ trigger(this, TriggerOpTypes.SET, "type", value, old);
299
+ }
300
+ }
301
+
302
+ /**
303
+ * Whether this symbol has its symbol representing its type available.
304
+ *
305
+ * @readonly
306
+ * @reactive
307
+ */
308
+ get hasTypeSymbol() {
309
+ return this.type !== undefined;
310
+ }
311
+ #isTyped = false;
312
+
313
+ /**
314
+ * Whether this symbol's members are provided by a type symbol. The
315
+ * `typeSymbol` property is this symbol. It may not be available yet, so check
316
+ * `hasTypeSymbol`.
317
+ */
318
+ get isTyped() {
319
+ return this.#isTyped;
320
+ }
321
+ #namePolicy;
322
+ get namePolicy() {
323
+ return this.#namePolicy;
324
+ }
325
+
326
+ // Tell \@vue/reactivity that this symbol should never be wrapped in a reactive
327
+ // proxy.
162
328
  [ReactiveFlags.SKIP] = true;
163
- constructor(name, options = {}) {
329
+ constructor(name, spaces, options = {}) {
164
330
  this.#binder = options.binder ?? useBinder();
165
- this.#name = name;
166
- this.#originalName = name;
331
+ this.#namePolicy = options.namePolicy;
332
+ if (typeof name === "string") {
333
+ this.#ignoreNameConflict = !!options.ignoreNameConflict;
334
+ this.#ignoreNamePolicy = !!options.ignoreNamePolicy;
335
+ this.name = name;
336
+ this.#originalName = name;
337
+ this.#refkeys = shallowReactive(this.#normalizeRefkeyOption(options.refkeys));
338
+ } else {
339
+ this.#ignoreNameConflict = name.options.ignoreNameConflict ?? !!options.ignoreNameConflict;
340
+ this.#ignoreNamePolicy = name.options.ignoreNamePolicy ?? !!options.ignoreNamePolicy;
341
+ this.name = name.name;
342
+ this.#originalName = name.name;
343
+ this.#refkeys = shallowReactive([name, ...this.#normalizeRefkeyOption(options.refkeys)]);
344
+ }
167
345
  this.#id = symbolCount++;
168
- this.#flags = options.flags ?? OutputSymbolFlags.None;
169
- this.#scope = options.scope ?? this.#defaultScope();
346
+ this.#spaces = Array.isArray(spaces) ? spaces : spaces === undefined ? [] : [spaces];
170
347
  this.#aliasTarget = options.aliasTarget;
171
- if (this.#aliasTarget) {
172
- this.#flags |= OutputSymbolFlags.Alias;
173
- this.#flags &= ~(OutputSymbolFlags.MemberContainer | OutputSymbolFlags.Member);
174
- }
175
- this.#refkeys = shallowReactive(Array.isArray(options.refkeys) ? options.refkeys : isRefkey(options.refkeys) ? [options.refkeys] : []);
176
348
  this.#metadata = reactive(options.metadata ?? {});
177
- this.#createInstanceMemberScope();
178
- this.#createStaticMemberScope();
179
- this.#handleNewScope(this.#scope);
349
+ this.#isTransient = !!options.transient;
350
+ this.#isTyped = !!options.type;
351
+ this.type = options.type;
352
+ this.#handleNewSpaces(this.#spaces);
353
+ const constructor = this.constructor;
354
+ this.#memberSpaces = Object.fromEntries(constructor.memberSpaces.map(spaceKey => [spaceKey, new OutputMemberSpace(this, spaceKey, this.#binder)]));
180
355
  trace(TracePhase.symbol.create, () => `${formatSymbol(this)}`);
181
356
  traceEffect(TracePhase.symbol.update, () => {
182
357
  return `${formatSymbol(this)}`;
183
358
  });
184
359
  this.#binder?.notifySymbolCreated(this);
185
360
  }
361
+ #normalizeRefkeyOption(refkeys) {
362
+ if (refkeys === undefined) {
363
+ return [];
364
+ } else if (Array.isArray(refkeys)) {
365
+ return refkeys;
366
+ } else {
367
+ return [refkeys];
368
+ }
369
+ }
186
370
  delete() {
187
371
  trace(TracePhase.symbol.delete, () => `${formatSymbolName(this)}`);
188
- if (this.#scope) {
189
- this.#scope.symbols.delete(this);
372
+ if (this.#spaces) {
373
+ this.#spaces.forEach(space => space.delete(this));
190
374
  }
191
375
  this.#binder?.notifySymbolDeleted(this);
192
376
  }
193
377
 
194
378
  /**
195
- * Takes the instance members or static members on this symbol and creates
196
- * corresponding static members on the target symbol. Instance or static
197
- * members of instantiated symbols are copied. The refkey of any instantiated
198
- * symbols are set to a composite refkey of the target symbol's refkey and the
199
- * instantiated symbol's refkey.
379
+ * Move member symbols from this transient symbol to the target symbol. This is reactive -
380
+ * whenever a member is added to this symbol, it will be moved to the target
381
+ * symbol.
200
382
  */
201
- instantiateTo(targetSymbol) {
383
+ moveMembersTo(targetSymbol) {
202
384
  if (this.#aliasTarget) {
203
- return this.#aliasTarget.instantiateTo(targetSymbol);
385
+ return this.#aliasTarget.moveMembersTo(targetSymbol);
204
386
  }
205
- trace(TracePhase.symbol.instantiate, () => {
206
- return `${formatSymbolName(this)} -> ${formatSymbolName(targetSymbol)}`;
207
- });
208
- const from = this.#instanceMemberScope ?? this.#staticMemberScope;
209
- if (from) {
210
- targetSymbol.flags |= OutputSymbolFlags.StaticMemberContainer;
211
- targetSymbol.#createStaticMemberScope();
212
- targetSymbol.#staticMemberScope.copySymbolsFrom(from, {
213
- onAdd: symbol => {
214
- const clone = symbol.copyToScope(targetSymbol.#staticMemberScope, targetSymbol);
215
- clone.#flags &= ~OutputSymbolFlags.InstanceMember;
216
- clone.#flags |= OutputSymbolFlags.StaticMember;
217
- return clone;
218
- }
219
- });
387
+ if (!this.isTransient) {
388
+ throw new Error("Can only move members from transient symbols");
220
389
  }
221
- }
222
- #instantiationRk(base, member) {
223
- const instantiationRks = [];
224
- for (const baseRk of base.refkeys) {
225
- for (const targetRk of member.refkeys) {
226
- instantiationRks.push(refkey(baseRk, targetRk));
390
+ for (const sourceSpace of this.memberSpaces) {
391
+ const targetSpace = targetSymbol.memberSpaceFor(sourceSpace.key);
392
+ if (!targetSpace) {
393
+ throw new Error("Target symbol doesn't have member space " + sourceSpace.key);
227
394
  }
395
+ sourceSpace.moveTo(targetSpace);
228
396
  }
229
- return instantiationRks;
230
- }
231
-
232
- /**
233
- * Copy member symbols from the target symbol into the target symbol. The
234
- * copied symbols have their refkey set to
235
- * `refkey(targetSymbol.refkey, this.refkey)`.
236
- */
237
- copyTo(targetSymbol) {
238
- if (this.#aliasTarget) {
239
- return this.#aliasTarget.copyTo(targetSymbol);
240
- }
241
- if (this.staticMemberScope) {
242
- targetSymbol.flags |= OutputSymbolFlags.StaticMemberContainer;
243
- targetSymbol.staticMemberScope.copySymbolsFrom(this.staticMemberScope);
244
- }
245
- if (this.instanceMemberScope) {
246
- targetSymbol.flags |= OutputSymbolFlags.InstanceMemberContainer;
247
- targetSymbol.instanceMemberScope.copySymbolsFrom(this.instanceMemberScope);
248
- }
397
+ this.#setMovedTo(targetSymbol);
249
398
  }
250
399
 
251
400
  /**
252
- * Move member symbols from this transient symbol to the target symbol.
401
+ * Copy the members of this symbol to the target symbol. This is reactive -
402
+ * whenever a member is added to this symbol, it will be copied to the target
403
+ * symbol.
253
404
  */
254
- moveTo(targetSymbol) {
405
+ copyMembersTo(targetSymbol) {
255
406
  if (this.#aliasTarget) {
256
- return this.#aliasTarget.moveTo(targetSymbol);
257
- }
258
- if (!(this.flags & OutputSymbolFlags.Transient)) {
259
- throw new Error("Can only move members from transient symbols");
260
- }
261
- if (this.staticMemberScope) {
262
- targetSymbol.flags |= OutputSymbolFlags.StaticMemberContainer;
263
- targetSymbol.staticMemberScope.moveSymbolsFrom(this.staticMemberScope);
407
+ return this.#aliasTarget.copyMembersTo(targetSymbol);
264
408
  }
265
- if (this.instanceMemberScope) {
266
- targetSymbol.flags |= OutputSymbolFlags.InstanceMemberContainer;
267
- targetSymbol.instanceMemberScope.moveSymbolsFrom(this.instanceMemberScope);
409
+ for (const sourceSpace of this.memberSpaces) {
410
+ const targetSpace = targetSymbol.memberSpaceFor(sourceSpace.key);
411
+ if (!targetSpace) {
412
+ throw new Error("Target symbol doesn't have member space " + sourceSpace.key);
413
+ }
414
+ sourceSpace.copyTo(targetSpace);
268
415
  }
269
416
  }
270
417
 
@@ -281,53 +428,27 @@ export class OutputSymbol {
281
428
  *
282
429
  * @param newScope - The scope to use for the copy.
283
430
  */
284
- copyToScope(newScope, baseSymbol) {
285
- if (this.#aliasTarget) {
286
- return this.#aliasTarget.copyToScope(newScope, baseSymbol);
287
- }
288
- trace(TracePhase.symbol.clone, () => {
289
- return `${formatSymbolName(this)} -> ${formatScopeName(newScope)}`;
290
- });
291
- const clone = new OutputSymbol(this.#name, {
292
- binder: this.#binder,
293
- scope: newScope,
294
- flags: this.#flags,
295
- refkeys: baseSymbol ? this.#instantiationRk(baseSymbol, this) : [],
296
- metadata: this.#metadata
297
- });
298
- if (this.instanceMemberScope) {
299
- clone.#instanceMemberScope = this.instanceMemberScope.clone({
300
- owner: clone
301
- });
302
- }
303
- if (this.staticMemberScope) {
304
- clone.#staticMemberScope = this.staticMemberScope.clone({
305
- owner: clone
306
- });
307
- }
308
- watch(() => this.name, newName => clone.name = newName);
309
- watch(() => this.flags, newFlags => clone.flags = newFlags);
310
- return clone;
431
+
432
+ getCopyOptions() {
433
+ return {
434
+ binder: this.binder,
435
+ aliasTarget: this.aliasTarget,
436
+ metadata: this.metadata,
437
+ transient: this.isTransient
438
+ };
311
439
  }
312
- #defaultScope() {
313
- if ((this.#flags & OutputSymbolFlags.Member) === 0) {
314
- return useScope();
315
- } else {
316
- const memberScope = useMemberScope();
317
- if (!memberScope) {
318
- throw new Error("Cannot declare member symbols without a member scope");
319
- }
320
- if (this.#flags & OutputSymbolFlags.InstanceMember) {
321
- if (!memberScope.instanceMembers) {
322
- throw new Error("Cannot declare instance member symbols without an instance member scope");
323
- }
324
- return memberScope.instanceMembers;
325
- } else {
326
- if (!memberScope.staticMembers) {
327
- throw new Error("Cannot declare static member symbols without a static member scope");
328
- }
329
- return memberScope.staticMembers;
440
+ initializeCopy(copy) {
441
+ for (const sourceSpace of this.memberSpaces) {
442
+ const targetSpace = copy.memberSpaceFor(sourceSpace.key);
443
+ if (!targetSpace) {
444
+ throw new Error("Target doesn't have space " + sourceSpace.key);
330
445
  }
446
+ sourceSpace.copyTo(targetSpace);
331
447
  }
448
+ watch(() => this.name, newName => copy.name = newName);
449
+ }
450
+ [inspect.custom]() {
451
+ return untrack(() => `${this.constructor.name} "${this.name}"[${this.id}]`);
332
452
  }
333
- }
453
+ }
454
+ //# sourceMappingURL=output-symbol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isRef","reactive","ReactiveFlags","shallowReactive","track","TrackOpTypes","trigger","TriggerOpTypes","watch","useBinder","inspect","untrack","formatSymbol","formatSymbolName","trace","traceEffect","TracePhase","OutputMemberSpace","symbolCount","OutputSymbol","memberSpaces","originalName","name","GET","old","namePolicy","ignoreNamePolicy","SET","id","ignoreNameConflict","Object","values","memberSpaceFor","spaceKey","scope","isMemberSymbol","undefined","spaces","length","spacesArray","Array","isArray","handleNewSpaces","#handleNewSpaces","newSpaces","oldSpaces","forEach","oldSpace","delete","newSpace","add","binder","refkeys","aliasTarget","dealias","isAlias","metadata","copyToSpace","space","copy","ownerSymbol","symbol","isTransient","movedTo","setMovedTo","#setMovedTo","value","isMoved","type","newValue","hasTypeSymbol","isTyped","SKIP","constructor","options","normalizeRefkeyOption","transient","fromEntries","map","create","update","notifySymbolCreated","#normalizeRefkeyOption","notifySymbolDeleted","moveMembersTo","targetSymbol","Error","sourceSpace","targetSpace","key","moveTo","copyMembersTo","copyTo","getCopyOptions","initializeCopy","newName","custom"],"sources":["../../../src/symbols/output-symbol.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -9,5 +9,5 @@ export interface TakeSymbolsCallback {
9
9
  export declare function takeSymbols(cb?: (symbol: OutputSymbol) => void): import("@vue/reactivity").ShallowReactive<Set<OutputSymbol>>;
10
10
  export declare function emitSymbol(symbol: OutputSymbol | Ref<OutputSymbol | undefined>): void;
11
11
  export declare function moveTakenMembersTo(baseSymbol: OutputSymbol): void;
12
- export declare function instantiateTakenMembersTo(baseSymbol: OutputSymbol): void;
12
+ export declare function instantiateTakenMembersTo(baseSymbol: OutputSymbol, toSpaceKey: string, fromSpaceKey: string): void;
13
13
  //# sourceMappingURL=symbol-flow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-flow.d.ts","sourceRoot":"","sources":["../../../src/symbols/symbol-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAmB,MAAM,iBAAiB,CAAC;AAM9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,gEAiB9D;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,YAAY,GAAG,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,QA+CrD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,YAAY,QAU1D;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,YAAY,QAEjE"}
1
+ {"version":3,"file":"symbol-flow.d.ts","sourceRoot":"","sources":["../../../src/symbols/symbol-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAmB,MAAM,iBAAiB,CAAC;AAM9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,gEAiB9D;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,YAAY,GAAG,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,QAiErD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,YAAY,QAe1D;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,YAAY,EACxB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,QAKrB"}