@fluixi/compiler 1.0.0-alpha.100

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 (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +131 -0
  3. package/dist/analyze/expr-shape.cjs +62 -0
  4. package/dist/analyze/expr-shape.d.cts +14 -0
  5. package/dist/analyze/expr-shape.d.ts +15 -0
  6. package/dist/analyze/expr-shape.d.ts.map +1 -0
  7. package/dist/analyze/expr-shape.js +37 -0
  8. package/dist/analyze/expr-shape.mjs +41 -0
  9. package/dist/analyze/intrinsics.cjs +112 -0
  10. package/dist/analyze/intrinsics.d.cts +80 -0
  11. package/dist/analyze/intrinsics.d.ts +81 -0
  12. package/dist/analyze/intrinsics.d.ts.map +1 -0
  13. package/dist/analyze/intrinsics.js +126 -0
  14. package/dist/analyze/intrinsics.mjs +91 -0
  15. package/dist/analyze/paren.cjs +134 -0
  16. package/dist/analyze/paren.d.cts +23 -0
  17. package/dist/analyze/paren.d.ts +24 -0
  18. package/dist/analyze/paren.d.ts.map +1 -0
  19. package/dist/analyze/paren.js +168 -0
  20. package/dist/analyze/paren.mjs +113 -0
  21. package/dist/analyze/props-destructure.cjs +226 -0
  22. package/dist/analyze/props-destructure.d.cts +83 -0
  23. package/dist/analyze/props-destructure.d.ts +84 -0
  24. package/dist/analyze/props-destructure.d.ts.map +1 -0
  25. package/dist/analyze/props-destructure.js +272 -0
  26. package/dist/analyze/props-destructure.mjs +205 -0
  27. package/dist/analyze/reactive-bindings.cjs +210 -0
  28. package/dist/analyze/reactive-bindings.d.cts +42 -0
  29. package/dist/analyze/reactive-bindings.d.ts +43 -0
  30. package/dist/analyze/reactive-bindings.d.ts.map +1 -0
  31. package/dist/analyze/reactive-bindings.js +191 -0
  32. package/dist/analyze/reactive-bindings.mjs +187 -0
  33. package/dist/analyze/reactive-expr.cjs +38 -0
  34. package/dist/analyze/reactive-expr.d.cts +38 -0
  35. package/dist/analyze/reactive-expr.d.ts +39 -0
  36. package/dist/analyze/reactive-expr.d.ts.map +1 -0
  37. package/dist/analyze/reactive-expr.js +31 -0
  38. package/dist/analyze/reactive-expr.mjs +17 -0
  39. package/dist/analyze/static-graph.cjs +831 -0
  40. package/dist/analyze/static-graph.d.cts +102 -0
  41. package/dist/analyze/static-graph.d.ts +103 -0
  42. package/dist/analyze/static-graph.d.ts.map +1 -0
  43. package/dist/analyze/static-graph.js +871 -0
  44. package/dist/analyze/static-graph.mjs +813 -0
  45. package/dist/babel-I6BUWUCU.mjs +636 -0
  46. package/dist/chunk-3AICWNF7.mjs +92 -0
  47. package/dist/chunk-6CWJWGE2.mjs +2170 -0
  48. package/dist/chunk-C3XPDB4Y.mjs +16 -0
  49. package/dist/chunk-GX5XV6Z7.mjs +190 -0
  50. package/dist/chunk-HXEXPWJ2.mjs +999 -0
  51. package/dist/chunk-NU3W67UZ.mjs +584 -0
  52. package/dist/chunk-SKAVY75W.mjs +11 -0
  53. package/dist/codegen/backend.cjs +18 -0
  54. package/dist/codegen/backend.d.cts +35 -0
  55. package/dist/codegen/backend.d.ts +36 -0
  56. package/dist/codegen/backend.d.ts.map +1 -0
  57. package/dist/codegen/backend.js +1 -0
  58. package/dist/codegen/backend.mjs +0 -0
  59. package/dist/codegen/backends/imperative.cjs +577 -0
  60. package/dist/codegen/backends/imperative.d.cts +11 -0
  61. package/dist/codegen/backends/imperative.d.ts +12 -0
  62. package/dist/codegen/backends/imperative.d.ts.map +1 -0
  63. package/dist/codegen/backends/imperative.js +362 -0
  64. package/dist/codegen/backends/imperative.mjs +554 -0
  65. package/dist/codegen/contract.cjs +52 -0
  66. package/dist/codegen/contract.d.cts +24 -0
  67. package/dist/codegen/contract.d.ts +25 -0
  68. package/dist/codegen/contract.d.ts.map +1 -0
  69. package/dist/codegen/contract.js +30 -0
  70. package/dist/codegen/contract.mjs +31 -0
  71. package/dist/codegen/partial-template.cjs +176 -0
  72. package/dist/codegen/partial-template.d.cts +61 -0
  73. package/dist/codegen/partial-template.d.ts +62 -0
  74. package/dist/codegen/partial-template.d.ts.map +1 -0
  75. package/dist/codegen/partial-template.js +0 -0
  76. package/dist/codegen/partial-template.mjs +153 -0
  77. package/dist/codegen/serialize-static.cjs +125 -0
  78. package/dist/codegen/serialize-static.d.cts +38 -0
  79. package/dist/codegen/serialize-static.d.ts +39 -0
  80. package/dist/codegen/serialize-static.d.ts.map +1 -0
  81. package/dist/codegen/serialize-static.js +165 -0
  82. package/dist/codegen/serialize-static.mjs +104 -0
  83. package/dist/frontend/babel/build-ir-lit.cjs +1933 -0
  84. package/dist/frontend/babel/build-ir-lit.d.cts +26 -0
  85. package/dist/frontend/babel/build-ir-lit.d.ts +27 -0
  86. package/dist/frontend/babel/build-ir-lit.d.ts.map +1 -0
  87. package/dist/frontend/babel/build-ir-lit.js +13 -0
  88. package/dist/frontend/babel/build-ir-lit.mjs +1902 -0
  89. package/dist/frontend/babel/build-ir.cjs +1948 -0
  90. package/dist/frontend/babel/build-ir.d.cts +35 -0
  91. package/dist/frontend/babel/build-ir.d.ts +36 -0
  92. package/dist/frontend/babel/build-ir.d.ts.map +1 -0
  93. package/dist/frontend/babel/build-ir.js +124 -0
  94. package/dist/frontend/babel/build-ir.mjs +1919 -0
  95. package/dist/frontend/babel/index.cjs +2610 -0
  96. package/dist/frontend/babel/index.d.cts +33 -0
  97. package/dist/frontend/babel/index.d.ts +34 -0
  98. package/dist/frontend/babel/index.d.ts.map +1 -0
  99. package/dist/frontend/babel/index.js +65 -0
  100. package/dist/frontend/babel/index.mjs +2580 -0
  101. package/dist/frontend/babel/lower-template.cjs +1931 -0
  102. package/dist/frontend/babel/lower-template.d.cts +23 -0
  103. package/dist/frontend/babel/lower-template.d.ts +24 -0
  104. package/dist/frontend/babel/lower-template.d.ts.map +1 -0
  105. package/dist/frontend/babel/lower-template.js +64 -0
  106. package/dist/frontend/babel/lower-template.mjs +1902 -0
  107. package/dist/frontend/babel/plugin.cjs +2556 -0
  108. package/dist/frontend/babel/plugin.d.cts +95 -0
  109. package/dist/frontend/babel/plugin.d.ts +96 -0
  110. package/dist/frontend/babel/plugin.d.ts.map +1 -0
  111. package/dist/frontend/babel/plugin.js +523 -0
  112. package/dist/frontend/babel/plugin.mjs +2527 -0
  113. package/dist/frontend/babel/server-functions.cjs +110 -0
  114. package/dist/frontend/babel/server-functions.d.cts +10 -0
  115. package/dist/frontend/babel/server-functions.d.ts +11 -0
  116. package/dist/frontend/babel/server-functions.d.ts.map +1 -0
  117. package/dist/frontend/babel/server-functions.js +81 -0
  118. package/dist/frontend/babel/server-functions.mjs +89 -0
  119. package/dist/frontend/babel/types.cjs +18 -0
  120. package/dist/frontend/babel/types.d.cts +33 -0
  121. package/dist/frontend/babel/types.d.ts +34 -0
  122. package/dist/frontend/babel/types.d.ts.map +1 -0
  123. package/dist/frontend/babel/types.js +1 -0
  124. package/dist/frontend/babel/types.mjs +0 -0
  125. package/dist/frontend/types.cjs +18 -0
  126. package/dist/frontend/types.d.cts +25 -0
  127. package/dist/frontend/types.d.ts +26 -0
  128. package/dist/frontend/types.d.ts.map +1 -0
  129. package/dist/frontend/types.js +1 -0
  130. package/dist/frontend/types.mjs +0 -0
  131. package/dist/frontend/vocabulary.cjs +98 -0
  132. package/dist/frontend/vocabulary.d.cts +79 -0
  133. package/dist/frontend/vocabulary.d.ts +80 -0
  134. package/dist/frontend/vocabulary.d.ts.map +1 -0
  135. package/dist/frontend/vocabulary.js +124 -0
  136. package/dist/frontend/vocabulary.mjs +77 -0
  137. package/dist/index.cjs +1957 -0
  138. package/dist/index.d.cts +27 -0
  139. package/dist/index.d.ts +28 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +38 -0
  142. package/dist/index.mjs +1949 -0
  143. package/dist/integrations.cjs +5705 -0
  144. package/dist/integrations.d.cts +215 -0
  145. package/dist/integrations.d.ts +216 -0
  146. package/dist/integrations.d.ts.map +1 -0
  147. package/dist/integrations.js +566 -0
  148. package/dist/integrations.mjs +810 -0
  149. package/dist/ir/nodes.cjs +18 -0
  150. package/dist/ir/nodes.d.cts +168 -0
  151. package/dist/ir/nodes.d.ts +169 -0
  152. package/dist/ir/nodes.d.ts.map +1 -0
  153. package/dist/ir/nodes.js +1 -0
  154. package/dist/ir/nodes.mjs +0 -0
  155. package/dist/lower/compile-template.cjs +1670 -0
  156. package/dist/lower/compile-template.d.cts +82 -0
  157. package/dist/lower/compile-template.d.ts +83 -0
  158. package/dist/lower/compile-template.d.ts.map +1 -0
  159. package/dist/lower/compile-template.js +79 -0
  160. package/dist/lower/compile-template.mjs +1662 -0
  161. package/dist/lower/entities.cjs +288 -0
  162. package/dist/lower/entities.d.cts +1 -0
  163. package/dist/lower/entities.d.ts +2 -0
  164. package/dist/lower/entities.d.ts.map +1 -0
  165. package/dist/lower/entities.js +54 -0
  166. package/dist/lower/entities.mjs +267 -0
  167. package/dist/lower/jsx.cjs +1101 -0
  168. package/dist/lower/jsx.d.cts +33 -0
  169. package/dist/lower/jsx.d.ts +34 -0
  170. package/dist/lower/jsx.d.ts.map +1 -0
  171. package/dist/lower/jsx.js +414 -0
  172. package/dist/lower/jsx.mjs +1078 -0
  173. package/dist/lower/template.cjs +1354 -0
  174. package/dist/lower/template.d.cts +53 -0
  175. package/dist/lower/template.d.ts +54 -0
  176. package/dist/lower/template.d.ts.map +1 -0
  177. package/dist/lower/template.js +542 -0
  178. package/dist/lower/template.mjs +1335 -0
  179. package/dist/lower/text.cjs +42 -0
  180. package/dist/lower/text.d.cts +10 -0
  181. package/dist/lower/text.d.ts +11 -0
  182. package/dist/lower/text.d.ts.map +1 -0
  183. package/dist/lower/text.js +31 -0
  184. package/dist/lower/text.mjs +21 -0
  185. package/dist/optimize/analyze-static.cjs +112 -0
  186. package/dist/optimize/analyze-static.d.cts +39 -0
  187. package/dist/optimize/analyze-static.d.ts +40 -0
  188. package/dist/optimize/analyze-static.d.ts.map +1 -0
  189. package/dist/optimize/analyze-static.js +131 -0
  190. package/dist/optimize/analyze-static.mjs +91 -0
  191. package/dist/optimize/collapse-strategies.cjs +90 -0
  192. package/dist/optimize/collapse-strategies.d.cts +30 -0
  193. package/dist/optimize/collapse-strategies.d.ts +31 -0
  194. package/dist/optimize/collapse-strategies.d.ts.map +1 -0
  195. package/dist/optimize/collapse-strategies.js +33 -0
  196. package/dist/optimize/collapse-strategies.mjs +67 -0
  197. package/dist/options.cjs +33 -0
  198. package/dist/options.d.cts +39 -0
  199. package/dist/options.d.ts +40 -0
  200. package/dist/options.d.ts.map +1 -0
  201. package/dist/options.js +8 -0
  202. package/dist/options.mjs +12 -0
  203. package/dist/resolve/builtins.cjs +73 -0
  204. package/dist/resolve/builtins.d.cts +68 -0
  205. package/dist/resolve/builtins.d.ts +69 -0
  206. package/dist/resolve/builtins.d.ts.map +1 -0
  207. package/dist/resolve/builtins.js +64 -0
  208. package/dist/resolve/builtins.mjs +53 -0
  209. package/dist/resolve/component-globals.cjs +272 -0
  210. package/dist/resolve/component-globals.d.cts +88 -0
  211. package/dist/resolve/component-globals.d.ts +89 -0
  212. package/dist/resolve/component-globals.d.ts.map +1 -0
  213. package/dist/resolve/component-globals.js +160 -0
  214. package/dist/resolve/component-globals.mjs +249 -0
  215. package/dist/resolve/component-resolver.cjs +80 -0
  216. package/dist/resolve/component-resolver.d.cts +68 -0
  217. package/dist/resolve/component-resolver.d.ts +69 -0
  218. package/dist/resolve/component-resolver.d.ts.map +1 -0
  219. package/dist/resolve/component-resolver.js +95 -0
  220. package/dist/resolve/component-resolver.mjs +59 -0
  221. package/dist/resolve/load-directive.cjs +93 -0
  222. package/dist/resolve/load-directive.d.cts +53 -0
  223. package/dist/resolve/load-directive.d.ts +54 -0
  224. package/dist/resolve/load-directive.d.ts.map +1 -0
  225. package/dist/resolve/load-directive.js +93 -0
  226. package/dist/resolve/load-directive.mjs +72 -0
  227. package/dist/resolve/resolve-ir.cjs +108 -0
  228. package/dist/resolve/resolve-ir.d.cts +53 -0
  229. package/dist/resolve/resolve-ir.d.ts +54 -0
  230. package/dist/resolve/resolve-ir.d.ts.map +1 -0
  231. package/dist/resolve/resolve-ir.js +58 -0
  232. package/dist/resolve/resolve-ir.mjs +85 -0
  233. package/dist/resolve/write-globals.cjs +383 -0
  234. package/dist/resolve/write-globals.d.cts +36 -0
  235. package/dist/resolve/write-globals.d.ts +37 -0
  236. package/dist/resolve/write-globals.d.ts.map +1 -0
  237. package/dist/resolve/write-globals.js +169 -0
  238. package/dist/resolve/write-globals.mjs +362 -0
  239. package/dist/server-fns-VZLHMQTC.mjs +79 -0
  240. package/dist/server-functions-UAZKOLZW.mjs +82 -0
  241. package/dist/transform/bindings.cjs +71 -0
  242. package/dist/transform/bindings.d.cts +16 -0
  243. package/dist/transform/bindings.d.ts +17 -0
  244. package/dist/transform/bindings.d.ts.map +1 -0
  245. package/dist/transform/bindings.js +69 -0
  246. package/dist/transform/bindings.mjs +50 -0
  247. package/dist/transform/index.cjs +3837 -0
  248. package/dist/transform/index.d.cts +15 -0
  249. package/dist/transform/index.d.ts +16 -0
  250. package/dist/transform/index.d.ts.map +1 -0
  251. package/dist/transform/index.js +12 -0
  252. package/dist/transform/index.mjs +4882 -0
  253. package/dist/transform/intrinsics.cjs +261 -0
  254. package/dist/transform/intrinsics.d.cts +33 -0
  255. package/dist/transform/intrinsics.d.ts +34 -0
  256. package/dist/transform/intrinsics.d.ts.map +1 -0
  257. package/dist/transform/intrinsics.js +120 -0
  258. package/dist/transform/intrinsics.mjs +238 -0
  259. package/dist/transform/props.cjs +441 -0
  260. package/dist/transform/props.d.cts +45 -0
  261. package/dist/transform/props.d.ts +46 -0
  262. package/dist/transform/props.d.ts.map +1 -0
  263. package/dist/transform/props.js +221 -0
  264. package/dist/transform/props.mjs +1487 -0
  265. package/dist/transform/server-fn-id.cjs +35 -0
  266. package/dist/transform/server-fn-id.d.cts +9 -0
  267. package/dist/transform/server-fn-id.d.ts +10 -0
  268. package/dist/transform/server-fn-id.d.ts.map +1 -0
  269. package/dist/transform/server-fn-id.js +18 -0
  270. package/dist/transform/server-fn-id.mjs +14 -0
  271. package/dist/transform/server-fns.cjs +114 -0
  272. package/dist/transform/server-fns.d.cts +12 -0
  273. package/dist/transform/server-fns.d.ts +13 -0
  274. package/dist/transform/server-fns.d.ts.map +1 -0
  275. package/dist/transform/server-fns.js +94 -0
  276. package/dist/transform/server-fns.mjs +1160 -0
  277. package/dist/transform/source-locations.cjs +393 -0
  278. package/dist/transform/source-locations.d.cts +48 -0
  279. package/dist/transform/source-locations.d.ts +49 -0
  280. package/dist/transform/source-locations.d.ts.map +1 -0
  281. package/dist/transform/source-locations.js +303 -0
  282. package/dist/transform/source-locations.mjs +370 -0
  283. package/dist/transform/styles.cjs +606 -0
  284. package/dist/transform/styles.d.cts +237 -0
  285. package/dist/transform/styles.d.ts +238 -0
  286. package/dist/transform/styles.d.ts.map +1 -0
  287. package/dist/transform/styles.js +743 -0
  288. package/dist/transform/styles.mjs +671 -0
  289. package/dist/transform/templates.cjs +3806 -0
  290. package/dist/transform/templates.d.cts +82 -0
  291. package/dist/transform/templates.d.ts +83 -0
  292. package/dist/transform/templates.d.ts.map +1 -0
  293. package/dist/transform/templates.js +613 -0
  294. package/dist/transform/templates.mjs +4852 -0
  295. package/dist/transform-3W45L3EA.mjs +951 -0
  296. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  297. package/dist/vite-styles.cjs +223 -0
  298. package/dist/vite-styles.d.cts +68 -0
  299. package/dist/vite-styles.d.ts +69 -0
  300. package/dist/vite-styles.d.ts.map +1 -0
  301. package/dist/vite-styles.js +241 -0
  302. package/dist/vite-styles.mjs +214 -0
  303. package/package.json +141 -0
@@ -0,0 +1,16 @@
1
+ /*! @fluixi/compiler v1.0.0-alpha.100 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
+
3
+ // src/transform/server-fn-id.ts
4
+ function hash(s) {
5
+ let h = 5381;
6
+ for (let i = 0; i < s.length; i++) h = h * 33 ^ s.charCodeAt(i);
7
+ return (h >>> 0).toString(16);
8
+ }
9
+ function serverFnId(filename, root, index) {
10
+ const rel = (filename || "unknown").replace(root ? root + "/" : "", "");
11
+ return `${hash(rel)}:${index}`;
12
+ }
13
+
14
+ export {
15
+ serverFnId
16
+ };
@@ -0,0 +1,190 @@
1
+ /*! @fluixi/compiler v1.0.0-alpha.100 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
+
3
+ // src/resolve/component-resolver.ts
4
+ var isMapRule = (rule) => "components" in rule;
5
+ function substitute(template, match) {
6
+ return template.replace(/\$(\d+)/g, (whole, index) => {
7
+ const group = match[Number(index)];
8
+ return group ?? whole;
9
+ });
10
+ }
11
+ function normalise(name, entry) {
12
+ return typeof entry === "string" ? { module: entry, export: name } : entry;
13
+ }
14
+ function createComponentResolver(rules = []) {
15
+ const exact = /* @__PURE__ */ new Map();
16
+ const conflicts = [];
17
+ const patterns = [];
18
+ for (const rule of rules) {
19
+ if (!isMapRule(rule)) {
20
+ patterns.push(rule);
21
+ continue;
22
+ }
23
+ for (const [name, entry] of Object.entries(rule.components)) {
24
+ const resolved = normalise(name, entry);
25
+ const existing = exact.get(name);
26
+ if (existing && existing.module !== resolved.module) {
27
+ const conflict = conflicts.find((c) => c.name === name);
28
+ if (conflict) conflict.modules.push(resolved.module);
29
+ else conflicts.push({ name, modules: [existing.module, resolved.module] });
30
+ continue;
31
+ }
32
+ exact.set(name, resolved);
33
+ }
34
+ }
35
+ const cache = /* @__PURE__ */ new Map();
36
+ const resolve = (name) => {
37
+ if (cache.has(name)) return cache.get(name);
38
+ let result = exact.get(name);
39
+ if (!result) {
40
+ for (const rule of patterns) {
41
+ const match = name.match(new RegExp(rule.match.source, rule.match.flags.replace("g", "")));
42
+ if (!match) continue;
43
+ result = {
44
+ module: substitute(rule.module, match),
45
+ export: rule.export ? substitute(rule.export, match) : name
46
+ };
47
+ break;
48
+ }
49
+ }
50
+ cache.set(name, result);
51
+ return result;
52
+ };
53
+ return {
54
+ resolve,
55
+ names: () => [...exact.keys()],
56
+ conflicts: () => conflicts
57
+ };
58
+ }
59
+
60
+ // src/resolve/builtins.ts
61
+ var DOM_CONTROL_FLOW = [
62
+ "Show",
63
+ "For",
64
+ "Index",
65
+ "Switch",
66
+ "Match",
67
+ "Portal",
68
+ "Dynamic",
69
+ "ErrorBoundary"
70
+ ];
71
+ var CORE_CONTROL_FLOW = ["Suspense", "SuspenseList", "Await"];
72
+ var ROUTER_COMPONENTS = ["Router", "Outlet", "Redirect", "Link"];
73
+ var BUILTIN_COMPONENTS = [
74
+ ...DOM_CONTROL_FLOW,
75
+ ...CORE_CONTROL_FLOW,
76
+ ...ROUTER_COMPONENTS
77
+ ];
78
+ var RESERVED_COMPONENTS = /* @__PURE__ */ new Set([
79
+ ...DOM_CONTROL_FLOW,
80
+ ...CORE_CONTROL_FLOW
81
+ ]);
82
+ function builtinComponentMap(modules = {}) {
83
+ const {
84
+ controlFlowModule = "@fluixi/dom",
85
+ coreModule = "@fluixi/core",
86
+ routerModule = "@fluixi/core/router"
87
+ } = modules;
88
+ const map = {};
89
+ for (const name of DOM_CONTROL_FLOW) map[name] = controlFlowModule;
90
+ for (const name of CORE_CONTROL_FLOW) map[name] = coreModule;
91
+ for (const name of ROUTER_COMPONENTS) map[name] = routerModule;
92
+ return map;
93
+ }
94
+
95
+ // src/analyze/intrinsics.ts
96
+ var REACTIVE_MODULE = "@fluixi/reactive/signal";
97
+ var INTRINSICS = {
98
+ $signal: { export: "signal", module: REACTIVE_MODULE, returns: "signal-handle" },
99
+ $memo: { export: "memo", module: REACTIVE_MODULE, returns: "memo-handle" },
100
+ $effect: { export: "effect", module: REACTIVE_MODULE, returns: "effect" },
101
+ $store: { export: "store", module: "@fluixi/reactive/store", returns: "store-handle" },
102
+ $resource: { export: "resource", module: REACTIVE_MODULE, returns: "resource-handle" },
103
+ $cachedResource: { export: "cachedResource", module: "@fluixi/reactive/cached-resource", returns: "resource-handle" },
104
+ // No short runtime form for these yet, so the intrinsic stands for the `create*`
105
+ // name. Still worth having: no import to write, and when a shorter form is
106
+ // designed, the change is this line rather than a compiler pass.
107
+ $selector: { export: "createSelector", module: REACTIVE_MODULE, returns: "memo-accessor" },
108
+ $deferred: { export: "createDeferred", module: REACTIVE_MODULE, returns: "memo-accessor" },
109
+ // Not value constructors, but the compiler has to know them: they change what a read
110
+ // does. `untrack` suppresses dependency collection, which is exactly the kind of thing
111
+ // dependency analysis must not guess at.
112
+ $untrack: { export: "untrack", module: REACTIVE_MODULE, returns: "plain" },
113
+ $untrackStore: { export: "untrackStore", module: "@fluixi/reactive/store", returns: "plain" },
114
+ // Scopes, scheduling and lifecycle: no value to classify, but the same authoring promise,
115
+ // no import to write. `$cleanup` registers a callback on the current owner (`onCleanup`).
116
+ $batch: { export: "batch", module: REACTIVE_MODULE, returns: "plain" },
117
+ $cleanup: { export: "onCleanup", module: REACTIVE_MODULE, returns: "plain" },
118
+ $root: { export: "root", module: REACTIVE_MODULE, returns: "plain" },
119
+ $context: { export: "context", module: REACTIVE_MODULE, returns: "plain" },
120
+ $renderEffect: { export: "renderEffect", module: REACTIVE_MODULE, returns: "effect" },
121
+ $computed: { export: "computed", module: REACTIVE_MODULE, returns: "effect" },
122
+ // Storage for where the code runs, and a signal kept in it. `$persisted` is a signal
123
+ // handle as far as reads go: the same accessor with `set` on it.
124
+ $storage: { export: "useStorage", module: "@fluixi/core/storage", returns: "plain" },
125
+ $asyncStorage: { export: "useAsyncStorage", module: "@fluixi/core/storage", returns: "plain" },
126
+ $persisted: { export: "persisted", module: "@fluixi/core/storage", returns: "signal-handle" },
127
+ // An environment variable, public or server-only; the browser build refuses a secret.
128
+ $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
129
+ };
130
+ var RUNTIME_PRIMITIVES = {
131
+ signal: "signal-handle",
132
+ memo: "memo-handle",
133
+ effect: "effect",
134
+ store: "store-handle",
135
+ createSignal: ["signal-accessor", "signal-setter"],
136
+ createMemo: "memo-accessor",
137
+ createEffect: "effect",
138
+ createRenderEffect: "effect",
139
+ renderEffect: "effect",
140
+ computed: "effect",
141
+ createStore: "reactive-object",
142
+ resource: "resource-handle",
143
+ cachedResource: "resource-handle",
144
+ createResource: "reactive-object",
145
+ createSelector: "memo-accessor",
146
+ createDeferred: "memo-accessor"
147
+ };
148
+ var PRIMITIVE_MODULES = [
149
+ "@fluixi/reactive",
150
+ "@fluixi/reactive/signal",
151
+ "@fluixi/reactive/store",
152
+ "@fluixi/reactive/cached-resource",
153
+ "@fluixi/core"
154
+ ];
155
+ var TAG_INTRINSICS = {
156
+ $html: { export: "html", module: "@fluixi/core" },
157
+ $svg: { export: "svg", module: "@fluixi/core" },
158
+ $css: { export: "css", module: "@fluixi/core" }
159
+ };
160
+ function tagIntrinsics(bound) {
161
+ const tags = /* @__PURE__ */ new Map();
162
+ for (const [name, tag] of Object.entries(TAG_INTRINSICS)) if (!bound.has(name)) tags.set(name, tag.export);
163
+ return tags;
164
+ }
165
+ var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
166
+ function mayHaveIntrinsic(code) {
167
+ return INTRINSIC_CALL.test(code);
168
+ }
169
+ function isIntrinsicName(name) {
170
+ return Object.prototype.hasOwnProperty.call(INTRINSICS, name);
171
+ }
172
+ function isPrimitiveModule(source) {
173
+ return PRIMITIVE_MODULES.includes(source);
174
+ }
175
+
176
+ export {
177
+ createComponentResolver,
178
+ DOM_CONTROL_FLOW,
179
+ CORE_CONTROL_FLOW,
180
+ ROUTER_COMPONENTS,
181
+ RESERVED_COMPONENTS,
182
+ builtinComponentMap,
183
+ INTRINSICS,
184
+ RUNTIME_PRIMITIVES,
185
+ TAG_INTRINSICS,
186
+ tagIntrinsics,
187
+ mayHaveIntrinsic,
188
+ isIntrinsicName,
189
+ isPrimitiveModule
190
+ };