@alloy-js/core 0.4.0 → 0.6.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 (228) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/babel.config.cjs +4 -1
  3. package/dist/src/binder.d.ts +20 -13
  4. package/dist/src/binder.d.ts.map +1 -1
  5. package/dist/src/binder.js +33 -15
  6. package/dist/src/binder.js.map +1 -1
  7. package/dist/src/code.d.ts +2 -2
  8. package/dist/src/code.d.ts.map +1 -1
  9. package/dist/src/code.js +4 -4
  10. package/dist/src/code.js.map +1 -1
  11. package/dist/src/components/Block.d.ts +25 -0
  12. package/dist/src/components/Block.d.ts.map +1 -0
  13. package/dist/src/components/Block.js +25 -0
  14. package/dist/src/components/Block.js.map +1 -0
  15. package/dist/src/components/Declaration.d.ts +1 -1
  16. package/dist/src/components/Declaration.d.ts.map +1 -1
  17. package/dist/src/components/Declaration.js +4 -0
  18. package/dist/src/components/Declaration.js.map +1 -1
  19. package/dist/src/components/For.d.ts +44 -0
  20. package/dist/src/components/For.d.ts.map +1 -0
  21. package/dist/src/components/For.js +41 -0
  22. package/dist/src/components/For.js.map +1 -0
  23. package/dist/src/components/Indent.d.ts +6 -10
  24. package/dist/src/components/Indent.d.ts.map +1 -1
  25. package/dist/src/components/Indent.js +7 -18
  26. package/dist/src/components/Indent.js.map +1 -1
  27. package/dist/src/components/List.d.ts +38 -0
  28. package/dist/src/components/List.d.ts.map +1 -0
  29. package/dist/src/components/List.js +40 -0
  30. package/dist/src/components/List.js.map +1 -0
  31. package/dist/src/components/MemberDeclaration.d.ts +1 -1
  32. package/dist/src/components/MemberDeclaration.d.ts.map +1 -1
  33. package/dist/src/components/MemberDeclaration.js.map +1 -1
  34. package/dist/src/components/MemberName.d.ts +1 -1
  35. package/dist/src/components/MemberName.d.ts.map +1 -1
  36. package/dist/src/components/MemberName.js +1 -1
  37. package/dist/src/components/MemberName.js.map +1 -1
  38. package/dist/src/components/MemberScope.d.ts +1 -1
  39. package/dist/src/components/MemberScope.d.ts.map +1 -1
  40. package/dist/src/components/MemberScope.js.map +1 -1
  41. package/dist/src/components/Name.d.ts +1 -1
  42. package/dist/src/components/Name.d.ts.map +1 -1
  43. package/dist/src/components/Name.js +1 -1
  44. package/dist/src/components/Name.js.map +1 -1
  45. package/dist/src/components/Output.d.ts +3 -2
  46. package/dist/src/components/Output.d.ts.map +1 -1
  47. package/dist/src/components/Output.js +12 -2
  48. package/dist/src/components/Output.js.map +1 -1
  49. package/dist/src/components/Scope.d.ts +1 -1
  50. package/dist/src/components/Scope.d.ts.map +1 -1
  51. package/dist/src/components/Scope.js.map +1 -1
  52. package/dist/src/components/Show.d.ts +8 -0
  53. package/dist/src/components/Show.d.ts.map +1 -0
  54. package/dist/src/components/Show.js +4 -0
  55. package/dist/src/components/Show.js.map +1 -0
  56. package/dist/src/components/SourceDirectory.d.ts +2 -2
  57. package/dist/src/components/SourceDirectory.d.ts.map +1 -1
  58. package/dist/src/components/SourceDirectory.js +1 -0
  59. package/dist/src/components/SourceDirectory.js.map +1 -1
  60. package/dist/src/components/SourceFile.d.ts +4 -8
  61. package/dist/src/components/SourceFile.d.ts.map +1 -1
  62. package/dist/src/components/SourceFile.js +6 -13
  63. package/dist/src/components/SourceFile.js.map +1 -1
  64. package/dist/src/components/StatementList.d.ts +9 -0
  65. package/dist/src/components/StatementList.d.ts.map +1 -0
  66. package/dist/src/components/StatementList.js +17 -0
  67. package/dist/src/components/StatementList.js.map +1 -0
  68. package/dist/src/components/Switch.d.ts +41 -0
  69. package/dist/src/components/Switch.d.ts.map +1 -0
  70. package/dist/src/components/Switch.js +41 -0
  71. package/dist/src/components/Switch.js.map +1 -0
  72. package/dist/src/components/Wrap.d.ts +20 -0
  73. package/dist/src/components/Wrap.d.ts.map +1 -0
  74. package/dist/src/components/Wrap.js +15 -0
  75. package/dist/src/components/Wrap.js.map +1 -0
  76. package/dist/src/components/index.d.ts +8 -1
  77. package/dist/src/components/index.d.ts.map +1 -1
  78. package/dist/src/components/index.js +7 -0
  79. package/dist/src/components/index.js.map +1 -1
  80. package/dist/src/components/stc/index.d.ts +89 -18
  81. package/dist/src/components/stc/index.d.ts.map +1 -1
  82. package/dist/src/components/stc/index.js +17 -1
  83. package/dist/src/components/stc/index.js.map +1 -1
  84. package/dist/src/context/index.d.ts +0 -1
  85. package/dist/src/context/index.d.ts.map +1 -1
  86. package/dist/src/context/index.js +0 -1
  87. package/dist/src/context/index.js.map +1 -1
  88. package/dist/src/context/member-declaration.d.ts +1 -0
  89. package/dist/src/context/member-declaration.d.ts.map +1 -1
  90. package/dist/src/context/member-declaration.js +4 -1
  91. package/dist/src/context/member-declaration.js.map +1 -1
  92. package/dist/src/context.d.ts.map +1 -1
  93. package/dist/src/context.js +3 -3
  94. package/dist/src/context.js.map +1 -1
  95. package/dist/src/index.browser.d.ts +3 -0
  96. package/dist/src/index.browser.d.ts.map +1 -0
  97. package/dist/src/index.browser.js +3 -0
  98. package/dist/src/index.browser.js.map +1 -0
  99. package/dist/src/index.d.ts +2 -0
  100. package/dist/src/index.d.ts.map +1 -1
  101. package/dist/src/index.js +2 -0
  102. package/dist/src/index.js.map +1 -1
  103. package/dist/src/jsx-runtime.d.ts +151 -7
  104. package/dist/src/jsx-runtime.d.ts.map +1 -1
  105. package/dist/src/jsx-runtime.js +113 -12
  106. package/dist/src/jsx-runtime.js.map +1 -1
  107. package/dist/src/render.d.ts +107 -132
  108. package/dist/src/render.d.ts.map +1 -1
  109. package/dist/src/render.js +272 -178
  110. package/dist/src/render.js.map +1 -1
  111. package/dist/src/stc.d.ts +14 -0
  112. package/dist/src/stc.d.ts.map +1 -0
  113. package/dist/src/stc.js +52 -0
  114. package/dist/src/stc.js.map +1 -0
  115. package/dist/src/tap.d.ts +19 -0
  116. package/dist/src/tap.d.ts.map +1 -0
  117. package/dist/src/tap.js +39 -0
  118. package/dist/src/tap.js.map +1 -0
  119. package/dist/src/utils.d.ts +22 -15
  120. package/dist/src/utils.d.ts.map +1 -1
  121. package/dist/src/utils.js +95 -59
  122. package/dist/src/utils.js.map +1 -1
  123. package/dist/test/browser-build.test.d.ts +2 -0
  124. package/dist/test/browser-build.test.d.ts.map +1 -0
  125. package/dist/test/components/block.test.d.ts +2 -0
  126. package/dist/test/components/block.test.d.ts.map +1 -0
  127. package/dist/test/components/declaration.test.d.ts +2 -0
  128. package/dist/test/components/declaration.test.d.ts.map +1 -0
  129. package/dist/test/components/list.test.d.ts +2 -0
  130. package/dist/test/components/list.test.d.ts.map +1 -0
  131. package/dist/test/components/wrap.test.d.ts +2 -0
  132. package/dist/test/components/wrap.test.d.ts.map +1 -0
  133. package/dist/test/control-flow/for.test.d.ts +2 -0
  134. package/dist/test/control-flow/for.test.d.ts.map +1 -0
  135. package/dist/test/control-flow/match.test.d.ts +2 -0
  136. package/dist/test/control-flow/match.test.d.ts.map +1 -0
  137. package/dist/test/control-flow/show.test.d.ts +2 -0
  138. package/dist/test/control-flow/show.test.d.ts.map +1 -0
  139. package/dist/test/reactivity/cleanup.test.d.ts +2 -0
  140. package/dist/test/reactivity/cleanup.test.d.ts.map +1 -0
  141. package/dist/test/reactivity/memo.test.d.ts +2 -0
  142. package/dist/test/reactivity/memo.test.d.ts.map +1 -0
  143. package/dist/test/reactivity/untrack.test.d.ts +2 -0
  144. package/dist/test/reactivity/untrack.test.d.ts.map +1 -0
  145. package/dist/test/rendering/formatting.test.d.ts +2 -0
  146. package/dist/test/rendering/formatting.test.d.ts.map +1 -0
  147. package/dist/test/rendering/memoization.test.d.ts +2 -0
  148. package/dist/test/rendering/memoization.test.d.ts.map +1 -0
  149. package/dist/test/split-props.test.d.ts +2 -0
  150. package/dist/test/split-props.test.d.ts.map +1 -0
  151. package/dist/test/stc.test.d.ts.map +1 -1
  152. package/dist/test/utils.test.d.ts.map +1 -1
  153. package/dist/testing/extend-expect.js +4 -4
  154. package/dist/testing/extend-expect.js.map +1 -1
  155. package/dist/testing/render.d.ts +2 -3
  156. package/dist/testing/render.d.ts.map +1 -1
  157. package/dist/testing/render.js +2 -4
  158. package/dist/testing/render.js.map +1 -1
  159. package/dist/tsconfig.tsbuildinfo +1 -1
  160. package/package.json +8 -9
  161. package/src/binder.ts +60 -50
  162. package/src/code.ts +17 -12
  163. package/src/components/Block.tsx +44 -0
  164. package/src/components/Declaration.tsx +10 -4
  165. package/src/components/For.tsx +81 -0
  166. package/src/components/Indent.tsx +20 -27
  167. package/src/components/List.tsx +94 -0
  168. package/src/components/MemberDeclaration.tsx +9 -6
  169. package/src/components/MemberScope.tsx +4 -2
  170. package/src/components/Output.tsx +27 -14
  171. package/src/components/Scope.tsx +4 -2
  172. package/src/components/Show.tsx +11 -0
  173. package/src/components/SourceDirectory.tsx +6 -2
  174. package/src/components/SourceFile.tsx +13 -17
  175. package/src/components/StatementList.tsx +16 -0
  176. package/src/components/Switch.tsx +62 -0
  177. package/src/components/Wrap.tsx +29 -0
  178. package/src/components/index.tsx +8 -1
  179. package/src/components/stc/index.ts +18 -1
  180. package/src/context/index.ts +0 -1
  181. package/src/context/member-declaration.ts +9 -1
  182. package/src/context.ts +2 -3
  183. package/src/index.browser.ts +2 -0
  184. package/src/index.ts +2 -0
  185. package/src/jsx-runtime.ts +265 -23
  186. package/src/render.ts +382 -200
  187. package/src/stc.ts +95 -0
  188. package/src/tap.ts +69 -0
  189. package/src/utils.ts +162 -95
  190. package/temp/api.json +8042 -1886
  191. package/test/browser-build.test.ts +91 -0
  192. package/test/children.test.tsx +8 -10
  193. package/test/components/block.test.tsx +48 -0
  194. package/test/components/declaration.test.tsx +37 -0
  195. package/test/components/list.test.tsx +91 -0
  196. package/test/components/slot.test.tsx +31 -25
  197. package/test/components/source-file.test.tsx +11 -31
  198. package/test/components/wrap.test.tsx +42 -0
  199. package/test/control-flow/for.test.tsx +194 -0
  200. package/test/control-flow/match.test.tsx +49 -0
  201. package/test/control-flow/show.test.tsx +25 -0
  202. package/test/name-policy.test.tsx +5 -5
  203. package/test/reactivity/cleanup.test.tsx +91 -0
  204. package/test/reactivity/memo.test.tsx +17 -0
  205. package/test/reactivity/ref-rendering.test.tsx +3 -8
  206. package/test/reactivity/test.test.tsx +7 -6
  207. package/test/reactivity/untrack.test.ts +33 -0
  208. package/test/rendering/basic.test.tsx +25 -47
  209. package/test/rendering/code.test.tsx +3 -3
  210. package/test/rendering/formatting.test.tsx +487 -0
  211. package/test/rendering/indent.test.tsx +42 -529
  212. package/test/rendering/memoization.test.tsx +30 -0
  213. package/test/split-props.test.ts +87 -0
  214. package/test/stc.test.tsx +29 -8
  215. package/test/symbols.test.ts +132 -3
  216. package/test/utils.test.tsx +129 -20
  217. package/testing/extend-expect.ts +14 -4
  218. package/testing/render.ts +2 -4
  219. package/testing/vitest.d.ts +6 -1
  220. package/vitest.config.ts +1 -1
  221. package/dist/src/context/indent.d.ts +0 -5
  222. package/dist/src/context/indent.d.ts.map +0 -1
  223. package/dist/src/context/indent.js +0 -8
  224. package/dist/src/context/indent.js.map +0 -1
  225. package/dist/test/rendering/linebreaks.test.d.ts +0 -2
  226. package/dist/test/rendering/linebreaks.test.d.ts.map +0 -1
  227. package/src/context/indent.ts +0 -17
  228. package/test/rendering/linebreaks.test.tsx +0 -72
@@ -1,154 +1,135 @@
1
1
  import { isRef } from "@vue/reactivity";
2
- import { Indent } from "./components/Indent.js";
2
+ import { doc } from "prettier";
3
+ import prettier from "prettier/doc.js";
3
4
  import { useContext } from "./context.js";
4
- import { IndentContext } from "./context/indent.js";
5
5
  import { SourceFileContext } from "./context/source-file.js";
6
- import { effect, getContext, isComponentCreator, popStack, printRenderStack, pushStack, root, untrack } from "./jsx-runtime.js";
6
+ import { effect, getContext, getElementCache, isComponentCreator, isCustomContext, isIntrinsicElement, popStack, printRenderStack, pushStack, root, untrack } from "./jsx-runtime.js";
7
7
  import { isRefkey } from "./refkey.js";
8
+ const {
9
+ builders: {
10
+ align,
11
+ breakParent,
12
+ dedent,
13
+ dedentToRoot,
14
+ fill,
15
+ group,
16
+ hardline,
17
+ indent,
18
+ line,
19
+ lineSuffix,
20
+ lineSuffixBoundary,
21
+ literalline,
22
+ markAsRoot,
23
+ softline,
24
+ ifBreak
25
+ }
26
+ } = prettier;
8
27
 
9
28
  /**
10
- * The component tree is constructed as the result of transforming JSX with
11
- * `@alloy-js/babel-preset`. Elements in the component tree (represented by the type
12
- * Children) are three distinct types of things:
29
+ * Turning components into source text involves three different trees produced
30
+ * sequentially:
31
+ *
32
+ * 1. Component tree, built by the nesting of components
33
+ * 2. Rendered text tree, produced by *rendering* the component tree
34
+ * 3. Document tree, produced by *printing* the rendered text tree
35
+ *
36
+ * Finally, the document tree is converted to text via `prettier`. Let's look at
37
+ * each of these trees and the conversions in detail.
38
+ *
39
+ * # Component tree
40
+ *
41
+ * The component tree is built by JSX or STC templates. The nodes in this tree
42
+ * are defined by the type `Child` and are one of the following
43
+ *
44
+ * ## Primitive values
45
+ *
46
+ * Strings in the tree are placed into the rendered text tree as-is. Numbers are
47
+ * converted to strings. Falsy primitive values and booleans are converted to
48
+ * empty strings (and may cause a line break to be ignored, see below).
49
+ *
50
+ * ## Nullary functions
51
+ *
52
+ * Nullary functions represent computed or reactive values in the component
53
+ * tree, such as expressions placed into a JSX template with curly brackets.
54
+ * Nullary functions return `Children` which are then recursively rendered.
55
+ * Nullary functions are invoked in an effect which will update the rendered
56
+ * text tree when any reactive dependencies change.
57
+ *
58
+ * ## Component creators
13
59
  *
14
- * 1. Primitive data types, which are either literal JSX or substitutions
15
- * 2. Components, which are created via `createComponent`
16
- * 3. Memos, which are created via `memo`, and represent substitutions like
17
- * property accesses and function calls that might be reactive.
60
+ * Component creators are a special kind of nullary function which instantiate
61
+ * components in order to get their children which are then recursively
62
+ * rendered. Component creators have some special rendering behavior, such as
63
+ * tracking the stack of rendered components. Like other nullary functions,
64
+ * component creators are invoked in an effect which will update the rendered
65
+ * text tree when any reactive dependencies change.
18
66
  *
19
- * This tree is then compiled into a render tree, which is a normalized form of
20
- * the component tree. The render tree is constructed by traversing the
21
- * component tree, invoking components, wrapping memos, doing whitespace
22
- * normalization, and other activities. There are four types of nodes in the
23
- * render tree.
67
+ * ## Refs
24
68
  *
25
- * 1. Strings, which are either literal JSX or substitutions. Other primitive
26
- * types are either converted to the empty string or stringified as
27
- * appropriate.
28
- * 2. Components, which are possibly wrapped if they are indented.
29
- * 3. Memos, which are wrapped in a reactive effect which updates its render
30
- * tree nodes when its value changes.
31
- * 4. Arrays of these things.
69
+ * Refs are wrapped in a nullary function and rendered in an effect which will
70
+ * update the rendered text tree when the ref's value changes. This is
71
+ * essentially a syntactic convenience, allowing JSX templates to contain
72
+ * `\{ someRef \}` instead of `\{ someRef.value \}`.
32
73
  *
33
- * The render tree is whitespace normalized and indentation preserving. When the
34
- * component increases the literal indent level and then embeds a component,
35
- * memo, or array, the contents of that substitution are indented appropriately.
36
- * This is accomplished by wrapping those substitutions in an indent component.
74
+ * ## Refkey
37
75
  *
38
- * So the high level process for rendering while normalizing whitespace is as
39
- * follows:
76
+ * Refkeys are replaced with a component creator for the Reference component
77
+ * associated with the current source file. This allows creating references by
78
+ * placing them directly in the component tree e.g. `{ someRefkey }`.
40
79
  *
41
- * 1. For an array of elements in the render tree (which may be a component or
42
- * array of elements):
43
- * 1. Normalize all primitive values other than strings to strings.
44
- * Recursively normalize nested array elements.
45
- * 2. Use the first text node to determine the literal indent level of the
46
- * children. Remove all preceding whitespace - any indent of the first
47
- * line is provided in the text nodes preceding the reference to this
48
- * component. If the first element is not a literal string, then no
49
- * literal indent is applied, and all indentation within the component
50
- * becomes significant.
51
- * 3. For each child of the component, render it:
52
- * 1. If it is a string, reindent it by splitting on lines and replacing
53
- * the detected literal whitespace with the current indent level,
54
- * skipping the first line. If the string ends with a larger literal
55
- * indent than the detected literal indent, then a subsequent child
56
- * will be indented.
57
- * 2. If it's a component, if the next child should be indented, create an
58
- * Indent component and wrap the component's children in it.
59
- * 3. If it's a function, if the next child should be indented, wrap it in
60
- * an indent component. Any elements processed as a result of executing
61
- * the memo are treated as first elements in a child array are with
62
- * respect to establishing literal indent level and whitespace trimming
63
- * behavior.
64
- * 4. If it's an array, if the next child should be indented, create an
65
- * Indent component and wrap it the array in it.
80
+ * ## CustomContext
66
81
  *
67
- * Let's look at a few examples of each of these phases:
82
+ * CustomContext is a special kind of component which allows rendering children
83
+ * within a custom reactive context. This enables components to manually manage
84
+ * the lifetime of their reactive contexts.
68
85
  *
69
- * ## Explicit indentation
86
+ * ## IntrinsicElement
70
87
  *
71
- * ### Input
72
- * ```
73
- * <Indent>
74
- * <Foo />
75
- * <Foo />
76
- * </Indent>
77
- * ```
88
+ * Various intrinsic elements exist to control formatting. These elements
89
+ * provide Print Hooks that are called during Printing.
78
90
  *
79
- * ### Compiled tree
80
- * ```
81
- * [
82
- * createComponent(Indent, {
83
- * get children() {
84
- * return [
85
- * "\n ",
86
- * createComponent(Foo, {}),
87
- * "\n ",
88
- * createComponent(Foo, {}),
89
- * "\n"
90
- * ]
91
- * }
92
- * })
93
- * ]
94
- * ```
91
+ * # Rendered Text Tree
95
92
  *
96
- * ### Render tree
97
- * ```
98
- * [ // node for Indent
99
- * [ // node for Context Provider
100
- * " ", // indent from the children of Indent
101
- * [ // component for Foo
102
- * "Foo" // result of calling Foo
103
- * ],
104
- * "\n ", // indent and line break from the children of Ident
105
- * [ "Foo" ] // second foo component
106
- * ]
107
- * ]
108
- * ```
109
- * ### Rendered text
110
- * ```
111
- * FooFoo
112
- * ```
93
+ * This tree is a nested array structure containing the rendered output of all
94
+ * the components in the component tree. This structure is updated reactively
95
+ * when reactive dependencies change. The nodes in this tree are predominantly
96
+ * strings, but can also be Print Hooks.
113
97
  *
114
- * ## Implicit indentation
98
+ * This tree is built by the `renderTree` function.
115
99
  *
116
- * ### Input
117
- * ```
118
- * <>
119
- * base
120
- * <Foo /> <Foo />
121
- * </>
122
- * ```
100
+ * # Document Tree
123
101
  *
124
- * ### Render tree
125
- * ```
126
- * [ // node for top-level fragment
127
- * "base\n ", // contents of fragment, including trailing indent
128
- * [ // node for implicitly created Indent component
129
- * [ // node for its context provider [ "Foo" ], // contents of Foo "\n"
130
- * ]
131
- * ```
132
- * ## Rendered text
133
- * ```
134
- * base
135
- * Foo Foo
136
- * ```
102
+ * This tree is constructed by calling `printTree` on the rendered text tree.
103
+ * The rendered text tree is walked and the appropriate Prettier builders are
104
+ * called to produce a document tree. The result is then passed to Prettier's
105
+ * `printDocToString` function to produce the final source text.
137
106
  */
138
107
 
139
- //
140
-
141
108
  const nodesToContext = new WeakMap();
142
109
  export function getContextForRenderNode(node) {
143
110
  return nodesToContext.get(node);
144
111
  }
112
+ export const printHookTag = Symbol();
113
+ export function createRenderTreeHook(subtree, hooks) {
114
+ return {
115
+ [printHookTag]: true,
116
+ subtree,
117
+ ...hooks
118
+ };
119
+ }
120
+ export function isPrintHook(type) {
121
+ return typeof type === "object" && type !== null && printHookTag in type;
122
+ }
145
123
  function traceRender(phase, message) {
146
124
  return false;
147
- // console.log(`[\x1b[34m${phase}\x1b[0m]: ${message}`);
125
+ //console.log(`[\x1b[34m${phase}\x1b[0m]: ${message()}`);
148
126
  }
149
- export function render(children) {
127
+ export function render(children, options) {
150
128
  const tree = renderTree(children);
151
129
  let rootDirectory = undefined;
130
+
131
+ // when passing Output, the first render tree child is the Output component.
132
+ const rootRenderOptions = Array.isArray(tree) ? getContextForRenderNode(tree[0])?.meta?.printOptions ?? {} : {};
152
133
  collectSourceFiles(undefined, tree);
153
134
  if (!rootDirectory) {
154
135
  throw new Error("No root directory found. Make sure you are using the Output component.");
@@ -183,7 +164,11 @@ export function render(children) {
183
164
  kind: "file",
184
165
  path: context.meta?.sourceFile.path,
185
166
  filetype: context.meta?.sourceFile.filetype,
186
- contents: root.flat(Infinity).join("")
167
+ contents: printTree(root, {
168
+ printWidth: options?.printWidth ?? context.meta?.printOptions?.printWidth ?? rootRenderOptions.printWidth,
169
+ tabWidth: options?.tabWidth ?? context.meta?.printOptions?.tabWidth ?? rootRenderOptions.tabWidth,
170
+ useTabs: options?.useTabs ?? context.meta?.printOptions?.useTabs ?? rootRenderOptions.useTabs
171
+ })
187
172
  };
188
173
  currentDirectory.contents.push(sourceFile);
189
174
  } else {
@@ -198,12 +183,9 @@ export function render(children) {
198
183
  }
199
184
  export function renderTree(children) {
200
185
  const rootElem = [];
201
- const state = {
202
- newline: false
203
- };
204
186
  try {
205
187
  root(() => {
206
- renderWorker(rootElem, children, state);
188
+ renderWorker(rootElem, children);
207
189
  });
208
190
  } catch (e) {
209
191
  printRenderStack();
@@ -211,71 +193,151 @@ export function renderTree(children) {
211
193
  }
212
194
  return rootElem;
213
195
  }
214
- function renderWorker(node, children, state) {
215
- traceRender("render", dumpChildren(children));
196
+ function renderWorker(node, children) {
197
+ traceRender("render", () => dumpChildren(children));
216
198
  if (Array.isArray(node)) {
217
199
  nodesToContext.set(node, getContext());
218
200
  }
219
- const indent = useContext(IndentContext);
220
201
  if (Array.isArray(children)) {
221
- for (const child of children) {
222
- appendChild(node, child, indent, state);
202
+ for (const child of children.flat(Infinity)) {
203
+ appendChild(node, child);
223
204
  }
224
205
  } else {
225
- appendChild(node, children, indent, state);
206
+ appendChild(node, children);
226
207
  }
227
208
  }
228
- function appendChild(node, rawChild, indentState, state) {
229
- traceRender("appendChild", printChild(rawChild));
209
+ function appendChild(node, rawChild) {
210
+ traceRender("appendChild", () => debugPrintChild(rawChild));
230
211
  const child = normalizeChild(rawChild);
231
212
  if (typeof child === "string") {
232
- if (child.match(/\n\s*$/)) {
233
- state.newline = true;
234
- } else {
235
- state.newline = false;
213
+ node.push(child);
214
+ } else {
215
+ const cache = getElementCache();
216
+ if (cache.has(child)) {
217
+ traceRender("appendChild:cached", () => debugPrintChild(child));
218
+ node.push(cache.get(child));
219
+ return;
236
220
  }
237
- const reindented = reindent(child, indentState.indentString);
238
- traceRender("appendChild:string", JSON.stringify(reindented));
239
- node.push(reindented);
240
- } else if (isComponentCreator(child)) {
241
- root(() => {
242
- traceRender("appendChild:component", printChild(child));
243
- if (child.component === Indent && state.newline) {
244
- node.push(indentState.indent);
221
+ if (isCustomContext(child)) {
222
+ traceRender("appendChild:custom-context", () => debugPrintChild(child));
223
+ child.useCustomContext(children => {
224
+ const newNode = [];
225
+ renderWorker(newNode, children);
226
+ node.push(newNode);
227
+ cache.set(child, newNode);
228
+ });
229
+ } else if (isIntrinsicElement(child)) {
230
+ // don't need a new context here because intrinsics are never reactive
231
+ traceRender("appendChild:intrinsic-element", () => debugPrintChild(child));
232
+ const newNode = [];
233
+ function formatHookWithChildren(command) {
234
+ node.push(createRenderTreeHook(newNode, {
235
+ print(tree, print) {
236
+ return command(print(tree));
237
+ }
238
+ }));
239
+ renderWorker(newNode, child.props.children);
245
240
  }
246
- const componentRoot = [];
247
- pushStack(child.component, child.props);
248
- renderWorker(componentRoot, untrack(child), state);
249
- popStack();
250
- node.push(componentRoot);
251
- traceRender("appendChild:component-done", printChild(child));
252
- }, child);
253
- } else if (typeof child === "function") {
254
- traceRender("appendChild:memo", child.toString());
255
- const index = node.length;
256
- effect(prev => {
257
- traceRender("memoEffect:run", "");
258
- let res = child();
259
- while (typeof res === "function" && !isComponentCreator(res)) {
260
- res = res();
241
+ function formatHook(command) {
242
+ return node.push(createRenderTreeHook(newNode, {
243
+ print() {
244
+ return command;
245
+ }
246
+ }));
261
247
  }
262
- const newNodes = [];
263
- renderWorker(newNodes, res, state);
264
- //node.splice(index, prev ? prev.length : 0, ...newNodes);
265
- node[index] = newNodes;
266
- return newNodes;
267
- });
268
- traceRender("appendChild:memo-done", "");
269
- } else {
270
- traceRender("appendChild:array", dumpChildren(child));
271
- renderWorker(node, child, state);
272
- traceRender("appendChild:array-done", dumpChildren(child));
248
+ switch (child.name) {
249
+ case "indent":
250
+ return formatHookWithChildren(indent);
251
+ case "fill":
252
+ return formatHookWithChildren(fill);
253
+ case "group":
254
+ node.push(createRenderTreeHook(newNode, {
255
+ print(tree, print) {
256
+ return group(print(tree), {
257
+ id: child.props.id,
258
+ shouldBreak: child.props.shouldBreak
259
+ });
260
+ }
261
+ }));
262
+ renderWorker(newNode, child.props.children);
263
+ return;
264
+ case "line":
265
+ case "br":
266
+ return formatHook(line);
267
+ case "hbr":
268
+ case "hardline":
269
+ return formatHook(hardline);
270
+ case "sbr":
271
+ case "softline":
272
+ return formatHook(softline);
273
+ case "literalline":
274
+ case "lbr":
275
+ return formatHook(literalline);
276
+ case "align":
277
+ node.push(createRenderTreeHook(newNode, {
278
+ print(tree, print) {
279
+ return align(child.props.width ?? child.props.string, print(tree));
280
+ }
281
+ }));
282
+ renderWorker(newNode, child.props.children);
283
+ return;
284
+ case "lineSuffix":
285
+ return formatHookWithChildren(lineSuffix);
286
+ case "lineSuffixBoundary":
287
+ return formatHook(lineSuffixBoundary);
288
+ case "breakParent":
289
+ return formatHook(breakParent);
290
+ case "dedent":
291
+ return formatHookWithChildren(dedent);
292
+ case "dedentToRoot":
293
+ return formatHookWithChildren(dedentToRoot);
294
+ case "markAsRoot":
295
+ return formatHookWithChildren(markAsRoot);
296
+ case "ifBreak":
297
+ node.push(createRenderTreeHook(newNode, {
298
+ print(tree, print) {
299
+ return ifBreak(print(tree[0]), print(tree[1]));
300
+ }
301
+ }));
302
+ newNode.push([], []);
303
+ renderWorker(newNode[0], child.props.children);
304
+ renderWorker(newNode[1], child.props.flatContents);
305
+ return;
306
+ default:
307
+ throw new Error("Unknown intrinsic element");
308
+ }
309
+ } else if (isComponentCreator(child)) {
310
+ effect(() => {
311
+ traceRender("appendChild:component", () => debugPrintChild(child));
312
+ const componentRoot = [];
313
+ pushStack(child.component, child.props);
314
+ renderWorker(componentRoot, untrack(child));
315
+ popStack();
316
+ node.push(componentRoot);
317
+ cache.set(child, componentRoot);
318
+ traceRender("appendChild:component-done", () => debugPrintChild(child));
319
+ });
320
+ } else if (typeof child === "function") {
321
+ traceRender("appendChild:memo", () => child.toString());
322
+ const index = node.length;
323
+ effect(() => {
324
+ traceRender("memoEffect:run", () => "");
325
+ let res = child();
326
+ while (typeof res === "function" && !isComponentCreator(res)) {
327
+ res = res();
328
+ }
329
+ const newNodes = [];
330
+ renderWorker(newNodes, res);
331
+ node[index] = newNodes;
332
+ cache.set(child, newNodes);
333
+ return newNodes;
334
+ });
335
+ traceRender("appendChild:memo-done", () => "");
336
+ } else {
337
+ throw new Error("Unexpected child type");
338
+ }
273
339
  }
274
340
  }
275
- function reindent(str, indent) {
276
- const lines = str.split("\n");
277
- return [lines[0], ...lines.slice(1).map(line => indent + line)].join("\n");
278
- }
279
341
  function normalizeChild(child) {
280
342
  if (Array.isArray(child)) {
281
343
  return child.map(normalizeChild);
@@ -295,23 +357,55 @@ function normalizeChild(child) {
295
357
  refkey: child
296
358
  });
297
359
  };
360
+ } else if (isCustomContext(child)) {
361
+ return child;
362
+ } else if (isIntrinsicElement(child)) {
363
+ return child;
298
364
  } else {
299
365
  return String(child);
300
366
  }
301
367
  }
302
368
  function dumpChildren(children) {
303
369
  if (Array.isArray(children)) {
304
- return `[ ${children.map(printChild).join(", ")} ]`;
370
+ return `[ ${children.map(debugPrintChild).join(", ")} ]`;
305
371
  }
306
- return printChild(children);
372
+ return debugPrintChild(children);
307
373
  }
308
- function printChild(child) {
374
+ function debugPrintChild(child) {
309
375
  if (isComponentCreator(child)) {
310
376
  return "<" + child.component.name + ">";
311
377
  } else if (typeof child === "function") {
312
378
  return "$memo";
379
+ } else if (isRef(child)) {
380
+ return "$ref";
313
381
  } else {
314
382
  return JSON.stringify(child);
315
383
  }
316
384
  }
385
+ const defaultPrintTreeOptions = {
386
+ printWidth: 80,
387
+ tabWidth: 2
388
+ };
389
+ export function printTree(tree, options) {
390
+ options = {
391
+ ...defaultPrintTreeOptions,
392
+ ...Object.fromEntries(Object.entries(options ?? {}).filter(([_, v]) => v !== undefined))
393
+ };
394
+ const d = printTreeWorker(tree);
395
+ return doc.printer.printDocToString(d, options).formatted;
396
+ }
397
+ function printTreeWorker(tree) {
398
+ const doc = [];
399
+ for (const node of tree) {
400
+ if (typeof node === "string") {
401
+ const normalizedNode = node.split(/\r?\n/).flatMap((line, index, array) => index < array.length - 1 ? [line, hardline] : [line]);
402
+ doc.push(normalizedNode);
403
+ } else if (isPrintHook(node)) {
404
+ doc.push(node.print(node.subtree, printTreeWorker));
405
+ } else {
406
+ doc.push(printTreeWorker(node));
407
+ }
408
+ }
409
+ return doc;
410
+ }
317
411
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","names":["isRef","Indent","useContext","IndentContext","SourceFileContext","effect","getContext","isComponentCreator","popStack","printRenderStack","pushStack","root","untrack","isRefkey","nodesToContext","WeakMap","getContextForRenderNode","node","get","traceRender","phase","message","render","children","tree","renderTree","rootDirectory","undefined","collectSourceFiles","Error","currentDirectory","Array","isArray","context","recurse","meta","directory","kind","path","contents","push","sourceFile","filetype","flat","Infinity","join","cwd","child","rootElem","state","newline","renderWorker","e","dumpChildren","set","indent","appendChild","rawChild","indentState","printChild","normalizeChild","match","reindented","reindent","indentString","JSON","stringify","component","componentRoot","props","toString","index","length","prev","res","newNodes","str","lines","split","slice","map","line","value","sfContext","reference","refkey","String","name"],"sources":["../../src/render.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,iBAAiB;AACvC,SAASC,MAAM,QAAqB,wBAAwB;AAC5D,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SAIEC,MAAM,EACNC,UAAU,EACVC,kBAAkB,EAClBC,QAAQ,EACRC,gBAAgB,EAChBC,SAAS,EACTC,IAAI,EACJC,OAAO,QACF,kBAAkB;AACzB,SAASC,QAAQ,QAAQ,aAAa;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAcA,MAAMC,cAAc,GAAG,IAAIC,OAAO,CAA0B,CAAC;AAE7D,OAAO,SAASC,uBAAuBA,CAACC,IAAoB,EAAE;EAC5D,OAAOH,cAAc,CAACI,GAAG,CAACD,IAAI,CAAC;AACjC;AAKA,SAASE,WAAWA,CAACC,KAAa,EAAEC,OAAe,EAAE;EACnD,OAAO,KAAK;EACZ;AACF;AAEA,OAAO,SAASC,MAAMA,CAACC,QAAkB,EAAmB;EAC1D,MAAMC,IAAI,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","ignoreList":[]}
1
+ {"version":3,"file":"render.js","names":["isRef","doc","prettier","useContext","SourceFileContext","effect","getContext","getElementCache","isComponentCreator","isCustomContext","isIntrinsicElement","popStack","printRenderStack","pushStack","root","untrack","isRefkey","builders","align","breakParent","dedent","dedentToRoot","fill","group","hardline","indent","line","lineSuffix","lineSuffixBoundary","literalline","markAsRoot","softline","ifBreak","nodesToContext","WeakMap","getContextForRenderNode","node","get","printHookTag","Symbol","createRenderTreeHook","subtree","hooks","isPrintHook","type","traceRender","phase","message","render","children","options","tree","renderTree","rootDirectory","undefined","rootRenderOptions","Array","isArray","meta","printOptions","collectSourceFiles","Error","currentDirectory","context","recurse","directory","kind","path","contents","push","sourceFile","filetype","printTree","printWidth","tabWidth","useTabs","cwd","child","rootElem","renderWorker","e","dumpChildren","set","flat","Infinity","appendChild","rawChild","debugPrintChild","normalizeChild","cache","has","useCustomContext","newNode","formatHookWithChildren","command","print","props","formatHook","name","id","shouldBreak","width","string","flatContents","componentRoot","component","toString","index","length","res","newNodes","map","value","sfContext","reference","refkey","String","join","JSON","stringify","defaultPrintTreeOptions","Object","fromEntries","entries","filter","_","v","d","printTreeWorker","printer","printDocToString","formatted","normalizedNode","split","flatMap","array"],"sources":["../../src/render.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,iBAAiB;AACvC,SAAcC,GAAG,QAAQ,UAAU;AACnC,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SAKEC,MAAM,EACNC,UAAU,EACVC,eAAe,EAEfC,kBAAkB,EAClBC,eAAe,EACfC,kBAAkB,EAClBC,QAAQ,EACRC,gBAAgB,EAChBC,SAAS,EACTC,IAAI,EACJC,OAAO,QACF,kBAAkB;AACzB,SAASC,QAAQ,QAAQ,aAAa;AACtC,MAAM;EACJC,QAAQ,EAAE;IACRC,KAAK;IACLC,WAAW;IACXC,MAAM;IACNC,YAAY;IACZC,IAAI;IACJC,KAAK;IACLC,QAAQ;IACRC,MAAM;IACNC,IAAI;IACJC,UAAU;IACVC,kBAAkB;IAClBC,WAAW;IACXC,UAAU;IACVC,QAAQ;IACRC;EACF;AACF,CAAC,GAAG9B,QAAQ;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA,MAAM+B,cAAc,GAAG,IAAIC,OAAO,CAA4B,CAAC;AAE/D,OAAO,SAASC,uBAAuBA,CAACC,IAAsB,EAAE;EAC9D,OAAOH,cAAc,CAACI,GAAG,CAACD,IAAI,CAAC;AACjC;AAEA,OAAO,MAAME,YAAY,GAAGC,MAAM,CAAC,CAAC;AAYpC,OAAO,SAASC,oBAAoBA,CAClCC,OAAyB,EACzBC,KAAuD,EAC5C;EACX,OAAO;IACL,CAACJ,YAAY,GAAG,IAA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","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ import { Children, ComponentCreator, ComponentDefinition, IntrinsicElementBase, JSX } from "@alloy-js/core/jsx-runtime";
2
+ export declare function sti<T extends keyof JSX.IntrinsicElements>(name: T): (...args: unknown extends T ? [] : {} extends Omit<JSX.IntrinsicElements[T], "children"> ? [props?: JSX.IntrinsicElements[T]] : [props: JSX.IntrinsicElements[T]]) => {
3
+ (): IntrinsicElementBase<T>;
4
+ children(...children: Children[]): (() => IntrinsicElementBase<T>);
5
+ code(template: TemplateStringsArray, ...substitutions: Children[]): (() => IntrinsicElementBase<T>);
6
+ };
7
+ export type MakeChildrenOptional<T extends object> = T extends {
8
+ children?: any;
9
+ } ? Omit<T, "children"> & Partial<Pick<T, "children">> : T;
10
+ export declare function stc<T extends {}>(Component: ComponentDefinition<T>): (...args: unknown extends T ? [] : {} extends Omit<T, "children"> ? [props?: MakeChildrenOptional<T>] : [props: MakeChildrenOptional<T>]) => ComponentCreator<T> & {
11
+ code(template: TemplateStringsArray, ...substitutions: Children[]): ComponentCreator<T>;
12
+ children(...children: Children[]): ComponentCreator<T>;
13
+ };
14
+ //# sourceMappingURL=stc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stc.d.ts","sourceRoot":"","sources":["../../src/stc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EAEnB,oBAAoB,EACpB,GAAG,EACJ,MAAM,4BAA4B,CAAC;AAGpC,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,aAErD,OAAO,SAAS,CAAC,GAAG,EAAE,GAC7B,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GACrD,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAClC,CAAC,KAAK,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;;0BAKpB,QAAQ,EAAE,GACtB,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC;mBAUtB,oBAAoB,oBACZ,QAAQ,EAAE,GAC3B,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC;EAUrC;AAED,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,wBAAgB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,aAEtD,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;mBAIpB,oBAAoB,oBACZ,QAAQ,EAAE,GAC3B,gBAAgB,CAAC,CAAC,CAAC;0BACA,QAAQ,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC;EAiC3D"}