@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.
- package/dist/cjs/check-dep-versions.cjs +354 -0
- package/dist/cjs/checkDeps.cjs +301 -0
- package/dist/cjs/compiler.cjs +349 -0
- package/dist/cjs/compilerHost.cjs +2287 -0
- package/dist/cjs/componentDiscovery.cjs +94 -0
- package/dist/cjs/constants.cjs +32 -0
- package/dist/cjs/domStructuralPass.cjs +121 -0
- package/dist/cjs/exports.cjs +44 -0
- package/dist/cjs/extractor/addLocalExports.cjs +63 -0
- package/dist/cjs/extractor/bundle.cjs +229 -0
- package/dist/cjs/extractor/bundleConfig.cjs +769 -0
- package/dist/cjs/extractor/concatClassName.cjs +120 -0
- package/dist/cjs/extractor/detectModuleFormat.cjs +53 -0
- package/dist/cjs/extractor/esbuildAliasPlugin.cjs +46 -0
- package/dist/cjs/extractor/esbuildTsconfigPaths.cjs +91 -0
- package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +42 -0
- package/dist/cjs/extractor/loadTamagui.cjs +394 -0
- package/dist/cjs/extractor/regenerateConfig.cjs +160 -0
- package/dist/cjs/extractor/watchTamaguiConfig.cjs +63 -0
- package/dist/cjs/getPragmaOptions.cjs +66 -0
- package/dist/cjs/helpers/memoize.cjs +41 -0
- package/dist/cjs/helpers/requireTamaguiCore.cjs +39 -0
- package/dist/cjs/index.cjs +33 -0
- package/dist/cjs/registerRequire.cjs +219 -0
- package/dist/cjs/server.cjs +65 -0
- package/dist/cjs/staticEvaluationIgnoredModules.cjs +85 -0
- package/dist/cjs/types.cjs +16 -0
- package/dist/cjs/zero/artifact.cjs +144 -0
- package/dist/cjs/zero/graph.cjs +208 -0
- package/dist/cjs/zero/identity.cjs +60 -0
- package/dist/cjs/zero/index.cjs +33 -0
- package/dist/cjs/zero/islands.cjs +235 -0
- package/dist/cjs/zero/options.cjs +162 -0
- package/dist/cjs/zero/ownership.cjs +78 -0
- package/dist/cjs/zero/theme.cjs +337 -0
- package/dist/cjs/zero/transform.cjs +207 -0
- package/dist/esm/check-dep-versions.mjs +329 -0
- package/dist/esm/check-dep-versions.mjs.map +1 -0
- package/dist/esm/checkDeps.mjs +279 -0
- package/dist/esm/checkDeps.mjs.map +1 -0
- package/dist/esm/compiler.mjs +319 -0
- package/dist/esm/compiler.mjs.map +1 -0
- package/dist/esm/compilerHost.mjs +2265 -0
- package/dist/esm/compilerHost.mjs.map +1 -0
- package/dist/esm/componentDiscovery.mjs +69 -0
- package/dist/esm/componentDiscovery.mjs.map +1 -0
- package/dist/esm/constants.mjs +7 -0
- package/dist/esm/constants.mjs.map +1 -0
- package/dist/esm/domStructuralPass.mjs +102 -0
- package/dist/esm/domStructuralPass.mjs.map +1 -0
- package/dist/esm/exports.mjs +29 -0
- package/dist/esm/extractor/addLocalExports.mjs +44 -0
- package/dist/esm/extractor/addLocalExports.mjs.map +1 -0
- package/dist/esm/extractor/bundle.mjs +199 -0
- package/dist/esm/extractor/bundle.mjs.map +1 -0
- package/dist/esm/extractor/bundleConfig.mjs +728 -0
- package/dist/esm/extractor/bundleConfig.mjs.map +1 -0
- package/dist/esm/extractor/concatClassName.mjs +100 -0
- package/dist/esm/extractor/concatClassName.mjs.map +1 -0
- package/dist/esm/extractor/detectModuleFormat.mjs +31 -0
- package/dist/esm/extractor/detectModuleFormat.mjs.map +1 -0
- package/dist/esm/extractor/esbuildAliasPlugin.mjs +26 -0
- package/dist/esm/extractor/esbuildAliasPlugin.mjs.map +1 -0
- package/dist/esm/extractor/esbuildTsconfigPaths.mjs +63 -0
- package/dist/esm/extractor/esbuildTsconfigPaths.mjs.map +1 -0
- package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs +23 -0
- package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs.map +1 -0
- package/dist/esm/extractor/loadTamagui.mjs +357 -0
- package/dist/esm/extractor/loadTamagui.mjs.map +1 -0
- package/dist/esm/extractor/regenerateConfig.mjs +131 -0
- package/dist/esm/extractor/regenerateConfig.mjs.map +1 -0
- package/dist/esm/extractor/watchTamaguiConfig.mjs +43 -0
- package/dist/esm/extractor/watchTamaguiConfig.mjs.map +1 -0
- package/dist/esm/getPragmaOptions.mjs +46 -0
- package/dist/esm/getPragmaOptions.mjs.map +1 -0
- package/dist/esm/helpers/memoize.mjs +21 -0
- package/dist/esm/helpers/memoize.mjs.map +1 -0
- package/dist/esm/helpers/requireTamaguiCore.mjs +19 -0
- package/dist/esm/helpers/requireTamaguiCore.mjs.map +1 -0
- package/dist/esm/index.mjs +8 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/registerRequire.mjs +195 -0
- package/dist/esm/registerRequire.mjs.map +1 -0
- package/dist/esm/server.mjs +40 -0
- package/dist/esm/server.mjs.map +1 -0
- package/dist/esm/setup.mjs +0 -0
- package/dist/esm/staticEvaluationIgnoredModules.mjs +61 -0
- package/dist/esm/staticEvaluationIgnoredModules.mjs.map +1 -0
- package/dist/esm/types.mjs +0 -0
- package/dist/esm/zero/artifact.mjs +119 -0
- package/dist/esm/zero/artifact.mjs.map +1 -0
- package/dist/esm/zero/graph.mjs +170 -0
- package/dist/esm/zero/graph.mjs.map +1 -0
- package/dist/esm/zero/identity.mjs +36 -0
- package/dist/esm/zero/identity.mjs.map +1 -0
- package/dist/esm/zero/index.mjs +19 -0
- package/dist/esm/zero/islands.mjs +201 -0
- package/dist/esm/zero/islands.mjs.map +1 -0
- package/dist/esm/zero/options.mjs +129 -0
- package/dist/esm/zero/options.mjs.map +1 -0
- package/dist/esm/zero/ownership.mjs +48 -0
- package/dist/esm/zero/ownership.mjs.map +1 -0
- package/dist/esm/zero/theme.mjs +313 -0
- package/dist/esm/zero/theme.mjs.map +1 -0
- package/dist/esm/zero/transform.mjs +182 -0
- package/dist/esm/zero/transform.mjs.map +1 -0
- package/package.json +38 -47
- package/src/check-dep-versions.ts +2 -2
- package/src/checkDeps.ts +3 -2
- package/src/compiler.ts +506 -0
- package/src/compilerHost.ts +3739 -0
- package/src/componentDiscovery.ts +105 -0
- package/src/constants.ts +0 -5
- package/src/domStructuralPass.ts +190 -0
- package/src/exports.ts +5 -6
- package/src/extractor/addLocalExports.ts +49 -0
- package/src/extractor/bundle.ts +38 -40
- package/src/extractor/bundleConfig.ts +368 -187
- package/src/extractor/concatClassName.ts +21 -24
- package/src/extractor/getTamaguiConfigPathFromOptionsConfig.ts +13 -5
- package/src/extractor/loadTamagui.ts +196 -143
- package/src/extractor/regenerateConfig.ts +65 -13
- package/src/extractor/watchTamaguiConfig.ts +6 -1
- package/src/helpers/requireTamaguiCore.ts +6 -1
- package/src/registerRequire.ts +94 -132
- package/src/staticEvaluationIgnoredModules.ts +74 -0
- package/src/types.ts +2 -107
- package/src/zero/artifact.ts +142 -0
- package/src/zero/graph.ts +359 -0
- package/src/zero/identity.ts +73 -0
- package/src/zero/index.ts +9 -0
- package/src/zero/islands.ts +266 -0
- package/src/zero/options.ts +239 -0
- package/src/zero/ownership.ts +113 -0
- package/src/zero/theme.ts +526 -0
- package/src/zero/transform.ts +329 -0
- package/types/check-dep-versions.d.ts.map +1 -1
- package/types/checkDeps.d.ts.map +1 -1
- package/types/compiler.d.ts +134 -0
- package/types/compiler.d.ts.map +1 -0
- package/types/compilerHost.d.ts +38 -0
- package/types/compilerHost.d.ts.map +1 -0
- package/types/componentDiscovery.d.ts +27 -0
- package/types/componentDiscovery.d.ts.map +1 -0
- package/types/constants.d.ts +0 -1
- package/types/constants.d.ts.map +1 -1
- package/types/domStructuralPass.d.ts +3 -0
- package/types/domStructuralPass.d.ts.map +1 -0
- package/types/exports.d.ts +5 -6
- package/types/exports.d.ts.map +1 -1
- package/types/extractor/addLocalExports.d.ts +3 -0
- package/types/extractor/addLocalExports.d.ts.map +1 -0
- package/types/extractor/bundle.d.ts +66 -65
- package/types/extractor/bundle.d.ts.map +1 -1
- package/types/extractor/bundleConfig.d.ts +26 -4
- package/types/extractor/bundleConfig.d.ts.map +1 -1
- package/types/extractor/esbuildAliasPlugin.d.ts.map +1 -1
- package/types/extractor/getTamaguiConfigPathFromOptionsConfig.d.ts +1 -1
- package/types/extractor/getTamaguiConfigPathFromOptionsConfig.d.ts.map +1 -1
- package/types/extractor/loadTamagui.d.ts +26 -3
- package/types/extractor/loadTamagui.d.ts.map +1 -1
- package/types/extractor/regenerateConfig.d.ts +1 -1
- package/types/extractor/regenerateConfig.d.ts.map +1 -1
- package/types/extractor/watchTamaguiConfig.d.ts.map +1 -1
- package/types/getPragmaOptions.d.ts +1 -1
- package/types/helpers/memoize.d.ts +1 -1
- package/types/helpers/memoize.d.ts.map +1 -1
- package/types/helpers/requireTamaguiCore.d.ts.map +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/registerRequire.d.ts +2 -2
- package/types/registerRequire.d.ts.map +1 -1
- package/types/staticEvaluationIgnoredModules.d.ts +9 -0
- package/types/staticEvaluationIgnoredModules.d.ts.map +1 -0
- package/types/types.d.ts +2 -90
- package/types/types.d.ts.map +1 -1
- package/types/zero/artifact.d.ts +44 -0
- package/types/zero/artifact.d.ts.map +1 -0
- package/types/zero/graph.d.ts +139 -0
- package/types/zero/graph.d.ts.map +1 -0
- package/types/zero/identity.d.ts +33 -0
- package/types/zero/identity.d.ts.map +1 -0
- package/types/zero/index.d.ts +10 -0
- package/types/zero/index.d.ts.map +1 -0
- package/types/zero/islands.d.ts +56 -0
- package/types/zero/islands.d.ts.map +1 -0
- package/types/zero/options.d.ts +58 -0
- package/types/zero/options.d.ts.map +1 -0
- package/types/zero/ownership.d.ts +51 -0
- package/types/zero/ownership.d.ts.map +1 -0
- package/types/zero/theme.d.ts +85 -0
- package/types/zero/theme.d.ts.map +1 -0
- package/types/zero/transform.d.ts +53 -0
- package/types/zero/transform.d.ts.map +1 -0
- package/dist/check-dep-versions.cjs +0 -372
- package/dist/checkDeps.cjs +0 -271
- package/dist/constants.cjs +0 -51
- package/dist/exports.cjs +0 -48
- package/dist/extractor/accessSafe.cjs +0 -48
- package/dist/extractor/babelParse.cjs +0 -56
- package/dist/extractor/buildClassName.cjs +0 -86
- package/dist/extractor/bundle.cjs +0 -234
- package/dist/extractor/bundleConfig.cjs +0 -729
- package/dist/extractor/concatClassName.cjs +0 -129
- package/dist/extractor/createEvaluator.cjs +0 -88
- package/dist/extractor/createExtractor.cjs +0 -1968
- package/dist/extractor/createLogger.cjs +0 -50
- package/dist/extractor/detectModuleFormat.cjs +0 -55
- package/dist/extractor/ensureImportingConcat.cjs +0 -54
- package/dist/extractor/errors.cjs +0 -28
- package/dist/extractor/esbuildAliasPlugin.cjs +0 -56
- package/dist/extractor/esbuildTsconfigPaths.cjs +0 -108
- package/dist/extractor/evaluateAstNode.cjs +0 -128
- package/dist/extractor/extractHelpers.cjs +0 -182
- package/dist/extractor/extractMediaStyle.cjs +0 -169
- package/dist/extractor/extractToClassNames.cjs +0 -475
- package/dist/extractor/extractToNative.cjs +0 -369
- package/dist/extractor/findTopmostFunction.cjs +0 -43
- package/dist/extractor/generatedUid.cjs +0 -58
- package/dist/extractor/getPrefixLogs.cjs +0 -31
- package/dist/extractor/getPropValueFromAttributes.cjs +0 -85
- package/dist/extractor/getSourceModule.cjs +0 -100
- package/dist/extractor/getStaticBindingsForScope.cjs +0 -213
- package/dist/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +0 -41
- package/dist/extractor/hasTopLevelAwait.cjs +0 -62
- package/dist/extractor/hoistClassNames.cjs +0 -76
- package/dist/extractor/literalToAst.cjs +0 -109
- package/dist/extractor/loadFile.cjs +0 -17
- package/dist/extractor/loadTamagui.cjs +0 -373
- package/dist/extractor/logLines.cjs +0 -43
- package/dist/extractor/normalizeTernaries.cjs +0 -100
- package/dist/extractor/propsToFontFamilyCache.cjs +0 -42
- package/dist/extractor/regenerateConfig.cjs +0 -178
- package/dist/extractor/removeUnusedHooks.cjs +0 -108
- package/dist/extractor/timer.cjs +0 -52
- package/dist/extractor/validHTMLAttributes.cjs +0 -79
- package/dist/extractor/watchTamaguiConfig.cjs +0 -70
- package/dist/getPragmaOptions.cjs +0 -73
- package/dist/helpers/memoize.cjs +0 -45
- package/dist/helpers/requireTamaguiCore.cjs +0 -40
- package/dist/index.cjs +0 -42
- package/dist/registerRequire.cjs +0 -209
- package/dist/server.cjs +0 -82
- package/dist/types.cjs +0 -18
- package/dist/worker.cjs +0 -111
- package/src/extractor/accessSafe.ts +0 -22
- package/src/extractor/babelParse.ts +0 -38
- package/src/extractor/buildClassName.ts +0 -76
- package/src/extractor/createEvaluator.ts +0 -82
- package/src/extractor/createExtractor.ts +0 -2970
- package/src/extractor/createLogger.ts +0 -41
- package/src/extractor/ensureImportingConcat.ts +0 -36
- package/src/extractor/errors.ts +0 -1
- package/src/extractor/evaluateAstNode.ts +0 -136
- package/src/extractor/extractHelpers.ts +0 -211
- package/src/extractor/extractMediaStyle.ts +0 -194
- package/src/extractor/extractToClassNames.ts +0 -733
- package/src/extractor/extractToNative.ts +0 -506
- package/src/extractor/findTopmostFunction.ts +0 -24
- package/src/extractor/generatedUid.ts +0 -41
- package/src/extractor/getPrefixLogs.ts +0 -9
- package/src/extractor/getPropValueFromAttributes.ts +0 -95
- package/src/extractor/getSourceModule.ts +0 -96
- package/src/extractor/getStaticBindingsForScope.ts +0 -237
- package/src/extractor/hasTopLevelAwait.ts +0 -28
- package/src/extractor/hoistClassNames.ts +0 -52
- package/src/extractor/literalToAst.ts +0 -85
- package/src/extractor/loadFile.ts +0 -17
- package/src/extractor/logLines.ts +0 -16
- package/src/extractor/normalizeTernaries.ts +0 -89
- package/src/extractor/propsToFontFamilyCache.ts +0 -18
- package/src/extractor/removeUnusedHooks.ts +0 -83
- package/src/extractor/timer.ts +0 -25
- package/src/extractor/validHTMLAttributes.ts +0 -52
- package/src/worker.ts +0 -142
- package/types/extractor/accessSafe.d.ts +0 -3
- package/types/extractor/accessSafe.d.ts.map +0 -1
- package/types/extractor/babelParse.d.ts +0 -5
- package/types/extractor/babelParse.d.ts.map +0 -1
- package/types/extractor/buildClassName.d.ts +0 -7
- package/types/extractor/buildClassName.d.ts.map +0 -1
- package/types/extractor/createEvaluator.d.ts +0 -12
- package/types/extractor/createEvaluator.d.ts.map +0 -1
- package/types/extractor/createExtractor.d.ts +0 -32
- package/types/extractor/createExtractor.d.ts.map +0 -1
- package/types/extractor/createLogger.d.ts +0 -3
- package/types/extractor/createLogger.d.ts.map +0 -1
- package/types/extractor/ensureImportingConcat.d.ts +0 -4
- package/types/extractor/ensureImportingConcat.d.ts.map +0 -1
- package/types/extractor/errors.d.ts +0 -3
- package/types/extractor/errors.d.ts.map +0 -1
- package/types/extractor/evaluateAstNode.d.ts +0 -3
- package/types/extractor/evaluateAstNode.d.ts.map +0 -1
- package/types/extractor/extractHelpers.d.ts +0 -28
- package/types/extractor/extractHelpers.d.ts.map +0 -1
- package/types/extractor/extractMediaStyle.d.ts +0 -11
- package/types/extractor/extractMediaStyle.d.ts.map +0 -1
- package/types/extractor/extractToClassNames.d.ts +0 -25
- package/types/extractor/extractToClassNames.d.ts.map +0 -1
- package/types/extractor/extractToNative.d.ts +0 -13
- package/types/extractor/extractToNative.d.ts.map +0 -1
- package/types/extractor/findTopmostFunction.d.ts +0 -4
- package/types/extractor/findTopmostFunction.d.ts.map +0 -1
- package/types/extractor/generatedUid.d.ts +0 -5
- package/types/extractor/generatedUid.d.ts.map +0 -1
- package/types/extractor/getPrefixLogs.d.ts +0 -3
- package/types/extractor/getPrefixLogs.d.ts.map +0 -1
- package/types/extractor/getPropValueFromAttributes.d.ts +0 -19
- package/types/extractor/getPropValueFromAttributes.d.ts.map +0 -1
- package/types/extractor/getSourceModule.d.ts +0 -16
- package/types/extractor/getSourceModule.d.ts.map +0 -1
- package/types/extractor/getStaticBindingsForScope.d.ts +0 -5
- package/types/extractor/getStaticBindingsForScope.d.ts.map +0 -1
- package/types/extractor/hasTopLevelAwait.d.ts +0 -2
- package/types/extractor/hasTopLevelAwait.d.ts.map +0 -1
- package/types/extractor/hoistClassNames.d.ts +0 -6
- package/types/extractor/hoistClassNames.d.ts.map +0 -1
- package/types/extractor/literalToAst.d.ts +0 -4
- package/types/extractor/literalToAst.d.ts.map +0 -1
- package/types/extractor/loadFile.d.ts +0 -1
- package/types/extractor/loadFile.d.ts.map +0 -1
- package/types/extractor/logLines.d.ts +0 -2
- package/types/extractor/logLines.d.ts.map +0 -1
- package/types/extractor/normalizeTernaries.d.ts +0 -5
- package/types/extractor/normalizeTernaries.d.ts.map +0 -1
- package/types/extractor/propsToFontFamilyCache.d.ts +0 -4
- package/types/extractor/propsToFontFamilyCache.d.ts.map +0 -1
- package/types/extractor/removeUnusedHooks.d.ts +0 -3
- package/types/extractor/removeUnusedHooks.d.ts.map +0 -1
- package/types/extractor/timer.d.ts +0 -5
- package/types/extractor/timer.d.ts.map +0 -1
- package/types/extractor/validHTMLAttributes.d.ts +0 -52
- package/types/extractor/validHTMLAttributes.d.ts.map +0 -1
- package/types/worker.d.ts +0 -46
- package/types/worker.d.ts.map +0 -1
- /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":";;;;;;;;;;;;AAsBA,MAAM,cAAc,cAClB,OAAO,eAAe,WAAW,aAAa,YAAY,GAC5D;AACA,MAAM,oBAAoB,aAAa;CAErC,UAAU,QAAQ,IAAI,kBAAkB;CACxC,QAAQ;CACR,YAAY,CAAC,SAAS;CACtB,GAAG;AACL;AACA,IAAI;AACJ,eAAe,YAAY,SAAS,UAAU,OAAO;CACnD,IAAI,kBAAkB,OAAO,MAAM;CACnC,oBAAoB,YAAY;EAC9B,MAAM,QAAQ,iBAAiB,OAAO;EACtC,MAAM,aAAa,MAAM,iBAAiB,OAAO,OAAO;EACxD,IAAI,CAAC,YAAY;GACf,MAAM,IAAI,MACR,8EACF;EACF;EACA,MAAM,qBAAqB,OAAO,OAAO;EACzC,MAAM,qBAAqB,WAAW;EACtC,IAAI,sBAAsB,CAAC,mBAAmB,QAAQ;GACpD,MAAM,EAAE,kBAAkB,mBAAmB,MAAM,YAAY,KAAK;GACpE,WAAW,gBAAgB,cAAc,WAAW,aAAa;EACnE;EACA,IAAI,CAAC,wBAAwB,GAAG;GAC9B,OAAO;EACT;EACA,MAAM,iBAAiB,OAAO,UAAU;EACxC,OAAO;CACT,EAAC,CAAE;CACH,IAAI;EACF,OAAO,MAAM;CACf,UAAU;EACR,mBAAmB;CACrB;AACF;AACA,eAAe,uBAAuB,SAAS,WAAW;CACxD,MAAM,QAAQ,iBAAiB,OAAO;CACtC,MAAM,qBAAqB,KAAK;CAChC,MAAM,eAAe,UAAU;CAC/B,IAAI,gBAAgB,aAAa,WAAW,aAAa,UAAU;CACnE,IAAI,YAAY,iBAAiB,cAAc,UAAU,EAAE,YAAY,gBAAgB;EACrF,gBAAgB,cAAc;CAChC;CACA,IAAI,CAAC,eAAe;EAClB,MAAM,IAAI,MAAM,8DAA8D;CAChF;CACA,MAAM,WAAW,mBAAmB,MAAM,YAAY,KAAK;CAC3D,IAAI,CAAC,cAAc,QAAQ;EACzB,gBAAgB,SAAS,cAAc,aAAa;CACtD,OAAO;EACL,SAAS,qBAAqB,aAAa;CAC7C;CACA,gBAAgB,aAAa;CAC7B,MAAM,aAAa,UAAU,WAAW,KAAK,EAAE,YAAY,aAAa;EACtE,iBAAiB,YAAY,MAAM;EACnC,OAAO;GACL;GACA,YAAY,+BAA+B,YAAY,OAAO,WAAW,MAAM;EACjF;CACF,CAAC;CACD,MAAM,cAAc;EAClB;EACA,aAAa,CAAC;EACd;EACA,cAAc,UAAU;CAC1B;CACA,IAAI,MAAM,WAAW;EACnB,MAAM,gBAAgB,MAAM,WAAW,YAAY,aAAa;CAClE;CACA,OAAO;AACT;AACA,IAAI,UAAU;AACd,MAAM,uBAAuB,OAAO,SAAS,QAAQ,UAAU;CAC7D,IAAI,SAAS;CACb,IAAI,CAAC,QAAQ,cAAc;CAC3B,IAAI;EACF,UAAU;EACV,MAAM,IAAI,SAAS,QAAQ,WAAW,KAAK,EAAE,CAAC;EAC9C,MAAM,cAAc,MAAM,sBAAsB,SAAS,KAAK;EAC9D,IAAI,aAAa;GACf,MAAM,mBAAmB;GACzB,SACE,MAAM,UACN,GAAG,iBAAiB,qCAAqC,SACvD,QAAQ,QAAQ,QAAQ,IAAI,GAC5B,QAAQ,aAAa,MACvB,GACF;GACA,IAAI,QAAQ,WAAW;IACrB,MAAM,eAAe,gBAAgB;IACrC,IAAI,cAAc;KAChB,MAAM,gBAAgB,QAAQ,WAAW,YAAY;IACvD;GACF;EACF;CACF,UAAU;EACR,UAAU;CACZ;AACF;AACA,MAAM,OAAO,CAAC;AACd,MAAM,cAAc,CAAC;AACrB,MAAM,0CAA0C,IAAI,QAAQ;AAC5D,SAAS,kCAAkC,SAAS;CAClD,OAAO,wBAAwB,IAAI,OAAO,KAAK,CAAC;AAClD;AACA,eAAe,4BAA4B,gBAAgB;CACzD,MAAM,gBAAgB,gBAAgB,aAAa;CACnD,MAAM,OAAO,gBAAgB,QAAQ,QAAQ,IAAI;CACjD,MAAM,eAAe,QAAQ,MAAM,aAAa;CAChD,IAAI,QAAQ,WAAW,YAAY,GAAG;EACpC,IAAI;GACF,MAAM,SAAS,MAAM,QAAQ,MAAM;IACjC,aAAa,CAAC,YAAY;IAC1B,eAAe;IACf,QAAQ;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,UAAU;GACZ,CAAC;GACD,MAAM,SAAS,EAAE,SAAS,CAAC,EAAE;GAC7B,MAAM,iBAAiB,cAAc,YAAY;GACjD,MAAM,OAAO,OAAO,YAAY,EAAE,EAAE;GACpC,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,2BAA2B,eAAe;GACrE,MAAM,KAAK,IAAI,SAAS,UAAU,WAAW,WAAW,WAAW,IAAI;GACvE,GAAG,QAAQ,OAAO,SAAS,gBAAgB,OAAO;GAClD,MAAM,MAAM,OAAO,QAAQ,WAAW,OAAO;GAC7C,IAAI,CAAC,OAAO,OAAO,QAAQ,UAAU;IACnC,MAAM,IAAI,MAAM,8BAA8B,cAAc,IAAI,KAAK;GACvE;GACA,MAAM,gBAAgB;IACpB,GAAG;IACH,GAAG;GACL;GACA,MAAM,gBAAgB,OAAO,KAAK,OAAO,SAAS,MAAM,CAAC,CAAC,KACvD,UAAU,QAAQ,MAAM,KAAK,CAChC;GACA,wBAAwB,IAAI,eAAe,aAAa;GACxD,iBAAiB;EACnB,SAAS,KAAK;GACZ,QAAQ,MAAM,2BAA2B,cAAc,IAAI,GAAG;GAC9D,MAAM;EACR;CACF;CACA,IAAI,CAAC,gBAAgB;EACnB,MAAM,IAAI,MACR,8EACF;CACF;CACA,MAAM,UAAU;EACd,QAAQ;EACR,YAAY,CAAC,WAAW,eAAe;EACvC,GAAG;CACL;CACA,MAAM,eAAe,wBAAwB,IAAI,cAAc;CAC/D,IAAI,cAAc,wBAAwB,IAAI,SAAS,YAAY;CACnE,OAAO;AACT;AACA,SAAS,2BAA2B,gBAAgB;CAClD,MAAM,gBAAgB,gBAAgB,aAAa;CACnD,MAAM,OAAO,gBAAgB,QAAQ,QAAQ,IAAI;CACjD,MAAM,eAAe,QAAQ,MAAM,aAAa;CAChD,IAAI,QAAQ,WAAW,YAAY,GAAG;EACpC,MAAM,aAAa,gBAAgB,OAAO,EACxC,gBAAgB,gBAAgB,yCAClC,CAAC;EACD,IAAI;GACF,MAAM,MAAM,YAAY,YAAY,CAAC,CAAC;GACtC,IAAI,CAAC,KAAK;IACR,MAAM,IAAI,MAAM,8BAA8B,cAAc,IAAI,KAAK;GACvE;GACA,iBAAiB;IACf,GAAG;IACH,GAAG;GACL;EACF,UAAU;GACR,WAAW,WAAW;EACxB;CACF;CACA,IAAI,CAAC,gBAAgB;EACnB,MAAM,IAAI,MACR,8EACF;CACF;CACA,OAAO;EACL,QAAQ;EACR,YAAY,CAAC,WAAW,eAAe;EACvC,GAAG;CACL;AACF;AACA,SAAS,gBAAgB,EACvB,cACA,UACA,GAAG,WACF;CACD,MAAM,MAAM,KAAK,UAAU,OAAO;CAClC,IAAI,KAAK,QAAQ,CAAC,wBAAwB,GAAG;EAC3C,IAAI,CAAC,YAAY,QAAQ,YAAY,SAAS,UAAU;GACtD,OAAO,KAAK;EACd;CACF;CACA,YAAY,OAAO,YAAY;CAC/B,MAAM,QAAQ,iBAAiB,OAAO;CACtC,MAAM,mBAAmB,QAAQ,IAAI;CACrC,MAAM,mBAAmB,QAAQ,IAAI;CACrC,MAAM,cAAc,WAAW;CAC/B,QAAQ,IAAI,YAAY;CACxB,QAAQ,IAAI,oBAAoB;CAChC,MAAM,EAAE,eAAe,gBAAgB,MAAM,YAAY,OAAO,EAC9D,gBAAgB,MAAM,yCACxB,CAAC;CACD,IAAI;EACF,WAAW,aAAa,QAAQ,IAAI,aAAa;EACjD,IAAI,gBAAgB;EACpB,IAAI,QAAQ,QAAQ;GAClB,MAAM,aAAa,sCACjB,QAAQ,QACR,QAAQ,IACV;GACA,MAAM,MAAM,YAAY,UAAU;GAClC,IAAI,CAAC,KAAK;IACR,MAAM,IAAI,MAAM,kDAAkD;GACpE;GACA,gBAAgB,IAAI,cAAc,IAAI,aAAa;GACnD,IAAI,CAAC,iBAAiB,CAAC,cAAc,QAAQ;IAC3C,MAAM,WAAW,YAAY,QAAQ,UAAU;IAC/C,MAAM,IAAI,MAAM,8BAA8B,SAAS;;oEAEK;GAC9D;GACA,IAAI,eAAe;IACjB,MAAM,EAAE,kBAAkB,mBAAmB,MAAM,YAAY,KAAK;IACpE,cAAc,aAAa;GAC7B;EACF;EACA,MAAM,aAAa,mBAAmB,OAAO,YAAY;EACzD,IAAI,CAAC,YAAY;GACf,MAAM,IAAI,MAAM,sBAAsB;EACxC;EACA,IAAI,QAAQ,IAAI,UAAU,WAAW;GACnC,QAAQ,KAAK,cAAc,UAAU;EACvC;EACA,MAAM,OAAO;GACX;GACA;GACA,aAAa,eAAe;EAC9B;EACA,IAAI,eAAe;GACjB,MAAM,EAAE,cAAc;GACtB,IAAI,WAAW;IACb,gBAAgB,WAAW,aAAa;GAC1C;GACA,qBAAqB,OAAO,IAAI;EAClC;EACA,KAAK,OAAO;GACV,GAAG;GACH,QAAQ;EACV;EACA,OAAO;CACT,UAAU;EACR,IAAI,qBAAqB,KAAK,GAAG,OAAO,QAAQ,IAAI;OAC/C,QAAQ,IAAI,YAAY;EAC7B,IAAI,qBAAqB,KAAK,GAAG,OAAO,QAAQ,IAAI;OAC/C,QAAQ,IAAI,oBAAoB;EACrC,WAAW,aAAa;EACxB,WAAW;CACb;AACF;AACA,eAAe,WAAW,EACxB,OAAO,QAAQ,IAAI,GACnB,eAAe,iBACf,gBACA,MACA,UACE,CAAC,GAAG;CACN,MAAM,SAAS,KAAK,MAAM,UAAU;CACpC,IAAI,UAAU,CAAC;CACf,IAAI;EACF,UAAU,MAAM,QAAQ,SAAS,KAAK,MAAM,cAAc,CAAC;CAC7D,SAAS,KAAK,CACd;CACA,OAAO;EACL,MAAM,QAAQ,IAAI,aAAa,eAAe,eAAe;EAC7D;EACA,MAAM,QAAQ;EACd;EACA;EACA;EACA,gBAAgB;GACd,UAAU,QAAQ,IAAI,kBAAkB;GACxC,YAAY,CAAC,SAAS;GACtB,GAAG;GACH,QAAQ,gBAAgB,UAAU,MAAM,4BAA4B,MAAM,gBAAgB,MAAM;EAClG;EACA,OAAO;GACL;GACA;GACA,MAAM,KAAK,QAAQ,qBAAqB;GACxC,OAAO,KAAK,QAAQ,YAAY;EAClC;CACF;AACF;AACA,SAAS,gCAAgC,OAAO,UAAU;CACxD,MAAM,gBAAgB,QAAQ;CAC9B,MAAM,WAAW,YAAY,QAAQ,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;CACtE,MAAM,MAAM,QAAQ,QAAQ;CAC5B,MAAM,WAAW,SAAS,QAAQ,CAAC,CAAC,QAAQ,KAAK,EAAE;CACnD,MAAM,SAAS,YAAY,QAAQ,IAAI,kBAAkB;CACzD,MAAM,cAAc,WAAW,QAAQ,QAAQ;CAC/C,MAAM,eAAe,KAAK,QAAQ,QAAQ,GAAG,WAAW,MAAM,cAAc,GAAG;CAC/E,IAAI,QAAQ,WAAW,YAAY,GAAG;EACpC,OAAO;CACT;CACA,OAAO;AACT;AACA,MAAM,eAAe,CAAC,qBAAqB,KAAK,OAAO,mBAAmB,CAAC;AAC3E,IAAI,gBAAgB;AACpB,eAAe,4BAA4B,MAAM,YAAY;CAC3D,MAAM,cAAc,CAClB,GAAG,IAAI,IACL,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,MAAM,CAAC,CAAC,CACxE,CACF;CACA,KAAK,MAAM,QAAQ,aAAa;EAC9B,IAAI,MAAM,QAAQ,WAAW,IAAI,GAAG;GAClC,OAAO;EACT;CACF;CACA,IAAI,CAAC,eAAe;EAClB,gBAAgB;EAChB,QAAQ,KAAK,wFAAwF,WAAW;MAC9G,YAAY,KAAK;GACpB,EAAE;GACF;CACD;AACF;AACA,eAAe,kBAAkB,OAAO,WAAW;CACjD,IAAI,aAAa;CACjB,MAAM,UAAU,MAAM,QAAQ,QAAQ;EACpC,QAAQ;EACR,aAAa,CAAC,KAAK;EACnB,mBAAmB;GAAC;GAAO;GAAQ;GAAO;EAAM;EAChD,UAAU;EACV,OAAO;EACP,OAAO;GACL,oBAAoB;GACpB,gBAAgB;EAClB;EACA,SAAS,CAUP;GACE,MAAM;GACN,MAAM,EAAE,OAAO,aAAa;IAC1B,IAAI,SAAS;IACb,UAAU,EAAE,OAAO,IAAI,UAAU;KAAE,MAAM,KAAK;KAAM,UAAU;IAAK,EAAE;IACrE,YAAY;KACV,IAAI,CAAC,YAAY;MACf,aAAa;KACf,OAAO;MACL,UAAU;KACZ;IACF,CAAC;GACH;EACF,CACF;CACF,CAAC;CACD,KAAK,QAAQ,MAAM;CACnB,aAAa;EACX,QAAQ,QAAQ;CAClB;AACF"}
|
|
@@ -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"}
|