@tamagui/static 2.7.7 → 3.0.0-beta.1093.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 +2285 -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 +234 -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 +2263 -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 +200 -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 +3752 -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 +265 -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,357 @@
1
+ import { basename, dirname, extname, join, relative, resolve } from "node:path";
2
+ import { createRequire } from "node:module";
3
+ import { Color, colorLog } from "@tamagui/cli-color";
4
+ import esbuild from "esbuild";
5
+ import fsExtra from "fs-extra";
6
+ import { requireTamaguiCore } from "../helpers/requireTamaguiCore.mjs";
7
+ import { getNameToPaths, registerRequire, setRequireResult } from "../registerRequire.mjs";
8
+ import { getBundledConfig, getComponentStaticConfigByName, getLoadedConfig, hasBundledConfigChanged, loadComponentsSync, setLoadedConfig, writeTamaguiCSS } from "./bundleConfig.mjs";
9
+ import { getTamaguiConfigPathFromOptionsConfig } from "./getTamaguiConfigPathFromOptionsConfig.mjs";
10
+ import { generateTamaguiThemes, regenerateConfig, regenerateConfigSync } from "./regenerateConfig.mjs";
11
+
12
+ const nodeRequire = createRequire(typeof __filename === "string" ? __filename : import.meta.url);
13
+ const getFilledOptions = (propsIn) => ({
14
+ platform: process.env.TAMAGUI_TARGET || "web",
15
+ config: "tamagui.config.ts",
16
+ components: ["tamagui"],
17
+ ...propsIn
18
+ });
19
+ let isLoadingPromise;
20
+ async function loadTamagui(propsIn, rebuild = false) {
21
+ if (isLoadingPromise) return await isLoadingPromise;
22
+ isLoadingPromise = (async () => {
23
+ const props = getFilledOptions(propsIn);
24
+ const bundleInfo = await getBundledConfig(props, rebuild);
25
+ if (!bundleInfo) {
26
+ throw new Error(`[tamagui] The config and component bundle completed without a project result`);
27
+ }
28
+ await generateThemesAndLog(props, rebuild);
29
+ const maybeTamaguiConfig = bundleInfo.tamaguiConfig;
30
+ if (maybeTamaguiConfig && !maybeTamaguiConfig.parsed) {
31
+ const { createTamagui } = requireTamaguiCore(props.platform || "web");
32
+ bundleInfo.tamaguiConfig = createTamagui(bundleInfo.tamaguiConfig);
33
+ }
34
+ if (!hasBundledConfigChanged()) {
35
+ return bundleInfo;
36
+ }
37
+ await regenerateConfig(props, bundleInfo);
38
+ return bundleInfo;
39
+ })();
40
+ try {
41
+ return await isLoadingPromise;
42
+ } finally {
43
+ isLoadingPromise = null;
44
+ }
45
+ }
46
+ async function loadTamaguiFromModules(propsIn, evaluated) {
47
+ const props = getFilledOptions(propsIn);
48
+ await generateThemesAndLog(props);
49
+ const configModule = evaluated.config;
50
+ let tamaguiConfig = configModule.default || configModule.config || configModule;
51
+ if ("config" in tamaguiConfig && tamaguiConfig.config && !("tokens" in tamaguiConfig)) {
52
+ tamaguiConfig = tamaguiConfig.config;
53
+ }
54
+ if (!tamaguiConfig) {
55
+ throw new Error(`The Vite module runner did not return a valid Tamagui config`);
56
+ }
57
+ const hostCore = requireTamaguiCore(props.platform || "web");
58
+ if (!tamaguiConfig.parsed) {
59
+ tamaguiConfig = hostCore.createTamagui(tamaguiConfig);
60
+ } else {
61
+ hostCore.installTamaguiConfig(tamaguiConfig);
62
+ }
63
+ setLoadedConfig(tamaguiConfig);
64
+ const components = evaluated.components.map(({ moduleName, module }) => {
65
+ setRequireResult(moduleName, module);
66
+ return {
67
+ moduleName,
68
+ nameToInfo: getComponentStaticConfigByName(moduleName, module.default ?? module)
69
+ };
70
+ });
71
+ const projectInfo = {
72
+ components,
73
+ nameToPaths: {},
74
+ tamaguiConfig,
75
+ stampSources: evaluated.stampSources
76
+ };
77
+ if (props.outputCSS) {
78
+ await writeTamaguiCSS(props.outputCSS, projectInfo.tamaguiConfig);
79
+ }
80
+ return projectInfo;
81
+ }
82
+ let waiting = false;
83
+ const generateThemesAndLog = async (options, force = false) => {
84
+ if (waiting) return;
85
+ if (!options.themeBuilder) return;
86
+ try {
87
+ waiting = true;
88
+ await new Promise((res) => setTimeout(res, 30));
89
+ const didGenerate = await generateTamaguiThemes(options, force);
90
+ if (didGenerate) {
91
+ const whitespaceBefore = ` `;
92
+ colorLog(Color.FgYellow, `${whitespaceBefore}\u27A1 [tamagui] generated themes: ${relative(options.root || process.cwd(), options.themeBuilder.output)}`);
93
+ if (options.outputCSS) {
94
+ const loadedConfig = getLoadedConfig();
95
+ if (loadedConfig) {
96
+ await writeTamaguiCSS(options.outputCSS, loadedConfig);
97
+ }
98
+ }
99
+ }
100
+ } finally {
101
+ waiting = false;
102
+ }
103
+ };
104
+ const last = {};
105
+ const lastVersion = {};
106
+ const buildConfigDependencies = /* @__PURE__ */ new WeakMap();
107
+ function getTamaguiBuildConfigDependencies(options) {
108
+ return buildConfigDependencies.get(options) ?? [];
109
+ }
110
+ async function loadTamaguiBuildConfigAsync(tamaguiOptions) {
111
+ const buildFilePath = tamaguiOptions?.buildFile ?? "./tamagui.build.ts";
112
+ const root = tamaguiOptions?.root || process.cwd();
113
+ const absolutePath = resolve(root, buildFilePath);
114
+ if (fsExtra.existsSync(absolutePath)) {
115
+ try {
116
+ const result = await esbuild.build({
117
+ entryPoints: [absolutePath],
118
+ absWorkingDir: root,
119
+ bundle: true,
120
+ packages: "external",
121
+ platform: "node",
122
+ format: "cjs",
123
+ target: "node18",
124
+ write: false,
125
+ metafile: true
126
+ });
127
+ const module = { exports: {} };
128
+ const projectRequire = createRequire(absolutePath);
129
+ const code = result.outputFiles[0]?.text;
130
+ if (!code) throw new Error(`No output generated for ${buildFilePath}`);
131
+ const fn = new Function("module", "exports", "require", "process", code);
132
+ fn(module, module.exports, projectRequire, process);
133
+ const out = module.exports.default || module.exports;
134
+ if (!out || typeof out !== "object") {
135
+ throw new Error(`No default export found in ${buildFilePath}: ${out}`);
136
+ }
137
+ const loadedOptions = {
138
+ ...tamaguiOptions,
139
+ ...out
140
+ };
141
+ const dependencies2 = Object.keys(result.metafile.inputs).map((input) => resolve(root, input));
142
+ buildConfigDependencies.set(loadedOptions, dependencies2);
143
+ tamaguiOptions = loadedOptions;
144
+ } catch (err) {
145
+ console.error(`[tamagui] Error loading ${buildFilePath}:`, err);
146
+ throw err;
147
+ }
148
+ }
149
+ if (!tamaguiOptions) {
150
+ throw new Error(`No tamagui build options found either via input props or at tamagui.build.ts`);
151
+ }
152
+ const options = {
153
+ config: "tamagui.config.ts",
154
+ components: ["tamagui", "@tamagui/core"],
155
+ ...tamaguiOptions
156
+ };
157
+ const dependencies = buildConfigDependencies.get(tamaguiOptions);
158
+ if (dependencies) buildConfigDependencies.set(options, dependencies);
159
+ return options;
160
+ }
161
+ function loadTamaguiBuildConfigSync(tamaguiOptions) {
162
+ const buildFilePath = tamaguiOptions?.buildFile ?? "./tamagui.build.ts";
163
+ const root = tamaguiOptions?.root || process.cwd();
164
+ const absolutePath = resolve(root, buildFilePath);
165
+ if (fsExtra.existsSync(absolutePath)) {
166
+ const registered = registerRequire("web", { ignoredModules: tamaguiOptions?.dangerouslyIgnoreStaticEvaluationModules });
167
+ try {
168
+ const out = nodeRequire(absolutePath).default;
169
+ if (!out) {
170
+ throw new Error(`No default export found in ${buildFilePath}: ${out}`);
171
+ }
172
+ tamaguiOptions = {
173
+ ...tamaguiOptions,
174
+ ...out
175
+ };
176
+ } finally {
177
+ registered.unregister();
178
+ }
179
+ }
180
+ if (!tamaguiOptions) {
181
+ throw new Error(`No tamagui build options found either via input props or at tamagui.build.ts`);
182
+ }
183
+ return {
184
+ config: "tamagui.config.ts",
185
+ components: ["tamagui", "@tamagui/core"],
186
+ ...tamaguiOptions
187
+ };
188
+ }
189
+ function loadTamaguiSync({ forceExports, cacheKey, ...propsIn }) {
190
+ const key = JSON.stringify(propsIn);
191
+ if (last[key] && !hasBundledConfigChanged()) {
192
+ if (!lastVersion[key] || lastVersion[key] === cacheKey) {
193
+ return last[key];
194
+ }
195
+ }
196
+ lastVersion[key] = cacheKey || "";
197
+ const props = getFilledOptions(propsIn);
198
+ const previousIsStatic = process.env.IS_STATIC;
199
+ const previousIsServer = process.env.TAMAGUI_IS_SERVER;
200
+ const previousDev = globalThis["__DEV__"];
201
+ process.env.IS_STATIC = "is_static";
202
+ process.env.TAMAGUI_IS_SERVER = "true";
203
+ const { unregister } = registerRequire(props.platform || "web", { ignoredModules: props.dangerouslyIgnoreStaticEvaluationModules });
204
+ try {
205
+ globalThis["__DEV__"] = process.env.NODE_ENV === "development";
206
+ let tamaguiConfig = null;
207
+ if (propsIn.config) {
208
+ const configPath = getTamaguiConfigPathFromOptionsConfig(propsIn.config, propsIn.root);
209
+ const exp = nodeRequire(configPath);
210
+ if (!exp) {
211
+ throw new Error(`The Tamagui config module did not export a value`);
212
+ }
213
+ tamaguiConfig = exp["default"] || exp["config"] || exp;
214
+ if (!tamaguiConfig || !tamaguiConfig.parsed) {
215
+ const confPath = nodeRequire.resolve(configPath);
216
+ throw new Error(`Can't find valid config in ${confPath}:
217
+
218
+ Be sure you "export default" or "export const config" the config.`);
219
+ }
220
+ if (tamaguiConfig) {
221
+ const { createTamagui } = requireTamaguiCore(props.platform || "web");
222
+ createTamagui(tamaguiConfig);
223
+ }
224
+ }
225
+ const components = loadComponentsSync(props, forceExports);
226
+ if (!components) {
227
+ throw new Error(`No components loaded`);
228
+ }
229
+ if (process.env.DEBUG === "tamagui") {
230
+ console.info(`components`, components);
231
+ }
232
+ const info = {
233
+ components,
234
+ tamaguiConfig,
235
+ nameToPaths: getNameToPaths()
236
+ };
237
+ if (tamaguiConfig) {
238
+ const { outputCSS } = props;
239
+ if (outputCSS) {
240
+ writeTamaguiCSS(outputCSS, tamaguiConfig);
241
+ }
242
+ regenerateConfigSync(props, info);
243
+ }
244
+ last[key] = {
245
+ ...info,
246
+ cached: true
247
+ };
248
+ return info;
249
+ } finally {
250
+ if (previousIsStatic === void 0) delete process.env.IS_STATIC;
251
+ else process.env.IS_STATIC = previousIsStatic;
252
+ if (previousIsServer === void 0) delete process.env.TAMAGUI_IS_SERVER;
253
+ else process.env.TAMAGUI_IS_SERVER = previousIsServer;
254
+ globalThis["__DEV__"] = previousDev;
255
+ unregister();
256
+ }
257
+ }
258
+ async function getOptions({ root = process.cwd(), tsconfigPath = "tsconfig.json", tamaguiOptions, host, debug } = {}) {
259
+ const dotDir = join(root, ".tamagui");
260
+ let pkgJson = {};
261
+ try {
262
+ pkgJson = await fsExtra.readJSON(join(root, "package.json"));
263
+ } catch (err) {}
264
+ return {
265
+ mode: process.env.NODE_ENV === "production" ? "production" : "development",
266
+ root,
267
+ host: host || "127.0.0.1",
268
+ pkgJson,
269
+ debug,
270
+ tsconfigPath,
271
+ tamaguiOptions: {
272
+ platform: process.env.TAMAGUI_TARGET || "web",
273
+ components: ["tamagui"],
274
+ ...tamaguiOptions,
275
+ config: tamaguiOptions?.config ?? await getDefaultTamaguiConfigPath(root, tamaguiOptions?.config)
276
+ },
277
+ paths: {
278
+ root,
279
+ dotDir,
280
+ conf: join(dotDir, "tamagui.config.json"),
281
+ types: join(dotDir, "types.json")
282
+ }
283
+ };
284
+ }
285
+ function resolveWebOrNativeSpecificEntry(entry, platform) {
286
+ const workspaceRoot = resolve();
287
+ const resolved = nodeRequire.resolve(entry, { paths: [workspaceRoot] });
288
+ const ext = extname(resolved);
289
+ const fileName = basename(resolved).replace(ext, "");
290
+ const target = platform || process.env.TAMAGUI_TARGET || "web";
291
+ const specificExt = target === "web" ? "web" : "native";
292
+ const specificFile = join(dirname(resolved), fileName + "." + specificExt + ext);
293
+ if (fsExtra.existsSync(specificFile)) {
294
+ return specificFile;
295
+ }
296
+ return entry;
297
+ }
298
+ const defaultPaths = ["tamagui.config.ts", join("src", "tamagui.config.ts")];
299
+ let hasWarnedOnce = false;
300
+ async function getDefaultTamaguiConfigPath(root, configPath) {
301
+ const searchPaths = [...new Set([configPath, ...defaultPaths].filter(Boolean).map((p) => join(root, p)))];
302
+ for (const path of searchPaths) {
303
+ if (await fsExtra.pathExists(path)) {
304
+ return path;
305
+ }
306
+ }
307
+ if (!hasWarnedOnce) {
308
+ hasWarnedOnce = true;
309
+ console.warn(`Warning: couldn't find tamagui.config.ts in the following paths given configuration "${configPath}":
310
+ ${searchPaths.join(`
311
+ `)}
312
+ `);
313
+ }
314
+ }
315
+ async function esbuildWatchFiles(entry, onChanged) {
316
+ let hasRunOnce = false;
317
+ const context = await esbuild.context({
318
+ bundle: true,
319
+ entryPoints: [entry],
320
+ resolveExtensions: [
321
+ ".ts",
322
+ ".tsx",
323
+ ".js",
324
+ ".mjs"
325
+ ],
326
+ logLevel: "silent",
327
+ write: false,
328
+ alias: {
329
+ "react-native-web": "@tamagui/react-native-web-lite",
330
+ "react-native": "@tamagui/react-native-web-lite"
331
+ },
332
+ plugins: [{
333
+ name: `on-rebuild`,
334
+ setup({ onEnd, onResolve }) {
335
+ let filter = /^[^./]|^\.[^./]|^\.\.[^/]/;
336
+ onResolve({ filter }, (args) => ({
337
+ path: args.path,
338
+ external: true
339
+ }));
340
+ onEnd(() => {
341
+ if (!hasRunOnce) {
342
+ hasRunOnce = true;
343
+ } else {
344
+ onChanged();
345
+ }
346
+ });
347
+ }
348
+ }]
349
+ });
350
+ void context.watch();
351
+ return () => {
352
+ context.dispose();
353
+ };
354
+ }
355
+
356
+ export { esbuildWatchFiles, generateThemesAndLog, getOptions, getTamaguiBuildConfigDependencies, loadTamagui, loadTamaguiBuildConfigAsync, loadTamaguiBuildConfigSync, loadTamaguiFromModules, loadTamaguiSync, resolveWebOrNativeSpecificEntry };
357
+ //# sourceMappingURL=loadTamagui.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadTamagui.js","names":[],"sources":["esm/extractor/loadTamagui.js"],"sourcesContent":["import { basename, dirname, extname, join, relative, resolve } from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { Color, colorLog } from \"@tamagui/cli-color\";\nimport esbuild from \"esbuild\";\nimport fsExtra from \"fs-extra\";\nimport { requireTamaguiCore } from \"../helpers/requireTamaguiCore\";\nimport { getNameToPaths, registerRequire, setRequireResult } from \"../registerRequire\";\nimport {\n getComponentStaticConfigByName,\n getBundledConfig,\n getLoadedConfig,\n hasBundledConfigChanged,\n loadComponentsSync,\n setLoadedConfig,\n writeTamaguiCSS\n} from \"./bundleConfig\";\nimport { getTamaguiConfigPathFromOptionsConfig } from \"./getTamaguiConfigPathFromOptionsConfig\";\nimport {\n generateTamaguiThemes,\n regenerateConfig,\n regenerateConfigSync\n} from \"./regenerateConfig\";\nconst nodeRequire = createRequire(\n typeof __filename === \"string\" ? __filename : import.meta.url\n);\nconst getFilledOptions = (propsIn) => ({\n // defaults\n platform: process.env.TAMAGUI_TARGET || \"web\",\n config: \"tamagui.config.ts\",\n components: [\"tamagui\"],\n ...propsIn\n});\nlet isLoadingPromise;\nasync function loadTamagui(propsIn, rebuild = false) {\n if (isLoadingPromise) return await isLoadingPromise;\n isLoadingPromise = (async () => {\n const props = getFilledOptions(propsIn);\n const bundleInfo = await getBundledConfig(props, rebuild);\n if (!bundleInfo) {\n throw new Error(\n `[tamagui] The config and component bundle completed without a project result`\n );\n }\n await generateThemesAndLog(props, rebuild);\n const maybeTamaguiConfig = bundleInfo.tamaguiConfig;\n if (maybeTamaguiConfig && !maybeTamaguiConfig.parsed) {\n const { createTamagui } = requireTamaguiCore(props.platform || \"web\");\n bundleInfo.tamaguiConfig = createTamagui(bundleInfo.tamaguiConfig);\n }\n if (!hasBundledConfigChanged()) {\n return bundleInfo;\n }\n await regenerateConfig(props, bundleInfo);\n return bundleInfo;\n })();\n try {\n return await isLoadingPromise;\n } finally {\n isLoadingPromise = null;\n }\n}\nasync function loadTamaguiFromModules(propsIn, evaluated) {\n const props = getFilledOptions(propsIn);\n await generateThemesAndLog(props);\n const configModule = evaluated.config;\n let tamaguiConfig = configModule.default || configModule.config || configModule;\n if (\"config\" in tamaguiConfig && tamaguiConfig.config && !(\"tokens\" in tamaguiConfig)) {\n tamaguiConfig = tamaguiConfig.config;\n }\n if (!tamaguiConfig) {\n throw new Error(`The Vite module runner did not return a valid Tamagui config`);\n }\n const hostCore = requireTamaguiCore(props.platform || \"web\");\n if (!tamaguiConfig.parsed) {\n tamaguiConfig = hostCore.createTamagui(tamaguiConfig);\n } else {\n hostCore.installTamaguiConfig(tamaguiConfig);\n }\n setLoadedConfig(tamaguiConfig);\n const components = evaluated.components.map(({ moduleName, module }) => {\n setRequireResult(moduleName, module);\n return {\n moduleName,\n nameToInfo: getComponentStaticConfigByName(moduleName, module.default ?? module)\n };\n });\n const projectInfo = {\n components,\n nameToPaths: {},\n tamaguiConfig,\n stampSources: evaluated.stampSources\n };\n if (props.outputCSS) {\n await writeTamaguiCSS(props.outputCSS, projectInfo.tamaguiConfig);\n }\n return projectInfo;\n}\nlet waiting = false;\nconst generateThemesAndLog = async (options, force = false) => {\n if (waiting) return;\n if (!options.themeBuilder) return;\n try {\n waiting = true;\n await new Promise((res) => setTimeout(res, 30));\n const didGenerate = await generateTamaguiThemes(options, force);\n if (didGenerate) {\n const whitespaceBefore = ` `;\n colorLog(\n Color.FgYellow,\n `${whitespaceBefore}\\u27A1 [tamagui] generated themes: ${relative(\n options.root || process.cwd(),\n options.themeBuilder.output\n )}`\n );\n if (options.outputCSS) {\n const loadedConfig = getLoadedConfig();\n if (loadedConfig) {\n await writeTamaguiCSS(options.outputCSS, loadedConfig);\n }\n }\n }\n } finally {\n waiting = false;\n }\n};\nconst last = {};\nconst lastVersion = {};\nconst buildConfigDependencies = /* @__PURE__ */ new WeakMap();\nfunction getTamaguiBuildConfigDependencies(options) {\n return buildConfigDependencies.get(options) ?? [];\n}\nasync function loadTamaguiBuildConfigAsync(tamaguiOptions) {\n const buildFilePath = tamaguiOptions?.buildFile ?? \"./tamagui.build.ts\";\n const root = tamaguiOptions?.root || process.cwd();\n const absolutePath = resolve(root, buildFilePath);\n if (fsExtra.existsSync(absolutePath)) {\n try {\n const result = await esbuild.build({\n entryPoints: [absolutePath],\n absWorkingDir: root,\n bundle: true,\n packages: \"external\",\n platform: \"node\",\n format: \"cjs\",\n target: \"node18\",\n write: false,\n metafile: true\n });\n const module = { exports: {} };\n const projectRequire = createRequire(absolutePath);\n const code = result.outputFiles[0]?.text;\n if (!code) throw new Error(`No output generated for ${buildFilePath}`);\n const fn = new Function(\"module\", \"exports\", \"require\", \"process\", code);\n fn(module, module.exports, projectRequire, process);\n const out = module.exports.default || module.exports;\n if (!out || typeof out !== \"object\") {\n throw new Error(`No default export found in ${buildFilePath}: ${out}`);\n }\n const loadedOptions = {\n ...tamaguiOptions,\n ...out\n };\n const dependencies2 = Object.keys(result.metafile.inputs).map(\n (input) => resolve(root, input)\n );\n buildConfigDependencies.set(loadedOptions, dependencies2);\n tamaguiOptions = loadedOptions;\n } catch (err) {\n console.error(`[tamagui] Error loading ${buildFilePath}:`, err);\n throw err;\n }\n }\n if (!tamaguiOptions) {\n throw new Error(\n `No tamagui build options found either via input props or at tamagui.build.ts`\n );\n }\n const options = {\n config: \"tamagui.config.ts\",\n components: [\"tamagui\", \"@tamagui/core\"],\n ...tamaguiOptions\n };\n const dependencies = buildConfigDependencies.get(tamaguiOptions);\n if (dependencies) buildConfigDependencies.set(options, dependencies);\n return options;\n}\nfunction loadTamaguiBuildConfigSync(tamaguiOptions) {\n const buildFilePath = tamaguiOptions?.buildFile ?? \"./tamagui.build.ts\";\n const root = tamaguiOptions?.root || process.cwd();\n const absolutePath = resolve(root, buildFilePath);\n if (fsExtra.existsSync(absolutePath)) {\n const registered = registerRequire(\"web\", {\n ignoredModules: tamaguiOptions?.dangerouslyIgnoreStaticEvaluationModules\n });\n try {\n const out = nodeRequire(absolutePath).default;\n if (!out) {\n throw new Error(`No default export found in ${buildFilePath}: ${out}`);\n }\n tamaguiOptions = {\n ...tamaguiOptions,\n ...out\n };\n } finally {\n registered.unregister();\n }\n }\n if (!tamaguiOptions) {\n throw new Error(\n `No tamagui build options found either via input props or at tamagui.build.ts`\n );\n }\n return {\n config: \"tamagui.config.ts\",\n components: [\"tamagui\", \"@tamagui/core\"],\n ...tamaguiOptions\n };\n}\nfunction loadTamaguiSync({\n forceExports,\n cacheKey,\n ...propsIn\n}) {\n const key = JSON.stringify(propsIn);\n if (last[key] && !hasBundledConfigChanged()) {\n if (!lastVersion[key] || lastVersion[key] === cacheKey) {\n return last[key];\n }\n }\n lastVersion[key] = cacheKey || \"\";\n const props = getFilledOptions(propsIn);\n const previousIsStatic = process.env.IS_STATIC;\n const previousIsServer = process.env.TAMAGUI_IS_SERVER;\n const previousDev = globalThis[\"__DEV__\"];\n process.env.IS_STATIC = \"is_static\";\n process.env.TAMAGUI_IS_SERVER = \"true\";\n const { unregister } = registerRequire(props.platform || \"web\", {\n ignoredModules: props.dangerouslyIgnoreStaticEvaluationModules\n });\n try {\n globalThis[\"__DEV__\"] = process.env.NODE_ENV === \"development\";\n let tamaguiConfig = null;\n if (propsIn.config) {\n const configPath = getTamaguiConfigPathFromOptionsConfig(\n propsIn.config,\n propsIn.root\n );\n const exp = nodeRequire(configPath);\n if (!exp) {\n throw new Error(`The Tamagui config module did not export a value`);\n }\n tamaguiConfig = exp[\"default\"] || exp[\"config\"] || exp;\n if (!tamaguiConfig || !tamaguiConfig.parsed) {\n const confPath = nodeRequire.resolve(configPath);\n throw new Error(`Can't find valid config in ${confPath}:\n \n Be sure you \"export default\" or \"export const config\" the config.`);\n }\n if (tamaguiConfig) {\n const { createTamagui } = requireTamaguiCore(props.platform || \"web\");\n createTamagui(tamaguiConfig);\n }\n }\n const components = loadComponentsSync(props, forceExports);\n if (!components) {\n throw new Error(`No components loaded`);\n }\n if (process.env.DEBUG === \"tamagui\") {\n console.info(`components`, components);\n }\n const info = {\n components,\n tamaguiConfig,\n nameToPaths: getNameToPaths()\n };\n if (tamaguiConfig) {\n const { outputCSS } = props;\n if (outputCSS) {\n writeTamaguiCSS(outputCSS, tamaguiConfig);\n }\n regenerateConfigSync(props, info);\n }\n last[key] = {\n ...info,\n cached: true\n };\n return info;\n } finally {\n if (previousIsStatic === void 0) delete process.env.IS_STATIC;\n else process.env.IS_STATIC = previousIsStatic;\n if (previousIsServer === void 0) delete process.env.TAMAGUI_IS_SERVER;\n else process.env.TAMAGUI_IS_SERVER = previousIsServer;\n globalThis[\"__DEV__\"] = previousDev;\n unregister();\n }\n}\nasync function getOptions({\n root = process.cwd(),\n tsconfigPath = \"tsconfig.json\",\n tamaguiOptions,\n host,\n debug\n} = {}) {\n const dotDir = join(root, \".tamagui\");\n let pkgJson = {};\n try {\n pkgJson = await fsExtra.readJSON(join(root, \"package.json\"));\n } catch (err) {\n }\n return {\n mode: process.env.NODE_ENV === \"production\" ? \"production\" : \"development\",\n root,\n host: host || \"127.0.0.1\",\n pkgJson,\n debug,\n tsconfigPath,\n tamaguiOptions: {\n platform: process.env.TAMAGUI_TARGET || \"web\",\n components: [\"tamagui\"],\n ...tamaguiOptions,\n config: tamaguiOptions?.config ?? await getDefaultTamaguiConfigPath(root, tamaguiOptions?.config)\n },\n paths: {\n root,\n dotDir,\n conf: join(dotDir, \"tamagui.config.json\"),\n types: join(dotDir, \"types.json\")\n }\n };\n}\nfunction resolveWebOrNativeSpecificEntry(entry, platform) {\n const workspaceRoot = resolve();\n const resolved = nodeRequire.resolve(entry, { paths: [workspaceRoot] });\n const ext = extname(resolved);\n const fileName = basename(resolved).replace(ext, \"\");\n const target = platform || process.env.TAMAGUI_TARGET || \"web\";\n const specificExt = target === \"web\" ? \"web\" : \"native\";\n const specificFile = join(dirname(resolved), fileName + \".\" + specificExt + ext);\n if (fsExtra.existsSync(specificFile)) {\n return specificFile;\n }\n return entry;\n}\nconst defaultPaths = [\"tamagui.config.ts\", join(\"src\", \"tamagui.config.ts\")];\nlet hasWarnedOnce = false;\nasync function getDefaultTamaguiConfigPath(root, configPath) {\n const searchPaths = [\n ...new Set(\n [configPath, ...defaultPaths].filter(Boolean).map((p) => join(root, p))\n )\n ];\n for (const path of searchPaths) {\n if (await fsExtra.pathExists(path)) {\n return path;\n }\n }\n if (!hasWarnedOnce) {\n hasWarnedOnce = true;\n console.warn(`Warning: couldn't find tamagui.config.ts in the following paths given configuration \"${configPath}\":\n ${searchPaths.join(`\n `)}\n `);\n }\n}\nasync function esbuildWatchFiles(entry, onChanged) {\n let hasRunOnce = false;\n const context = await esbuild.context({\n bundle: true,\n entryPoints: [entry],\n resolveExtensions: [\".ts\", \".tsx\", \".js\", \".mjs\"],\n logLevel: \"silent\",\n write: false,\n alias: {\n \"react-native-web\": \"@tamagui/react-native-web-lite\",\n \"react-native\": \"@tamagui/react-native-web-lite\"\n },\n plugins: [\n // to log what its watching:\n // {\n // name: 'test',\n // setup({ onResolve }) {\n // onResolve({ filter: /.*/ }, (args) => {\n // console.log('wtf', args.path)\n // })\n // },\n // },\n {\n name: `on-rebuild`,\n setup({ onEnd, onResolve }) {\n let filter = /^[^./]|^\\.[^./]|^\\.\\.[^/]/;\n onResolve({ filter }, (args) => ({ path: args.path, external: true }));\n onEnd(() => {\n if (!hasRunOnce) {\n hasRunOnce = true;\n } else {\n onChanged();\n }\n });\n }\n }\n ]\n });\n void context.watch();\n return () => {\n context.dispose();\n };\n}\nexport {\n esbuildWatchFiles,\n generateThemesAndLog,\n getOptions,\n getTamaguiBuildConfigDependencies,\n loadTamagui,\n loadTamaguiBuildConfigAsync,\n loadTamaguiBuildConfigSync,\n loadTamaguiFromModules,\n loadTamaguiSync,\n resolveWebOrNativeSpecificEntry\n};\n//# sourceMappingURL=loadTamagui.js.map\n"],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import { dirname, join } from "node:path";
2
+ import { createRequire } from "node:module";
3
+ import { generateThemes, writeGeneratedThemes } from "@tamagui/generate-themes";
4
+ import { stylePropsAll } from "@tamagui/helpers";
5
+ import { grammarEntries } from "@tamagui/style-grammar/tooling";
6
+ import FS from "fs-extra";
7
+ import { requireTamaguiCore } from "../helpers/requireTamaguiCore.mjs";
8
+ import { getBundledConfig } from "./bundleConfig.mjs";
9
+
10
+ async function regenerateConfig(tamaguiOptions, configIn, rebuild = false) {
11
+ try {
12
+ const config = configIn ?? await getBundledConfig(tamaguiOptions, rebuild);
13
+ if (!config) return;
14
+ const out = transformConfig(config, tamaguiOptions.platform || "web");
15
+ const confFile = getConfigFile(tamaguiOptions);
16
+ await FS.ensureDir(dirname(confFile));
17
+ await FS.writeJSON(confFile, out, { spaces: 2 });
18
+ } catch (err) {
19
+ if (process.env.DEBUG?.includes("tamagui") || process.env.IS_TAMAGUI_DEV) {
20
+ console.warn("regenerateConfig error", err);
21
+ }
22
+ }
23
+ }
24
+ function regenerateConfigSync(tamaguiOptions, config) {
25
+ try {
26
+ const confFile = getConfigFile(tamaguiOptions);
27
+ FS.ensureDirSync(dirname(confFile));
28
+ FS.writeJSONSync(confFile, transformConfig(config, tamaguiOptions.platform || "web"), { spaces: 2 });
29
+ } catch (err) {
30
+ if (process.env.DEBUG?.includes("tamagui") || process.env.IS_TAMAGUI_DEV) {
31
+ console.warn("regenerateConfig error", err);
32
+ }
33
+ }
34
+ }
35
+ async function generateTamaguiThemes(tamaguiOptions, force = false) {
36
+ if (!tamaguiOptions.themeBuilder) {
37
+ return;
38
+ }
39
+ const { input, output } = tamaguiOptions.themeBuilder;
40
+ const root = tamaguiOptions.root || process.cwd();
41
+ const tamaguiDir = join(root, ".tamagui");
42
+ const projectRequire = createRequire(join(root, "package.json"));
43
+ const inPath = resolveRelativePath(input, root, projectRequire);
44
+ const outPath = resolveRelativePath(output, root, projectRequire);
45
+ const generatedOutput = await generateThemes(inPath);
46
+ const hasChanged = force || await (async () => {
47
+ try {
48
+ if (!generatedOutput) return false;
49
+ const next = generatedOutput.generated;
50
+ const current = await FS.readFile(outPath, "utf-8");
51
+ return next !== current;
52
+ } catch (err) {}
53
+ return true;
54
+ })();
55
+ if (hasChanged) {
56
+ await writeGeneratedThemes(tamaguiDir, outPath, generatedOutput);
57
+ }
58
+ return hasChanged;
59
+ }
60
+ const getConfigFile = (options) => join(options.root || process.cwd(), ".tamagui", "tamagui.config.json");
61
+ const resolveRelativePath = (inputPath, root, projectRequire) => inputPath.startsWith(".") ? join(root, inputPath) : projectRequire.resolve(inputPath);
62
+ function cloneDeepSafe(x, excludeKeys = {}) {
63
+ if (!x) return x;
64
+ if (Array.isArray(x)) return x.map((_) => cloneDeepSafe(_));
65
+ if (typeof x === "function") return `Function`;
66
+ if (typeof x !== "object") return x;
67
+ if ("$$typeof" in x) return "Component";
68
+ return Object.fromEntries(Object.entries(x).flatMap(([k, v]) => excludeKeys[k] ? [] : [[k, cloneDeepSafe(v)]]));
69
+ }
70
+ function buildPropCategories() {
71
+ const out = {};
72
+ const byPrefix = {};
73
+ for (const entry of grammarEntries) {
74
+ if (entry.tokenCategory) out[entry.prop] = entry.tokenCategory;
75
+ if (entry.prefix) (byPrefix[entry.prefix] ||= /* @__PURE__ */ new Set()).add(entry.tokenCategory);
76
+ }
77
+ for (const [prefix, categories] of Object.entries(byPrefix)) {
78
+ if (categories.size !== 1) continue;
79
+ const [only] = categories;
80
+ if (only) out[prefix] = only;
81
+ }
82
+ return out;
83
+ }
84
+ function transformConfig(config, platform) {
85
+ if (!config) {
86
+ return null;
87
+ }
88
+ const { getVariableValue } = requireTamaguiCore(platform);
89
+ const next = cloneDeepSafe(config, { validStyles: true });
90
+ const { components, nameToPaths, tamaguiConfig } = next;
91
+ const { themes, tokens } = tamaguiConfig;
92
+ for (const key in themes) {
93
+ const theme = themes[key];
94
+ for (const tkey in theme) {
95
+ theme[tkey] = getVariableValue(theme[tkey]);
96
+ }
97
+ }
98
+ for (const key in tokens) {
99
+ const token = { ...tokens[key] };
100
+ for (const tkey in token) {
101
+ token[tkey] = getVariableValue(token[tkey]);
102
+ }
103
+ }
104
+ for (const component of components) {
105
+ for (const _ in component.nameToInfo) {
106
+ const compDefinition = { ...component.nameToInfo[_] };
107
+ component.nameToInfo[_] = compDefinition;
108
+ const { parentStaticConfig, ...rest } = compDefinition.staticConfig;
109
+ compDefinition.staticConfig = rest;
110
+ }
111
+ }
112
+ next.nameToPaths = {};
113
+ for (const key in nameToPaths) {
114
+ next.nameToPaths[key] = [...nameToPaths[key]];
115
+ }
116
+ const { fontsParsed, getCSS, tokensParsed, themeConfig, shorthands: _shorthands, userShorthands, ...cleanedConfig } = next.tamaguiConfig;
117
+ return {
118
+ components,
119
+ nameToPaths,
120
+ tamaguiConfigMetadata: { themeFields: "values-only" },
121
+ tamaguiConfig: {
122
+ ...cleanedConfig,
123
+ shorthands: userShorthands,
124
+ propCategories: buildPropCategories(),
125
+ styleProps: Object.keys(stylePropsAll)
126
+ }
127
+ };
128
+ }
129
+
130
+ export { generateTamaguiThemes, regenerateConfig, regenerateConfigSync };
131
+ //# sourceMappingURL=regenerateConfig.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regenerateConfig.js","names":[],"sources":["esm/extractor/regenerateConfig.js"],"sourcesContent":["import { dirname, join } from \"node:path\";\nimport { createRequire } from \"node:module\";\nimport { generateThemes, writeGeneratedThemes } from \"@tamagui/generate-themes\";\nimport { stylePropsAll } from \"@tamagui/helpers\";\nimport { grammarEntries } from \"@tamagui/style-grammar/tooling\";\nimport FS from \"fs-extra\";\nimport { requireTamaguiCore } from \"../helpers/requireTamaguiCore\";\nimport { getBundledConfig } from \"./bundleConfig\";\nasync function regenerateConfig(tamaguiOptions, configIn, rebuild = false) {\n try {\n const config = configIn ?? await getBundledConfig(tamaguiOptions, rebuild);\n if (!config) return;\n const out = transformConfig(config, tamaguiOptions.platform || \"web\");\n const confFile = getConfigFile(tamaguiOptions);\n await FS.ensureDir(dirname(confFile));\n await FS.writeJSON(confFile, out, {\n spaces: 2\n });\n } catch (err) {\n if (process.env.DEBUG?.includes(\"tamagui\") || process.env.IS_TAMAGUI_DEV) {\n console.warn(\"regenerateConfig error\", err);\n }\n }\n}\nfunction regenerateConfigSync(tamaguiOptions, config) {\n try {\n const confFile = getConfigFile(tamaguiOptions);\n FS.ensureDirSync(dirname(confFile));\n FS.writeJSONSync(\n confFile,\n transformConfig(config, tamaguiOptions.platform || \"web\"),\n {\n spaces: 2\n }\n );\n } catch (err) {\n if (process.env.DEBUG?.includes(\"tamagui\") || process.env.IS_TAMAGUI_DEV) {\n console.warn(\"regenerateConfig error\", err);\n }\n }\n}\nasync function generateTamaguiThemes(tamaguiOptions, force = false) {\n if (!tamaguiOptions.themeBuilder) {\n return;\n }\n const { input, output } = tamaguiOptions.themeBuilder;\n const root = tamaguiOptions.root || process.cwd();\n const tamaguiDir = join(root, \".tamagui\");\n const projectRequire = createRequire(join(root, \"package.json\"));\n const inPath = resolveRelativePath(input, root, projectRequire);\n const outPath = resolveRelativePath(output, root, projectRequire);\n const generatedOutput = await generateThemes(inPath);\n const hasChanged = force || await (async () => {\n try {\n if (!generatedOutput) return false;\n const next = generatedOutput.generated;\n const current = await FS.readFile(outPath, \"utf-8\");\n return next !== current;\n } catch (err) {\n }\n return true;\n })();\n if (hasChanged) {\n await writeGeneratedThemes(tamaguiDir, outPath, generatedOutput);\n }\n return hasChanged;\n}\nconst getConfigFile = (options) => join(options.root || process.cwd(), \".tamagui\", \"tamagui.config.json\");\nconst resolveRelativePath = (inputPath, root, projectRequire) => inputPath.startsWith(\".\") ? join(root, inputPath) : projectRequire.resolve(inputPath);\nfunction cloneDeepSafe(x, excludeKeys = {}) {\n if (!x) return x;\n if (Array.isArray(x)) return x.map((_) => cloneDeepSafe(_));\n if (typeof x === \"function\") return `Function`;\n if (typeof x !== \"object\") return x;\n if (\"$$typeof\" in x) return \"Component\";\n return Object.fromEntries(\n Object.entries(x).flatMap(([k, v]) => excludeKeys[k] ? [] : [[k, cloneDeepSafe(v)]])\n );\n}\nfunction buildPropCategories() {\n const out = {};\n const byPrefix = {};\n for (const entry of grammarEntries) {\n if (entry.tokenCategory) out[entry.prop] = entry.tokenCategory;\n if (entry.prefix) (byPrefix[entry.prefix] ||= /* @__PURE__ */ new Set()).add(entry.tokenCategory);\n }\n for (const [prefix, categories] of Object.entries(byPrefix)) {\n if (categories.size !== 1) continue;\n const [only] = categories;\n if (only) out[prefix] = only;\n }\n return out;\n}\nfunction transformConfig(config, platform) {\n if (!config) {\n return null;\n }\n const { getVariableValue } = requireTamaguiCore(platform);\n const next = cloneDeepSafe(config, {\n validStyles: true\n });\n const { components, nameToPaths, tamaguiConfig } = next;\n const { themes, tokens } = tamaguiConfig;\n for (const key in themes) {\n const theme = themes[key];\n for (const tkey in theme) {\n theme[tkey] = getVariableValue(theme[tkey]);\n }\n }\n for (const key in tokens) {\n const token = { ...tokens[key] };\n for (const tkey in token) {\n token[tkey] = getVariableValue(token[tkey]);\n }\n }\n for (const component of components) {\n for (const _ in component.nameToInfo) {\n const compDefinition = { ...component.nameToInfo[_] };\n component.nameToInfo[_] = compDefinition;\n const { parentStaticConfig, ...rest } = compDefinition.staticConfig;\n compDefinition.staticConfig = rest;\n }\n }\n next.nameToPaths = {};\n for (const key in nameToPaths) {\n next.nameToPaths[key] = [...nameToPaths[key]];\n }\n const {\n fontsParsed,\n getCSS,\n tokensParsed,\n themeConfig,\n shorthands: _shorthands,\n userShorthands,\n ...cleanedConfig\n } = next.tamaguiConfig;\n return {\n components,\n nameToPaths,\n tamaguiConfigMetadata: {\n themeFields: \"values-only\"\n },\n tamaguiConfig: {\n ...cleanedConfig,\n // Output userShorthands as shorthands (excludes built-ins)\n shorthands: userShorthands,\n propCategories: buildPropCategories(),\n // every prop that can carry a style value. the shorthand tables alone\n // miss any long-form prop with no shorthand (`gap`, `backgroundColor`),\n // and the language server was silent inside exactly those.\n styleProps: Object.keys(stylePropsAll)\n }\n };\n}\nexport {\n generateTamaguiThemes,\n regenerateConfig,\n regenerateConfigSync\n};\n//# sourceMappingURL=regenerateConfig.js.map\n"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { createRequire } from "node:module";
2
+ import { esbuildWatchFiles, generateThemesAndLog, getOptions } from "./loadTamagui.mjs";
3
+ import { regenerateConfig } from "./regenerateConfig.mjs";
4
+
5
+ const nodeRequire = createRequire(typeof __filename === "string" ? __filename : import.meta.url);
6
+ let isWatching = false;
7
+ async function watchTamaguiConfig(tamaguiOptions) {
8
+ if (process.env.NODE_ENV === "production" || tamaguiOptions.disable) {
9
+ return { dispose() {} };
10
+ }
11
+ if (isWatching) {
12
+ return;
13
+ }
14
+ isWatching = true;
15
+ const options = await getOptions({ tamaguiOptions });
16
+ if (!options.tamaguiOptions.config) {
17
+ isWatching = false;
18
+ throw new Error(`No config`);
19
+ }
20
+ const disposeConfigWatcher = await esbuildWatchFiles(options.tamaguiOptions.config, async () => {
21
+ await generateThemesAndLog(options.tamaguiOptions);
22
+ await regenerateConfig(options.tamaguiOptions, null, true);
23
+ });
24
+ const themeBuilderInput = options.tamaguiOptions.themeBuilder?.input;
25
+ let disposeThemesWatcher;
26
+ if (themeBuilderInput) {
27
+ let inputPath = themeBuilderInput;
28
+ try {
29
+ inputPath = nodeRequire.resolve(themeBuilderInput);
30
+ } catch {}
31
+ disposeThemesWatcher = await esbuildWatchFiles(inputPath, async () => {
32
+ await generateThemesAndLog(options.tamaguiOptions);
33
+ });
34
+ }
35
+ return { dispose() {
36
+ isWatching = false;
37
+ disposeConfigWatcher();
38
+ disposeThemesWatcher?.();
39
+ } };
40
+ }
41
+
42
+ export { watchTamaguiConfig };
43
+ //# sourceMappingURL=watchTamaguiConfig.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchTamaguiConfig.js","names":[],"sources":["esm/extractor/watchTamaguiConfig.js"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport { esbuildWatchFiles, generateThemesAndLog, getOptions } from \"./loadTamagui\";\nimport { regenerateConfig } from \"./regenerateConfig\";\nconst nodeRequire = createRequire(\n typeof __filename === \"string\" ? __filename : import.meta.url\n);\nlet isWatching = false;\nasync function watchTamaguiConfig(tamaguiOptions) {\n if (process.env.NODE_ENV === \"production\" || tamaguiOptions.disable) {\n return {\n dispose() {\n }\n };\n }\n if (isWatching) {\n return;\n }\n isWatching = true;\n const options = await getOptions({ tamaguiOptions });\n if (!options.tamaguiOptions.config) {\n isWatching = false;\n throw new Error(`No config`);\n }\n const disposeConfigWatcher = await esbuildWatchFiles(\n options.tamaguiOptions.config,\n async () => {\n await generateThemesAndLog(options.tamaguiOptions);\n await regenerateConfig(options.tamaguiOptions, null, true);\n }\n );\n const themeBuilderInput = options.tamaguiOptions.themeBuilder?.input;\n let disposeThemesWatcher;\n if (themeBuilderInput) {\n let inputPath = themeBuilderInput;\n try {\n inputPath = nodeRequire.resolve(themeBuilderInput);\n } catch {\n }\n disposeThemesWatcher = await esbuildWatchFiles(inputPath, async () => {\n await generateThemesAndLog(options.tamaguiOptions);\n });\n }\n return {\n dispose() {\n isWatching = false;\n disposeConfigWatcher();\n disposeThemesWatcher?.();\n }\n };\n}\nexport {\n watchTamaguiConfig\n};\n//# sourceMappingURL=watchTamaguiConfig.js.map\n"],"mappings":";;;;;AAGA,MAAM,cAAc,cAClB,OAAO,eAAe,WAAW,aAAa,YAAY,GAC5D;AACA,IAAI,aAAa;AACjB,eAAe,mBAAmB,gBAAgB;CAChD,IAAI,QAAQ,IAAI,aAAa,gBAAgB,eAAe,SAAS;EACnE,OAAO,EACL,UAAU,CACV,EACF;CACF;CACA,IAAI,YAAY;EACd;CACF;CACA,aAAa;CACb,MAAM,UAAU,MAAM,WAAW,EAAE,eAAe,CAAC;CACnD,IAAI,CAAC,QAAQ,eAAe,QAAQ;EAClC,aAAa;EACb,MAAM,IAAI,MAAM,WAAW;CAC7B;CACA,MAAM,uBAAuB,MAAM,kBACjC,QAAQ,eAAe,QACvB,YAAY;EACV,MAAM,qBAAqB,QAAQ,cAAc;EACjD,MAAM,iBAAiB,QAAQ,gBAAgB,MAAM,IAAI;CAC3D,CACF;CACA,MAAM,oBAAoB,QAAQ,eAAe,cAAc;CAC/D,IAAI;CACJ,IAAI,mBAAmB;EACrB,IAAI,YAAY;EAChB,IAAI;GACF,YAAY,YAAY,QAAQ,iBAAiB;EACnD,QAAQ,CACR;EACA,uBAAuB,MAAM,kBAAkB,WAAW,YAAY;GACpE,MAAM,qBAAqB,QAAQ,cAAc;EACnD,CAAC;CACH;CACA,OAAO,EACL,UAAU;EACR,aAAa;EACb,qBAAqB;EACrB,uBAAuB;CACzB,EACF;AACF"}
@@ -0,0 +1,46 @@
1
+ function getPragmaOptions({ source, path }) {
2
+ let shouldPrintDebug = false;
3
+ let shouldDisable = false;
4
+ const firstLines = source.slice(0, 800);
5
+ let pragma = "";
6
+ for (const line of firstLines.split("\n")) {
7
+ const trimmed = line.trim();
8
+ if (trimmed && !trimmed.startsWith("//") && !trimmed.startsWith("/*")) {
9
+ break;
10
+ }
11
+ pragma = trimmed.match(/(\/\/|\/\*)\s?!?\s?(tamagui-ignore|debug|debug-verbose)(\n|\s|$).*/)?.[2].trim() || "";
12
+ if (pragma) {
13
+ pragma = pragma.replace("!", "").trim();
14
+ break;
15
+ }
16
+ }
17
+ switch (pragma) {
18
+ case "tamagui-ignore":
19
+ shouldDisable = true;
20
+ break;
21
+ case "debug":
22
+ shouldPrintDebug = true;
23
+ break;
24
+ case "debug-verbose":
25
+ shouldPrintDebug = "verbose";
26
+ break;
27
+ }
28
+ if (process.env.TAMAGUI_DEBUG_FILE) {
29
+ if (path.includes(process.env.TAMAGUI_DEBUG_FILE)) {
30
+ shouldPrintDebug = "verbose";
31
+ }
32
+ }
33
+ if (process.env.DEBUG?.includes("tamagui")) {
34
+ shouldPrintDebug ||= true;
35
+ }
36
+ if (process.env.DEBUG?.includes("tamagui-verbose")) {
37
+ shouldPrintDebug = "verbose";
38
+ }
39
+ return {
40
+ shouldPrintDebug,
41
+ shouldDisable
42
+ };
43
+ }
44
+
45
+ export { getPragmaOptions };
46
+ //# sourceMappingURL=getPragmaOptions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPragmaOptions.js","names":[],"sources":["esm/getPragmaOptions.js"],"sourcesContent":["function getPragmaOptions({ source, path }) {\n let shouldPrintDebug = false;\n let shouldDisable = false;\n const firstLines = source.slice(0, 800);\n let pragma = \"\";\n for (const line of firstLines.split(\"\\n\")) {\n const trimmed = line.trim();\n if (trimmed && !trimmed.startsWith(\"//\") && !trimmed.startsWith(\"/*\")) {\n break;\n }\n pragma = trimmed.match(/(\\/\\/|\\/\\*)\\s?!?\\s?(tamagui-ignore|debug|debug-verbose)(\\n|\\s|$).*/)?.[2].trim() || \"\";\n if (pragma) {\n pragma = pragma.replace(\"!\", \"\").trim();\n break;\n }\n }\n switch (pragma) {\n case \"tamagui-ignore\":\n shouldDisable = true;\n break;\n case \"debug\":\n shouldPrintDebug = true;\n break;\n case \"debug-verbose\":\n shouldPrintDebug = \"verbose\";\n break;\n }\n if (process.env.TAMAGUI_DEBUG_FILE) {\n if (path.includes(process.env.TAMAGUI_DEBUG_FILE)) {\n shouldPrintDebug = \"verbose\";\n }\n }\n if (process.env.DEBUG?.includes(\"tamagui\")) {\n shouldPrintDebug ||= true;\n }\n if (process.env.DEBUG?.includes(\"tamagui-verbose\")) {\n shouldPrintDebug = \"verbose\";\n }\n return {\n shouldPrintDebug,\n shouldDisable\n };\n}\nexport {\n getPragmaOptions\n};\n//# sourceMappingURL=getPragmaOptions.js.map\n"],"mappings":";AAAA,SAAS,iBAAiB,EAAE,QAAQ,QAAQ;CAC1C,IAAI,mBAAmB;CACvB,IAAI,gBAAgB;CACpB,MAAM,aAAa,OAAO,MAAM,GAAG,GAAG;CACtC,IAAI,SAAS;CACb,KAAK,MAAM,QAAQ,WAAW,MAAM,IAAI,GAAG;EACzC,MAAM,UAAU,KAAK,KAAK;EAC1B,IAAI,WAAW,CAAC,QAAQ,WAAW,IAAI,KAAK,CAAC,QAAQ,WAAW,IAAI,GAAG;GACrE;EACF;EACA,SAAS,QAAQ,MAAM,oEAAoE,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK;EAC5G,IAAI,QAAQ;GACV,SAAS,OAAO,QAAQ,KAAK,EAAE,CAAC,CAAC,KAAK;GACtC;EACF;CACF;CACA,QAAQ,QAAR;EACE,KAAK;GACH,gBAAgB;GAChB;EACF,KAAK;GACH,mBAAmB;GACnB;EACF,KAAK;GACH,mBAAmB;GACnB;CACJ;CACA,IAAI,QAAQ,IAAI,oBAAoB;EAClC,IAAI,KAAK,SAAS,QAAQ,IAAI,kBAAkB,GAAG;GACjD,mBAAmB;EACrB;CACF;CACA,IAAI,QAAQ,IAAI,OAAO,SAAS,SAAS,GAAG;EAC1C,qBAAqB;CACvB;CACA,IAAI,QAAQ,IAAI,OAAO,SAAS,iBAAiB,GAAG;EAClD,mBAAmB;CACrB;CACA,OAAO;EACL;EACA;CACF;AACF"}