@tamagui/static 2.7.7 → 3.0.0-beta.1097.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 (335) hide show
  1. package/dist/cjs/check-dep-versions.cjs +354 -0
  2. package/dist/cjs/checkDeps.cjs +301 -0
  3. package/dist/cjs/compiler.cjs +349 -0
  4. package/dist/cjs/compilerHost.cjs +2287 -0
  5. package/dist/cjs/componentDiscovery.cjs +94 -0
  6. package/dist/cjs/constants.cjs +32 -0
  7. package/dist/cjs/domStructuralPass.cjs +121 -0
  8. package/dist/cjs/exports.cjs +44 -0
  9. package/dist/cjs/extractor/addLocalExports.cjs +63 -0
  10. package/dist/cjs/extractor/bundle.cjs +229 -0
  11. package/dist/cjs/extractor/bundleConfig.cjs +769 -0
  12. package/dist/cjs/extractor/concatClassName.cjs +120 -0
  13. package/dist/cjs/extractor/detectModuleFormat.cjs +53 -0
  14. package/dist/cjs/extractor/esbuildAliasPlugin.cjs +46 -0
  15. package/dist/cjs/extractor/esbuildTsconfigPaths.cjs +91 -0
  16. package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +42 -0
  17. package/dist/cjs/extractor/loadTamagui.cjs +394 -0
  18. package/dist/cjs/extractor/regenerateConfig.cjs +160 -0
  19. package/dist/cjs/extractor/watchTamaguiConfig.cjs +63 -0
  20. package/dist/cjs/getPragmaOptions.cjs +66 -0
  21. package/dist/cjs/helpers/memoize.cjs +41 -0
  22. package/dist/cjs/helpers/requireTamaguiCore.cjs +39 -0
  23. package/dist/cjs/index.cjs +33 -0
  24. package/dist/cjs/registerRequire.cjs +219 -0
  25. package/dist/cjs/server.cjs +65 -0
  26. package/dist/cjs/staticEvaluationIgnoredModules.cjs +85 -0
  27. package/dist/cjs/types.cjs +16 -0
  28. package/dist/cjs/zero/artifact.cjs +144 -0
  29. package/dist/cjs/zero/graph.cjs +208 -0
  30. package/dist/cjs/zero/identity.cjs +60 -0
  31. package/dist/cjs/zero/index.cjs +33 -0
  32. package/dist/cjs/zero/islands.cjs +235 -0
  33. package/dist/cjs/zero/options.cjs +162 -0
  34. package/dist/cjs/zero/ownership.cjs +78 -0
  35. package/dist/cjs/zero/theme.cjs +337 -0
  36. package/dist/cjs/zero/transform.cjs +207 -0
  37. package/dist/esm/check-dep-versions.mjs +329 -0
  38. package/dist/esm/check-dep-versions.mjs.map +1 -0
  39. package/dist/esm/checkDeps.mjs +279 -0
  40. package/dist/esm/checkDeps.mjs.map +1 -0
  41. package/dist/esm/compiler.mjs +319 -0
  42. package/dist/esm/compiler.mjs.map +1 -0
  43. package/dist/esm/compilerHost.mjs +2265 -0
  44. package/dist/esm/compilerHost.mjs.map +1 -0
  45. package/dist/esm/componentDiscovery.mjs +69 -0
  46. package/dist/esm/componentDiscovery.mjs.map +1 -0
  47. package/dist/esm/constants.mjs +7 -0
  48. package/dist/esm/constants.mjs.map +1 -0
  49. package/dist/esm/domStructuralPass.mjs +102 -0
  50. package/dist/esm/domStructuralPass.mjs.map +1 -0
  51. package/dist/esm/exports.mjs +29 -0
  52. package/dist/esm/extractor/addLocalExports.mjs +44 -0
  53. package/dist/esm/extractor/addLocalExports.mjs.map +1 -0
  54. package/dist/esm/extractor/bundle.mjs +199 -0
  55. package/dist/esm/extractor/bundle.mjs.map +1 -0
  56. package/dist/esm/extractor/bundleConfig.mjs +728 -0
  57. package/dist/esm/extractor/bundleConfig.mjs.map +1 -0
  58. package/dist/esm/extractor/concatClassName.mjs +100 -0
  59. package/dist/esm/extractor/concatClassName.mjs.map +1 -0
  60. package/dist/esm/extractor/detectModuleFormat.mjs +31 -0
  61. package/dist/esm/extractor/detectModuleFormat.mjs.map +1 -0
  62. package/dist/esm/extractor/esbuildAliasPlugin.mjs +26 -0
  63. package/dist/esm/extractor/esbuildAliasPlugin.mjs.map +1 -0
  64. package/dist/esm/extractor/esbuildTsconfigPaths.mjs +63 -0
  65. package/dist/esm/extractor/esbuildTsconfigPaths.mjs.map +1 -0
  66. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs +23 -0
  67. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs.map +1 -0
  68. package/dist/esm/extractor/loadTamagui.mjs +357 -0
  69. package/dist/esm/extractor/loadTamagui.mjs.map +1 -0
  70. package/dist/esm/extractor/regenerateConfig.mjs +131 -0
  71. package/dist/esm/extractor/regenerateConfig.mjs.map +1 -0
  72. package/dist/esm/extractor/watchTamaguiConfig.mjs +43 -0
  73. package/dist/esm/extractor/watchTamaguiConfig.mjs.map +1 -0
  74. package/dist/esm/getPragmaOptions.mjs +46 -0
  75. package/dist/esm/getPragmaOptions.mjs.map +1 -0
  76. package/dist/esm/helpers/memoize.mjs +21 -0
  77. package/dist/esm/helpers/memoize.mjs.map +1 -0
  78. package/dist/esm/helpers/requireTamaguiCore.mjs +19 -0
  79. package/dist/esm/helpers/requireTamaguiCore.mjs.map +1 -0
  80. package/dist/esm/index.mjs +8 -0
  81. package/dist/esm/index.mjs.map +1 -0
  82. package/dist/esm/registerRequire.mjs +195 -0
  83. package/dist/esm/registerRequire.mjs.map +1 -0
  84. package/dist/esm/server.mjs +40 -0
  85. package/dist/esm/server.mjs.map +1 -0
  86. package/dist/esm/setup.mjs +0 -0
  87. package/dist/esm/staticEvaluationIgnoredModules.mjs +61 -0
  88. package/dist/esm/staticEvaluationIgnoredModules.mjs.map +1 -0
  89. package/dist/esm/types.mjs +0 -0
  90. package/dist/esm/zero/artifact.mjs +119 -0
  91. package/dist/esm/zero/artifact.mjs.map +1 -0
  92. package/dist/esm/zero/graph.mjs +170 -0
  93. package/dist/esm/zero/graph.mjs.map +1 -0
  94. package/dist/esm/zero/identity.mjs +36 -0
  95. package/dist/esm/zero/identity.mjs.map +1 -0
  96. package/dist/esm/zero/index.mjs +19 -0
  97. package/dist/esm/zero/islands.mjs +201 -0
  98. package/dist/esm/zero/islands.mjs.map +1 -0
  99. package/dist/esm/zero/options.mjs +129 -0
  100. package/dist/esm/zero/options.mjs.map +1 -0
  101. package/dist/esm/zero/ownership.mjs +48 -0
  102. package/dist/esm/zero/ownership.mjs.map +1 -0
  103. package/dist/esm/zero/theme.mjs +313 -0
  104. package/dist/esm/zero/theme.mjs.map +1 -0
  105. package/dist/esm/zero/transform.mjs +182 -0
  106. package/dist/esm/zero/transform.mjs.map +1 -0
  107. package/package.json +38 -47
  108. package/src/check-dep-versions.ts +2 -2
  109. package/src/checkDeps.ts +3 -2
  110. package/src/compiler.ts +506 -0
  111. package/src/compilerHost.ts +3739 -0
  112. package/src/componentDiscovery.ts +105 -0
  113. package/src/constants.ts +0 -5
  114. package/src/domStructuralPass.ts +190 -0
  115. package/src/exports.ts +5 -6
  116. package/src/extractor/addLocalExports.ts +49 -0
  117. package/src/extractor/bundle.ts +38 -40
  118. package/src/extractor/bundleConfig.ts +368 -187
  119. package/src/extractor/concatClassName.ts +21 -24
  120. package/src/extractor/getTamaguiConfigPathFromOptionsConfig.ts +13 -5
  121. package/src/extractor/loadTamagui.ts +196 -143
  122. package/src/extractor/regenerateConfig.ts +65 -13
  123. package/src/extractor/watchTamaguiConfig.ts +6 -1
  124. package/src/helpers/requireTamaguiCore.ts +6 -1
  125. package/src/registerRequire.ts +94 -132
  126. package/src/staticEvaluationIgnoredModules.ts +74 -0
  127. package/src/types.ts +2 -107
  128. package/src/zero/artifact.ts +142 -0
  129. package/src/zero/graph.ts +359 -0
  130. package/src/zero/identity.ts +73 -0
  131. package/src/zero/index.ts +9 -0
  132. package/src/zero/islands.ts +266 -0
  133. package/src/zero/options.ts +239 -0
  134. package/src/zero/ownership.ts +113 -0
  135. package/src/zero/theme.ts +526 -0
  136. package/src/zero/transform.ts +329 -0
  137. package/types/check-dep-versions.d.ts.map +1 -1
  138. package/types/checkDeps.d.ts.map +1 -1
  139. package/types/compiler.d.ts +134 -0
  140. package/types/compiler.d.ts.map +1 -0
  141. package/types/compilerHost.d.ts +38 -0
  142. package/types/compilerHost.d.ts.map +1 -0
  143. package/types/componentDiscovery.d.ts +27 -0
  144. package/types/componentDiscovery.d.ts.map +1 -0
  145. package/types/constants.d.ts +0 -1
  146. package/types/constants.d.ts.map +1 -1
  147. package/types/domStructuralPass.d.ts +3 -0
  148. package/types/domStructuralPass.d.ts.map +1 -0
  149. package/types/exports.d.ts +5 -6
  150. package/types/exports.d.ts.map +1 -1
  151. package/types/extractor/addLocalExports.d.ts +3 -0
  152. package/types/extractor/addLocalExports.d.ts.map +1 -0
  153. package/types/extractor/bundle.d.ts +66 -65
  154. package/types/extractor/bundle.d.ts.map +1 -1
  155. package/types/extractor/bundleConfig.d.ts +26 -4
  156. package/types/extractor/bundleConfig.d.ts.map +1 -1
  157. package/types/extractor/esbuildAliasPlugin.d.ts.map +1 -1
  158. package/types/extractor/getTamaguiConfigPathFromOptionsConfig.d.ts +1 -1
  159. package/types/extractor/getTamaguiConfigPathFromOptionsConfig.d.ts.map +1 -1
  160. package/types/extractor/loadTamagui.d.ts +26 -3
  161. package/types/extractor/loadTamagui.d.ts.map +1 -1
  162. package/types/extractor/regenerateConfig.d.ts +1 -1
  163. package/types/extractor/regenerateConfig.d.ts.map +1 -1
  164. package/types/extractor/watchTamaguiConfig.d.ts.map +1 -1
  165. package/types/getPragmaOptions.d.ts +1 -1
  166. package/types/helpers/memoize.d.ts +1 -1
  167. package/types/helpers/memoize.d.ts.map +1 -1
  168. package/types/helpers/requireTamaguiCore.d.ts.map +1 -1
  169. package/types/index.d.ts.map +1 -1
  170. package/types/registerRequire.d.ts +2 -2
  171. package/types/registerRequire.d.ts.map +1 -1
  172. package/types/staticEvaluationIgnoredModules.d.ts +9 -0
  173. package/types/staticEvaluationIgnoredModules.d.ts.map +1 -0
  174. package/types/types.d.ts +2 -90
  175. package/types/types.d.ts.map +1 -1
  176. package/types/zero/artifact.d.ts +44 -0
  177. package/types/zero/artifact.d.ts.map +1 -0
  178. package/types/zero/graph.d.ts +139 -0
  179. package/types/zero/graph.d.ts.map +1 -0
  180. package/types/zero/identity.d.ts +33 -0
  181. package/types/zero/identity.d.ts.map +1 -0
  182. package/types/zero/index.d.ts +10 -0
  183. package/types/zero/index.d.ts.map +1 -0
  184. package/types/zero/islands.d.ts +56 -0
  185. package/types/zero/islands.d.ts.map +1 -0
  186. package/types/zero/options.d.ts +58 -0
  187. package/types/zero/options.d.ts.map +1 -0
  188. package/types/zero/ownership.d.ts +51 -0
  189. package/types/zero/ownership.d.ts.map +1 -0
  190. package/types/zero/theme.d.ts +85 -0
  191. package/types/zero/theme.d.ts.map +1 -0
  192. package/types/zero/transform.d.ts +53 -0
  193. package/types/zero/transform.d.ts.map +1 -0
  194. package/dist/check-dep-versions.cjs +0 -372
  195. package/dist/checkDeps.cjs +0 -271
  196. package/dist/constants.cjs +0 -51
  197. package/dist/exports.cjs +0 -48
  198. package/dist/extractor/accessSafe.cjs +0 -48
  199. package/dist/extractor/babelParse.cjs +0 -56
  200. package/dist/extractor/buildClassName.cjs +0 -86
  201. package/dist/extractor/bundle.cjs +0 -234
  202. package/dist/extractor/bundleConfig.cjs +0 -729
  203. package/dist/extractor/concatClassName.cjs +0 -129
  204. package/dist/extractor/createEvaluator.cjs +0 -88
  205. package/dist/extractor/createExtractor.cjs +0 -1968
  206. package/dist/extractor/createLogger.cjs +0 -50
  207. package/dist/extractor/detectModuleFormat.cjs +0 -55
  208. package/dist/extractor/ensureImportingConcat.cjs +0 -54
  209. package/dist/extractor/errors.cjs +0 -28
  210. package/dist/extractor/esbuildAliasPlugin.cjs +0 -56
  211. package/dist/extractor/esbuildTsconfigPaths.cjs +0 -108
  212. package/dist/extractor/evaluateAstNode.cjs +0 -128
  213. package/dist/extractor/extractHelpers.cjs +0 -182
  214. package/dist/extractor/extractMediaStyle.cjs +0 -169
  215. package/dist/extractor/extractToClassNames.cjs +0 -475
  216. package/dist/extractor/extractToNative.cjs +0 -369
  217. package/dist/extractor/findTopmostFunction.cjs +0 -43
  218. package/dist/extractor/generatedUid.cjs +0 -58
  219. package/dist/extractor/getPrefixLogs.cjs +0 -31
  220. package/dist/extractor/getPropValueFromAttributes.cjs +0 -85
  221. package/dist/extractor/getSourceModule.cjs +0 -100
  222. package/dist/extractor/getStaticBindingsForScope.cjs +0 -213
  223. package/dist/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +0 -41
  224. package/dist/extractor/hasTopLevelAwait.cjs +0 -62
  225. package/dist/extractor/hoistClassNames.cjs +0 -76
  226. package/dist/extractor/literalToAst.cjs +0 -109
  227. package/dist/extractor/loadFile.cjs +0 -17
  228. package/dist/extractor/loadTamagui.cjs +0 -373
  229. package/dist/extractor/logLines.cjs +0 -43
  230. package/dist/extractor/normalizeTernaries.cjs +0 -100
  231. package/dist/extractor/propsToFontFamilyCache.cjs +0 -42
  232. package/dist/extractor/regenerateConfig.cjs +0 -178
  233. package/dist/extractor/removeUnusedHooks.cjs +0 -108
  234. package/dist/extractor/timer.cjs +0 -52
  235. package/dist/extractor/validHTMLAttributes.cjs +0 -79
  236. package/dist/extractor/watchTamaguiConfig.cjs +0 -70
  237. package/dist/getPragmaOptions.cjs +0 -73
  238. package/dist/helpers/memoize.cjs +0 -45
  239. package/dist/helpers/requireTamaguiCore.cjs +0 -40
  240. package/dist/index.cjs +0 -42
  241. package/dist/registerRequire.cjs +0 -209
  242. package/dist/server.cjs +0 -82
  243. package/dist/types.cjs +0 -18
  244. package/dist/worker.cjs +0 -111
  245. package/src/extractor/accessSafe.ts +0 -22
  246. package/src/extractor/babelParse.ts +0 -38
  247. package/src/extractor/buildClassName.ts +0 -76
  248. package/src/extractor/createEvaluator.ts +0 -82
  249. package/src/extractor/createExtractor.ts +0 -2970
  250. package/src/extractor/createLogger.ts +0 -41
  251. package/src/extractor/ensureImportingConcat.ts +0 -36
  252. package/src/extractor/errors.ts +0 -1
  253. package/src/extractor/evaluateAstNode.ts +0 -136
  254. package/src/extractor/extractHelpers.ts +0 -211
  255. package/src/extractor/extractMediaStyle.ts +0 -194
  256. package/src/extractor/extractToClassNames.ts +0 -733
  257. package/src/extractor/extractToNative.ts +0 -506
  258. package/src/extractor/findTopmostFunction.ts +0 -24
  259. package/src/extractor/generatedUid.ts +0 -41
  260. package/src/extractor/getPrefixLogs.ts +0 -9
  261. package/src/extractor/getPropValueFromAttributes.ts +0 -95
  262. package/src/extractor/getSourceModule.ts +0 -96
  263. package/src/extractor/getStaticBindingsForScope.ts +0 -237
  264. package/src/extractor/hasTopLevelAwait.ts +0 -28
  265. package/src/extractor/hoistClassNames.ts +0 -52
  266. package/src/extractor/literalToAst.ts +0 -85
  267. package/src/extractor/loadFile.ts +0 -17
  268. package/src/extractor/logLines.ts +0 -16
  269. package/src/extractor/normalizeTernaries.ts +0 -89
  270. package/src/extractor/propsToFontFamilyCache.ts +0 -18
  271. package/src/extractor/removeUnusedHooks.ts +0 -83
  272. package/src/extractor/timer.ts +0 -25
  273. package/src/extractor/validHTMLAttributes.ts +0 -52
  274. package/src/worker.ts +0 -142
  275. package/types/extractor/accessSafe.d.ts +0 -3
  276. package/types/extractor/accessSafe.d.ts.map +0 -1
  277. package/types/extractor/babelParse.d.ts +0 -5
  278. package/types/extractor/babelParse.d.ts.map +0 -1
  279. package/types/extractor/buildClassName.d.ts +0 -7
  280. package/types/extractor/buildClassName.d.ts.map +0 -1
  281. package/types/extractor/createEvaluator.d.ts +0 -12
  282. package/types/extractor/createEvaluator.d.ts.map +0 -1
  283. package/types/extractor/createExtractor.d.ts +0 -32
  284. package/types/extractor/createExtractor.d.ts.map +0 -1
  285. package/types/extractor/createLogger.d.ts +0 -3
  286. package/types/extractor/createLogger.d.ts.map +0 -1
  287. package/types/extractor/ensureImportingConcat.d.ts +0 -4
  288. package/types/extractor/ensureImportingConcat.d.ts.map +0 -1
  289. package/types/extractor/errors.d.ts +0 -3
  290. package/types/extractor/errors.d.ts.map +0 -1
  291. package/types/extractor/evaluateAstNode.d.ts +0 -3
  292. package/types/extractor/evaluateAstNode.d.ts.map +0 -1
  293. package/types/extractor/extractHelpers.d.ts +0 -28
  294. package/types/extractor/extractHelpers.d.ts.map +0 -1
  295. package/types/extractor/extractMediaStyle.d.ts +0 -11
  296. package/types/extractor/extractMediaStyle.d.ts.map +0 -1
  297. package/types/extractor/extractToClassNames.d.ts +0 -25
  298. package/types/extractor/extractToClassNames.d.ts.map +0 -1
  299. package/types/extractor/extractToNative.d.ts +0 -13
  300. package/types/extractor/extractToNative.d.ts.map +0 -1
  301. package/types/extractor/findTopmostFunction.d.ts +0 -4
  302. package/types/extractor/findTopmostFunction.d.ts.map +0 -1
  303. package/types/extractor/generatedUid.d.ts +0 -5
  304. package/types/extractor/generatedUid.d.ts.map +0 -1
  305. package/types/extractor/getPrefixLogs.d.ts +0 -3
  306. package/types/extractor/getPrefixLogs.d.ts.map +0 -1
  307. package/types/extractor/getPropValueFromAttributes.d.ts +0 -19
  308. package/types/extractor/getPropValueFromAttributes.d.ts.map +0 -1
  309. package/types/extractor/getSourceModule.d.ts +0 -16
  310. package/types/extractor/getSourceModule.d.ts.map +0 -1
  311. package/types/extractor/getStaticBindingsForScope.d.ts +0 -5
  312. package/types/extractor/getStaticBindingsForScope.d.ts.map +0 -1
  313. package/types/extractor/hasTopLevelAwait.d.ts +0 -2
  314. package/types/extractor/hasTopLevelAwait.d.ts.map +0 -1
  315. package/types/extractor/hoistClassNames.d.ts +0 -6
  316. package/types/extractor/hoistClassNames.d.ts.map +0 -1
  317. package/types/extractor/literalToAst.d.ts +0 -4
  318. package/types/extractor/literalToAst.d.ts.map +0 -1
  319. package/types/extractor/loadFile.d.ts +0 -1
  320. package/types/extractor/loadFile.d.ts.map +0 -1
  321. package/types/extractor/logLines.d.ts +0 -2
  322. package/types/extractor/logLines.d.ts.map +0 -1
  323. package/types/extractor/normalizeTernaries.d.ts +0 -5
  324. package/types/extractor/normalizeTernaries.d.ts.map +0 -1
  325. package/types/extractor/propsToFontFamilyCache.d.ts +0 -4
  326. package/types/extractor/propsToFontFamilyCache.d.ts.map +0 -1
  327. package/types/extractor/removeUnusedHooks.d.ts +0 -3
  328. package/types/extractor/removeUnusedHooks.d.ts.map +0 -1
  329. package/types/extractor/timer.d.ts +0 -5
  330. package/types/extractor/timer.d.ts.map +0 -1
  331. package/types/extractor/validHTMLAttributes.d.ts +0 -52
  332. package/types/extractor/validHTMLAttributes.d.ts.map +0 -1
  333. package/types/worker.d.ts +0 -46
  334. package/types/worker.d.ts.map +0 -1
  335. /package/dist/{setup.cjs → cjs/setup.cjs} +0 -0
@@ -0,0 +1,329 @@
1
+ import {
2
+ applyLoweredModule,
3
+ childNode,
4
+ childNodes,
5
+ parseModuleAst,
6
+ planZeroErasure,
7
+ resolvedModuleId,
8
+ walkAst,
9
+ zeroIslandThemeMessage,
10
+ zeroViolationsFromPlan,
11
+ type AppliedLoweredModule,
12
+ type AstNode,
13
+ type LoweredModulePlan,
14
+ type SourceEdit,
15
+ type ZeroViolation,
16
+ } from '@tamagui/compiler-core'
17
+ import { type TamaguiInternalConfig } from '@tamagui/web'
18
+
19
+ import { createHash } from 'node:crypto'
20
+ import path from 'node:path'
21
+
22
+ import type { IslandThemeBridge, IslandThemeBridgeLayer } from './islands'
23
+ import {
24
+ foldBranches,
25
+ lowerStaticTheme,
26
+ readStaticTheme,
27
+ resolveThemeChain,
28
+ type StaticThemeNode,
29
+ } from './theme'
30
+
31
+ /**
32
+ * The zero-mode source transform.
33
+ *
34
+ * It runs after lowering has committed its edits and before the bundler records
35
+ * this module's dependencies. It lowers static `<Theme>` into host markup plus
36
+ * classes, assigns each island mount its theme bridge, and erases the Tamagui
37
+ * references lowering consumed.
38
+ */
39
+
40
+ export interface ZeroModuleTransformInput {
41
+ /**
42
+ * `report` runs every analysis and returns the source unchanged, so a project
43
+ * can see its violations without moving off the full runtime.
44
+ */
45
+ mode: 'report' | 'enforce'
46
+ id: string
47
+ /** Project root, so bridge ids are stable and unique across modules. */
48
+ root: string
49
+ source: string
50
+ /** The module's lowering plan. Erasure only runs on a plan with no violations. */
51
+ plan: LoweredModulePlan
52
+ config: TamaguiInternalConfig
53
+ /** Specifier prefixes that name the Tamagui surface, e.g. `tamagui`. */
54
+ isTamaguiSpecifier(specifier: string): boolean
55
+ /** Island id when a specifier resolves to a generated island loader. */
56
+ resolveIslandLoader(specifier: string): { islandId: string } | null
57
+ /** Island id when a specifier resolves to a declared island root module. */
58
+ resolveIslandModule(specifier: string): string | null
59
+ }
60
+
61
+ export interface ZeroModuleTransformResult {
62
+ output: AppliedLoweredModule
63
+ edits: SourceEdit[]
64
+ /** Deterministic bridge descriptors this module produced, by island id. */
65
+ bridges: Map<string, IslandThemeBridge[]>
66
+ /** Inline-value CSS rules keyed by their generated class name. */
67
+ bridgeCSS: Map<string, string>
68
+ violations: ZeroViolation[]
69
+ erased: {
70
+ modules: string[]
71
+ bindings: string[]
72
+ styledDefinitions: string[]
73
+ /** Erased declarators this module also exported. */
74
+ exports: string[]
75
+ }
76
+ /** Animated-number hooks rewritten from the public barrel to the leaf. */
77
+ rewrittenAnimatedNumberHooks: string[]
78
+ }
79
+
80
+ function identifierNameOf(node: AstNode | null): string | null {
81
+ return node && node.type === 'Identifier' && typeof node.name === 'string'
82
+ ? node.name
83
+ : null
84
+ }
85
+
86
+ function jsxNameOf(element: AstNode): string | null {
87
+ const opening = childNode(element, 'openingElement')
88
+ if (!opening) return null
89
+ const name = childNode(opening, 'name')
90
+ return name && name.type === 'JSXIdentifier' && typeof name.name === 'string'
91
+ ? name.name
92
+ : null
93
+ }
94
+
95
+ export function transformZeroModule(
96
+ input: ZeroModuleTransformInput
97
+ ): ZeroModuleTransformResult {
98
+ const { id, source, config } = input
99
+ const moduleId = resolvedModuleId(id)
100
+ const program = parseModuleAst(source, id)
101
+
102
+ // The lowering plan's own blocking diagnostics are the rule 1-6 sites. A
103
+ // candidate that did not lower left a runtime behind, which is the violation.
104
+ const violations: ZeroViolation[] = zeroViolationsFromPlan(input.plan)
105
+ const edits: SourceEdit[] = []
106
+ const bridges = new Map<string, IslandThemeBridge[]>()
107
+ const bridgeCSS = new Map<string, string>()
108
+
109
+ // module-level bindings we care about
110
+ let themeLocal: string | null = null
111
+ let themeUpdateLocal: string | null = null
112
+ const islandLocals = new Map<string, string>()
113
+ for (const statement of childNodes(program, 'body')) {
114
+ if (statement.type !== 'ImportDeclaration') continue
115
+ const sourceNode = childNode(statement, 'source')
116
+ const specifier =
117
+ sourceNode && typeof sourceNode.value === 'string' ? sourceNode.value : null
118
+ if (!specifier) continue
119
+ const island = input.resolveIslandLoader(specifier)
120
+ for (const importSpecifier of childNodes(statement, 'specifiers')) {
121
+ const local = identifierNameOf(childNode(importSpecifier, 'local'))
122
+ if (!local) continue
123
+ if (island) {
124
+ islandLocals.set(local, island.islandId)
125
+ continue
126
+ }
127
+ if (!input.isTamaguiSpecifier(specifier)) continue
128
+ const imported = childNode(importSpecifier, 'imported')
129
+ if (imported && imported.name === 'Theme') themeLocal = local
130
+ if (imported && imported.name === 'ThemeUpdate') themeUpdateLocal = local
131
+ }
132
+ }
133
+
134
+ // parent chain, built in one walk
135
+ const parents = new Map<AstNode, AstNode>()
136
+ const elements: AstNode[] = []
137
+ walkAst(program, (node, parent) => {
138
+ if (parent) parents.set(node, parent)
139
+ if (node.type === 'JSXElement') elements.push(node)
140
+ })
141
+
142
+ const themeElements = elements.filter((element) => {
143
+ const name = jsxNameOf(element)
144
+ return name === themeLocal || name === themeUpdateLocal
145
+ })
146
+
147
+ // Each <Theme> is read once, then lowered against its own ancestry, so a
148
+ // nested node resolves against whatever its parent resolved to.
149
+ const themeNodes = new Map<AstNode, StaticThemeNode>()
150
+ for (const element of themeElements) {
151
+ const read = readStaticTheme(
152
+ element,
153
+ id,
154
+ source,
155
+ config,
156
+ jsxNameOf(element) === themeUpdateLocal ? 'ThemeUpdate' : 'Theme'
157
+ )
158
+ for (const [identifier, rules] of read.css) bridgeCSS.set(identifier, rules)
159
+ violations.push(...read.violations)
160
+ if (read.node) themeNodes.set(element, read.node)
161
+ }
162
+
163
+ const themeChainOf = (element: AstNode): StaticThemeNode[] => {
164
+ const chain: StaticThemeNode[] = []
165
+ let cursor: AstNode | undefined = element
166
+ while (cursor) {
167
+ const node = themeNodes.get(cursor)
168
+ if (node) chain.unshift(node)
169
+ cursor = parents.get(cursor)
170
+ }
171
+ return chain
172
+ }
173
+
174
+ // With no provider in the zero graph, the document's theme is the config's
175
+ // first theme: that is the one the generated artifact writes to `:root`.
176
+ const rootThemeName = Object.keys(config.themes)[0] ?? 'light'
177
+
178
+ for (const element of themeElements) {
179
+ const node = themeNodes.get(element)
180
+ if (!node) continue
181
+ const lowered = lowerStaticTheme(
182
+ node,
183
+ themeChainOf(element),
184
+ rootThemeName,
185
+ config,
186
+ id
187
+ )
188
+ violations.push(...lowered.violations)
189
+ edits.push(...lowered.edits)
190
+ }
191
+
192
+ // island mounts: assign each site a stable bridge from its static Theme chain
193
+ const mounts = elements
194
+ .filter((element) => {
195
+ const name = jsxNameOf(element)
196
+ return !!name && islandLocals.has(name)
197
+ })
198
+ .sort((left, right) => left.start - right.start)
199
+
200
+ const moduleBridgePrefix = createHash('sha256')
201
+ .update(path.relative(input.root, id).replace(/\\/g, '/'))
202
+ .digest('hex')
203
+ .slice(0, 8)
204
+
205
+ // Lowering rewrites the component name of every element it turned into a host
206
+ // element, so an uppercase JSX name that no edit covers is an opaque component
207
+ // call: what it renders around its children is not visible from this module.
208
+ const loweredRanges = input.plan.edits.filter((edit) => edit.end > edit.start)
209
+ const isOpaqueAncestor = (element: AstNode): boolean => {
210
+ if (themeNodes.has(element)) return false
211
+ const name = jsxNameOf(element)
212
+ if (!name || islandLocals.has(name)) return false
213
+ if (name[0] !== name[0].toUpperCase()) return false
214
+ const nameNode = childNode(childNode(element, 'openingElement')!, 'name')!
215
+ return !loweredRanges.some(
216
+ (edit) => edit.start <= nameNode.start && edit.end >= nameNode.end
217
+ )
218
+ }
219
+
220
+ mounts.forEach((element, index) => {
221
+ const islandId = islandLocals.get(jsxNameOf(element)!)!
222
+
223
+ let opaque: AstNode | null = null
224
+ for (let cursor = parents.get(element); cursor; cursor = parents.get(cursor)) {
225
+ if (cursor.type === 'JSXElement' && isOpaqueAncestor(cursor)) opaque = cursor
226
+ }
227
+ if (opaque) {
228
+ violations.push({
229
+ rule: 4,
230
+ code: 'local/unsupported-target',
231
+ span: { id: moduleId, start: element.start, end: element.end },
232
+ component: islandId,
233
+ message: zeroIslandThemeMessage(islandId),
234
+ })
235
+ return
236
+ }
237
+
238
+ const chain = themeChainOf(element)
239
+ const layers = chain
240
+ .map((node) => node.layer)
241
+ .filter((layer): layer is IslandThemeBridgeLayer => !!layer)
242
+ const branches = resolveThemeChain(chain, rootThemeName, config)
243
+
244
+ // One descriptor per enumerated theme name, and the mount selects its id
245
+ // with the same condition the compiled classes use.
246
+ const descriptors = branches.map((branch, branchIndex) => ({
247
+ test: branch.test,
248
+ bridge: {
249
+ // unique across modules and stable across the server and client
250
+ // compilations of the same entry, because both see the same module path
251
+ id:
252
+ branches.length === 1
253
+ ? `b${moduleBridgePrefix}_${index}`
254
+ : `b${moduleBridgePrefix}_${index}_${branchIndex}`,
255
+ name: branch.name,
256
+ layers,
257
+ } satisfies IslandThemeBridge,
258
+ }))
259
+
260
+ const list = bridges.get(islandId) ?? []
261
+ for (const descriptor of descriptors) list.push(descriptor.bridge)
262
+ bridges.set(islandId, list)
263
+
264
+ // The descriptor travels inline as data, so nothing in the zero graph has to
265
+ // import a manifest module and no build ordering can desynchronize them.
266
+ const fold = (value: (bridge: IslandThemeBridge) => string) =>
267
+ foldBranches(
268
+ descriptors.map((descriptor) => ({
269
+ test: descriptor.test,
270
+ value: value(descriptor.bridge),
271
+ }))
272
+ )
273
+ const opening = childNode(element, 'openingElement')!
274
+ const nameNode = childNode(opening, 'name')!
275
+ edits.push({
276
+ start: nameNode.end,
277
+ end: nameNode.end,
278
+ content: ` data-tamagui-bridge={${fold((bridge) =>
279
+ JSON.stringify(bridge.id)
280
+ )}} __tamaguiBridge={${fold((bridge) => JSON.stringify(bridge))}}`,
281
+ origin: { id: moduleId, start: nameNode.start, end: nameNode.end },
282
+ })
283
+ })
284
+
285
+ // Reference erasure runs last, so it sees the Theme edits as consumed ranges,
286
+ // and only on a plan that already has nothing to report: erasure's whole
287
+ // licence is that every use in this module lowered.
288
+ const erasure = violations.length
289
+ ? null
290
+ : planZeroErasure({
291
+ id: moduleId,
292
+ source,
293
+ loweredEdits: [...input.plan.edits, ...edits],
294
+ isTamaguiSpecifier: input.isTamaguiSpecifier,
295
+ islandIdFor: input.resolveIslandModule,
296
+ })
297
+ if (erasure) {
298
+ edits.push(...erasure.edits)
299
+ violations.push(...erasure.violations)
300
+ }
301
+
302
+ // `report` leaves the source alone by contract, so its output is whatever
303
+ // ordinary lowering produced.
304
+ const output =
305
+ input.mode === 'report'
306
+ ? applyLoweredModule(source, moduleId, input.plan)
307
+ : violations.length
308
+ ? { changed: false, code: source, map: null }
309
+ : applyLoweredModule(source, moduleId, {
310
+ id: moduleId,
311
+ sourceHash: input.plan.sourceHash,
312
+ edits: [...input.plan.edits, ...edits],
313
+ })
314
+
315
+ return {
316
+ output,
317
+ edits: input.mode === 'report' ? [] : edits,
318
+ bridges: input.mode === 'report' ? new Map() : bridges,
319
+ bridgeCSS: input.mode === 'report' ? new Map() : bridgeCSS,
320
+ violations,
321
+ erased: {
322
+ modules: erasure?.removedModules ?? [],
323
+ bindings: erasure?.removedBindings ?? [],
324
+ styledDefinitions: erasure?.erasedStyledDefinitions ?? [],
325
+ exports: erasure?.erasedExports ?? [],
326
+ },
327
+ rewrittenAnimatedNumberHooks: erasure?.rewrittenAnimatedNumberHooks ?? [],
328
+ }
329
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"check-dep-versions.d.ts","sourceRoot":"","sources":["../src/check-dep-versions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8oBH,+CAA+C;AAC/C,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,SAAS;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,SAAS;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAC9C,EAAE,CAAA;CACJ,CAAA;AAED,qBAAa,IAAI;IACf,4GAA4G;IAC5G,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAE3C;;;;;;;;;;OAUG;gBACS,IAAI,EAAE,MAAM;IAKjB,iBAAiB,IAAI,MAAM;IAI3B,eAAe,IAAI,SAAS,UAAU,EAAE;IAMxC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAc9C,IAAW,0BAA0B,IAAI,OAAO,CAE/C;CACF"}
1
+ {"version":3,"file":"check-dep-versions.d.ts","sourceRoot":"","sources":["../src/check-dep-versions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8oBH,+CAA+C;AAC/C,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,SAAS;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,SAAS;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAC9C,EAAE,CAAA;CACJ,CAAA;AAED,qBAAa,IAAI;IACf,4GAA4G;IAC5G,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAE3C;;;;;;;;;;OAUG;IACH,YAAY,IAAI,EAAE,MAAM,EAGvB;IAEM,iBAAiB,IAAI,MAAM,CAEjC;IAEM,eAAe,IAAI,SAAS,UAAU,EAAE,CAI9C;IAEM,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAY7C;IAED,IAAW,0BAA0B,IAAI,OAAO,CAE/C;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkDeps.d.ts","sourceRoot":"","sources":["../src/checkDeps.ts"],"names":[],"mappings":"AAIA,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,eAAe,oBAAoB;IACnC,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,WAAW,gBAAgB;CAC5B;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,eAAe,EAAE,EAAE,CAAA;IACzC,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACtC,CAAA;AA+TD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,iBA8B3C"}
1
+ {"version":3,"file":"checkDeps.d.ts","sourceRoot":"","sources":["../src/checkDeps.ts"],"names":[],"mappings":"AAIA,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,eAAe,oBAAoB;IACnC,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,WAAW,gBAAgB;CAC5B;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,eAAe,EAAE,EAAE,CAAA;IACzC,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACtC,CAAA;AA+TD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,iBA+B3C"}
@@ -0,0 +1,134 @@
1
+ import { type AppliedLoweredModule, type CompilerTarget, type LoweredModulePlan, type ResolvedModuleId } from '@tamagui/compiler-core';
2
+ import type { TamaguiOptions } from '@tamagui/types';
3
+ import { type ComponentModuleEvaluator } from './componentDiscovery';
4
+ import type { TamaguiProjectInfo } from './extractor/bundleConfig';
5
+ export interface CompilerProjectComponentModule {
6
+ moduleName: string;
7
+ id: string;
8
+ }
9
+ export interface CompilerProject {
10
+ projectInfo: TamaguiProjectInfo;
11
+ componentModules: CompilerProjectComponentModule[];
12
+ generation: string;
13
+ /** Keep elements with dynamic style props fully on the runtime path. */
14
+ disablePartialExtraction?: boolean;
15
+ /** emit native theme-token mappings for the native style engine */
16
+ experimentalNativeFastPath?: boolean;
17
+ /** Zero-runtime mode, which makes the host's diagnostics mode-aware. */
18
+ zeroRuntime?: boolean;
19
+ /**
20
+ * Content identity of everything a lowering plan depends on that is not a
21
+ * module: the compiler build, the evaluated config and component registry,
22
+ * the platform, and the modes. Null when the project could not name the files
23
+ * that determine it, in which case nothing is cached to disk.
24
+ */
25
+ cacheStamp: string | null;
26
+ }
27
+ export interface LoadCompilerProjectInput {
28
+ root: string;
29
+ target: CompilerTarget;
30
+ options: Partial<TamaguiOptions>;
31
+ generation: string | ((projectInfo: TamaguiProjectInfo, componentModules: CompilerProjectComponentModule[], options: TamaguiOptions) => string);
32
+ rebuild?: boolean;
33
+ /**
34
+ * `name@version` for the host integration package, folded into the cache
35
+ * stamp so a plugin upgrade cannot reuse plans built by the previous one.
36
+ */
37
+ hostVersions?: readonly string[];
38
+ missingProjectMessage?: string;
39
+ load?: (options: TamaguiOptions, rebuild: boolean) => Promise<TamaguiProjectInfo | null>;
40
+ resolveComponents?: (moduleNames: readonly string[], projectInfo: TamaguiProjectInfo, options: TamaguiOptions) => Promise<CompilerProjectComponentModule[]>;
41
+ }
42
+ /**
43
+ * normalize and load the compiler-owned project contract. module resolution and
44
+ * evaluation stay with the adapter through the two callbacks.
45
+ */
46
+ export declare function loadCompilerProject({ root, target, options: optionsIn, generation, rebuild, hostVersions, missingProjectMessage, load, resolveComponents, }: LoadCompilerProjectInput): Promise<CompilerProject>;
47
+ /**
48
+ * The non-module half of every plan cache key. Null when the project named no
49
+ * stamp sources: a stamp that cannot see a config change is worse than no
50
+ * cache, so that project simply does not cache.
51
+ */
52
+ export declare function compilerProjectStamp(input: {
53
+ stampSources: readonly string[];
54
+ hostVersions: readonly string[];
55
+ target: CompilerTarget;
56
+ componentModules: readonly CompilerProjectComponentModule[];
57
+ disablePartialExtraction: boolean;
58
+ experimentalNativeFastPath: boolean;
59
+ zeroRuntime: boolean;
60
+ /**
61
+ * `process.env.NODE_ENV === 'development'` in the process that builds plans.
62
+ * The host emits debug-receipt edits into `plan.edits` only in development
63
+ * (compilerHost.ts's developmentDebugInstrumentation), so a development plan
64
+ * is not a plan a production build may reuse. This is the ONLY ambient input
65
+ * to a plan, and it lives in the stamp so every host inherits it rather than
66
+ * each one remembering to add it to its own key.
67
+ */
68
+ development: boolean;
69
+ }): string | null;
70
+ export interface CompilerResolution {
71
+ id: string;
72
+ external?: boolean;
73
+ }
74
+ export interface CompilerInput {
75
+ id: string;
76
+ source: string;
77
+ root: string;
78
+ target: CompilerTarget;
79
+ /** Host environment whose resolver produced this module graph. */
80
+ environment?: string;
81
+ project: CompilerProject;
82
+ resolve(specifier: string, importer: string): Promise<CompilerResolution | null>;
83
+ load(id: string): Promise<string | null>;
84
+ /**
85
+ * Evaluate a host-resolved module and return its exports. The frontend asks
86
+ * for every package a JSX element or styled() base imports from that is not
87
+ * in the configured `components` list, once per module per project, and
88
+ * lowers against the static configs it finds. Return null (or throw) when
89
+ * the host cannot evaluate the module; those elements stay on the runtime
90
+ * path exactly as before.
91
+ */
92
+ evaluate?: ComponentModuleEvaluator;
93
+ }
94
+ export type CompilerUpdateInput = CompilerInput;
95
+ export interface CompilerResult {
96
+ plan: LoweredModulePlan;
97
+ output: AppliedLoweredModule;
98
+ invalidatedIds: ResolvedModuleId[];
99
+ }
100
+ /**
101
+ * Long-lived host-resolved graph frontend. The adapter supplies every identity and
102
+ * load result; compiler-core never guesses package, alias, or workspace resolution.
103
+ */
104
+ export declare class CompilerFrontend {
105
+ private readonly session;
106
+ private queue;
107
+ private readonly planCaches;
108
+ private readonly moduleRecords;
109
+ private moduleContext;
110
+ private readonly discovery;
111
+ /**
112
+ * One cache per project root and platform. Absent when the project produced
113
+ * no content stamp, in which case plans are never persisted rather than
114
+ * persisted under an identity that cannot see a config change.
115
+ */
116
+ private planCacheFor;
117
+ /** Hits, misses and writes across every plan cache this frontend has used. */
118
+ get planCacheStats(): {
119
+ hits: number;
120
+ misses: number;
121
+ writes: number;
122
+ };
123
+ compile(input: CompilerInput): Promise<CompilerResult>;
124
+ update(input: CompilerUpdateInput): Promise<ResolvedModuleId[]>;
125
+ has(id: string): boolean;
126
+ dependentsOf(id: string): ResolvedModuleId[];
127
+ remove(id: string): Promise<import("@tamagui/compiler-core").GraphInvalidation>;
128
+ parseCount(id: string): number;
129
+ private compileNow;
130
+ /** host-resolved ids of every module discovery found components in */
131
+ discoveredModuleIds(): string[];
132
+ private buildTree;
133
+ }
134
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { CompilerLoweringHost, CompilerTarget } from '@tamagui/compiler-core';
2
+ import type { TamaguiInternalConfig } from '@tamagui/web';
3
+ import type { LoadedComponents } from './extractor/bundleConfig';
4
+ export interface CompilerComponentModule {
5
+ moduleName: string;
6
+ resolvedId: string;
7
+ }
8
+ /**
9
+ * The components lowering can resolve, keyed the way element provenance names
10
+ * them. The frontend owns one per compile and grows it as it discovers component
11
+ * modules outside the configured `components` list.
12
+ */
13
+ export interface CompilerComponentRegistry {
14
+ /** host-resolved module id -> the module name its components register under */
15
+ modulesById: Map<string, string>;
16
+ componentsByModule: Map<string, LoadedComponents>;
17
+ }
18
+ export declare function createComponentRegistry(components: readonly LoadedComponents[], componentModules: readonly CompilerComponentModule[]): CompilerComponentRegistry;
19
+ export interface TamaguiCompilerHostOptions {
20
+ target: CompilerTarget;
21
+ tamaguiConfig: TamaguiInternalConfig;
22
+ components: LoadedComponents[];
23
+ componentModules: CompilerComponentModule[];
24
+ /** shared with the frontend so discovery during `prepare` is visible to this host */
25
+ registry?: CompilerComponentRegistry;
26
+ /** Keep elements with dynamic style props fully on the runtime path. */
27
+ disablePartialExtraction?: boolean;
28
+ /** emit native theme-token mappings for the native style engine */
29
+ experimentalNativeFastPath?: boolean;
30
+ /**
31
+ * Zero-runtime mode. The diagnostics stay the same shape; what changes is that
32
+ * a spread the compiler cannot prove style-free is rejected instead of merged,
33
+ * and the sites whose rule differs from their code's default say so.
34
+ */
35
+ zeroRuntime?: boolean;
36
+ }
37
+ export declare function createTamaguiCompilerHost(options: TamaguiCompilerHostOptions): CompilerLoweringHost;
38
+ //# sourceMappingURL=compilerHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compilerHost.d.ts","sourceRoot":"","sources":["../src/compilerHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,oBAAoB,EACpB,cAAc,EAQf,MAAM,wBAAwB,CAAA;AAqC/B,OAAO,KAAK,EAAiC,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAExF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAIhE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,+EAA+E;IAC/E,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CAClD;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,SAAS,gBAAgB,EAAE,EACvC,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,GACnD,yBAAyB,CAS3B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,cAAc,CAAA;IACtB,aAAa,EAAE,qBAAqB,CAAA;IACpC,UAAU,EAAE,gBAAgB,EAAE,CAAA;IAC9B,gBAAgB,EAAE,uBAAuB,EAAE,CAAA;IAC3C,qFAAqF;IACrF,QAAQ,CAAC,EAAE,yBAAyB,CAAA;IACpC,wEAAwE;IACxE,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,mEAAmE;IACnE,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAg2BD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,0BAA0B,GAClC,oBAAoB,CAwrFtB"}
@@ -0,0 +1,27 @@
1
+ import type { MaterializedModule } from '@tamagui/compiler-core';
2
+ import type { CompilerComponentRegistry } from './compilerHost';
3
+ /**
4
+ * Evaluate a host-resolved module and return its exports, or null when the
5
+ * host cannot run it. Frontends supply this from their bundler's module runner
6
+ * (Vite) or the static-evaluation require hooks (`evaluateComponentModule`).
7
+ */
8
+ export type ComponentModuleEvaluator = (module: {
9
+ id: string;
10
+ specifier: string;
11
+ }) => Promise<Record<string, unknown> | null>;
12
+ /**
13
+ * Finds the component modules a file uses that the configured `components`
14
+ * list does not cover, evaluates each once, and registers what it exports so
15
+ * lowering resolves them like configured ones. Owned by a frontend for the
16
+ * life of a project generation; `prepare` runs between materialize and lower.
17
+ */
18
+ export declare class ComponentDiscovery {
19
+ #private;
20
+ clear(): void;
21
+ /** host-resolved ids of every module discovery found components in */
22
+ ids(): string[];
23
+ /** re-register everything found so far into a freshly built registry */
24
+ seed(registry: CompilerComponentRegistry): void;
25
+ prepare(module: MaterializedModule, registry: CompilerComponentRegistry, evaluate: ComponentModuleEvaluator | undefined): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=componentDiscovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"componentDiscovery.d.ts","sourceRoot":"","sources":["../src/componentDiscovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAGhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAM/D;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE;IAC9C,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;CAClB,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;AAS7C;;;;;GAKG;AACH,qBAAa,kBAAkB;;IAI7B,KAAK,IAAI,IAAI,CAEZ;IAED,sEAAsE;IACtE,GAAG,IAAI,MAAM,EAAE,CAKd;IAED,wEAAwE;IACxE,IAAI,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAM9C;IAEK,OAAO,CACX,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,yBAAyB,EACnC,QAAQ,EAAE,wBAAwB,GAAG,SAAS,GAC7C,OAAO,CAAC,IAAI,CAAC,CA0Cf;CACF"}
@@ -1,6 +1,5 @@
1
1
  export declare const CSS_FILE_NAME = "__snack.css";
2
2
  export declare const MEDIA_SEP = "_";
3
- export declare const cacheDir: any;
4
3
  export declare const FAILED_EVAL: unique symbol;
5
4
  export declare const SHOULD_DEBUG: boolean | undefined;
6
5
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,gBAAgB,CAAA;AAG1C,eAAO,MAAM,SAAS,MAAM,CAAA;AAG5B,eAAO,MAAM,QAAQ,KAAkD,CAAA;AAEvE,eAAO,MAAM,WAAW,eAA8B,CAAA;AAEtD,eAAO,MAAM,YAAY,qBAC8C,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,gBAAgB,CAAA;AAG1C,eAAO,MAAM,SAAS,MAAM,CAAA;AAE5B,eAAO,MAAM,WAAW,eAA8B,CAAA;AAEtD,eAAO,MAAM,YAAY,qBAC8C,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { type StructuralModulePass } from '@tamagui/compiler-core';
2
+ export declare const domStructuralPass: StructuralModulePass;
3
+ //# sourceMappingURL=domStructuralPass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domStructuralPass.d.ts","sourceRoot":"","sources":["../src/domStructuralPass.ts"],"names":[],"mappings":"AAQA,OAAO,EAML,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAA;AAgC/B,eAAO,MAAM,iBAAiB,EAAE,oBA8I/B,CAAA"}
@@ -1,17 +1,16 @@
1
1
  export * from './checkDeps';
2
+ export * from './compilerHost';
3
+ export * from './compiler';
2
4
  export * from './types';
3
- export { createExtractor } from './extractor/createExtractor';
4
- export { literalToAst } from './extractor/literalToAst';
5
5
  export * from './constants';
6
- export * from './extractor/extractToClassNames';
7
6
  export * from './extractor/concatClassName';
8
- export * from './extractor/extractToNative';
9
- export * from './extractor/extractHelpers';
10
7
  export * from './extractor/loadTamagui';
8
+ export { evaluateComponentModule } from './extractor/bundleConfig';
9
+ export * from './componentDiscovery';
11
10
  export * from './extractor/watchTamaguiConfig';
12
- export * from './extractor/createLogger';
13
11
  export * from './registerRequire';
14
12
  export { detectModuleFormat, clearFormatCache } from './extractor/detectModuleFormat';
15
13
  export { esbundleTamaguiConfig } from './extractor/bundle';
16
14
  export * from './getPragmaOptions';
15
+ export * from './zero';
17
16
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,cAAc,aAAa,CAAA;AAC3B,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAClE,cAAc,sBAAsB,CAAA;AACpC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,cAAc,oBAAoB,CAAA;AAClC,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Adds exports used only while evaluating local component modules. */
2
+ export declare function addLocalExports(source: string, id?: string): string;
3
+ //# sourceMappingURL=addLocalExports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addLocalExports.d.ts","sourceRoot":"","sources":["../../src/extractor/addLocalExports.ts"],"names":[],"mappings":"AAWA,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAoCnE"}