@tamagui/static 2.7.7 → 3.0.0-beta.643.1

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 (329) hide show
  1. package/dist/cjs/check-dep-versions.cjs +355 -0
  2. package/dist/cjs/checkDeps.cjs +302 -0
  3. package/dist/cjs/compiler.cjs +286 -0
  4. package/dist/cjs/compilerHost.cjs +1695 -0
  5. package/dist/cjs/constants.cjs +33 -0
  6. package/dist/cjs/domStructuralPass.cjs +112 -0
  7. package/dist/cjs/exports.cjs +42 -0
  8. package/dist/cjs/extractor/addLocalExports.cjs +64 -0
  9. package/dist/cjs/extractor/bundle.cjs +203 -0
  10. package/dist/cjs/extractor/bundleConfig.cjs +747 -0
  11. package/dist/cjs/extractor/concatClassName.cjs +117 -0
  12. package/dist/cjs/extractor/detectModuleFormat.cjs +54 -0
  13. package/dist/cjs/extractor/esbuildAliasPlugin.cjs +47 -0
  14. package/dist/cjs/extractor/esbuildTsconfigPaths.cjs +92 -0
  15. package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +38 -0
  16. package/dist/cjs/extractor/loadTamagui.cjs +344 -0
  17. package/dist/cjs/extractor/regenerateConfig.cjs +161 -0
  18. package/dist/cjs/extractor/watchTamaguiConfig.cjs +64 -0
  19. package/dist/cjs/getPragmaOptions.cjs +67 -0
  20. package/dist/cjs/helpers/memoize.cjs +42 -0
  21. package/dist/cjs/helpers/requireTamaguiCore.cjs +40 -0
  22. package/dist/cjs/index.cjs +34 -0
  23. package/dist/cjs/registerRequire.cjs +220 -0
  24. package/dist/cjs/server.cjs +66 -0
  25. package/dist/cjs/staticEvaluationIgnoredModules.cjs +86 -0
  26. package/dist/cjs/types.cjs +17 -0
  27. package/dist/cjs/zero/artifact.cjs +145 -0
  28. package/dist/cjs/zero/graph.cjs +209 -0
  29. package/dist/cjs/zero/identity.cjs +61 -0
  30. package/dist/cjs/zero/index.cjs +26 -0
  31. package/dist/cjs/zero/islands.cjs +232 -0
  32. package/dist/cjs/zero/options.cjs +163 -0
  33. package/dist/cjs/zero/ownership.cjs +79 -0
  34. package/dist/cjs/zero/theme.cjs +328 -0
  35. package/dist/cjs/zero/transform.cjs +203 -0
  36. package/dist/esm/check-dep-versions.mjs +329 -0
  37. package/dist/esm/check-dep-versions.mjs.map +1 -0
  38. package/dist/esm/checkDeps.mjs +279 -0
  39. package/dist/esm/checkDeps.mjs.map +1 -0
  40. package/dist/esm/compiler.mjs +255 -0
  41. package/dist/esm/compiler.mjs.map +1 -0
  42. package/dist/esm/compilerHost.mjs +1675 -0
  43. package/dist/esm/compilerHost.mjs.map +1 -0
  44. package/dist/esm/constants.mjs +7 -0
  45. package/dist/esm/constants.mjs.map +1 -0
  46. package/dist/esm/domStructuralPass.mjs +92 -0
  47. package/dist/esm/domStructuralPass.mjs.map +1 -0
  48. package/dist/esm/exports.mjs +26 -0
  49. package/dist/esm/extractor/addLocalExports.mjs +44 -0
  50. package/dist/esm/extractor/addLocalExports.mjs.map +1 -0
  51. package/dist/esm/extractor/bundle.mjs +173 -0
  52. package/dist/esm/extractor/bundle.mjs.map +1 -0
  53. package/dist/esm/extractor/bundleConfig.mjs +706 -0
  54. package/dist/esm/extractor/bundleConfig.mjs.map +1 -0
  55. package/dist/esm/extractor/concatClassName.mjs +96 -0
  56. package/dist/esm/extractor/concatClassName.mjs.map +1 -0
  57. package/dist/esm/extractor/detectModuleFormat.mjs +31 -0
  58. package/dist/esm/extractor/detectModuleFormat.mjs.map +1 -0
  59. package/dist/esm/extractor/esbuildAliasPlugin.mjs +26 -0
  60. package/dist/esm/extractor/esbuildAliasPlugin.mjs.map +1 -0
  61. package/dist/esm/extractor/esbuildTsconfigPaths.mjs +63 -0
  62. package/dist/esm/extractor/esbuildTsconfigPaths.mjs.map +1 -0
  63. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs +18 -0
  64. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs.map +1 -0
  65. package/dist/esm/extractor/loadTamagui.mjs +306 -0
  66. package/dist/esm/extractor/loadTamagui.mjs.map +1 -0
  67. package/dist/esm/extractor/regenerateConfig.mjs +131 -0
  68. package/dist/esm/extractor/regenerateConfig.mjs.map +1 -0
  69. package/dist/esm/extractor/watchTamaguiConfig.mjs +43 -0
  70. package/dist/esm/extractor/watchTamaguiConfig.mjs.map +1 -0
  71. package/dist/esm/getPragmaOptions.mjs +46 -0
  72. package/dist/esm/getPragmaOptions.mjs.map +1 -0
  73. package/dist/esm/helpers/memoize.mjs +21 -0
  74. package/dist/esm/helpers/memoize.mjs.map +1 -0
  75. package/dist/esm/helpers/requireTamaguiCore.mjs +19 -0
  76. package/dist/esm/helpers/requireTamaguiCore.mjs.map +1 -0
  77. package/dist/esm/index.mjs +8 -0
  78. package/dist/esm/index.mjs.map +1 -0
  79. package/dist/esm/registerRequire.mjs +195 -0
  80. package/dist/esm/registerRequire.mjs.map +1 -0
  81. package/dist/esm/server.mjs +40 -0
  82. package/dist/esm/server.mjs.map +1 -0
  83. package/dist/esm/setup.mjs +0 -0
  84. package/dist/esm/staticEvaluationIgnoredModules.mjs +61 -0
  85. package/dist/esm/staticEvaluationIgnoredModules.mjs.map +1 -0
  86. package/dist/esm/types.mjs +0 -0
  87. package/dist/esm/zero/artifact.mjs +119 -0
  88. package/dist/esm/zero/artifact.mjs.map +1 -0
  89. package/dist/esm/zero/graph.mjs +170 -0
  90. package/dist/esm/zero/graph.mjs.map +1 -0
  91. package/dist/esm/zero/identity.mjs +36 -0
  92. package/dist/esm/zero/identity.mjs.map +1 -0
  93. package/dist/esm/zero/index.mjs +15 -0
  94. package/dist/esm/zero/islands.mjs +197 -0
  95. package/dist/esm/zero/islands.mjs.map +1 -0
  96. package/dist/esm/zero/options.mjs +129 -0
  97. package/dist/esm/zero/options.mjs.map +1 -0
  98. package/dist/esm/zero/ownership.mjs +48 -0
  99. package/dist/esm/zero/ownership.mjs.map +1 -0
  100. package/dist/esm/zero/theme.mjs +303 -0
  101. package/dist/esm/zero/theme.mjs.map +1 -0
  102. package/dist/esm/zero/transform.mjs +177 -0
  103. package/dist/esm/zero/transform.mjs.map +1 -0
  104. package/package.json +33 -43
  105. package/src/check-dep-versions.ts +2 -2
  106. package/src/checkDeps.ts +3 -2
  107. package/src/compiler.ts +425 -0
  108. package/src/compilerHost.ts +3125 -0
  109. package/src/constants.ts +0 -5
  110. package/src/domStructuralPass.ts +170 -0
  111. package/src/exports.ts +3 -6
  112. package/src/extractor/addLocalExports.ts +49 -0
  113. package/src/extractor/bundle.ts +20 -35
  114. package/src/extractor/bundleConfig.ts +334 -187
  115. package/src/extractor/concatClassName.ts +13 -20
  116. package/src/extractor/getTamaguiConfigPathFromOptionsConfig.ts +5 -4
  117. package/src/extractor/loadTamagui.ts +196 -143
  118. package/src/extractor/regenerateConfig.ts +65 -13
  119. package/src/extractor/watchTamaguiConfig.ts +6 -1
  120. package/src/helpers/requireTamaguiCore.ts +6 -1
  121. package/src/registerRequire.ts +94 -132
  122. package/src/staticEvaluationIgnoredModules.ts +74 -0
  123. package/src/types.ts +2 -107
  124. package/src/zero/artifact.ts +142 -0
  125. package/src/zero/graph.ts +359 -0
  126. package/src/zero/identity.ts +73 -0
  127. package/src/zero/index.ts +8 -0
  128. package/src/zero/islands.ts +262 -0
  129. package/src/zero/options.ts +239 -0
  130. package/src/zero/ownership.ts +113 -0
  131. package/src/zero/theme.ts +478 -0
  132. package/src/zero/transform.ts +320 -0
  133. package/types/check-dep-versions.d.ts.map +1 -1
  134. package/types/checkDeps.d.ts.map +1 -1
  135. package/types/compiler.d.ts +117 -0
  136. package/types/compiler.d.ts.map +1 -0
  137. package/types/compilerHost.d.ts +25 -0
  138. package/types/compilerHost.d.ts.map +1 -0
  139. package/types/constants.d.ts +0 -1
  140. package/types/constants.d.ts.map +1 -1
  141. package/types/domStructuralPass.d.ts +3 -0
  142. package/types/domStructuralPass.d.ts.map +1 -0
  143. package/types/exports.d.ts +3 -6
  144. package/types/exports.d.ts.map +1 -1
  145. package/types/extractor/addLocalExports.d.ts +3 -0
  146. package/types/extractor/addLocalExports.d.ts.map +1 -0
  147. package/types/extractor/bundle.d.ts +66 -65
  148. package/types/extractor/bundle.d.ts.map +1 -1
  149. package/types/extractor/bundleConfig.d.ts +19 -4
  150. package/types/extractor/bundleConfig.d.ts.map +1 -1
  151. package/types/extractor/esbuildAliasPlugin.d.ts.map +1 -1
  152. package/types/extractor/getTamaguiConfigPathFromOptionsConfig.d.ts +1 -1
  153. package/types/extractor/getTamaguiConfigPathFromOptionsConfig.d.ts.map +1 -1
  154. package/types/extractor/loadTamagui.d.ts +26 -3
  155. package/types/extractor/loadTamagui.d.ts.map +1 -1
  156. package/types/extractor/regenerateConfig.d.ts +1 -1
  157. package/types/extractor/regenerateConfig.d.ts.map +1 -1
  158. package/types/extractor/watchTamaguiConfig.d.ts.map +1 -1
  159. package/types/getPragmaOptions.d.ts +1 -1
  160. package/types/helpers/memoize.d.ts +1 -1
  161. package/types/helpers/memoize.d.ts.map +1 -1
  162. package/types/helpers/requireTamaguiCore.d.ts.map +1 -1
  163. package/types/index.d.ts.map +1 -1
  164. package/types/registerRequire.d.ts +2 -2
  165. package/types/registerRequire.d.ts.map +1 -1
  166. package/types/staticEvaluationIgnoredModules.d.ts +9 -0
  167. package/types/staticEvaluationIgnoredModules.d.ts.map +1 -0
  168. package/types/types.d.ts +2 -90
  169. package/types/types.d.ts.map +1 -1
  170. package/types/zero/artifact.d.ts +44 -0
  171. package/types/zero/artifact.d.ts.map +1 -0
  172. package/types/zero/graph.d.ts +139 -0
  173. package/types/zero/graph.d.ts.map +1 -0
  174. package/types/zero/identity.d.ts +33 -0
  175. package/types/zero/identity.d.ts.map +1 -0
  176. package/types/zero/index.d.ts +9 -0
  177. package/types/zero/index.d.ts.map +1 -0
  178. package/types/zero/islands.d.ts +56 -0
  179. package/types/zero/islands.d.ts.map +1 -0
  180. package/types/zero/options.d.ts +58 -0
  181. package/types/zero/options.d.ts.map +1 -0
  182. package/types/zero/ownership.d.ts +51 -0
  183. package/types/zero/ownership.d.ts.map +1 -0
  184. package/types/zero/theme.d.ts +83 -0
  185. package/types/zero/theme.d.ts.map +1 -0
  186. package/types/zero/transform.d.ts +53 -0
  187. package/types/zero/transform.d.ts.map +1 -0
  188. package/dist/check-dep-versions.cjs +0 -372
  189. package/dist/checkDeps.cjs +0 -271
  190. package/dist/constants.cjs +0 -51
  191. package/dist/exports.cjs +0 -48
  192. package/dist/extractor/accessSafe.cjs +0 -48
  193. package/dist/extractor/babelParse.cjs +0 -56
  194. package/dist/extractor/buildClassName.cjs +0 -86
  195. package/dist/extractor/bundle.cjs +0 -234
  196. package/dist/extractor/bundleConfig.cjs +0 -729
  197. package/dist/extractor/concatClassName.cjs +0 -129
  198. package/dist/extractor/createEvaluator.cjs +0 -88
  199. package/dist/extractor/createExtractor.cjs +0 -1968
  200. package/dist/extractor/createLogger.cjs +0 -50
  201. package/dist/extractor/detectModuleFormat.cjs +0 -55
  202. package/dist/extractor/ensureImportingConcat.cjs +0 -54
  203. package/dist/extractor/errors.cjs +0 -28
  204. package/dist/extractor/esbuildAliasPlugin.cjs +0 -56
  205. package/dist/extractor/esbuildTsconfigPaths.cjs +0 -108
  206. package/dist/extractor/evaluateAstNode.cjs +0 -128
  207. package/dist/extractor/extractHelpers.cjs +0 -182
  208. package/dist/extractor/extractMediaStyle.cjs +0 -169
  209. package/dist/extractor/extractToClassNames.cjs +0 -475
  210. package/dist/extractor/extractToNative.cjs +0 -369
  211. package/dist/extractor/findTopmostFunction.cjs +0 -43
  212. package/dist/extractor/generatedUid.cjs +0 -58
  213. package/dist/extractor/getPrefixLogs.cjs +0 -31
  214. package/dist/extractor/getPropValueFromAttributes.cjs +0 -85
  215. package/dist/extractor/getSourceModule.cjs +0 -100
  216. package/dist/extractor/getStaticBindingsForScope.cjs +0 -213
  217. package/dist/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +0 -41
  218. package/dist/extractor/hasTopLevelAwait.cjs +0 -62
  219. package/dist/extractor/hoistClassNames.cjs +0 -76
  220. package/dist/extractor/literalToAst.cjs +0 -109
  221. package/dist/extractor/loadFile.cjs +0 -17
  222. package/dist/extractor/loadTamagui.cjs +0 -373
  223. package/dist/extractor/logLines.cjs +0 -43
  224. package/dist/extractor/normalizeTernaries.cjs +0 -100
  225. package/dist/extractor/propsToFontFamilyCache.cjs +0 -42
  226. package/dist/extractor/regenerateConfig.cjs +0 -178
  227. package/dist/extractor/removeUnusedHooks.cjs +0 -108
  228. package/dist/extractor/timer.cjs +0 -52
  229. package/dist/extractor/validHTMLAttributes.cjs +0 -79
  230. package/dist/extractor/watchTamaguiConfig.cjs +0 -70
  231. package/dist/getPragmaOptions.cjs +0 -73
  232. package/dist/helpers/memoize.cjs +0 -45
  233. package/dist/helpers/requireTamaguiCore.cjs +0 -40
  234. package/dist/index.cjs +0 -42
  235. package/dist/registerRequire.cjs +0 -209
  236. package/dist/server.cjs +0 -82
  237. package/dist/types.cjs +0 -18
  238. package/dist/worker.cjs +0 -111
  239. package/src/extractor/accessSafe.ts +0 -22
  240. package/src/extractor/babelParse.ts +0 -38
  241. package/src/extractor/buildClassName.ts +0 -76
  242. package/src/extractor/createEvaluator.ts +0 -82
  243. package/src/extractor/createExtractor.ts +0 -2970
  244. package/src/extractor/createLogger.ts +0 -41
  245. package/src/extractor/ensureImportingConcat.ts +0 -36
  246. package/src/extractor/errors.ts +0 -1
  247. package/src/extractor/evaluateAstNode.ts +0 -136
  248. package/src/extractor/extractHelpers.ts +0 -211
  249. package/src/extractor/extractMediaStyle.ts +0 -194
  250. package/src/extractor/extractToClassNames.ts +0 -733
  251. package/src/extractor/extractToNative.ts +0 -506
  252. package/src/extractor/findTopmostFunction.ts +0 -24
  253. package/src/extractor/generatedUid.ts +0 -41
  254. package/src/extractor/getPrefixLogs.ts +0 -9
  255. package/src/extractor/getPropValueFromAttributes.ts +0 -95
  256. package/src/extractor/getSourceModule.ts +0 -96
  257. package/src/extractor/getStaticBindingsForScope.ts +0 -237
  258. package/src/extractor/hasTopLevelAwait.ts +0 -28
  259. package/src/extractor/hoistClassNames.ts +0 -52
  260. package/src/extractor/literalToAst.ts +0 -85
  261. package/src/extractor/loadFile.ts +0 -17
  262. package/src/extractor/logLines.ts +0 -16
  263. package/src/extractor/normalizeTernaries.ts +0 -89
  264. package/src/extractor/propsToFontFamilyCache.ts +0 -18
  265. package/src/extractor/removeUnusedHooks.ts +0 -83
  266. package/src/extractor/timer.ts +0 -25
  267. package/src/extractor/validHTMLAttributes.ts +0 -52
  268. package/src/worker.ts +0 -142
  269. package/types/extractor/accessSafe.d.ts +0 -3
  270. package/types/extractor/accessSafe.d.ts.map +0 -1
  271. package/types/extractor/babelParse.d.ts +0 -5
  272. package/types/extractor/babelParse.d.ts.map +0 -1
  273. package/types/extractor/buildClassName.d.ts +0 -7
  274. package/types/extractor/buildClassName.d.ts.map +0 -1
  275. package/types/extractor/createEvaluator.d.ts +0 -12
  276. package/types/extractor/createEvaluator.d.ts.map +0 -1
  277. package/types/extractor/createExtractor.d.ts +0 -32
  278. package/types/extractor/createExtractor.d.ts.map +0 -1
  279. package/types/extractor/createLogger.d.ts +0 -3
  280. package/types/extractor/createLogger.d.ts.map +0 -1
  281. package/types/extractor/ensureImportingConcat.d.ts +0 -4
  282. package/types/extractor/ensureImportingConcat.d.ts.map +0 -1
  283. package/types/extractor/errors.d.ts +0 -3
  284. package/types/extractor/errors.d.ts.map +0 -1
  285. package/types/extractor/evaluateAstNode.d.ts +0 -3
  286. package/types/extractor/evaluateAstNode.d.ts.map +0 -1
  287. package/types/extractor/extractHelpers.d.ts +0 -28
  288. package/types/extractor/extractHelpers.d.ts.map +0 -1
  289. package/types/extractor/extractMediaStyle.d.ts +0 -11
  290. package/types/extractor/extractMediaStyle.d.ts.map +0 -1
  291. package/types/extractor/extractToClassNames.d.ts +0 -25
  292. package/types/extractor/extractToClassNames.d.ts.map +0 -1
  293. package/types/extractor/extractToNative.d.ts +0 -13
  294. package/types/extractor/extractToNative.d.ts.map +0 -1
  295. package/types/extractor/findTopmostFunction.d.ts +0 -4
  296. package/types/extractor/findTopmostFunction.d.ts.map +0 -1
  297. package/types/extractor/generatedUid.d.ts +0 -5
  298. package/types/extractor/generatedUid.d.ts.map +0 -1
  299. package/types/extractor/getPrefixLogs.d.ts +0 -3
  300. package/types/extractor/getPrefixLogs.d.ts.map +0 -1
  301. package/types/extractor/getPropValueFromAttributes.d.ts +0 -19
  302. package/types/extractor/getPropValueFromAttributes.d.ts.map +0 -1
  303. package/types/extractor/getSourceModule.d.ts +0 -16
  304. package/types/extractor/getSourceModule.d.ts.map +0 -1
  305. package/types/extractor/getStaticBindingsForScope.d.ts +0 -5
  306. package/types/extractor/getStaticBindingsForScope.d.ts.map +0 -1
  307. package/types/extractor/hasTopLevelAwait.d.ts +0 -2
  308. package/types/extractor/hasTopLevelAwait.d.ts.map +0 -1
  309. package/types/extractor/hoistClassNames.d.ts +0 -6
  310. package/types/extractor/hoistClassNames.d.ts.map +0 -1
  311. package/types/extractor/literalToAst.d.ts +0 -4
  312. package/types/extractor/literalToAst.d.ts.map +0 -1
  313. package/types/extractor/loadFile.d.ts +0 -1
  314. package/types/extractor/loadFile.d.ts.map +0 -1
  315. package/types/extractor/logLines.d.ts +0 -2
  316. package/types/extractor/logLines.d.ts.map +0 -1
  317. package/types/extractor/normalizeTernaries.d.ts +0 -5
  318. package/types/extractor/normalizeTernaries.d.ts.map +0 -1
  319. package/types/extractor/propsToFontFamilyCache.d.ts +0 -4
  320. package/types/extractor/propsToFontFamilyCache.d.ts.map +0 -1
  321. package/types/extractor/removeUnusedHooks.d.ts +0 -3
  322. package/types/extractor/removeUnusedHooks.d.ts.map +0 -1
  323. package/types/extractor/timer.d.ts +0 -5
  324. package/types/extractor/timer.d.ts.map +0 -1
  325. package/types/extractor/validHTMLAttributes.d.ts +0 -52
  326. package/types/extractor/validHTMLAttributes.d.ts.map +0 -1
  327. package/types/worker.d.ts +0 -46
  328. package/types/worker.d.ts.map +0 -1
  329. /package/dist/{setup.cjs → cjs/setup.cjs} +0 -0
@@ -0,0 +1,303 @@
1
+ import { childNode, childNodes, resolvedModuleId, walkAst, zeroRuleMessage } from "@tamagui/compiler-core";
2
+ import { getThemeClassNames, reservedThemeProps } from "@tamagui/helpers";
3
+ import { getInlineValuesFromProps, getVariablesCSSRules, resolveThemeName, variableToString } from "@tamagui/web";
4
+
5
+ const MAX_THEME_BRANCHES = 8;
6
+ const LOWERABLE_RESERVED_PROPS = /* @__PURE__ */ new Set([
7
+ "name",
8
+ "reset",
9
+ "contain"
10
+ ]);
11
+ function jsxAttributeName(attribute) {
12
+ const name = childNode(attribute, "name");
13
+ return name && typeof name.name === "string" ? name.name : null;
14
+ }
15
+ function literalOf(node) {
16
+ if (!node) return void 0;
17
+ if (node.type === "Literal" && typeof node.value !== "object") {
18
+ return node.value;
19
+ }
20
+ return void 0;
21
+ }
22
+ function hasSideEffects(node) {
23
+ let found = false;
24
+ walkAst(node, (child) => {
25
+ if (child.type === "CallExpression" || child.type === "OptionalCallExpression" || child.type === "NewExpression" || child.type === "AwaitExpression" || child.type === "YieldExpression" || child.type === "AssignmentExpression" || child.type === "UpdateExpression" || child.type === "TaggedTemplateExpression") {
26
+ found = true;
27
+ }
28
+ });
29
+ return found;
30
+ }
31
+ function readNameOptions(value, source, guards) {
32
+ const literal = literalOf(value);
33
+ if (typeof literal === "string") {
34
+ return [{
35
+ test: guards.length ? guards.join(" && ") : null,
36
+ name: literal
37
+ }];
38
+ }
39
+ if (value.type === "ConditionalExpression") {
40
+ const test = childNode(value, "test");
41
+ const consequent = childNode(value, "consequent");
42
+ const alternate = childNode(value, "alternate");
43
+ if (!test || !consequent || !alternate) return null;
44
+ if (hasSideEffects(test)) return null;
45
+ const testText = source.slice(test.start, test.end).replace(/\s+/g, " ").trim();
46
+ const left = readNameOptions(consequent, source, [...guards, `(${testText})`]);
47
+ const right = readNameOptions(alternate, source, [...guards, `!(${testText})`]);
48
+ if (!left || !right) return null;
49
+ return [...left, ...right];
50
+ }
51
+ return null;
52
+ }
53
+ function foldBranches(branches) {
54
+ const last = branches[branches.length - 1];
55
+ if (new Set(branches.map((branch) => branch.value)).size === 1) return last.value;
56
+ let expression = last.value;
57
+ for (let index = branches.length - 2; index >= 0; index--) {
58
+ const branch = branches[index];
59
+ expression = branch.test === null ? branch.value : `${branch.test} ? ${branch.value} : ${expression}`;
60
+ }
61
+ return expression;
62
+ }
63
+ function resolveThemeChain(chain, rootThemeName, config) {
64
+ let branches = [{
65
+ test: null,
66
+ name: rootThemeName,
67
+ isNew: false
68
+ }];
69
+ for (const node of chain) {
70
+ const next = [];
71
+ for (const parent of branches) {
72
+ for (const option of node.options) {
73
+ const resolved = resolveThemeName(parent.name, option.name, node.reset, config.themes);
74
+ const tests = [parent.test, option.test].filter(Boolean);
75
+ next.push({
76
+ test: tests.length ? tests.join(" && ") : null,
77
+ name: resolved ?? parent.name,
78
+ isNew: resolved !== null
79
+ });
80
+ }
81
+ }
82
+ branches = next;
83
+ }
84
+ return branches;
85
+ }
86
+ function readStaticTheme(element, id, source, config) {
87
+ const moduleId = resolvedModuleId(id);
88
+ const violations = [];
89
+ const css = /* @__PURE__ */ new Map();
90
+ const opening = childNode(element, "openingElement");
91
+ const closing = childNode(element, "closingElement");
92
+ const span = (node) => ({
93
+ id: moduleId,
94
+ start: node.start,
95
+ end: node.end
96
+ });
97
+ let options = [{
98
+ test: null,
99
+ name: void 0
100
+ }];
101
+ let reset = false;
102
+ let contain = false;
103
+ const themeKeyProps = {};
104
+ for (const attribute of childNodes(opening, "attributes")) {
105
+ if (attribute.type !== "JSXAttribute") {
106
+ violations.push({
107
+ rule: 1,
108
+ code: "local/unsafe-style-spread",
109
+ span: span(attribute),
110
+ component: "Theme",
111
+ message: zeroRuleMessage(1, { component: "Theme" })
112
+ });
113
+ continue;
114
+ }
115
+ const key = jsxAttributeName(attribute);
116
+ if (!key) continue;
117
+ const rawValue = childNode(attribute, "value");
118
+ const value = rawValue && rawValue.type === "JSXExpressionContainer" ? childNode(rawValue, "expression") : rawValue;
119
+ if (key === "name") {
120
+ const read = value ? readNameOptions(value, source, []) : null;
121
+ if (!read) {
122
+ violations.push({
123
+ rule: 4,
124
+ code: "local/unsupported-target",
125
+ span: span(attribute),
126
+ component: "Theme",
127
+ message: zeroRuleMessage(4, { detail: `the <Theme name> value ${source.slice(attribute.start, attribute.end).replace(/\s+/g, " ").trim()}, which is not a literal theme name or a conditional over literal theme names,` })
128
+ });
129
+ continue;
130
+ }
131
+ options = read;
132
+ continue;
133
+ }
134
+ if (reservedThemeProps[key]) {
135
+ if (!LOWERABLE_RESERVED_PROPS.has(key)) {
136
+ violations.push({
137
+ rule: 4,
138
+ code: "local/unsupported-target",
139
+ span: span(attribute),
140
+ component: "Theme",
141
+ message: zeroRuleMessage(4, { detail: `the <Theme ${key}> prop, which has no compiled form,` })
142
+ });
143
+ continue;
144
+ }
145
+ const literal2 = value ? literalOf(value) : true;
146
+ if (typeof literal2 !== "boolean") {
147
+ violations.push({
148
+ rule: 4,
149
+ code: "local/unsupported-target",
150
+ span: span(attribute),
151
+ component: "Theme",
152
+ message: zeroRuleMessage(4, { detail: `a non-literal <Theme ${key}> value,` })
153
+ });
154
+ continue;
155
+ }
156
+ if (key === "reset") reset = literal2;
157
+ if (key === "contain") contain = literal2;
158
+ continue;
159
+ }
160
+ const literal = value ? literalOf(value) : void 0;
161
+ if (typeof literal !== "string" && typeof literal !== "number") {
162
+ violations.push({
163
+ rule: 3,
164
+ code: "local/dynamic-style-value",
165
+ span: span(attribute),
166
+ component: "Theme",
167
+ message: zeroRuleMessage(3, {
168
+ prop: key,
169
+ component: "Theme",
170
+ detail: value ? "a theme value must be a string or number literal at build time" : "a theme key needs a value"
171
+ })
172
+ });
173
+ continue;
174
+ }
175
+ themeKeyProps[key] = literal;
176
+ }
177
+ if (reset && options.some((option) => option.name !== void 0)) {
178
+ violations.push({
179
+ rule: 4,
180
+ code: "local/unsupported-target",
181
+ span: span(opening),
182
+ component: "Theme",
183
+ message: zeroRuleMessage(4, { detail: "a <Theme> with both name and reset, which cannot mean one theme," })
184
+ });
185
+ }
186
+ if (!closing) {
187
+ violations.push({
188
+ rule: 4,
189
+ code: "local/unsupported-target",
190
+ span: span(element),
191
+ component: "Theme",
192
+ message: zeroRuleMessage(4, { detail: "a self-closing <Theme>, which has no subtree to theme," })
193
+ });
194
+ }
195
+ const issues = [];
196
+ const inlineValues = Object.keys(themeKeyProps).length ? getInlineValuesFromProps(themeKeyProps, config, (issue) => issues.push(issue)) : null;
197
+ for (const issue of issues) {
198
+ violations.push({
199
+ rule: 3,
200
+ code: "local/dynamic-style-value",
201
+ span: span(opening),
202
+ component: "Theme",
203
+ message: zeroRuleMessage(3, {
204
+ prop: issue.key,
205
+ component: "Theme",
206
+ detail: issue.message
207
+ })
208
+ });
209
+ }
210
+ const inlineCSS = inlineValues ? getVariablesCSSRules(inlineValues, config) : null;
211
+ if (inlineCSS) css.set(inlineCSS.identifier, inlineCSS.rules.join(""));
212
+ if (violations.length) return {
213
+ node: null,
214
+ violations,
215
+ css
216
+ };
217
+ return {
218
+ node: {
219
+ element,
220
+ opening,
221
+ closing,
222
+ options,
223
+ reset,
224
+ contain,
225
+ layer: inlineValues && inlineCSS ? {
226
+ inlineValues,
227
+ inlineClassName: inlineCSS.identifier
228
+ } : null
229
+ },
230
+ violations,
231
+ css
232
+ };
233
+ }
234
+ function lowerStaticTheme(node, chain, rootThemeName, config, id) {
235
+ const moduleId = resolvedModuleId(id);
236
+ const branches = resolveThemeChain(chain, rootThemeName, config);
237
+ if (branches.length > MAX_THEME_BRANCHES) {
238
+ return {
239
+ edits: [],
240
+ violations: [{
241
+ rule: 4,
242
+ code: "local/unsupported-target",
243
+ span: {
244
+ id: moduleId,
245
+ start: node.element.start,
246
+ end: node.element.end
247
+ },
248
+ component: "Theme",
249
+ message: zeroRuleMessage(4, { detail: `a <Theme> chain that enumerates ${branches.length} theme names, past the ${MAX_THEME_BRANCHES} this lowers,` })
250
+ }]
251
+ };
252
+ }
253
+ const inlineClass = node.layer?.inlineClassName ?? "";
254
+ const classBranches = branches.map((branch) => ({
255
+ test: branch.test,
256
+ value: JSON.stringify([
257
+ branch.isNew ? getThemeClassNames(branch.name) : "",
258
+ "is_Theme",
259
+ inlineClass
260
+ ].filter(Boolean).join(" ").replace(/\s+/g, " ").trim())
261
+ }));
262
+ const baseStyle = node.contain ? `display:"contents",contain:"strict"` : `display:"contents"`;
263
+ const styleBranches = branches.map((branch) => {
264
+ const theme = config.themes[branch.name];
265
+ const color = branch.isNew && theme ? variableToString(theme.color) : "";
266
+ return {
267
+ test: branch.test,
268
+ value: color ? `{color:${JSON.stringify(color)},${baseStyle}}` : `{${baseStyle}}`
269
+ };
270
+ });
271
+ const className = foldBranches(classBranches);
272
+ const style = foldBranches(styleBranches);
273
+ const classAttribute = className.startsWith("\"") ? `className=${className}` : `className={${className}}`;
274
+ const edits = [{
275
+ start: node.opening.start,
276
+ end: node.opening.end,
277
+ content: `<span ${classAttribute} style={${style}}>`,
278
+ origin: {
279
+ id: moduleId,
280
+ start: node.opening.start,
281
+ end: node.opening.end
282
+ }
283
+ }];
284
+ if (node.closing) {
285
+ edits.push({
286
+ start: node.closing.start,
287
+ end: node.closing.end,
288
+ content: `</span>`,
289
+ origin: {
290
+ id: moduleId,
291
+ start: node.closing.start,
292
+ end: node.closing.end
293
+ }
294
+ });
295
+ }
296
+ return {
297
+ edits,
298
+ violations: []
299
+ };
300
+ }
301
+
302
+ export { foldBranches, lowerStaticTheme, readStaticTheme, resolveThemeChain };
303
+ //# sourceMappingURL=theme.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","names":[],"sources":["esm/zero/theme.js"],"sourcesContent":["import {\n childNode,\n childNodes,\n resolvedModuleId,\n walkAst,\n zeroRuleMessage\n} from \"@tamagui/compiler-core\";\nimport { getThemeClassNames, reservedThemeProps } from \"@tamagui/helpers\";\nimport {\n getInlineValuesFromProps,\n getVariablesCSSRules,\n resolveThemeName,\n variableToString\n} from \"@tamagui/web\";\nconst MAX_THEME_BRANCHES = 8;\nconst LOWERABLE_RESERVED_PROPS = /* @__PURE__ */ new Set([\"name\", \"reset\", \"contain\"]);\nfunction jsxAttributeName(attribute) {\n const name = childNode(attribute, \"name\");\n return name && typeof name.name === \"string\" ? name.name : null;\n}\nfunction literalOf(node) {\n if (!node) return void 0;\n if (node.type === \"Literal\" && typeof node.value !== \"object\") {\n return node.value;\n }\n return void 0;\n}\nfunction hasSideEffects(node) {\n let found = false;\n walkAst(node, (child) => {\n if (child.type === \"CallExpression\" || child.type === \"OptionalCallExpression\" || child.type === \"NewExpression\" || child.type === \"AwaitExpression\" || child.type === \"YieldExpression\" || child.type === \"AssignmentExpression\" || child.type === \"UpdateExpression\" || child.type === \"TaggedTemplateExpression\") {\n found = true;\n }\n });\n return found;\n}\nfunction readNameOptions(value, source, guards) {\n const literal = literalOf(value);\n if (typeof literal === \"string\") {\n return [{ test: guards.length ? guards.join(\" && \") : null, name: literal }];\n }\n if (value.type === \"ConditionalExpression\") {\n const test = childNode(value, \"test\");\n const consequent = childNode(value, \"consequent\");\n const alternate = childNode(value, \"alternate\");\n if (!test || !consequent || !alternate) return null;\n if (hasSideEffects(test)) return null;\n const testText = source.slice(test.start, test.end).replace(/\\s+/g, \" \").trim();\n const left = readNameOptions(consequent, source, [...guards, `(${testText})`]);\n const right = readNameOptions(alternate, source, [...guards, `!(${testText})`]);\n if (!left || !right) return null;\n return [...left, ...right];\n }\n return null;\n}\nfunction foldBranches(branches) {\n const last = branches[branches.length - 1];\n if (new Set(branches.map((branch) => branch.value)).size === 1) return last.value;\n let expression = last.value;\n for (let index = branches.length - 2; index >= 0; index--) {\n const branch = branches[index];\n expression = branch.test === null ? branch.value : `${branch.test} ? ${branch.value} : ${expression}`;\n }\n return expression;\n}\nfunction resolveThemeChain(chain, rootThemeName, config) {\n let branches = [{ test: null, name: rootThemeName, isNew: false }];\n for (const node of chain) {\n const next = [];\n for (const parent of branches) {\n for (const option of node.options) {\n const resolved = resolveThemeName(\n parent.name,\n option.name,\n node.reset,\n config.themes\n );\n const tests = [parent.test, option.test].filter(Boolean);\n next.push({\n test: tests.length ? tests.join(\" && \") : null,\n name: resolved ?? parent.name,\n isNew: resolved !== null\n });\n }\n }\n branches = next;\n }\n return branches;\n}\nfunction readStaticTheme(element, id, source, config) {\n const moduleId = resolvedModuleId(id);\n const violations = [];\n const css = /* @__PURE__ */ new Map();\n const opening = childNode(element, \"openingElement\");\n const closing = childNode(element, \"closingElement\");\n const span = (node) => ({ id: moduleId, start: node.start, end: node.end });\n let options = [{ test: null, name: void 0 }];\n let reset = false;\n let contain = false;\n const themeKeyProps = {};\n for (const attribute of childNodes(opening, \"attributes\")) {\n if (attribute.type !== \"JSXAttribute\") {\n violations.push({\n rule: 1,\n code: \"local/unsafe-style-spread\",\n span: span(attribute),\n component: \"Theme\",\n message: zeroRuleMessage(1, { component: \"Theme\" })\n });\n continue;\n }\n const key = jsxAttributeName(attribute);\n if (!key) continue;\n const rawValue = childNode(attribute, \"value\");\n const value = rawValue && rawValue.type === \"JSXExpressionContainer\" ? childNode(rawValue, \"expression\") : rawValue;\n if (key === \"name\") {\n const read = value ? readNameOptions(value, source, []) : null;\n if (!read) {\n violations.push({\n rule: 4,\n code: \"local/unsupported-target\",\n span: span(attribute),\n component: \"Theme\",\n message: zeroRuleMessage(4, {\n detail: `the <Theme name> value ${source.slice(attribute.start, attribute.end).replace(/\\s+/g, \" \").trim()}, which is not a literal theme name or a conditional over literal theme names,`\n })\n });\n continue;\n }\n options = read;\n continue;\n }\n if (reservedThemeProps[key]) {\n if (!LOWERABLE_RESERVED_PROPS.has(key)) {\n violations.push({\n rule: 4,\n code: \"local/unsupported-target\",\n span: span(attribute),\n component: \"Theme\",\n message: zeroRuleMessage(4, {\n detail: `the <Theme ${key}> prop, which has no compiled form,`\n })\n });\n continue;\n }\n const literal2 = value ? literalOf(value) : true;\n if (typeof literal2 !== \"boolean\") {\n violations.push({\n rule: 4,\n code: \"local/unsupported-target\",\n span: span(attribute),\n component: \"Theme\",\n message: zeroRuleMessage(4, {\n detail: `a non-literal <Theme ${key}> value,`\n })\n });\n continue;\n }\n if (key === \"reset\") reset = literal2;\n if (key === \"contain\") contain = literal2;\n continue;\n }\n const literal = value ? literalOf(value) : void 0;\n if (typeof literal !== \"string\" && typeof literal !== \"number\") {\n violations.push({\n rule: 3,\n code: \"local/dynamic-style-value\",\n span: span(attribute),\n component: \"Theme\",\n message: zeroRuleMessage(3, {\n prop: key,\n component: \"Theme\",\n detail: value ? \"a theme value must be a string or number literal at build time\" : \"a theme key needs a value\"\n })\n });\n continue;\n }\n themeKeyProps[key] = literal;\n }\n if (reset && options.some((option) => option.name !== void 0)) {\n violations.push({\n rule: 4,\n code: \"local/unsupported-target\",\n span: span(opening),\n component: \"Theme\",\n message: zeroRuleMessage(4, {\n detail: \"a <Theme> with both name and reset, which cannot mean one theme,\"\n })\n });\n }\n if (!closing) {\n violations.push({\n rule: 4,\n code: \"local/unsupported-target\",\n span: span(element),\n component: \"Theme\",\n message: zeroRuleMessage(4, {\n detail: \"a self-closing <Theme>, which has no subtree to theme,\"\n })\n });\n }\n const issues = [];\n const inlineValues = Object.keys(themeKeyProps).length ? getInlineValuesFromProps(themeKeyProps, config, (issue) => issues.push(issue)) : null;\n for (const issue of issues) {\n violations.push({\n rule: 3,\n code: \"local/dynamic-style-value\",\n span: span(opening),\n component: \"Theme\",\n message: zeroRuleMessage(3, {\n prop: issue.key,\n component: \"Theme\",\n detail: issue.message\n })\n });\n }\n const inlineCSS = inlineValues ? getVariablesCSSRules(inlineValues, config) : null;\n if (inlineCSS) css.set(inlineCSS.identifier, inlineCSS.rules.join(\"\"));\n if (violations.length) return { node: null, violations, css };\n return {\n node: {\n element,\n opening,\n closing,\n options,\n reset,\n contain,\n layer: inlineValues && inlineCSS ? {\n inlineValues,\n inlineClassName: inlineCSS.identifier\n } : null\n },\n violations,\n css\n };\n}\nfunction lowerStaticTheme(node, chain, rootThemeName, config, id) {\n const moduleId = resolvedModuleId(id);\n const branches = resolveThemeChain(chain, rootThemeName, config);\n if (branches.length > MAX_THEME_BRANCHES) {\n return {\n edits: [],\n violations: [\n {\n rule: 4,\n code: \"local/unsupported-target\",\n span: { id: moduleId, start: node.element.start, end: node.element.end },\n component: \"Theme\",\n message: zeroRuleMessage(4, {\n detail: `a <Theme> chain that enumerates ${branches.length} theme names, past the ${MAX_THEME_BRANCHES} this lowers,`\n })\n }\n ]\n };\n }\n const inlineClass = node.layer?.inlineClassName ?? \"\";\n const classBranches = branches.map((branch) => ({\n test: branch.test,\n value: JSON.stringify(\n [branch.isNew ? getThemeClassNames(branch.name) : \"\", \"is_Theme\", inlineClass].filter(Boolean).join(\" \").replace(/\\s+/g, \" \").trim()\n )\n }));\n const baseStyle = node.contain ? `display:\"contents\",contain:\"strict\"` : `display:\"contents\"`;\n const styleBranches = branches.map((branch) => {\n const theme = config.themes[branch.name];\n const color = branch.isNew && theme ? variableToString(theme.color) : \"\";\n return {\n test: branch.test,\n value: color ? `{color:${JSON.stringify(color)},${baseStyle}}` : `{${baseStyle}}`\n };\n });\n const className = foldBranches(classBranches);\n const style = foldBranches(styleBranches);\n const classAttribute = className.startsWith('\"') ? `className=${className}` : `className={${className}}`;\n const edits = [\n {\n start: node.opening.start,\n end: node.opening.end,\n content: `<span ${classAttribute} style={${style}}>`,\n origin: { id: moduleId, start: node.opening.start, end: node.opening.end }\n }\n ];\n if (node.closing) {\n edits.push({\n start: node.closing.start,\n end: node.closing.end,\n content: `</span>`,\n origin: { id: moduleId, start: node.closing.start, end: node.closing.end }\n });\n }\n return { edits, violations: [] };\n}\nexport {\n foldBranches,\n lowerStaticTheme,\n readStaticTheme,\n resolveThemeChain\n};\n//# sourceMappingURL=theme.js.map\n"],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ import { applyLoweredModule, childNode, childNodes, parseModuleAst, planZeroErasure, resolvedModuleId, walkAst, zeroIslandThemeMessage, zeroViolationsFromPlan } from "@tamagui/compiler-core";
2
+ import { createHash } from "node:crypto";
3
+ import path from "node:path";
4
+ import { foldBranches, lowerStaticTheme, readStaticTheme, resolveThemeChain } from "./theme.mjs";
5
+
6
+ function identifierNameOf(node) {
7
+ return node && node.type === "Identifier" && typeof node.name === "string" ? node.name : null;
8
+ }
9
+ function jsxNameOf(element) {
10
+ const opening = childNode(element, "openingElement");
11
+ if (!opening) return null;
12
+ const name = childNode(opening, "name");
13
+ return name && name.type === "JSXIdentifier" && typeof name.name === "string" ? name.name : null;
14
+ }
15
+ function transformZeroModule(input) {
16
+ const { id, source, config } = input;
17
+ const moduleId = resolvedModuleId(id);
18
+ const program = parseModuleAst(source, id);
19
+ const violations = zeroViolationsFromPlan(input.plan);
20
+ const edits = [];
21
+ const bridges = /* @__PURE__ */ new Map();
22
+ const bridgeCSS = /* @__PURE__ */ new Map();
23
+ let themeLocal = null;
24
+ const islandLocals = /* @__PURE__ */ new Map();
25
+ for (const statement of childNodes(program, "body")) {
26
+ if (statement.type !== "ImportDeclaration") continue;
27
+ const sourceNode = childNode(statement, "source");
28
+ const specifier = sourceNode && typeof sourceNode.value === "string" ? sourceNode.value : null;
29
+ if (!specifier) continue;
30
+ const island = input.resolveIslandLoader(specifier);
31
+ for (const importSpecifier of childNodes(statement, "specifiers")) {
32
+ const local = identifierNameOf(childNode(importSpecifier, "local"));
33
+ if (!local) continue;
34
+ if (island) {
35
+ islandLocals.set(local, island.islandId);
36
+ continue;
37
+ }
38
+ if (!input.isTamaguiSpecifier(specifier)) continue;
39
+ const imported = childNode(importSpecifier, "imported");
40
+ if (imported && imported.name === "Theme") themeLocal = local;
41
+ }
42
+ }
43
+ const parents = /* @__PURE__ */ new Map();
44
+ const elements = [];
45
+ walkAst(program, (node, parent) => {
46
+ if (parent) parents.set(node, parent);
47
+ if (node.type === "JSXElement") elements.push(node);
48
+ });
49
+ const themeElements = themeLocal ? elements.filter((element) => jsxNameOf(element) === themeLocal) : [];
50
+ const themeNodes = /* @__PURE__ */ new Map();
51
+ for (const element of themeElements) {
52
+ const read = readStaticTheme(element, id, source, config);
53
+ for (const [identifier, rules] of read.css) bridgeCSS.set(identifier, rules);
54
+ violations.push(...read.violations);
55
+ if (read.node) themeNodes.set(element, read.node);
56
+ }
57
+ const themeChainOf = (element) => {
58
+ const chain = [];
59
+ let cursor = element;
60
+ while (cursor) {
61
+ const node = themeNodes.get(cursor);
62
+ if (node) chain.unshift(node);
63
+ cursor = parents.get(cursor);
64
+ }
65
+ return chain;
66
+ };
67
+ const rootThemeName = Object.keys(config.themes)[0] ?? "light";
68
+ for (const element of themeElements) {
69
+ const node = themeNodes.get(element);
70
+ if (!node) continue;
71
+ const lowered = lowerStaticTheme(node, themeChainOf(element), rootThemeName, config, id);
72
+ violations.push(...lowered.violations);
73
+ edits.push(...lowered.edits);
74
+ }
75
+ const mounts = elements.filter((element) => {
76
+ const name = jsxNameOf(element);
77
+ return !!name && islandLocals.has(name);
78
+ }).sort((left, right) => left.start - right.start);
79
+ const moduleBridgePrefix = createHash("sha256").update(path.relative(input.root, id).replace(/\\/g, "/")).digest("hex").slice(0, 8);
80
+ const loweredRanges = input.plan.edits.filter((edit) => edit.end > edit.start);
81
+ const isOpaqueAncestor = (element) => {
82
+ if (themeNodes.has(element)) return false;
83
+ const name = jsxNameOf(element);
84
+ if (!name || islandLocals.has(name)) return false;
85
+ if (name[0] !== name[0].toUpperCase()) return false;
86
+ const nameNode = childNode(childNode(element, "openingElement"), "name");
87
+ return !loweredRanges.some((edit) => edit.start <= nameNode.start && edit.end >= nameNode.end);
88
+ };
89
+ mounts.forEach((element, index) => {
90
+ const islandId = islandLocals.get(jsxNameOf(element));
91
+ let opaque = null;
92
+ for (let cursor = parents.get(element); cursor; cursor = parents.get(cursor)) {
93
+ if (cursor.type === "JSXElement" && isOpaqueAncestor(cursor)) opaque = cursor;
94
+ }
95
+ if (opaque) {
96
+ violations.push({
97
+ rule: 4,
98
+ code: "local/unsupported-target",
99
+ span: {
100
+ id: moduleId,
101
+ start: element.start,
102
+ end: element.end
103
+ },
104
+ component: islandId,
105
+ message: zeroIslandThemeMessage(islandId)
106
+ });
107
+ return;
108
+ }
109
+ const chain = themeChainOf(element);
110
+ const layers = chain.map((node) => node.layer).filter((layer) => !!layer);
111
+ const branches = resolveThemeChain(chain, rootThemeName, config);
112
+ const descriptors = branches.map((branch, branchIndex) => ({
113
+ test: branch.test,
114
+ bridge: {
115
+ id: branches.length === 1 ? `b${moduleBridgePrefix}_${index}` : `b${moduleBridgePrefix}_${index}_${branchIndex}`,
116
+ name: branch.name,
117
+ layers
118
+ }
119
+ }));
120
+ const list = bridges.get(islandId) ?? [];
121
+ for (const descriptor of descriptors) list.push(descriptor.bridge);
122
+ bridges.set(islandId, list);
123
+ const fold = (value) => foldBranches(descriptors.map((descriptor) => ({
124
+ test: descriptor.test,
125
+ value: value(descriptor.bridge)
126
+ })));
127
+ const opening = childNode(element, "openingElement");
128
+ const nameNode = childNode(opening, "name");
129
+ edits.push({
130
+ start: nameNode.end,
131
+ end: nameNode.end,
132
+ content: ` data-tamagui-bridge={${fold((bridge) => JSON.stringify(bridge.id))}} __tamaguiBridge={${fold((bridge) => JSON.stringify(bridge))}}`,
133
+ origin: {
134
+ id: moduleId,
135
+ start: nameNode.start,
136
+ end: nameNode.end
137
+ }
138
+ });
139
+ });
140
+ const erasure = violations.length ? null : planZeroErasure({
141
+ id: moduleId,
142
+ source,
143
+ loweredEdits: [...input.plan.edits, ...edits],
144
+ isTamaguiSpecifier: input.isTamaguiSpecifier,
145
+ islandIdFor: input.resolveIslandModule
146
+ });
147
+ if (erasure) {
148
+ edits.push(...erasure.edits);
149
+ violations.push(...erasure.violations);
150
+ }
151
+ const output = input.mode === "report" ? applyLoweredModule(source, moduleId, input.plan) : violations.length ? {
152
+ changed: false,
153
+ code: source,
154
+ map: null
155
+ } : applyLoweredModule(source, moduleId, {
156
+ id: moduleId,
157
+ sourceHash: input.plan.sourceHash,
158
+ edits: [...input.plan.edits, ...edits]
159
+ });
160
+ return {
161
+ output,
162
+ edits: input.mode === "report" ? [] : edits,
163
+ bridges: input.mode === "report" ? /* @__PURE__ */ new Map() : bridges,
164
+ bridgeCSS: input.mode === "report" ? /* @__PURE__ */ new Map() : bridgeCSS,
165
+ violations,
166
+ erased: {
167
+ modules: erasure?.removedModules ?? [],
168
+ bindings: erasure?.removedBindings ?? [],
169
+ styledDefinitions: erasure?.erasedStyledDefinitions ?? [],
170
+ exports: erasure?.erasedExports ?? []
171
+ },
172
+ rewrittenAnimatedNumberHooks: erasure?.rewrittenAnimatedNumberHooks ?? []
173
+ };
174
+ }
175
+
176
+ export { transformZeroModule };
177
+ //# sourceMappingURL=transform.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","names":[],"sources":["esm/zero/transform.js"],"sourcesContent":["import {\n applyLoweredModule,\n childNode,\n childNodes,\n parseModuleAst,\n planZeroErasure,\n resolvedModuleId,\n walkAst,\n zeroIslandThemeMessage,\n zeroViolationsFromPlan\n} from \"@tamagui/compiler-core\";\nimport { createHash } from \"node:crypto\";\nimport path from \"node:path\";\nimport {\n foldBranches,\n lowerStaticTheme,\n readStaticTheme,\n resolveThemeChain\n} from \"./theme\";\nfunction identifierNameOf(node) {\n return node && node.type === \"Identifier\" && typeof node.name === \"string\" ? node.name : null;\n}\nfunction jsxNameOf(element) {\n const opening = childNode(element, \"openingElement\");\n if (!opening) return null;\n const name = childNode(opening, \"name\");\n return name && name.type === \"JSXIdentifier\" && typeof name.name === \"string\" ? name.name : null;\n}\nfunction transformZeroModule(input) {\n const { id, source, config } = input;\n const moduleId = resolvedModuleId(id);\n const program = parseModuleAst(source, id);\n const violations = zeroViolationsFromPlan(input.plan);\n const edits = [];\n const bridges = /* @__PURE__ */ new Map();\n const bridgeCSS = /* @__PURE__ */ new Map();\n let themeLocal = null;\n const islandLocals = /* @__PURE__ */ new Map();\n for (const statement of childNodes(program, \"body\")) {\n if (statement.type !== \"ImportDeclaration\") continue;\n const sourceNode = childNode(statement, \"source\");\n const specifier = sourceNode && typeof sourceNode.value === \"string\" ? sourceNode.value : null;\n if (!specifier) continue;\n const island = input.resolveIslandLoader(specifier);\n for (const importSpecifier of childNodes(statement, \"specifiers\")) {\n const local = identifierNameOf(childNode(importSpecifier, \"local\"));\n if (!local) continue;\n if (island) {\n islandLocals.set(local, island.islandId);\n continue;\n }\n if (!input.isTamaguiSpecifier(specifier)) continue;\n const imported = childNode(importSpecifier, \"imported\");\n if (imported && imported.name === \"Theme\") themeLocal = local;\n }\n }\n const parents = /* @__PURE__ */ new Map();\n const elements = [];\n walkAst(program, (node, parent) => {\n if (parent) parents.set(node, parent);\n if (node.type === \"JSXElement\") elements.push(node);\n });\n const themeElements = themeLocal ? elements.filter((element) => jsxNameOf(element) === themeLocal) : [];\n const themeNodes = /* @__PURE__ */ new Map();\n for (const element of themeElements) {\n const read = readStaticTheme(element, id, source, config);\n for (const [identifier, rules] of read.css) bridgeCSS.set(identifier, rules);\n violations.push(...read.violations);\n if (read.node) themeNodes.set(element, read.node);\n }\n const themeChainOf = (element) => {\n const chain = [];\n let cursor = element;\n while (cursor) {\n const node = themeNodes.get(cursor);\n if (node) chain.unshift(node);\n cursor = parents.get(cursor);\n }\n return chain;\n };\n const rootThemeName = Object.keys(config.themes)[0] ?? \"light\";\n for (const element of themeElements) {\n const node = themeNodes.get(element);\n if (!node) continue;\n const lowered = lowerStaticTheme(\n node,\n themeChainOf(element),\n rootThemeName,\n config,\n id\n );\n violations.push(...lowered.violations);\n edits.push(...lowered.edits);\n }\n const mounts = elements.filter((element) => {\n const name = jsxNameOf(element);\n return !!name && islandLocals.has(name);\n }).sort((left, right) => left.start - right.start);\n const moduleBridgePrefix = createHash(\"sha256\").update(path.relative(input.root, id).replace(/\\\\/g, \"/\")).digest(\"hex\").slice(0, 8);\n const loweredRanges = input.plan.edits.filter((edit) => edit.end > edit.start);\n const isOpaqueAncestor = (element) => {\n if (themeNodes.has(element)) return false;\n const name = jsxNameOf(element);\n if (!name || islandLocals.has(name)) return false;\n if (name[0] !== name[0].toUpperCase()) return false;\n const nameNode = childNode(childNode(element, \"openingElement\"), \"name\");\n return !loweredRanges.some(\n (edit) => edit.start <= nameNode.start && edit.end >= nameNode.end\n );\n };\n mounts.forEach((element, index) => {\n const islandId = islandLocals.get(jsxNameOf(element));\n let opaque = null;\n for (let cursor = parents.get(element); cursor; cursor = parents.get(cursor)) {\n if (cursor.type === \"JSXElement\" && isOpaqueAncestor(cursor)) opaque = cursor;\n }\n if (opaque) {\n violations.push({\n rule: 4,\n code: \"local/unsupported-target\",\n span: { id: moduleId, start: element.start, end: element.end },\n component: islandId,\n message: zeroIslandThemeMessage(islandId)\n });\n return;\n }\n const chain = themeChainOf(element);\n const layers = chain.map((node) => node.layer).filter((layer) => !!layer);\n const branches = resolveThemeChain(chain, rootThemeName, config);\n const descriptors = branches.map((branch, branchIndex) => ({\n test: branch.test,\n bridge: {\n // unique across modules and stable across the server and client\n // compilations of the same entry, because both see the same module path\n id: branches.length === 1 ? `b${moduleBridgePrefix}_${index}` : `b${moduleBridgePrefix}_${index}_${branchIndex}`,\n name: branch.name,\n layers\n }\n }));\n const list = bridges.get(islandId) ?? [];\n for (const descriptor of descriptors) list.push(descriptor.bridge);\n bridges.set(islandId, list);\n const fold = (value) => foldBranches(\n descriptors.map((descriptor) => ({\n test: descriptor.test,\n value: value(descriptor.bridge)\n }))\n );\n const opening = childNode(element, \"openingElement\");\n const nameNode = childNode(opening, \"name\");\n edits.push({\n start: nameNode.end,\n end: nameNode.end,\n content: ` data-tamagui-bridge={${fold(\n (bridge) => JSON.stringify(bridge.id)\n )}} __tamaguiBridge={${fold((bridge) => JSON.stringify(bridge))}}`,\n origin: { id: moduleId, start: nameNode.start, end: nameNode.end }\n });\n });\n const erasure = violations.length ? null : planZeroErasure({\n id: moduleId,\n source,\n loweredEdits: [...input.plan.edits, ...edits],\n isTamaguiSpecifier: input.isTamaguiSpecifier,\n islandIdFor: input.resolveIslandModule\n });\n if (erasure) {\n edits.push(...erasure.edits);\n violations.push(...erasure.violations);\n }\n const output = input.mode === \"report\" ? applyLoweredModule(source, moduleId, input.plan) : violations.length ? { changed: false, code: source, map: null } : applyLoweredModule(source, moduleId, {\n id: moduleId,\n sourceHash: input.plan.sourceHash,\n edits: [...input.plan.edits, ...edits]\n });\n return {\n output,\n edits: input.mode === \"report\" ? [] : edits,\n bridges: input.mode === \"report\" ? /* @__PURE__ */ new Map() : bridges,\n bridgeCSS: input.mode === \"report\" ? /* @__PURE__ */ new Map() : bridgeCSS,\n violations,\n erased: {\n modules: erasure?.removedModules ?? [],\n bindings: erasure?.removedBindings ?? [],\n styledDefinitions: erasure?.erasedStyledDefinitions ?? [],\n exports: erasure?.erasedExports ?? []\n },\n rewrittenAnimatedNumberHooks: erasure?.rewrittenAnimatedNumberHooks ?? []\n };\n}\nexport {\n transformZeroModule\n};\n//# sourceMappingURL=transform.js.map\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/static",
3
- "version": "2.7.7",
3
+ "version": "3.0.0-beta.643.1",
4
4
  "gitHead": "a49cc7ea6b93ba384e77a4880ae48ac4a5635c14",
5
5
  "license": "MIT",
6
6
  "source": "src/index.ts",
@@ -9,26 +9,30 @@
9
9
  "types",
10
10
  "dist"
11
11
  ],
12
- "type": "commonjs",
13
- "main": "dist",
12
+ "type": "module",
13
+ "main": "dist/cjs/index.cjs",
14
+ "module": "dist/esm/index.mjs",
14
15
  "types": "./types/index.d.ts",
15
16
  "exports": {
16
17
  "./package.json": "./package.json",
17
18
  ".": {
18
19
  "types": "./types/index.d.ts",
19
- "default": "./dist/index.cjs"
20
- },
21
- "./worker": {
22
- "types": "./types/worker.d.ts",
23
- "default": "./dist/worker.cjs"
20
+ "module": "./dist/esm/index.mjs",
21
+ "import": "./dist/esm/index.mjs",
22
+ "require": "./dist/cjs/index.cjs",
23
+ "default": "./dist/esm/index.mjs"
24
24
  },
25
25
  "./checkDeps": {
26
26
  "types": "./types/checkDeps.d.ts",
27
- "default": "./dist/checkDeps.cjs"
27
+ "import": "./dist/esm/checkDeps.mjs",
28
+ "require": "./dist/cjs/checkDeps.cjs",
29
+ "default": "./dist/esm/checkDeps.mjs"
28
30
  },
29
31
  "./loadTamagui": {
30
32
  "types": "./types/extractor/loadTamagui.d.ts",
31
- "default": "./dist/extractor/loadTamagui.cjs"
33
+ "import": "./dist/esm/extractor/loadTamagui.mjs",
34
+ "require": "./dist/cjs/extractor/loadTamagui.cjs",
35
+ "default": "./dist/esm/extractor/loadTamagui.mjs"
32
36
  }
33
37
  },
34
38
  "publishConfig": {
@@ -41,55 +45,41 @@
41
45
  "clean:build": "tamagui-build clean:build"
42
46
  },
43
47
  "dependencies": {
44
- "@babel/core": "^7.25.2",
45
- "@babel/generator": "^7.25.5",
46
- "@babel/helper-plugin-utils": "^7.24.8",
47
- "@babel/parser": "^7.25.4",
48
- "@babel/plugin-transform-react-jsx": "^7.25.2",
49
- "@babel/runtime": "^7.25.4",
50
- "@babel/template": "^7.25.0",
51
- "@babel/traverse": "^7.25.4",
52
- "@babel/types": "^7.25.4",
53
- "@tamagui/cli-color": "2.7.7",
54
- "@tamagui/config-default": "2.7.7",
55
- "@tamagui/core": "2.7.7",
56
- "@tamagui/fake-react-native": "2.7.7",
57
- "@tamagui/generate-themes": "2.7.7",
58
- "@tamagui/helpers": "2.7.7",
59
- "@tamagui/helpers-node": "2.7.7",
60
- "@tamagui/proxy-worm": "2.7.7",
61
- "@tamagui/react-native-web-internals": "2.7.7",
62
- "@tamagui/react-native-web-lite": "2.7.7",
63
- "@tamagui/shorthands": "2.7.7",
64
- "@tamagui/types": "2.7.7",
65
- "@tamagui/web": "2.7.7",
66
- "babel-literal-to-ast": "^2.1.0",
48
+ "@tamagui/cli-color": "3.0.0-beta.643.1",
49
+ "@tamagui/compiler-core": "3.0.0-beta.643.1",
50
+ "@tamagui/config-default": "3.0.0-beta.643.1",
51
+ "@tamagui/core": "3.0.0-beta.643.1",
52
+ "@tamagui/dom": "3.0.0-beta.643.1",
53
+ "@tamagui/fake-react-native": "3.0.0-beta.643.1",
54
+ "@tamagui/generate-themes": "3.0.0-beta.643.1",
55
+ "@tamagui/helpers": "3.0.0-beta.643.1",
56
+ "@tamagui/helpers-node": "3.0.0-beta.643.1",
57
+ "@tamagui/react-native-web-internals": "3.0.0-beta.643.1",
58
+ "@tamagui/react-native-web-lite": "3.0.0-beta.643.1",
59
+ "@tamagui/shorthands": "3.0.0-beta.643.1",
60
+ "@tamagui/style-grammar": "3.0.0-beta.643.1",
61
+ "@tamagui/types": "3.0.0-beta.643.1",
62
+ "@tamagui/web": "3.0.0-beta.643.1",
67
63
  "browserslist": "^4.28.1",
68
64
  "check-dependency-version-consistency": "^4.1.0",
69
- "esbuild": "^0.27.2",
65
+ "esbuild": "0.28.1",
70
66
  "esbuild-register": "^3.6.0",
71
- "esbuild-wasm": "^0.27.2",
72
67
  "fast-glob": "^3.2.11",
73
- "find-cache-dir": "^3.3.2",
74
68
  "find-root": "^1.1.0",
75
69
  "fs-extra": "^11.2.0",
76
- "invariant": "^2.2.4",
77
70
  "js-yaml": "^4.1.0",
78
71
  "react-native-web": "^0.21.0"
79
72
  },
80
73
  "devDependencies": {
81
- "@babel/plugin-syntax-typescript": "^7.25.4",
82
- "@tamagui/build": "2.7.7",
83
- "@types/babel__core": "^7.20.5",
74
+ "@tamagui/build": "3.0.0-beta.643.1",
84
75
  "@types/find-root": "^1.1.2",
85
76
  "@types/node": "^22.1.0",
86
77
  "@types/webpack": "^4.41.26",
87
- "babel-loader": "^9.1.3",
88
78
  "esbuild-loader": "^4.2.2",
89
79
  "null-loader": "^4.0.1",
90
80
  "react": ">=19",
91
- "react-native": "0.83.2",
92
- "typescript": "~5.9.2"
81
+ "react-native": "0.86.2",
82
+ "typescript": "~6.0.3"
93
83
  },
94
84
  "peerDependencies": {
95
85
  "react": ">=19"