@alloy-js/core 0.5.0 → 0.7.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 (212) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/babel.config.cjs +4 -1
  3. package/dist/src/binder.d.ts +8 -2
  4. package/dist/src/binder.d.ts.map +1 -1
  5. package/dist/src/binder.js +41 -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.map +1 -1
  16. package/dist/src/components/Declaration.js +4 -0
  17. package/dist/src/components/Declaration.js.map +1 -1
  18. package/dist/src/components/For.d.ts +44 -0
  19. package/dist/src/components/For.d.ts.map +1 -0
  20. package/dist/src/components/For.js +41 -0
  21. package/dist/src/components/For.js.map +1 -0
  22. package/dist/src/components/Indent.d.ts +5 -9
  23. package/dist/src/components/Indent.d.ts.map +1 -1
  24. package/dist/src/components/Indent.js +7 -18
  25. package/dist/src/components/Indent.js.map +1 -1
  26. package/dist/src/components/List.d.ts +38 -0
  27. package/dist/src/components/List.d.ts.map +1 -0
  28. package/dist/src/components/List.js +40 -0
  29. package/dist/src/components/List.js.map +1 -0
  30. package/dist/src/components/MemberDeclaration.d.ts.map +1 -1
  31. package/dist/src/components/MemberDeclaration.js.map +1 -1
  32. package/dist/src/components/MemberName.js +1 -1
  33. package/dist/src/components/MemberName.js.map +1 -1
  34. package/dist/src/components/MemberScope.d.ts.map +1 -1
  35. package/dist/src/components/MemberScope.js.map +1 -1
  36. package/dist/src/components/Name.js +1 -1
  37. package/dist/src/components/Name.js.map +1 -1
  38. package/dist/src/components/Output.d.ts +2 -1
  39. package/dist/src/components/Output.d.ts.map +1 -1
  40. package/dist/src/components/Output.js +9 -1
  41. package/dist/src/components/Output.js.map +1 -1
  42. package/dist/src/components/Scope.d.ts.map +1 -1
  43. package/dist/src/components/Scope.js.map +1 -1
  44. package/dist/src/components/Show.d.ts +8 -0
  45. package/dist/src/components/Show.d.ts.map +1 -0
  46. package/dist/src/components/Show.js +4 -0
  47. package/dist/src/components/Show.js.map +1 -0
  48. package/dist/src/components/SourceDirectory.d.ts.map +1 -1
  49. package/dist/src/components/SourceDirectory.js +1 -0
  50. package/dist/src/components/SourceDirectory.js.map +1 -1
  51. package/dist/src/components/SourceFile.d.ts +2 -6
  52. package/dist/src/components/SourceFile.d.ts.map +1 -1
  53. package/dist/src/components/SourceFile.js +6 -13
  54. package/dist/src/components/SourceFile.js.map +1 -1
  55. package/dist/src/components/StatementList.d.ts +9 -0
  56. package/dist/src/components/StatementList.d.ts.map +1 -0
  57. package/dist/src/components/StatementList.js +17 -0
  58. package/dist/src/components/StatementList.js.map +1 -0
  59. package/dist/src/components/Switch.d.ts +41 -0
  60. package/dist/src/components/Switch.d.ts.map +1 -0
  61. package/dist/src/components/Switch.js +41 -0
  62. package/dist/src/components/Switch.js.map +1 -0
  63. package/dist/src/components/Wrap.d.ts +20 -0
  64. package/dist/src/components/Wrap.d.ts.map +1 -0
  65. package/dist/src/components/Wrap.js +15 -0
  66. package/dist/src/components/Wrap.js.map +1 -0
  67. package/dist/src/components/index.d.ts +8 -1
  68. package/dist/src/components/index.d.ts.map +1 -1
  69. package/dist/src/components/index.js +7 -0
  70. package/dist/src/components/index.js.map +1 -1
  71. package/dist/src/components/stc/index.d.ts +77 -6
  72. package/dist/src/components/stc/index.d.ts.map +1 -1
  73. package/dist/src/components/stc/index.js +17 -1
  74. package/dist/src/components/stc/index.js.map +1 -1
  75. package/dist/src/context/index.d.ts +0 -1
  76. package/dist/src/context/index.d.ts.map +1 -1
  77. package/dist/src/context/index.js +0 -1
  78. package/dist/src/context/index.js.map +1 -1
  79. package/dist/src/context.d.ts.map +1 -1
  80. package/dist/src/context.js +3 -3
  81. package/dist/src/context.js.map +1 -1
  82. package/dist/src/index.browser.d.ts +3 -0
  83. package/dist/src/index.browser.d.ts.map +1 -0
  84. package/dist/src/index.browser.js +3 -0
  85. package/dist/src/index.browser.js.map +1 -0
  86. package/dist/src/index.d.ts +1 -0
  87. package/dist/src/index.d.ts.map +1 -1
  88. package/dist/src/index.js +1 -0
  89. package/dist/src/index.js.map +1 -1
  90. package/dist/src/jsx-runtime.d.ts +139 -8
  91. package/dist/src/jsx-runtime.d.ts.map +1 -1
  92. package/dist/src/jsx-runtime.js +102 -12
  93. package/dist/src/jsx-runtime.js.map +1 -1
  94. package/dist/src/render.d.ts +107 -132
  95. package/dist/src/render.d.ts.map +1 -1
  96. package/dist/src/render.js +281 -177
  97. package/dist/src/render.js.map +1 -1
  98. package/dist/src/stc.d.ts +14 -0
  99. package/dist/src/stc.d.ts.map +1 -0
  100. package/dist/src/stc.js +52 -0
  101. package/dist/src/stc.js.map +1 -0
  102. package/dist/src/utils.d.ts +22 -15
  103. package/dist/src/utils.d.ts.map +1 -1
  104. package/dist/src/utils.js +95 -59
  105. package/dist/src/utils.js.map +1 -1
  106. package/dist/src/write-output.js +3 -3
  107. package/dist/src/write-output.js.map +1 -1
  108. package/dist/test/browser-build.test.d.ts +2 -0
  109. package/dist/test/browser-build.test.d.ts.map +1 -0
  110. package/dist/test/components/block.test.d.ts +2 -0
  111. package/dist/test/components/block.test.d.ts.map +1 -0
  112. package/dist/test/components/declaration.test.d.ts +2 -0
  113. package/dist/test/components/declaration.test.d.ts.map +1 -0
  114. package/dist/test/components/list.test.d.ts +2 -0
  115. package/dist/test/components/list.test.d.ts.map +1 -0
  116. package/dist/test/components/wrap.test.d.ts +2 -0
  117. package/dist/test/components/wrap.test.d.ts.map +1 -0
  118. package/dist/test/control-flow/for.test.d.ts +2 -0
  119. package/dist/test/control-flow/for.test.d.ts.map +1 -0
  120. package/dist/test/control-flow/match.test.d.ts +2 -0
  121. package/dist/test/control-flow/match.test.d.ts.map +1 -0
  122. package/dist/test/control-flow/show.test.d.ts +2 -0
  123. package/dist/test/control-flow/show.test.d.ts.map +1 -0
  124. package/dist/test/reactivity/cleanup.test.d.ts +2 -0
  125. package/dist/test/reactivity/cleanup.test.d.ts.map +1 -0
  126. package/dist/test/reactivity/memo.test.d.ts +2 -0
  127. package/dist/test/reactivity/memo.test.d.ts.map +1 -0
  128. package/dist/test/reactivity/untrack.test.d.ts +2 -0
  129. package/dist/test/reactivity/untrack.test.d.ts.map +1 -0
  130. package/dist/test/rendering/formatting.test.d.ts +2 -0
  131. package/dist/test/rendering/formatting.test.d.ts.map +1 -0
  132. package/dist/test/rendering/memoization.test.d.ts +2 -0
  133. package/dist/test/rendering/memoization.test.d.ts.map +1 -0
  134. package/dist/test/split-props.test.d.ts +2 -0
  135. package/dist/test/split-props.test.d.ts.map +1 -0
  136. package/dist/test/stc.test.d.ts.map +1 -1
  137. package/dist/test/utils.test.d.ts.map +1 -1
  138. package/dist/testing/extend-expect.js +4 -4
  139. package/dist/testing/extend-expect.js.map +1 -1
  140. package/dist/testing/render.d.ts +2 -3
  141. package/dist/testing/render.d.ts.map +1 -1
  142. package/dist/testing/render.js +2 -4
  143. package/dist/testing/render.js.map +1 -1
  144. package/dist/tsconfig.tsbuildinfo +1 -1
  145. package/package.json +6 -8
  146. package/src/binder.ts +54 -18
  147. package/src/code.ts +17 -12
  148. package/src/components/Block.tsx +44 -0
  149. package/src/components/Declaration.tsx +10 -4
  150. package/src/components/For.tsx +81 -0
  151. package/src/components/Indent.tsx +20 -27
  152. package/src/components/List.tsx +94 -0
  153. package/src/components/MemberDeclaration.tsx +9 -6
  154. package/src/components/MemberScope.tsx +4 -2
  155. package/src/components/Output.tsx +25 -13
  156. package/src/components/Scope.tsx +4 -2
  157. package/src/components/Show.tsx +11 -0
  158. package/src/components/SourceDirectory.tsx +5 -1
  159. package/src/components/SourceFile.tsx +12 -16
  160. package/src/components/StatementList.tsx +16 -0
  161. package/src/components/Switch.tsx +62 -0
  162. package/src/components/Wrap.tsx +29 -0
  163. package/src/components/index.tsx +8 -1
  164. package/src/components/stc/index.ts +18 -1
  165. package/src/context/index.ts +0 -1
  166. package/src/context.ts +2 -3
  167. package/src/index.browser.ts +2 -0
  168. package/src/index.ts +1 -0
  169. package/src/jsx-runtime.ts +245 -23
  170. package/src/render.ts +392 -198
  171. package/src/stc.ts +95 -0
  172. package/src/utils.ts +162 -95
  173. package/src/write-output.ts +3 -3
  174. package/temp/api.json +8407 -3301
  175. package/test/browser-build.test.ts +91 -0
  176. package/test/children.test.tsx +8 -10
  177. package/test/components/block.test.tsx +48 -0
  178. package/test/components/declaration.test.tsx +37 -0
  179. package/test/components/list.test.tsx +91 -0
  180. package/test/components/slot.test.tsx +31 -25
  181. package/test/components/source-file.test.tsx +11 -31
  182. package/test/components/wrap.test.tsx +42 -0
  183. package/test/control-flow/for.test.tsx +194 -0
  184. package/test/control-flow/match.test.tsx +49 -0
  185. package/test/control-flow/show.test.tsx +25 -0
  186. package/test/name-policy.test.tsx +5 -5
  187. package/test/reactivity/cleanup.test.tsx +91 -0
  188. package/test/reactivity/memo.test.tsx +17 -0
  189. package/test/reactivity/ref-rendering.test.tsx +3 -8
  190. package/test/reactivity/test.test.tsx +7 -6
  191. package/test/reactivity/untrack.test.ts +33 -0
  192. package/test/rendering/basic.test.tsx +25 -47
  193. package/test/rendering/code.test.tsx +3 -3
  194. package/test/rendering/formatting.test.tsx +487 -0
  195. package/test/rendering/indent.test.tsx +42 -529
  196. package/test/rendering/memoization.test.tsx +30 -0
  197. package/test/split-props.test.ts +87 -0
  198. package/test/stc.test.tsx +29 -8
  199. package/test/symbols.test.ts +87 -8
  200. package/test/utils.test.tsx +129 -20
  201. package/testing/extend-expect.ts +14 -4
  202. package/testing/render.ts +2 -4
  203. package/testing/vitest.d.ts +6 -1
  204. package/vitest.config.ts +1 -1
  205. package/dist/src/context/indent.d.ts +0 -5
  206. package/dist/src/context/indent.d.ts.map +0 -1
  207. package/dist/src/context/indent.js +0 -8
  208. package/dist/src/context/indent.js.map +0 -1
  209. package/dist/test/rendering/linebreaks.test.d.ts +0 -2
  210. package/dist/test/rendering/linebreaks.test.d.ts.map +0 -1
  211. package/src/context/indent.ts +0 -17
  212. package/test/rendering/linebreaks.test.tsx +0 -72
@@ -1,154 +1,136 @@
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
+ indentIfBreak,
19
+ line,
20
+ lineSuffix,
21
+ lineSuffixBoundary,
22
+ literalline,
23
+ markAsRoot,
24
+ softline,
25
+ ifBreak
26
+ }
27
+ } = prettier;
8
28
 
9
29
  /**
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:
30
+ * Turning components into source text involves three different trees produced
31
+ * sequentially:
32
+ *
33
+ * 1. Component tree, built by the nesting of components
34
+ * 2. Rendered text tree, produced by *rendering* the component tree
35
+ * 3. Document tree, produced by *printing* the rendered text tree
36
+ *
37
+ * Finally, the document tree is converted to text via `prettier`. Let's look at
38
+ * each of these trees and the conversions in detail.
39
+ *
40
+ * # Component tree
41
+ *
42
+ * The component tree is built by JSX or STC templates. The nodes in this tree
43
+ * are defined by the type `Child` and are one of the following
44
+ *
45
+ * ## Primitive values
46
+ *
47
+ * Strings in the tree are placed into the rendered text tree as-is. Numbers are
48
+ * converted to strings. Falsy primitive values and booleans are converted to
49
+ * empty strings (and may cause a line break to be ignored, see below).
50
+ *
51
+ * ## Nullary functions
52
+ *
53
+ * Nullary functions represent computed or reactive values in the component
54
+ * tree, such as expressions placed into a JSX template with curly brackets.
55
+ * Nullary functions return `Children` which are then recursively rendered.
56
+ * Nullary functions are invoked in an effect which will update the rendered
57
+ * text tree when any reactive dependencies change.
58
+ *
59
+ * ## Component creators
13
60
  *
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.
61
+ * Component creators are a special kind of nullary function which instantiate
62
+ * components in order to get their children which are then recursively
63
+ * rendered. Component creators have some special rendering behavior, such as
64
+ * tracking the stack of rendered components. Like other nullary functions,
65
+ * component creators are invoked in an effect which will update the rendered
66
+ * text tree when any reactive dependencies change.
18
67
  *
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.
68
+ * ## Refs
24
69
  *
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.
70
+ * Refs are wrapped in a nullary function and rendered in an effect which will
71
+ * update the rendered text tree when the ref's value changes. This is
72
+ * essentially a syntactic convenience, allowing JSX templates to contain
73
+ * `\{ someRef \}` instead of `\{ someRef.value \}`.
32
74
  *
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.
75
+ * ## Refkey
37
76
  *
38
- * So the high level process for rendering while normalizing whitespace is as
39
- * follows:
77
+ * Refkeys are replaced with a component creator for the Reference component
78
+ * associated with the current source file. This allows creating references by
79
+ * placing them directly in the component tree e.g. `{ someRefkey }`.
40
80
  *
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.
81
+ * ## CustomContext
66
82
  *
67
- * Let's look at a few examples of each of these phases:
83
+ * CustomContext is a special kind of component which allows rendering children
84
+ * within a custom reactive context. This enables components to manually manage
85
+ * the lifetime of their reactive contexts.
68
86
  *
69
- * ## Explicit indentation
87
+ * ## IntrinsicElement
70
88
  *
71
- * ### Input
72
- * ```
73
- * <Indent>
74
- * <Foo />
75
- * <Foo />
76
- * </Indent>
77
- * ```
89
+ * Various intrinsic elements exist to control formatting. These elements
90
+ * provide Print Hooks that are called during Printing.
78
91
  *
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
- * ```
92
+ * # Rendered Text Tree
95
93
  *
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
- * ```
94
+ * This tree is a nested array structure containing the rendered output of all
95
+ * the components in the component tree. This structure is updated reactively
96
+ * when reactive dependencies change. The nodes in this tree are predominantly
97
+ * strings, but can also be Print Hooks.
113
98
  *
114
- * ## Implicit indentation
99
+ * This tree is built by the `renderTree` function.
115
100
  *
116
- * ### Input
117
- * ```
118
- * <>
119
- * base
120
- * <Foo /> <Foo />
121
- * </>
122
- * ```
101
+ * # Document Tree
123
102
  *
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
- * ```
103
+ * This tree is constructed by calling `printTree` on the rendered text tree.
104
+ * The rendered text tree is walked and the appropriate Prettier builders are
105
+ * called to produce a document tree. The result is then passed to Prettier's
106
+ * `printDocToString` function to produce the final source text.
137
107
  */
138
108
 
139
- //
140
-
141
109
  const nodesToContext = new WeakMap();
142
110
  export function getContextForRenderNode(node) {
143
111
  return nodesToContext.get(node);
144
112
  }
113
+ export const printHookTag = Symbol();
114
+ export function createRenderTreeHook(subtree, hooks) {
115
+ return {
116
+ [printHookTag]: true,
117
+ subtree,
118
+ ...hooks
119
+ };
120
+ }
121
+ export function isPrintHook(type) {
122
+ return typeof type === "object" && type !== null && printHookTag in type;
123
+ }
145
124
  function traceRender(phase, message) {
146
125
  return false;
147
- // console.log(`[\x1b[34m${phase}\x1b[0m]: ${message}`);
126
+ //console.log(`[\x1b[34m${phase}\x1b[0m]: ${message()}`);
148
127
  }
149
- export function render(children) {
128
+ export function render(children, options) {
150
129
  const tree = renderTree(children);
151
130
  let rootDirectory = undefined;
131
+
132
+ // when passing Output, the first render tree child is the Output component.
133
+ const rootRenderOptions = Array.isArray(tree) ? getContextForRenderNode(tree[0])?.meta?.printOptions ?? {} : {};
152
134
  collectSourceFiles(undefined, tree);
153
135
  if (!rootDirectory) {
154
136
  throw new Error("No root directory found. Make sure you are using the Output component.");
@@ -183,7 +165,11 @@ export function render(children) {
183
165
  kind: "file",
184
166
  path: context.meta?.sourceFile.path,
185
167
  filetype: context.meta?.sourceFile.filetype,
186
- contents: root.flat(Infinity).join("")
168
+ contents: printTree(root, {
169
+ printWidth: options?.printWidth ?? context.meta?.printOptions?.printWidth ?? rootRenderOptions.printWidth,
170
+ tabWidth: options?.tabWidth ?? context.meta?.printOptions?.tabWidth ?? rootRenderOptions.tabWidth,
171
+ useTabs: options?.useTabs ?? context.meta?.printOptions?.useTabs ?? rootRenderOptions.useTabs
172
+ })
187
173
  };
188
174
  currentDirectory.contents.push(sourceFile);
189
175
  } else {
@@ -198,12 +184,9 @@ export function render(children) {
198
184
  }
199
185
  export function renderTree(children) {
200
186
  const rootElem = [];
201
- const state = {
202
- newline: false
203
- };
204
187
  try {
205
188
  root(() => {
206
- renderWorker(rootElem, children, state);
189
+ renderWorker(rootElem, children);
207
190
  });
208
191
  } catch (e) {
209
192
  printRenderStack();
@@ -211,71 +194,162 @@ export function renderTree(children) {
211
194
  }
212
195
  return rootElem;
213
196
  }
214
- function renderWorker(node, children, state) {
197
+ function renderWorker(node, children) {
215
198
  traceRender("render", () => dumpChildren(children));
216
199
  if (Array.isArray(node)) {
217
200
  nodesToContext.set(node, getContext());
218
201
  }
219
- const indent = useContext(IndentContext);
220
202
  if (Array.isArray(children)) {
221
- for (const child of children) {
222
- appendChild(node, child, indent, state);
203
+ for (const child of children.flat(Infinity)) {
204
+ appendChild(node, child);
223
205
  }
224
206
  } else {
225
- appendChild(node, children, indent, state);
207
+ appendChild(node, children);
226
208
  }
227
209
  }
228
- function appendChild(node, rawChild, indentState, state) {
229
- traceRender("appendChild", () => printChild(rawChild));
210
+ function appendChild(node, rawChild) {
211
+ traceRender("appendChild", () => debugPrintChild(rawChild));
230
212
  const child = normalizeChild(rawChild);
231
213
  if (typeof child === "string") {
232
- if (child.match(/\n\s*$/)) {
233
- state.newline = true;
234
- } else {
235
- state.newline = false;
214
+ node.push(child);
215
+ } else {
216
+ const cache = getElementCache();
217
+ if (cache.has(child)) {
218
+ traceRender("appendChild:cached", () => debugPrintChild(child));
219
+ node.push(cache.get(child));
220
+ return;
236
221
  }
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);
222
+ if (isCustomContext(child)) {
223
+ traceRender("appendChild:custom-context", () => debugPrintChild(child));
224
+ child.useCustomContext(children => {
225
+ const newNode = [];
226
+ renderWorker(newNode, children);
227
+ node.push(newNode);
228
+ cache.set(child, newNode);
229
+ });
230
+ } else if (isIntrinsicElement(child)) {
231
+ // don't need a new context here because intrinsics are never reactive
232
+ traceRender("appendChild:intrinsic-element", () => debugPrintChild(child));
233
+ const newNode = [];
234
+ function formatHookWithChildren(command) {
235
+ node.push(createRenderTreeHook(newNode, {
236
+ print(tree, print) {
237
+ return command(print(tree));
238
+ }
239
+ }));
240
+ renderWorker(newNode, child.props.children);
245
241
  }
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();
242
+ function formatHook(command) {
243
+ return node.push(createRenderTreeHook(newNode, {
244
+ print() {
245
+ return command;
246
+ }
247
+ }));
261
248
  }
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));
249
+ switch (child.name) {
250
+ case "indent":
251
+ return formatHookWithChildren(indent);
252
+ case "indentIfBreak":
253
+ node.push(createRenderTreeHook(newNode, {
254
+ print(tree, print) {
255
+ return indentIfBreak(print(tree), {
256
+ groupId: child.props.groupId,
257
+ negate: child.props.negate
258
+ });
259
+ }
260
+ }));
261
+ renderWorker(newNode, child.props.children);
262
+ return;
263
+ case "fill":
264
+ return formatHookWithChildren(fill);
265
+ case "group":
266
+ node.push(createRenderTreeHook(newNode, {
267
+ print(tree, print) {
268
+ return group(print(tree), {
269
+ id: child.props.id,
270
+ shouldBreak: child.props.shouldBreak
271
+ });
272
+ }
273
+ }));
274
+ renderWorker(newNode, child.props.children);
275
+ return;
276
+ case "line":
277
+ case "br":
278
+ return formatHook(line);
279
+ case "hbr":
280
+ case "hardline":
281
+ return formatHook(hardline);
282
+ case "sbr":
283
+ case "softline":
284
+ return formatHook(softline);
285
+ case "literalline":
286
+ case "lbr":
287
+ return formatHook(literalline);
288
+ case "align":
289
+ node.push(createRenderTreeHook(newNode, {
290
+ print(tree, print) {
291
+ return align(child.props.width ?? child.props.string, print(tree));
292
+ }
293
+ }));
294
+ renderWorker(newNode, child.props.children);
295
+ return;
296
+ case "lineSuffix":
297
+ return formatHookWithChildren(lineSuffix);
298
+ case "lineSuffixBoundary":
299
+ return formatHook(lineSuffixBoundary);
300
+ case "breakParent":
301
+ return formatHook(breakParent);
302
+ case "dedent":
303
+ return formatHookWithChildren(dedent);
304
+ case "dedentToRoot":
305
+ return formatHookWithChildren(dedentToRoot);
306
+ case "markAsRoot":
307
+ return formatHookWithChildren(markAsRoot);
308
+ case "ifBreak":
309
+ node.push(createRenderTreeHook(newNode, {
310
+ print(tree, print) {
311
+ return ifBreak(print(tree[0]), print(tree[1]));
312
+ }
313
+ }));
314
+ newNode.push([], []);
315
+ renderWorker(newNode[0], child.props.children);
316
+ renderWorker(newNode[1], child.props.flatContents);
317
+ return;
318
+ default:
319
+ throw new Error("Unknown intrinsic element");
320
+ }
321
+ } else if (isComponentCreator(child)) {
322
+ effect(() => {
323
+ traceRender("appendChild:component", () => debugPrintChild(child));
324
+ const componentRoot = [];
325
+ pushStack(child.component, child.props);
326
+ renderWorker(componentRoot, untrack(child));
327
+ popStack();
328
+ node.push(componentRoot);
329
+ cache.set(child, componentRoot);
330
+ traceRender("appendChild:component-done", () => debugPrintChild(child));
331
+ });
332
+ } else if (typeof child === "function") {
333
+ traceRender("appendChild:memo", () => child.toString());
334
+ const index = node.length;
335
+ effect(() => {
336
+ traceRender("memoEffect:run", () => "");
337
+ let res = child();
338
+ while (typeof res === "function" && !isComponentCreator(res)) {
339
+ res = res();
340
+ }
341
+ const newNodes = [];
342
+ renderWorker(newNodes, res);
343
+ node[index] = newNodes;
344
+ cache.set(child, newNodes);
345
+ return newNodes;
346
+ });
347
+ traceRender("appendChild:memo-done", () => "");
348
+ } else {
349
+ throw new Error("Unexpected child type");
350
+ }
273
351
  }
274
352
  }
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
353
  function normalizeChild(child) {
280
354
  if (Array.isArray(child)) {
281
355
  return child.map(normalizeChild);
@@ -295,17 +369,21 @@ function normalizeChild(child) {
295
369
  refkey: child
296
370
  });
297
371
  };
372
+ } else if (isCustomContext(child)) {
373
+ return child;
374
+ } else if (isIntrinsicElement(child)) {
375
+ return child;
298
376
  } else {
299
377
  return String(child);
300
378
  }
301
379
  }
302
380
  function dumpChildren(children) {
303
381
  if (Array.isArray(children)) {
304
- return `[ ${children.map(printChild).join(", ")} ]`;
382
+ return `[ ${children.map(debugPrintChild).join(", ")} ]`;
305
383
  }
306
- return printChild(children);
384
+ return debugPrintChild(children);
307
385
  }
308
- function printChild(child) {
386
+ function debugPrintChild(child) {
309
387
  if (isComponentCreator(child)) {
310
388
  return "<" + child.component.name + ">";
311
389
  } else if (typeof child === "function") {
@@ -316,4 +394,30 @@ function printChild(child) {
316
394
  return JSON.stringify(child);
317
395
  }
318
396
  }
397
+ const defaultPrintTreeOptions = {
398
+ printWidth: 80,
399
+ tabWidth: 2
400
+ };
401
+ export function printTree(tree, options) {
402
+ options = {
403
+ ...defaultPrintTreeOptions,
404
+ ...Object.fromEntries(Object.entries(options ?? {}).filter(([_, v]) => v !== undefined))
405
+ };
406
+ const d = printTreeWorker(tree);
407
+ return doc.printer.printDocToString(d, options).formatted;
408
+ }
409
+ function printTreeWorker(tree) {
410
+ const doc = [];
411
+ for (const node of tree) {
412
+ if (typeof node === "string") {
413
+ const normalizedNode = node.split(/\r?\n/).flatMap((line, index, array) => index < array.length - 1 ? [line, hardline] : [line]);
414
+ doc.push(normalizedNode);
415
+ } else if (isPrintHook(node)) {
416
+ doc.push(node.print(node.subtree, printTreeWorker));
417
+ } else {
418
+ doc.push(printTreeWorker(node));
419
+ }
420
+ }
421
+ return doc;
422
+ }
319
423
  //# 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,OAAqB,EAAE;EACzD,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","indentIfBreak","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","groupId","negate","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,aAAa;IACbC,IAAI;IACJC,UAAU;IACVC,kBAAkB;IAClBC,WAAW;IACXC,UAAU;IACVC,QAAQ;IACRC;EACF;AACF,CAAC,GAAG/B,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,MAAMgC,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,YA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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"}