@fluixi/compiler 1.0.0-alpha.93 → 1.0.0-alpha.94

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 (90) hide show
  1. package/dist/analyze/intrinsics.cjs +13 -1
  2. package/dist/analyze/intrinsics.d.cts +14 -0
  3. package/dist/analyze/intrinsics.d.ts +14 -0
  4. package/dist/analyze/intrinsics.d.ts.map +1 -1
  5. package/dist/analyze/intrinsics.js +17 -0
  6. package/dist/analyze/intrinsics.mjs +13 -1
  7. package/dist/analyze/static-graph.cjs +1 -1
  8. package/dist/analyze/static-graph.mjs +1 -1
  9. package/dist/{babel-RJHJQVEM.mjs → babel-RJFQVFJW.mjs} +4 -4
  10. package/dist/{chunk-56QSOVVL.mjs → chunk-DP2QDWWH.mjs} +1 -1
  11. package/dist/{chunk-R7PPFBCL.mjs → chunk-E2RWTIYE.mjs} +21 -15
  12. package/dist/{chunk-OD53TMER.mjs → chunk-HCCBEJEZ.mjs} +13 -1
  13. package/dist/{chunk-TJIH7TLX.mjs → chunk-HIZU7WI2.mjs} +1 -1
  14. package/dist/{chunk-U7HCFLZ2.mjs → chunk-ZR2QHTEX.mjs} +356 -24
  15. package/dist/codegen/backends/imperative.cjs +1 -1
  16. package/dist/codegen/backends/imperative.d.ts.map +1 -1
  17. package/dist/codegen/backends/imperative.js +2 -1
  18. package/dist/codegen/backends/imperative.mjs +1 -1
  19. package/dist/frontend/babel/build-ir-lit.cjs +352 -22
  20. package/dist/frontend/babel/build-ir-lit.mjs +352 -22
  21. package/dist/frontend/babel/build-ir.cjs +352 -22
  22. package/dist/frontend/babel/build-ir.mjs +352 -22
  23. package/dist/frontend/babel/index.cjs +353 -23
  24. package/dist/frontend/babel/index.mjs +353 -23
  25. package/dist/frontend/babel/lower-template.cjs +352 -22
  26. package/dist/frontend/babel/lower-template.mjs +352 -22
  27. package/dist/frontend/babel/plugin.cjs +352 -22
  28. package/dist/frontend/babel/plugin.mjs +352 -22
  29. package/dist/index.cjs +321 -22
  30. package/dist/index.mjs +333 -22
  31. package/dist/integrations.cjs +1174 -49
  32. package/dist/integrations.d.ts.map +1 -1
  33. package/dist/integrations.js +44 -2
  34. package/dist/integrations.mjs +205 -19
  35. package/dist/lower/compile-template.cjs +315 -21
  36. package/dist/lower/compile-template.d.cts +13 -0
  37. package/dist/lower/compile-template.d.ts +13 -0
  38. package/dist/lower/compile-template.d.ts.map +1 -1
  39. package/dist/lower/compile-template.js +3 -0
  40. package/dist/lower/compile-template.mjs +327 -21
  41. package/dist/lower/entities.cjs +288 -0
  42. package/dist/lower/entities.d.cts +1 -0
  43. package/dist/lower/entities.d.ts +2 -0
  44. package/dist/lower/entities.d.ts.map +1 -0
  45. package/dist/lower/entities.js +54 -0
  46. package/dist/lower/entities.mjs +267 -0
  47. package/dist/lower/jsx.cjs +104 -47
  48. package/dist/lower/jsx.d.cts +8 -0
  49. package/dist/lower/jsx.d.ts +8 -0
  50. package/dist/lower/jsx.d.ts.map +1 -1
  51. package/dist/lower/jsx.js +92 -2
  52. package/dist/lower/jsx.mjs +104 -47
  53. package/dist/lower/template.cjs +293 -20
  54. package/dist/lower/template.d.ts.map +1 -1
  55. package/dist/lower/template.js +35 -19
  56. package/dist/lower/template.mjs +293 -20
  57. package/dist/resolve/builtins.cjs +1 -1
  58. package/dist/resolve/builtins.mjs +1 -1
  59. package/dist/resolve/component-globals.cjs +6 -1
  60. package/dist/resolve/component-globals.js +2 -2
  61. package/dist/resolve/component-globals.mjs +6 -1
  62. package/dist/resolve/write-globals.cjs +6 -1
  63. package/dist/resolve/write-globals.mjs +6 -1
  64. package/dist/{server-fns-ZFRDIQ2X.mjs → server-fns-JLSTKWPS.mjs} +4 -4
  65. package/dist/{server-functions-CTDXX67X.mjs → server-functions-BGY3RD4R.mjs} +3 -3
  66. package/dist/transform/index.cjs +956 -33
  67. package/dist/transform/index.mjs +974 -47
  68. package/dist/transform/props.mjs +19 -14
  69. package/dist/transform/server-fns.mjs +19 -14
  70. package/dist/transform/styles.cjs +588 -0
  71. package/dist/transform/styles.d.cts +211 -0
  72. package/dist/transform/styles.d.ts +212 -0
  73. package/dist/transform/styles.d.ts.map +1 -0
  74. package/dist/transform/styles.js +714 -0
  75. package/dist/transform/styles.mjs +653 -0
  76. package/dist/transform/templates.cjs +955 -32
  77. package/dist/transform/templates.d.cts +13 -0
  78. package/dist/transform/templates.d.ts +13 -0
  79. package/dist/transform/templates.d.ts.map +1 -1
  80. package/dist/transform/templates.js +49 -12
  81. package/dist/transform/templates.mjs +973 -46
  82. package/dist/{transform-QWWQDCXE.mjs → transform-GBP6Y4UI.mjs} +601 -17
  83. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  84. package/dist/vite-styles.cjs +180 -0
  85. package/dist/vite-styles.d.cts +59 -0
  86. package/dist/vite-styles.d.ts +60 -0
  87. package/dist/vite-styles.d.ts.map +1 -0
  88. package/dist/vite-styles.js +198 -0
  89. package/dist/vite-styles.mjs +159 -0
  90. package/package.json +4 -3
@@ -24,9 +24,11 @@ __export(intrinsics_exports, {
24
24
  PRIMITIVE_MODULES: () => PRIMITIVE_MODULES,
25
25
  REACTIVE_MODULE: () => REACTIVE_MODULE,
26
26
  RUNTIME_PRIMITIVES: () => RUNTIME_PRIMITIVES,
27
+ TAG_INTRINSICS: () => TAG_INTRINSICS,
27
28
  isIntrinsicName: () => isIntrinsicName,
28
29
  isPrimitiveModule: () => isPrimitiveModule,
29
- mayHaveIntrinsic: () => mayHaveIntrinsic
30
+ mayHaveIntrinsic: () => mayHaveIntrinsic,
31
+ tagIntrinsics: () => tagIntrinsics
30
32
  });
31
33
  module.exports = __toCommonJS(intrinsics_exports);
32
34
  var REACTIVE_MODULE = "@fluixi/reactive/signal";
@@ -88,6 +90,16 @@ var PRIMITIVE_MODULES = [
88
90
  "@fluixi/reactive/cached-resource",
89
91
  "@fluixi/core"
90
92
  ];
93
+ var TAG_INTRINSICS = {
94
+ $html: { export: "html", module: "@fluixi/core" },
95
+ $svg: { export: "svg", module: "@fluixi/core" },
96
+ $css: { export: "css", module: "@fluixi/core" }
97
+ };
98
+ function tagIntrinsics(bound) {
99
+ const tags = /* @__PURE__ */ new Map();
100
+ for (const [name, tag] of Object.entries(TAG_INTRINSICS)) if (!bound.has(name)) tags.set(name, tag.export);
101
+ return tags;
102
+ }
91
103
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
92
104
  function mayHaveIntrinsic(code) {
93
105
  return INTRINSIC_CALL.test(code);
@@ -60,6 +60,20 @@ export declare const INTRINSICS: Readonly<Record<string, Intrinsic>>;
60
60
  export declare const RUNTIME_PRIMITIVES: Readonly<Record<string, Intrinsic['returns']>>;
61
61
  /** Modules whose exports count as reactive primitives. */
62
62
  export declare const PRIMITIVE_MODULES: readonly string[];
63
+ /**
64
+ * Cheap text check for the file-skipping fast path: a module with no `$` call never
65
+ * needs parsing. Non-global, so it has no lastIndex to carry between calls.
66
+ */
67
+ /**
68
+ * Template tags an app writes without importing them. Each compiles exactly like the marker
69
+ * it names; a module that binds the name itself keeps its own meaning.
70
+ */
71
+ export declare const TAG_INTRINSICS: Readonly<Record<string, {
72
+ export: 'html' | 'svg' | 'css';
73
+ module: string;
74
+ }>>;
75
+ /** The `$` tags this module can use: all of them, less the ones it binds. */
76
+ export declare function tagIntrinsics(bound: Set<string>): Map<string, 'html' | 'svg' | 'css'>;
63
77
  export declare function mayHaveIntrinsic(code: string): boolean;
64
78
  export declare function isIntrinsicName(name: string): boolean;
65
79
  /** Whether a module path exports the reactive primitives. */
@@ -60,6 +60,20 @@ export declare const INTRINSICS: Readonly<Record<string, Intrinsic>>;
60
60
  export declare const RUNTIME_PRIMITIVES: Readonly<Record<string, Intrinsic['returns']>>;
61
61
  /** Modules whose exports count as reactive primitives. */
62
62
  export declare const PRIMITIVE_MODULES: readonly string[];
63
+ /**
64
+ * Cheap text check for the file-skipping fast path: a module with no `$` call never
65
+ * needs parsing. Non-global, so it has no lastIndex to carry between calls.
66
+ */
67
+ /**
68
+ * Template tags an app writes without importing them. Each compiles exactly like the marker
69
+ * it names; a module that binds the name itself keeps its own meaning.
70
+ */
71
+ export declare const TAG_INTRINSICS: Readonly<Record<string, {
72
+ export: 'html' | 'svg' | 'css';
73
+ module: string;
74
+ }>>;
75
+ /** The `$` tags this module can use: all of them, less the ones it binds. */
76
+ export declare function tagIntrinsics(bound: Set<string>): Map<string, 'html' | 'svg' | 'css'>;
63
77
  export declare function mayHaveIntrinsic(code: string): boolean;
64
78
  export declare function isIntrinsicName(name: string): boolean;
65
79
  /** Whether a module path exports the reactive primitives. */
@@ -1 +1 @@
1
- {"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../../src/analyze/intrinsics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GACpB,OAAO;AACT,6EAA6E;GAC3E,eAAe;AACjB,+CAA+C;GAC7C,aAAa;AACf,+DAA+D;GAC7D,cAAc;AAChB,oFAAoF;GAClF,iBAAiB;AACnB,8EAA8E;GAC5E,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,QAAQ,GACR,iBAAiB,CAAC;AAEtB,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,YAAY,GAAG,SAAS,YAAY,EAAE,CAAC;CACjD;AAED,0FAA0F;AAC1F,eAAO,MAAM,eAAe,4BAA4B,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAsC1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAiB7E,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAM9C,CAAC;AAQF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD"}
1
+ {"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../../src/analyze/intrinsics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GACpB,OAAO;AACT,6EAA6E;GAC3E,eAAe;AACjB,+CAA+C;GAC7C,aAAa;AACf,+DAA+D;GAC7D,cAAc;AAChB,oFAAoF;GAClF,iBAAiB;AACnB,8EAA8E;GAC5E,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,QAAQ,GACR,iBAAiB,CAAC;AAEtB,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,YAAY,GAAG,SAAS,YAAY,EAAE,CAAC;CACjD;AAED,0FAA0F;AAC1F,eAAO,MAAM,eAAe,4BAA4B,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAsC1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAiB7E,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAM9C,CAAC;AAEF;;;GAGG;AACH;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAIvG,CAAC;AAEF,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,CAIrF;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD"}
@@ -96,6 +96,23 @@ export const PRIMITIVE_MODULES = [
96
96
  * Cheap text check for the file-skipping fast path: a module with no `$` call never
97
97
  * needs parsing. Non-global, so it has no lastIndex to carry between calls.
98
98
  */
99
+ /**
100
+ * Template tags an app writes without importing them. Each compiles exactly like the marker
101
+ * it names; a module that binds the name itself keeps its own meaning.
102
+ */
103
+ export const TAG_INTRINSICS = {
104
+ $html: { export: 'html', module: '@fluixi/core' },
105
+ $svg: { export: 'svg', module: '@fluixi/core' },
106
+ $css: { export: 'css', module: '@fluixi/core' },
107
+ };
108
+ /** The `$` tags this module can use: all of them, less the ones it binds. */
109
+ export function tagIntrinsics(bound) {
110
+ const tags = new Map();
111
+ for (const [name, tag] of Object.entries(TAG_INTRINSICS))
112
+ if (!bound.has(name))
113
+ tags.set(name, tag.export);
114
+ return tags;
115
+ }
99
116
  const INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join('|')})\\s*\\(`);
100
117
  export function mayHaveIntrinsic(code) {
101
118
  return INTRINSIC_CALL.test(code);
@@ -58,6 +58,16 @@ var PRIMITIVE_MODULES = [
58
58
  "@fluixi/reactive/cached-resource",
59
59
  "@fluixi/core"
60
60
  ];
61
+ var TAG_INTRINSICS = {
62
+ $html: { export: "html", module: "@fluixi/core" },
63
+ $svg: { export: "svg", module: "@fluixi/core" },
64
+ $css: { export: "css", module: "@fluixi/core" }
65
+ };
66
+ function tagIntrinsics(bound) {
67
+ const tags = /* @__PURE__ */ new Map();
68
+ for (const [name, tag] of Object.entries(TAG_INTRINSICS)) if (!bound.has(name)) tags.set(name, tag.export);
69
+ return tags;
70
+ }
61
71
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
62
72
  function mayHaveIntrinsic(code) {
63
73
  return INTRINSIC_CALL.test(code);
@@ -73,7 +83,9 @@ export {
73
83
  PRIMITIVE_MODULES,
74
84
  REACTIVE_MODULE,
75
85
  RUNTIME_PRIMITIVES,
86
+ TAG_INTRINSICS,
76
87
  isIntrinsicName,
77
88
  isPrimitiveModule,
78
- mayHaveIntrinsic
89
+ mayHaveIntrinsic,
90
+ tagIntrinsics
79
91
  };
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
  "use strict";
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
3
  // src/analyze/static-graph.ts
4
4
  import { parse } from "@babel/parser";
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
  import {
3
3
  analyzeStatic,
4
4
  buildJsxIR,
@@ -10,13 +10,13 @@ import {
10
10
  lowerTemplate,
11
11
  resolveComponentSources,
12
12
  shapeOf
13
- } from "./chunk-U7HCFLZ2.mjs";
13
+ } from "./chunk-ZR2QHTEX.mjs";
14
14
  import {
15
15
  CORE_CONTROL_FLOW,
16
16
  ROUTER_COMPONENTS,
17
17
  createComponentResolver
18
- } from "./chunk-OD53TMER.mjs";
19
- import "./chunk-TJIH7TLX.mjs";
18
+ } from "./chunk-HCCBEJEZ.mjs";
19
+ import "./chunk-HIZU7WI2.mjs";
20
20
 
21
21
  // src/frontend/babel/plugin.ts
22
22
  import { declare } from "@babel/helper-plugin-utils";
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
3
  // src/transform/server-fn-id.ts
4
4
  function hash(s) {
@@ -1,6 +1,6 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
- // ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
3
+ // ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.6.0/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
4
4
  var comma = ",".charCodeAt(0);
5
5
  var semicolon = ";".charCodeAt(0);
6
6
  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@@ -11,16 +11,16 @@ for (let i = 0; i < chars.length; i++) {
11
11
  intToChar[i] = c;
12
12
  charToInt[c] = i;
13
13
  }
14
- function encodeInteger(builder, num, relative) {
15
- let delta = num - relative;
16
- delta = delta < 0 ? -delta << 1 | 1 : delta << 1;
14
+ function encodeInteger(builder, num) {
17
15
  do {
18
- let clamped = delta & 31;
19
- delta >>>= 5;
20
- if (delta > 0) clamped |= 32;
16
+ let clamped = num & 31;
17
+ num >>>= 5;
18
+ if (num > 0) clamped |= 32;
21
19
  builder.write(intToChar[clamped]);
22
- } while (delta > 0);
23
- return num;
20
+ } while (num > 0);
21
+ }
22
+ function encodeSign(num) {
23
+ return num < 0 ? -num << 1 | 1 : num << 1;
24
24
  }
25
25
  var bufLength = 1024 * 16;
26
26
  var td = typeof TextDecoder !== "undefined" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== "undefined" ? {
@@ -70,13 +70,18 @@ function encode(decoded) {
70
70
  for (let j = 0; j < line.length; j++) {
71
71
  const segment = line[j];
72
72
  if (j > 0) writer.write(comma);
73
- genColumn = encodeInteger(writer, segment[0], genColumn);
73
+ encodeInteger(writer, encodeSign(segment[0] - genColumn));
74
+ genColumn = segment[0];
74
75
  if (segment.length === 1) continue;
75
- sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);
76
- sourceLine = encodeInteger(writer, segment[2], sourceLine);
77
- sourceColumn = encodeInteger(writer, segment[3], sourceColumn);
76
+ encodeInteger(writer, encodeSign(segment[1] - sourcesIndex));
77
+ encodeInteger(writer, encodeSign(segment[2] - sourceLine));
78
+ encodeInteger(writer, encodeSign(segment[3] - sourceColumn));
79
+ sourcesIndex = segment[1];
80
+ sourceLine = segment[2];
81
+ sourceColumn = segment[3];
78
82
  if (segment.length === 4) continue;
79
- namesIndex = encodeInteger(writer, segment[4], namesIndex);
83
+ encodeInteger(writer, encodeSign(segment[4] - namesIndex));
84
+ namesIndex = segment[4];
80
85
  }
81
86
  }
82
87
  return writer.flush();
@@ -1074,5 +1079,6 @@ var MagicString = class _MagicString {
1074
1079
  };
1075
1080
 
1076
1081
  export {
1082
+ encode,
1077
1083
  MagicString
1078
1084
  };
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
3
  // src/resolve/component-resolver.ts
4
4
  var isMapRule = (rule) => "components" in rule;
@@ -152,6 +152,16 @@ var PRIMITIVE_MODULES = [
152
152
  "@fluixi/reactive/cached-resource",
153
153
  "@fluixi/core"
154
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
+ }
155
165
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
156
166
  function mayHaveIntrinsic(code) {
157
167
  return INTRINSIC_CALL.test(code);
@@ -172,6 +182,8 @@ export {
172
182
  builtinComponentMap,
173
183
  INTRINSICS,
174
184
  RUNTIME_PRIMITIVES,
185
+ TAG_INTRINSICS,
186
+ tagIntrinsics,
175
187
  mayHaveIntrinsic,
176
188
  isIntrinsicName,
177
189
  isPrimitiveModule
@@ -1,4 +1,4 @@
1
- /*! @fluixi/compiler v1.0.0-alpha.93 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
1
+ /*! @fluixi/compiler v1.0.0-alpha.94 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
3
3
  get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
4
4
  }) : x)(function(x) {