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

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 (93) hide show
  1. package/LICENSE +1 -1
  2. package/dist/analyze/intrinsics.cjs +13 -1
  3. package/dist/analyze/intrinsics.d.cts +14 -0
  4. package/dist/analyze/intrinsics.d.ts +14 -0
  5. package/dist/analyze/intrinsics.d.ts.map +1 -1
  6. package/dist/analyze/intrinsics.js +17 -0
  7. package/dist/analyze/intrinsics.mjs +13 -1
  8. package/dist/analyze/static-graph.cjs +1 -1
  9. package/dist/analyze/static-graph.mjs +1 -1
  10. package/dist/{babel-RJHJQVEM.mjs → babel-V33QLJBF.mjs} +4 -4
  11. package/dist/{chunk-56QSOVVL.mjs → chunk-62F2LLBM.mjs} +1 -1
  12. package/dist/{chunk-R7PPFBCL.mjs → chunk-7GNSGUHK.mjs} +4 -83
  13. package/dist/{chunk-U7HCFLZ2.mjs → chunk-B64LVPTU.mjs} +356 -24
  14. package/dist/{chunk-OD53TMER.mjs → chunk-C3AK5PBV.mjs} +13 -1
  15. package/dist/{chunk-TJIH7TLX.mjs → chunk-GLFUPZ27.mjs} +1 -1
  16. package/dist/chunk-HUABRVWB.mjs +92 -0
  17. package/dist/chunk-XCWP7WJG.mjs +584 -0
  18. package/dist/codegen/backends/imperative.cjs +1 -1
  19. package/dist/codegen/backends/imperative.d.ts.map +1 -1
  20. package/dist/codegen/backends/imperative.js +2 -1
  21. package/dist/codegen/backends/imperative.mjs +1 -1
  22. package/dist/frontend/babel/build-ir-lit.cjs +352 -22
  23. package/dist/frontend/babel/build-ir-lit.mjs +352 -22
  24. package/dist/frontend/babel/build-ir.cjs +352 -22
  25. package/dist/frontend/babel/build-ir.mjs +352 -22
  26. package/dist/frontend/babel/index.cjs +353 -23
  27. package/dist/frontend/babel/index.mjs +353 -23
  28. package/dist/frontend/babel/lower-template.cjs +352 -22
  29. package/dist/frontend/babel/lower-template.mjs +352 -22
  30. package/dist/frontend/babel/plugin.cjs +352 -22
  31. package/dist/frontend/babel/plugin.mjs +352 -22
  32. package/dist/index.cjs +321 -22
  33. package/dist/index.mjs +333 -22
  34. package/dist/integrations.cjs +1240 -56
  35. package/dist/integrations.d.ts.map +1 -1
  36. package/dist/integrations.js +62 -9
  37. package/dist/integrations.mjs +257 -26
  38. package/dist/lower/compile-template.cjs +315 -21
  39. package/dist/lower/compile-template.d.cts +13 -0
  40. package/dist/lower/compile-template.d.ts +13 -0
  41. package/dist/lower/compile-template.d.ts.map +1 -1
  42. package/dist/lower/compile-template.js +3 -0
  43. package/dist/lower/compile-template.mjs +327 -21
  44. package/dist/lower/entities.cjs +288 -0
  45. package/dist/lower/entities.d.cts +1 -0
  46. package/dist/lower/entities.d.ts +2 -0
  47. package/dist/lower/entities.d.ts.map +1 -0
  48. package/dist/lower/entities.js +54 -0
  49. package/dist/lower/entities.mjs +267 -0
  50. package/dist/lower/jsx.cjs +104 -47
  51. package/dist/lower/jsx.d.cts +8 -0
  52. package/dist/lower/jsx.d.ts +8 -0
  53. package/dist/lower/jsx.d.ts.map +1 -1
  54. package/dist/lower/jsx.js +92 -2
  55. package/dist/lower/jsx.mjs +104 -47
  56. package/dist/lower/template.cjs +293 -20
  57. package/dist/lower/template.d.ts.map +1 -1
  58. package/dist/lower/template.js +35 -19
  59. package/dist/lower/template.mjs +293 -20
  60. package/dist/resolve/builtins.cjs +1 -1
  61. package/dist/resolve/builtins.mjs +1 -1
  62. package/dist/resolve/component-globals.cjs +6 -1
  63. package/dist/resolve/component-globals.js +2 -2
  64. package/dist/resolve/component-globals.mjs +6 -1
  65. package/dist/resolve/write-globals.cjs +6 -1
  66. package/dist/resolve/write-globals.mjs +6 -1
  67. package/dist/{server-fns-ZFRDIQ2X.mjs → server-fns-N3SDJXA7.mjs} +5 -4
  68. package/dist/{server-functions-CTDXX67X.mjs → server-functions-LVS66Q4R.mjs} +3 -3
  69. package/dist/transform/index.cjs +973 -33
  70. package/dist/transform/index.mjs +991 -47
  71. package/dist/transform/props.mjs +19 -14
  72. package/dist/transform/server-fns.mjs +19 -14
  73. package/dist/transform/styles.cjs +606 -0
  74. package/dist/transform/styles.d.cts +237 -0
  75. package/dist/transform/styles.d.ts +238 -0
  76. package/dist/transform/styles.d.ts.map +1 -0
  77. package/dist/transform/styles.js +743 -0
  78. package/dist/transform/styles.mjs +671 -0
  79. package/dist/transform/templates.cjs +972 -32
  80. package/dist/transform/templates.d.cts +13 -0
  81. package/dist/transform/templates.d.ts +13 -0
  82. package/dist/transform/templates.d.ts.map +1 -1
  83. package/dist/transform/templates.js +49 -12
  84. package/dist/transform/templates.mjs +990 -46
  85. package/dist/{transform-QWWQDCXE.mjs → transform-P4AETYV4.mjs} +49 -16
  86. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  87. package/dist/vite-styles.cjs +223 -0
  88. package/dist/vite-styles.d.cts +68 -0
  89. package/dist/vite-styles.d.ts +69 -0
  90. package/dist/vite-styles.d.ts.map +1 -0
  91. package/dist/vite-styles.js +241 -0
  92. package/dist/vite-styles.mjs +214 -0
  93. package/package.json +5 -4
package/dist/index.mjs CHANGED
@@ -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.95 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
2
2
 
3
3
  // src/analyze/reactive-expr.ts
4
4
  var STABLE_MEMBER = "children";
@@ -308,6 +308,11 @@ var INTRINSICS = {
308
308
  // An environment variable, public or server-only; the browser build refuses a secret.
309
309
  $env: { export: "env", module: "@fluixi/start/env", returns: "plain" }
310
310
  };
311
+ var TAG_INTRINSICS = {
312
+ $html: { export: "html", module: "@fluixi/core" },
313
+ $svg: { export: "svg", module: "@fluixi/core" },
314
+ $css: { export: "css", module: "@fluixi/core" }
315
+ };
311
316
  var INTRINSIC_CALL = new RegExp(`\\$(?:${Object.keys(INTRINSICS).map((n) => n.slice(1)).join("|")})\\s*\\(`);
312
317
 
313
318
  // src/transform/source-locations.ts
@@ -488,7 +493,7 @@ function emitComponent(name, props, children, used, templates, at) {
488
493
  }
489
494
  let obj = `{ ${bodies.map(([name2, body]) => `get ${propKey(name2)}() { return ${body}; }`).join(", ")} }`;
490
495
  if (bodies.some(([, body]) => /\bthis\b/.test(body))) {
491
- const thunks = bodies.map(([name2, body]) => `${JSON.stringify(name2)}: () => ${body}`);
496
+ const thunks = bodies.map(([name2, body]) => `${JSON.stringify(name2)}: () => (${body})`);
492
497
  const getters = bodies.map(([name2]) => `get ${propKey(name2)}() { return _$t[${JSON.stringify(name2)}](); }`);
493
498
  obj = `((_$t) => ({ ${getters.join(", ")} }))({ ${thunks.join(", ")} })`;
494
499
  }
@@ -627,6 +632,271 @@ function cleanTemplateText(value) {
627
632
  return out;
628
633
  }
629
634
 
635
+ // src/lower/entities.ts
636
+ var NAMED = {
637
+ quot: 34,
638
+ amp: 38,
639
+ apos: 39,
640
+ lt: 60,
641
+ gt: 62,
642
+ nbsp: 160,
643
+ iexcl: 161,
644
+ cent: 162,
645
+ pound: 163,
646
+ curren: 164,
647
+ yen: 165,
648
+ brvbar: 166,
649
+ sect: 167,
650
+ uml: 168,
651
+ copy: 169,
652
+ ordf: 170,
653
+ laquo: 171,
654
+ not: 172,
655
+ shy: 173,
656
+ reg: 174,
657
+ macr: 175,
658
+ deg: 176,
659
+ plusmn: 177,
660
+ sup2: 178,
661
+ sup3: 179,
662
+ acute: 180,
663
+ micro: 181,
664
+ para: 182,
665
+ middot: 183,
666
+ cedil: 184,
667
+ sup1: 185,
668
+ ordm: 186,
669
+ raquo: 187,
670
+ frac14: 188,
671
+ frac12: 189,
672
+ frac34: 190,
673
+ iquest: 191,
674
+ Agrave: 192,
675
+ Aacute: 193,
676
+ Acirc: 194,
677
+ Atilde: 195,
678
+ Auml: 196,
679
+ Aring: 197,
680
+ AElig: 198,
681
+ Ccedil: 199,
682
+ Egrave: 200,
683
+ Eacute: 201,
684
+ Ecirc: 202,
685
+ Euml: 203,
686
+ Igrave: 204,
687
+ Iacute: 205,
688
+ Icirc: 206,
689
+ Iuml: 207,
690
+ ETH: 208,
691
+ Ntilde: 209,
692
+ Ograve: 210,
693
+ Oacute: 211,
694
+ Ocirc: 212,
695
+ Otilde: 213,
696
+ Ouml: 214,
697
+ times: 215,
698
+ Oslash: 216,
699
+ Ugrave: 217,
700
+ Uacute: 218,
701
+ Ucirc: 219,
702
+ Uuml: 220,
703
+ Yacute: 221,
704
+ THORN: 222,
705
+ szlig: 223,
706
+ agrave: 224,
707
+ aacute: 225,
708
+ acirc: 226,
709
+ atilde: 227,
710
+ auml: 228,
711
+ aring: 229,
712
+ aelig: 230,
713
+ ccedil: 231,
714
+ egrave: 232,
715
+ eacute: 233,
716
+ ecirc: 234,
717
+ euml: 235,
718
+ igrave: 236,
719
+ iacute: 237,
720
+ icirc: 238,
721
+ iuml: 239,
722
+ eth: 240,
723
+ ntilde: 241,
724
+ ograve: 242,
725
+ oacute: 243,
726
+ ocirc: 244,
727
+ otilde: 245,
728
+ ouml: 246,
729
+ divide: 247,
730
+ oslash: 248,
731
+ ugrave: 249,
732
+ uacute: 250,
733
+ ucirc: 251,
734
+ uuml: 252,
735
+ yacute: 253,
736
+ thorn: 254,
737
+ yuml: 255,
738
+ OElig: 338,
739
+ oelig: 339,
740
+ Scaron: 352,
741
+ scaron: 353,
742
+ Yuml: 376,
743
+ fnof: 402,
744
+ circ: 710,
745
+ tilde: 732,
746
+ Alpha: 913,
747
+ Beta: 914,
748
+ Gamma: 915,
749
+ Delta: 916,
750
+ Epsilon: 917,
751
+ Zeta: 918,
752
+ Eta: 919,
753
+ Theta: 920,
754
+ Iota: 921,
755
+ Kappa: 922,
756
+ Lambda: 923,
757
+ Mu: 924,
758
+ Nu: 925,
759
+ Xi: 926,
760
+ Omicron: 927,
761
+ Pi: 928,
762
+ Rho: 929,
763
+ Sigma: 931,
764
+ Tau: 932,
765
+ Upsilon: 933,
766
+ Phi: 934,
767
+ Chi: 935,
768
+ Psi: 936,
769
+ Omega: 937,
770
+ alpha: 945,
771
+ beta: 946,
772
+ gamma: 947,
773
+ delta: 948,
774
+ epsilon: 949,
775
+ zeta: 950,
776
+ eta: 951,
777
+ theta: 952,
778
+ iota: 953,
779
+ kappa: 954,
780
+ lambda: 955,
781
+ mu: 956,
782
+ nu: 957,
783
+ xi: 958,
784
+ omicron: 959,
785
+ pi: 960,
786
+ rho: 961,
787
+ sigmaf: 962,
788
+ sigma: 963,
789
+ tau: 964,
790
+ upsilon: 965,
791
+ phi: 966,
792
+ chi: 967,
793
+ psi: 968,
794
+ omega: 969,
795
+ thetasym: 977,
796
+ upsih: 978,
797
+ piv: 982,
798
+ ensp: 8194,
799
+ emsp: 8195,
800
+ thinsp: 8201,
801
+ zwnj: 8204,
802
+ zwj: 8205,
803
+ lrm: 8206,
804
+ rlm: 8207,
805
+ ndash: 8211,
806
+ mdash: 8212,
807
+ lsquo: 8216,
808
+ rsquo: 8217,
809
+ sbquo: 8218,
810
+ ldquo: 8220,
811
+ rdquo: 8221,
812
+ bdquo: 8222,
813
+ dagger: 8224,
814
+ Dagger: 8225,
815
+ bull: 8226,
816
+ hellip: 8230,
817
+ permil: 8240,
818
+ prime: 8242,
819
+ Prime: 8243,
820
+ lsaquo: 8249,
821
+ rsaquo: 8250,
822
+ oline: 8254,
823
+ frasl: 8260,
824
+ euro: 8364,
825
+ image: 8465,
826
+ weierp: 8472,
827
+ real: 8476,
828
+ trade: 8482,
829
+ alefsym: 8501,
830
+ larr: 8592,
831
+ uarr: 8593,
832
+ rarr: 8594,
833
+ darr: 8595,
834
+ harr: 8596,
835
+ crarr: 8629,
836
+ lArr: 8656,
837
+ uArr: 8657,
838
+ rArr: 8658,
839
+ dArr: 8659,
840
+ hArr: 8660,
841
+ forall: 8704,
842
+ part: 8706,
843
+ exist: 8707,
844
+ empty: 8709,
845
+ nabla: 8711,
846
+ isin: 8712,
847
+ notin: 8713,
848
+ ni: 8715,
849
+ prod: 8719,
850
+ sum: 8721,
851
+ minus: 8722,
852
+ lowast: 8727,
853
+ radic: 8730,
854
+ prop: 8733,
855
+ infin: 8734,
856
+ ang: 8736,
857
+ and: 8743,
858
+ or: 8744,
859
+ cap: 8745,
860
+ cup: 8746,
861
+ int: 8747,
862
+ there4: 8756,
863
+ sim: 8764,
864
+ cong: 8773,
865
+ asymp: 8776,
866
+ ne: 8800,
867
+ equiv: 8801,
868
+ le: 8804,
869
+ ge: 8805,
870
+ sub: 8834,
871
+ sup: 8835,
872
+ nsub: 8836,
873
+ sube: 8838,
874
+ supe: 8839,
875
+ oplus: 8853,
876
+ otimes: 8855,
877
+ perp: 8869,
878
+ sdot: 8901,
879
+ lceil: 8968,
880
+ rceil: 8969,
881
+ lfloor: 8970,
882
+ rfloor: 8971,
883
+ lang: 9001,
884
+ rang: 9002,
885
+ loz: 9674,
886
+ spades: 9824,
887
+ clubs: 9827,
888
+ hearts: 9829,
889
+ diams: 9830
890
+ };
891
+ var REFERENCE = /&(?:#[xX]([0-9a-fA-F]{1,6})|#([0-9]{1,7})|([a-zA-Z][a-zA-Z0-9]{1,31}));/g;
892
+ function decodeEntities(value) {
893
+ if (!value.includes("&")) return value;
894
+ return value.replace(REFERENCE, (match, hex, dec, name) => {
895
+ const code = hex ? parseInt(hex, 16) : dec ? parseInt(dec, 10) : Object.prototype.hasOwnProperty.call(NAMED, name) ? NAMED[name] : void 0;
896
+ return code !== void 0 && code <= 1114111 ? String.fromCodePoint(code) : match;
897
+ });
898
+ }
899
+
630
900
  // src/lower/template.ts
631
901
  var DELEGATED = /* @__PURE__ */ new Set([
632
902
  "click",
@@ -713,7 +983,7 @@ var Lowerer = class {
713
983
  switch (node.kind) {
714
984
  case "Text": {
715
985
  if (node.raw) return { kind: "text", value: node.value };
716
- const cleaned = cleanTemplateText(node.value);
986
+ const cleaned = decodeEntities(cleanTemplateText(node.value));
717
987
  return cleaned ? { kind: "text", value: cleaned } : null;
718
988
  }
719
989
  case "Comment":
@@ -749,7 +1019,7 @@ var Lowerer = class {
749
1019
  kind: "element",
750
1020
  tag: el.tag,
751
1021
  svg: el.namespace === "svg",
752
- props: this.lowerAttributes(el.attributes),
1022
+ props: this.lowerAttributes(el.attributes, true),
753
1023
  children,
754
1024
  static: false,
755
1025
  ...at ? { at } : {}
@@ -862,13 +1132,22 @@ var Lowerer = class {
862
1132
  return clone.kind === "Element" ? this.lowerElement(clone) : this.lowerComponent(clone);
863
1133
  }
864
1134
  // --- attributes ---------------------------------------------------------
865
- lowerAttributes(attrs) {
1135
+ /**
1136
+ * `element`: a DOM element, where each class:/style: value that moves is its own accessor.
1137
+ * A component gets the object as before, rebuilt whole when any value moves.
1138
+ */
1139
+ lowerAttributes(attrs, element = false) {
1140
+ let anyReactive = false;
1141
+ const entry = (name, h) => {
1142
+ anyReactive ||= h.reactive;
1143
+ if (!element || !h.reactive) return `${JSON.stringify(name)}: ${h.code}`;
1144
+ const accessor = `() => ${paren(h.code, "arrowBody")}`;
1145
+ return `${JSON.stringify(name)}: ${h.at ? markHole(accessor, h.at.line, h.at.column) : accessor}`;
1146
+ };
866
1147
  const props = [];
867
1148
  const classEntries = [];
868
- let classReactive = false;
869
1149
  let classAt;
870
1150
  const styleEntries = [];
871
- let styleReactive = false;
872
1151
  let styleAt;
873
1152
  const usePairs = [];
874
1153
  for (const a of attrs) {
@@ -908,15 +1187,13 @@ var Lowerer = class {
908
1187
  break;
909
1188
  case "ClassDirective": {
910
1189
  const h = this.hole(a.hole);
911
- classEntries.push(`${JSON.stringify(a.name)}: ${h.code}`);
912
- classReactive = classReactive || h.reactive;
1190
+ classEntries.push(entry(a.name, h));
913
1191
  classAt ??= h.at;
914
1192
  break;
915
1193
  }
916
1194
  case "StyleDirective": {
917
1195
  const h = this.hole(a.hole);
918
- styleEntries.push(`${JSON.stringify(a.name)}: ${h.code}`);
919
- styleReactive = styleReactive || h.reactive;
1196
+ styleEntries.push(entry(a.name, h));
920
1197
  styleAt ??= h.at;
921
1198
  break;
922
1199
  }
@@ -936,18 +1213,19 @@ var Lowerer = class {
936
1213
  name: "classList",
937
1214
  kind: "attr",
938
1215
  expr: `{ ${classEntries.join(", ")} }`,
939
- reactive: classReactive,
1216
+ reactive: !element && anyReactive,
940
1217
  ...classAt ? { at: classAt } : {}
941
1218
  });
942
1219
  }
943
1220
  if (styleEntries.length > 0) {
944
- props.push({
945
- name: "style",
946
- kind: "attr",
947
- expr: `{ ${styleEntries.join(", ")} }`,
948
- reactive: styleReactive,
949
- ...styleAt ? { at: styleAt } : {}
950
- });
1221
+ const entries = `{ ${styleEntries.join(", ")} }`;
1222
+ const base = props.findIndex((p) => p.name === "style");
1223
+ if (base === -1) props.push({ name: "style", kind: "attr", expr: entries, reactive: !element && anyReactive, ...styleAt ? { at: styleAt } : {} });
1224
+ else {
1225
+ const prop = props[base];
1226
+ const value = prop.expr === void 0 ? JSON.stringify(prop.literal) : prop.reactive ? `() => ${paren(prop.expr, "arrowBody")}` : prop.expr;
1227
+ props[base] = { name: "style", kind: "attr", expr: `[${value}, ${entries}]`, reactive: false, ...prop.at ? { at: prop.at } : {} };
1228
+ }
951
1229
  }
952
1230
  if (usePairs.length > 0) {
953
1231
  props.push({ name: "use", kind: "attr", expr: `[${usePairs.join(", ")}]` });
@@ -1036,7 +1314,7 @@ var Lowerer = class {
1036
1314
  return base;
1037
1315
  }
1038
1316
  if (v.kind === "static") {
1039
- base.literal = v.value;
1317
+ base.literal = decodeEntities(v.value);
1040
1318
  return base;
1041
1319
  }
1042
1320
  if (v.kind === "hole") {
@@ -1049,7 +1327,7 @@ var Lowerer = class {
1049
1327
  let reactive = false;
1050
1328
  let at;
1051
1329
  const body = v.parts.map((p) => {
1052
- if ("text" in p) return escapeTemplate(p.text);
1330
+ if ("text" in p) return escapeTemplate(decodeEntities(p.text));
1053
1331
  const h = this.hole(p.hole);
1054
1332
  reactive = reactive || h.reactive;
1055
1333
  at ??= h.at;
@@ -1066,6 +1344,38 @@ function lowerTemplate(pieces, holes, used, opts = {}) {
1066
1344
  return new Lowerer(holes, used, opts.sourceFile, opts.positionAt).lowerRoot(root.children);
1067
1345
  }
1068
1346
 
1347
+ // ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.6.0/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
1348
+ var comma = ",".charCodeAt(0);
1349
+ var semicolon = ";".charCodeAt(0);
1350
+ var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
1351
+ var intToChar = new Uint8Array(64);
1352
+ var charToInt = new Uint8Array(128);
1353
+ for (let i = 0; i < chars.length; i++) {
1354
+ const c = chars.charCodeAt(i);
1355
+ intToChar[i] = c;
1356
+ charToInt[c] = i;
1357
+ }
1358
+ var bufLength = 1024 * 16;
1359
+
1360
+ // src/transform/styles.ts
1361
+ var SCOPE_ATTR = "data-fx-s";
1362
+ function applyTemplateStyles(ir, t) {
1363
+ const walk2 = (node) => {
1364
+ const children = node.children;
1365
+ if (children) {
1366
+ for (let i = children.length - 1; i >= 0; i--) {
1367
+ const child = children[i];
1368
+ if (child.kind === "element" && child.tag === "style" && t.owner) children.splice(i, 1);
1369
+ else walk2(child);
1370
+ }
1371
+ }
1372
+ if (t.scope && node.kind === "element" && node.tag !== "style" && node.props && !node.props.some((p) => p.name === SCOPE_ATTR)) {
1373
+ node.props.unshift({ name: SCOPE_ATTR, kind: "attr", literal: t.scope });
1374
+ }
1375
+ };
1376
+ walk2(ir);
1377
+ }
1378
+
1069
1379
  // src/optimize/analyze-static.ts
1070
1380
  function propReason(prop) {
1071
1381
  switch (prop.kind) {
@@ -1341,6 +1651,7 @@ function compilePieces(pieces, holes, options = {}) {
1341
1651
  ...options.sourceFile ? { sourceFile: options.sourceFile } : {},
1342
1652
  ...options.positionAt ? { positionAt: options.positionAt } : {}
1343
1653
  });
1654
+ if (options.templateStyles) applyTemplateStyles(ir, options.templateStyles);
1344
1655
  analyzeStatic(ir);
1345
1656
  resolveComponentSources(ir, {
1346
1657
  resolver: createComponentResolver(options.resolve ?? []),
@@ -1424,7 +1735,7 @@ function componentGlobals(rules, options = {}) {
1424
1735
  resolved.set(name, target);
1425
1736
  }
1426
1737
  }
1427
- const usableIntrinsics = intrinsics ? Object.entries(INTRINSICS).filter(([, i]) => {
1738
+ const usableIntrinsics = intrinsics ? Object.entries({ ...INTRINSICS, ...TAG_INTRINSICS }).filter(([, i]) => {
1428
1739
  const pkg = packageOf(i.module);
1429
1740
  return !available || !pkg || available.has(pkg);
1430
1741
  }) : [];