@memoized-dom/compiler 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/README.md +106 -28
  2. package/dist/analysis/access-table.d.ts +1 -1
  3. package/dist/analysis/access-table.d.ts.map +1 -1
  4. package/dist/analysis/component-graph.d.ts +16 -1
  5. package/dist/analysis/component-graph.d.ts.map +1 -1
  6. package/dist/analysis/component-reads.d.ts +1 -1
  7. package/dist/analysis/component-reads.d.ts.map +1 -1
  8. package/dist/analysis/computed.d.ts +9 -5
  9. package/dist/analysis/computed.d.ts.map +1 -1
  10. package/dist/analysis/instance-control-flow.d.ts +1 -1
  11. package/dist/analysis/instance-control-flow.d.ts.map +1 -1
  12. package/dist/analysis/instance.d.ts +3 -4
  13. package/dist/analysis/instance.d.ts.map +1 -1
  14. package/dist/analysis/module-discovery.d.ts +27 -0
  15. package/dist/analysis/module-discovery.d.ts.map +1 -0
  16. package/dist/analysis/opaque-volatility.d.ts +7 -0
  17. package/dist/analysis/opaque-volatility.d.ts.map +1 -0
  18. package/dist/analysis/runtime-pattern.d.ts +3 -4
  19. package/dist/analysis/runtime-pattern.d.ts.map +1 -1
  20. package/dist/analysis/type-candidates.d.ts +15 -3
  21. package/dist/analysis/type-candidates.d.ts.map +1 -1
  22. package/dist/analysis.d.ts +7 -4
  23. package/dist/analysis.d.ts.map +1 -1
  24. package/dist/ast/builders.d.ts +108 -0
  25. package/dist/ast/builders.d.ts.map +1 -0
  26. package/dist/ast/compiler-types.d.ts +196 -0
  27. package/dist/ast/compiler-types.d.ts.map +1 -0
  28. package/dist/ast/factory.d.ts +139 -0
  29. package/dist/ast/factory.d.ts.map +1 -0
  30. package/dist/ast/index.d.ts +15 -0
  31. package/dist/ast/index.d.ts.map +1 -0
  32. package/dist/ast/mutate.d.ts +17 -0
  33. package/dist/ast/mutate.d.ts.map +1 -0
  34. package/dist/ast/normalize.d.ts +9 -0
  35. package/dist/ast/normalize.d.ts.map +1 -0
  36. package/dist/ast/parser.d.ts +72 -0
  37. package/dist/ast/parser.d.ts.map +1 -0
  38. package/dist/ast/printer.d.ts +23 -0
  39. package/dist/ast/printer.d.ts.map +1 -0
  40. package/dist/ast/scope.d.ts +44 -0
  41. package/dist/ast/scope.d.ts.map +1 -0
  42. package/dist/ast/strip-typescript.d.ts +9 -0
  43. package/dist/ast/strip-typescript.d.ts.map +1 -0
  44. package/dist/ast/transform.d.ts +21 -0
  45. package/dist/ast/transform.d.ts.map +1 -0
  46. package/dist/ast/tsrx/frontend.d.ts +8 -0
  47. package/dist/ast/tsrx/frontend.d.ts.map +1 -0
  48. package/dist/ast/tsrx/index.d.ts +5 -0
  49. package/dist/ast/tsrx/index.d.ts.map +1 -0
  50. package/dist/ast/tsrx/lower.d.ts +8 -0
  51. package/dist/ast/tsrx/lower.d.ts.map +1 -0
  52. package/dist/ast/tsrx/style.d.ts +8 -0
  53. package/dist/ast/tsrx/style.d.ts.map +1 -0
  54. package/dist/ast/tsrx/types.d.ts +50 -0
  55. package/dist/ast/tsrx/types.d.ts.map +1 -0
  56. package/dist/ast/types.d.ts +478 -0
  57. package/dist/ast/types.d.ts.map +1 -0
  58. package/dist/ast/walk.d.ts +22 -0
  59. package/dist/ast/walk.d.ts.map +1 -0
  60. package/dist/cells.d.ts +10 -0
  61. package/dist/cells.d.ts.map +1 -0
  62. package/dist/compile.d.ts +30 -14
  63. package/dist/compile.d.ts.map +1 -1
  64. package/dist/component-linker.d.ts +5 -1
  65. package/dist/component-linker.d.ts.map +1 -1
  66. package/dist/components/callback-props.d.ts +1 -1
  67. package/dist/components/callback-props.d.ts.map +1 -1
  68. package/dist/components/calls.d.ts +1 -1
  69. package/dist/components/calls.d.ts.map +1 -1
  70. package/dist/components/children.d.ts +5 -3
  71. package/dist/components/children.d.ts.map +1 -1
  72. package/dist/components/declarations.d.ts +10 -3
  73. package/dist/components/declarations.d.ts.map +1 -1
  74. package/dist/components/jsx-values.d.ts +2 -4
  75. package/dist/components/jsx-values.d.ts.map +1 -1
  76. package/dist/components/local-derived.d.ts +1 -1
  77. package/dist/components/local-derived.d.ts.map +1 -1
  78. package/dist/components/manifest.d.ts +2 -3
  79. package/dist/components/manifest.d.ts.map +1 -1
  80. package/dist/components/prop-effects.d.ts.map +1 -1
  81. package/dist/components/prop-linker.d.ts.map +1 -1
  82. package/dist/components/prop-origins.d.ts +2 -0
  83. package/dist/components/prop-origins.d.ts.map +1 -1
  84. package/dist/components/prop-projections.d.ts.map +1 -1
  85. package/dist/components/prop-shape.d.ts +11 -0
  86. package/dist/components/prop-shape.d.ts.map +1 -0
  87. package/dist/components/props.d.ts +9 -1
  88. package/dist/components/props.d.ts.map +1 -1
  89. package/dist/components/ref-props.d.ts.map +1 -1
  90. package/dist/components/render-callbacks.d.ts +9 -5
  91. package/dist/components/render-callbacks.d.ts.map +1 -1
  92. package/dist/components/render-functions.d.ts +1 -0
  93. package/dist/components/render-functions.d.ts.map +1 -1
  94. package/dist/components/render-prelude.d.ts +1 -1
  95. package/dist/components/render-prelude.d.ts.map +1 -1
  96. package/dist/components/return-plan.d.ts +13 -7
  97. package/dist/components/return-plan.d.ts.map +1 -1
  98. package/dist/conds.d.ts +6 -3
  99. package/dist/conds.d.ts.map +1 -1
  100. package/dist/context/ast.d.ts +18 -5
  101. package/dist/context/ast.d.ts.map +1 -1
  102. package/dist/context/model.d.ts +146 -13
  103. package/dist/context/model.d.ts.map +1 -1
  104. package/dist/data-sources.d.ts +78 -0
  105. package/dist/data-sources.d.ts.map +1 -0
  106. package/dist/diagnostics.d.ts +20 -0
  107. package/dist/diagnostics.d.ts.map +1 -0
  108. package/dist/effects.d.ts +13 -5
  109. package/dist/effects.d.ts.map +1 -1
  110. package/dist/emission/component.d.ts +3 -3
  111. package/dist/emission/component.d.ts.map +1 -1
  112. package/dist/emission/conditional-region.d.ts +6 -5
  113. package/dist/emission/conditional-region.d.ts.map +1 -1
  114. package/dist/emission/dom-template.d.ts.map +1 -1
  115. package/dist/emission/list-region.d.ts +6 -4
  116. package/dist/emission/list-region.d.ts.map +1 -1
  117. package/dist/emission/node-emitter.d.ts +4 -3
  118. package/dist/emission/node-emitter.d.ts.map +1 -1
  119. package/dist/emission/render-callback.d.ts +4 -3
  120. package/dist/emission/render-callback.d.ts.map +1 -1
  121. package/dist/emission/route-region.d.ts +10 -0
  122. package/dist/emission/route-region.d.ts.map +1 -0
  123. package/dist/emission/scope.d.ts +14 -2
  124. package/dist/emission/scope.d.ts.map +1 -1
  125. package/dist/emit.d.ts +5 -4
  126. package/dist/emit.d.ts.map +1 -1
  127. package/dist/errors.d.ts +15 -0
  128. package/dist/errors.d.ts.map +1 -0
  129. package/dist/handler-commits.d.ts +6 -1
  130. package/dist/handler-commits.d.ts.map +1 -1
  131. package/dist/handler-origin.d.ts +1 -1
  132. package/dist/handler-origin.d.ts.map +1 -1
  133. package/dist/handlers/analyze.d.ts +1 -1
  134. package/dist/handlers/analyze.d.ts.map +1 -1
  135. package/dist/handlers/local-calls.d.ts +2 -2
  136. package/dist/handlers/local-calls.d.ts.map +1 -1
  137. package/dist/handlers.d.ts +6 -5
  138. package/dist/handlers.d.ts.map +1 -1
  139. package/dist/helper-summaries.d.ts +2 -3
  140. package/dist/helper-summaries.d.ts.map +1 -1
  141. package/dist/identifiers.d.ts +15 -8
  142. package/dist/identifiers.d.ts.map +1 -1
  143. package/dist/index.d.ts +6 -2
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +3 -1
  146. package/dist/jsx/attributes.d.ts +1 -1
  147. package/dist/jsx/attributes.d.ts.map +1 -1
  148. package/dist/jsx/children.d.ts +3 -2
  149. package/dist/jsx/children.d.ts.map +1 -1
  150. package/dist/jsx/conditional-directives.d.ts +21 -0
  151. package/dist/jsx/conditional-directives.d.ts.map +1 -0
  152. package/dist/jsx/dom-attributes.d.ts +1 -1
  153. package/dist/jsx/dom-attributes.d.ts.map +1 -1
  154. package/dist/jsx/dynamic-tags.d.ts +9 -15
  155. package/dist/jsx/dynamic-tags.d.ts.map +1 -1
  156. package/dist/jsx/events.d.ts +2 -3
  157. package/dist/jsx/events.d.ts.map +1 -1
  158. package/dist/jsx/refs.d.ts +5 -4
  159. package/dist/jsx/refs.d.ts.map +1 -1
  160. package/dist/jsx/svg.d.ts +2 -2
  161. package/dist/jsx/svg.d.ts.map +1 -1
  162. package/dist/jsx-types.d.ts +42 -0
  163. package/dist/jsx-types.d.ts.map +1 -0
  164. package/dist/lifecycle.d.ts +10 -5
  165. package/dist/lifecycle.d.ts.map +1 -1
  166. package/dist/linker.d.ts +56 -5
  167. package/dist/linker.d.ts.map +1 -1
  168. package/dist/lists/calculated-sources.d.ts +1 -1
  169. package/dist/lists/calculated-sources.d.ts.map +1 -1
  170. package/dist/lists/map-site.d.ts +16 -8
  171. package/dist/lists/map-site.d.ts.map +1 -1
  172. package/dist/lists/source-shapes.d.ts +12 -3
  173. package/dist/lists/source-shapes.d.ts.map +1 -1
  174. package/dist/lists/static-derived.d.ts +37 -0
  175. package/dist/lists/static-derived.d.ts.map +1 -0
  176. package/dist/lists/targeted-refresh.d.ts +9 -2
  177. package/dist/lists/targeted-refresh.d.ts.map +1 -1
  178. package/dist/lists.d.ts +1 -0
  179. package/dist/lists.d.ts.map +1 -1
  180. package/dist/module-control-flow.d.ts +7 -6
  181. package/dist/module-control-flow.d.ts.map +1 -1
  182. package/dist/mutation-analysis.d.ts +22 -8
  183. package/dist/mutation-analysis.d.ts.map +1 -1
  184. package/dist/plugin.d.ts +15 -14
  185. package/dist/plugin.d.ts.map +1 -1
  186. package/dist/router.d.ts +32 -0
  187. package/dist/router.d.ts.map +1 -0
  188. package/dist/server-functions.d.ts +49 -0
  189. package/dist/server-functions.d.ts.map +1 -0
  190. package/package.json +34 -30
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * mutation-analysis.ts - shared provenance helpers for conservative writes.
3
3
  *
4
- * Tracks local aliases back to reactive roots using Babel binding identity.
4
+ * Tracks local aliases back to reactive roots using lexical binding identity.
5
5
  * Consumers decide whether a resolved origin permits a precise write key or
6
6
  * whether reassignment/destructuring requires a root-subtree fallback.
7
7
  */
8
- import type { Binding, Scope } from '@babel/traverse';
9
- import * as t from '@babel/types';
8
+ import type * as t from './ast/compiler-types';
10
9
  import { type StateKind } from './context';
11
10
  export type ReactiveLocality = 'module' | 'instance' | 'row' | 'prop';
12
11
  export interface ReactiveOrigin {
@@ -17,20 +16,35 @@ export interface ReactiveOrigin {
17
16
  key: string | null;
18
17
  stateKind?: StateKind;
19
18
  }
20
- type OriginFallback = (name: string, binding: Binding | undefined) => ReactiveOrigin | null;
19
+ type OriginFallback = (name: string, binding: BindingLike | undefined) => ReactiveOrigin | null;
20
+ /** Minimal parser-neutral binding contract needed by alias analysis. */
21
+ export interface BindingLike {
22
+ identifier: object;
23
+ scope: ScopeLike;
24
+ }
25
+ /** Parser adapters and compiler ESTree scopes can satisfy this contract. */
26
+ export interface ScopeLike {
27
+ block: object;
28
+ isProgramScope?: boolean;
29
+ path?: {
30
+ isProgram(): boolean;
31
+ };
32
+ getBinding(name: string): BindingLike | undefined;
33
+ }
34
+ export declare function bindingScopeIsProgram(binding: BindingLike): boolean;
21
35
  export declare class AliasTracker {
22
36
  private readonly fallback;
23
37
  private readonly origins;
24
38
  constructor(fallback: OriginFallback);
25
- trackDeclarator(scope: Scope, declarator: t.VariableDeclarator): void;
39
+ trackDeclarator(scope: ScopeLike, declarator: t.VariableDeclarator): void;
26
40
  /**
27
41
  * Find reactive values mentioned inside an expression when its resulting
28
42
  * provenance cannot be represented as one exact origin (for example a
29
43
  * conditional alias or destructuring source).
30
44
  */
31
- referencedOrigins(scope: Scope, node: t.Node): ReactiveOrigin[];
32
- resolveName(scope: Scope, name: string): ReactiveOrigin | null;
33
- resolveExpression(scope: Scope, raw: t.Node): ReactiveOrigin | null;
45
+ referencedOrigins(scope: ScopeLike, node: t.Node): ReactiveOrigin[];
46
+ resolveName(scope: ScopeLike, name: string): ReactiveOrigin | null;
47
+ resolveExpression(scope: ScopeLike, raw: t.Node): ReactiveOrigin | null;
34
48
  }
35
49
  export declare function moduleOrigin(name: string, stateKind: StateKind): ReactiveOrigin;
36
50
  /** Append a helper-summary path to an argument's resolved reactive origin. */
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-analysis.d.ts","sourceRoot":"","sources":["../src/mutation-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,KAAK,cAAc,GAAG,CACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GAAG,SAAS,KACzB,cAAc,GAAG,IAAI,CAAC;AAE3B,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;gBAE1C,QAAQ,EAAE,cAAc;IAErD,eAAe,CACb,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,CAAC,CAAC,kBAAkB,GAC/B,IAAI;IAaP;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,cAAc,EAAE;IA8B/D,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAS9D,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,cAAc,GAAG,IAAI;CAoBpE;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GACnB,cAAc,CAOhB;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,cAAc,CAMhB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,mBAAmB,CAAC,EAAE,GACjG,MAAM,EAAE,GAAG,IAAI,CAoBjB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,mBAAmB,CAAC,EAAE,GAC9F,CAAC,CAAC,UAAU,EAAE,CAOhB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAIlE"}
1
+ {"version":3,"file":"mutation-analysis.d.ts","sourceRoot":"","sources":["../src/mutation-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,KAAK,cAAc,GAAG,CACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,GAAG,SAAS,KAC7B,cAAc,GAAG,IAAI,CAAC;AAE3B,wEAAwE;AACxE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,4EAA4E;AAC5E,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE;QAAE,SAAS,IAAI,OAAO,CAAA;KAAE,CAAC;IAChC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CACnD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAKnE;AAED,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IAEjE,YAA6B,QAAQ,EAAE,cAAc,EAAI;IAEzD,eAAe,CACb,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,CAAC,CAAC,kBAAkB,GAC/B,IAAI,CAWN;IAED;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,cAAc,EAAE,CAqBlE;IAED,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAOjE;IAED,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,cAAc,GAAG,IAAI,CAoCtE;CACF;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GACnB,cAAc,CAOhB;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,cAAc,CAMhB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,mBAAmB,CAAC,EAAE,GACjG,MAAM,EAAE,GAAG,IAAI,CAoBjB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,mBAAmB,CAAC,EAAE,GAC9F,CAAC,CAAC,UAAU,EAAE,CAOhB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAIlE"}
package/dist/plugin.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * plugin.ts — the memo-dom Babel plugin (compiler frontend #1), thin shell.
2
+ * plugin.ts — the parser-neutral Memoized DOM program transform.
3
3
  *
4
4
  * Coordinates the emission-spec passes; implementation is partitioned into:
5
5
  * context.ts - shared binding and canonical identity facts
@@ -9,19 +9,20 @@
9
9
  * emit.ts - DOM nodes and structural regions
10
10
  * components/ and jsx/ - prop/slot contracts and authored JSX semantics
11
11
  *
12
- * L1 limitations (clear compile errors by design):
13
- * - components must be top-level `function` declarations (no arrows)
14
- * - direct JSX returns plus R27 structural tail-return control flow
15
- * - spread attributes preserve overrides through general DOM patching
16
- * - children slots mount once at a direct host insertion point
17
- * - conditional JSX uses anchored R8/R27 regions
18
- * - no nested lists or component calls inside inline rows
12
+ * Source-shape constraints use clear compile errors by design. Top-level
13
+ * function declarations and synchronous uppercase const function expressions
14
+ * are components; JSX return control flow, repeated render slots, and nested
15
+ * row composition are normalized before the core analysis/emission passes.
19
16
  */
20
- import type { Visitor } from '@babel/traverse';
21
- import { type MemoDomOptions } from './context';
17
+ import type * as t from './ast/compiler-types';
18
+ import { type InternalMemoDomOptions, type MemoDomOptions } from './context';
19
+ interface ProgramDiagnostic {
20
+ node: t.Program;
21
+ buildCodeFrameError(message: string, at?: t.Node): Error;
22
+ }
23
+ export interface ProgramTransformPath extends ProgramDiagnostic {
24
+ }
22
25
  export type { MemoDomOptions };
23
- export default function memoDomPlugin(_api: unknown, opts?: MemoDomOptions): {
24
- name: string;
25
- visitor: Visitor;
26
- };
26
+ /** Transform a plain ESTree program and leave the result in strict ESTree. */
27
+ export declare function transformEstreeProgram(programPath: ProgramTransformPath, opts?: InternalMemoDomOptions): void;
27
28
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AA2JnB,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,IAAI,EAAE,OAAO,EACb,IAAI,GAAE,cAAmB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAoEpC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAQ/C,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AA4KnB,UAAU,iBAAiB;IACzB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;IAChB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;CAC1D;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;CAAG;AAoDlE,YAAY,EAAE,cAAc,EAAE,CAAC;AA2H/B,8EAA8E;AAC9E,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,oBAAoB,EACjC,IAAI,GAAE,sBAA2B,GAChC,IAAI,CAGN"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Compiler-owned JSX routing analysis.
3
+ *
4
+ * `route` and `route-to` are universal compiler properties. They are removed
5
+ * before ordinary JSX prop analysis, leaving no DOM attributes or component
6
+ * props behind.
7
+ */
8
+ import type * as t from './ast/compiler-types';
9
+ import type { Ctx } from './context';
10
+ export interface CompilerRouteDefinition {
11
+ readonly id: string;
12
+ readonly moduleId: string;
13
+ readonly pattern: string;
14
+ readonly fullPattern: string;
15
+ readonly parentId?: string;
16
+ readonly line?: number;
17
+ readonly column?: number;
18
+ }
19
+ export interface CompilerRouteElement extends CompilerRouteDefinition {
20
+ }
21
+ interface ProgramContainer {
22
+ node: t.Program;
23
+ buildCodeFrameError(message: string, at?: t.Node): Error;
24
+ }
25
+ export declare function validateCompilerRoutePattern(pattern: string): string;
26
+ export declare function collectCompilerRoutes(root: t.File | t.Program, moduleId: string): CompilerRouteDefinition[];
27
+ export declare function validateCompilerRouteGraph(definitions: readonly CompilerRouteDefinition[]): void;
28
+ /** Analyze, validate, and erase compiler-owned route properties. */
29
+ export declare function analyzeRouterJsx(ctx: Ctx, programPath: ProgramContainer): void;
30
+ export declare function routeManifestStatements(ctx: Ctx): t.Statement[];
31
+ export {};
32
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,sBAAsB,CAAC;AAQ/C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAMrC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAqB,SAAQ,uBAAuB;CAAG;AAOxE,UAAU,gBAAgB;IACxB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;IAChB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;CAC1D;AAqED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmCpE;AAsGD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,EACxB,QAAQ,EAAE,MAAM,GACf,uBAAuB,EAAE,CAG3B;AAqBD,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,SAAS,uBAAuB,EAAE,GAC9C,IAAI,CAsBN;AAsQD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,gBAAgB,GAC5B,IAAI,CA0GN;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAqC/D"}
@@ -0,0 +1,49 @@
1
+ import { type EstreeFrontend } from './ast';
2
+ export type ServerFunctionMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
3
+ export type ServerFunctionQueryKind = 'string' | 'number' | 'boolean' | 'string[]' | 'number[]' | 'boolean[]';
4
+ export interface ServerFunctionParameter {
5
+ readonly name: string;
6
+ readonly optional: boolean;
7
+ /** Present only for GET query decoding; mutation bodies retain JSON types. */
8
+ readonly queryKind?: ServerFunctionQueryKind;
9
+ }
10
+ export interface ServerFunctionDefinition {
11
+ readonly exported: string;
12
+ readonly local: string;
13
+ readonly method: ServerFunctionMethod;
14
+ readonly path: string;
15
+ readonly parameters: readonly ServerFunctionParameter[];
16
+ }
17
+ export interface ServerFunctionModule {
18
+ readonly moduleId: string;
19
+ readonly moduleName: string;
20
+ readonly middlewareExport: boolean;
21
+ readonly functions: readonly ServerFunctionDefinition[];
22
+ }
23
+ export interface AnalyzeServerFunctionOptions {
24
+ readonly moduleId: string;
25
+ readonly functionsRoot?: string;
26
+ readonly frontend?: EstreeFrontend;
27
+ }
28
+ export declare function serverFunctionModuleName(moduleId: string, functionsRoot?: string): string;
29
+ export declare function analyzeServerFunctionModule(source: string, options: AnalyzeServerFunctionOptions): ServerFunctionModule;
30
+ export declare function generateServerFunctionClient(module: ServerFunctionModule, dataModule?: string): string;
31
+ export interface ServerFunctionDeclarationOptions {
32
+ /**
33
+ * Resolves each analyzed module id to the specifier the generated file uses
34
+ * to type-import its real implementation. Type-only, so it erases at runtime
35
+ * and never pulls the server dependency graph into a client build.
36
+ */
37
+ readonly resolveImplementation: (moduleId: string) => string;
38
+ readonly dataModule?: string;
39
+ }
40
+ /**
41
+ * Emit the client-facing declaration barrel for the application's server
42
+ * functions. Signatures reference the real implementations through
43
+ * `Parameters`/`ReturnType`, so server builds keep their ordinary async
44
+ * TypeScript types while client imports see the colorless `ResolvedValue<T>`
45
+ * contract (readable as `T`, `$track`-able). Exported names must be unique
46
+ * across modules because the barrel is one flat module.
47
+ */
48
+ export declare function generateServerFunctionDeclarations(modules: readonly ServerFunctionModule[], options: ServerFunctionDeclarationOptions): string;
49
+ //# sourceMappingURL=server-functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-functions.d.ts","sourceRoot":"","sources":["../src/server-functions.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AAIf,MAAM,MAAM,oBAAoB,GAC5B,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,CAAC;AAEb,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,UAAU,GACV,UAAU,GACV,WAAW,CAAC;AAEhB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACzD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACzD;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;CACpC;AAkBD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,aAAa,SAAqB,GACjC,MAAM,CAwBR;AAqMD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,4BAA4B,GACpC,oBAAoB,CAkEtB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,oBAAoB,EAC5B,UAAU,SAAuB,GAChC,MAAM,CAoBR;AAED,MAAM,WAAW,gCAAgC;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,OAAO,EAAE,gCAAgC,GACxC,MAAM,CA8BR"}
package/package.json CHANGED
@@ -1,30 +1,34 @@
1
- {
2
- "name": "@memoized-dom/compiler",
3
- "version": "0.0.4",
4
- "description": "Binding-aware TypeScript and JSX compiler for memoized-dom",
5
- "type": "module",
6
- "sideEffects": false,
7
- "files": [
8
- "dist"
9
- ],
10
- "exports": {
11
- ".": {
12
- "types": "./dist/index.d.ts",
13
- "import": "./dist/index.js",
14
- "default": "./dist/index.js"
15
- }
16
- },
17
- "scripts": {
18
- "build": "bun run ./scripts/clean.ts && esbuild ./src/index.ts --bundle --outfile=./dist/index.js --platform=node --format=esm --target=node20 --packages=external --minify && tsc -p tsconfig.build.json"
19
- },
20
- "dependencies": {
21
- "@babel/core": "^8.0.1",
22
- "@babel/plugin-syntax-jsx": "^8.0.1",
23
- "@babel/plugin-transform-typescript": "^8.0.1",
24
- "@babel/traverse": "^8.0.4",
25
- "@babel/types": "^8.0.4"
26
- },
27
- "publishConfig": {
28
- "access": "public"
29
- }
30
- }
1
+ {
2
+ "name": "@memoized-dom/compiler",
3
+ "version": "0.0.6",
4
+ "description": "Binding-aware TypeScript and JSX compiler for memoized-dom",
5
+ "type": "module",
6
+ "engines": {
7
+ "node": ">=24.11.0"
8
+ },
9
+ "sideEffects": false,
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js",
17
+ "default": "./dist/index.js"
18
+ },
19
+ "./jsx": {
20
+ "types": "./dist/jsx-types.d.ts"
21
+ }
22
+ },
23
+ "scripts": {
24
+ "build": "bun run ./scripts/clean.ts && rolldown -c rolldown.config.ts && tsc -p tsconfig.build.json"
25
+ },
26
+ "dependencies": {
27
+ "@tsrx/core": "0.1.63",
28
+ "esrap": "^2.3.6",
29
+ "yuku-parser": "^0.9.3"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ }
34
+ }