@tamagui/static 1.74.2 → 1.74.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. package/dist/cjs/require.js +89 -0
  2. package/dist/cjs/require.js.map +6 -0
  3. package/dist/cjs/require.native.js +90 -0
  4. package/dist/cjs/require.native.js.map +6 -0
  5. package/dist/esm/constants.native.js +10 -0
  6. package/dist/esm/constants.native.js.map +6 -0
  7. package/dist/esm/extractor/accessSafe.native.js +23 -0
  8. package/dist/esm/extractor/accessSafe.native.js.map +6 -0
  9. package/dist/esm/extractor/babelParse.native.js +35 -0
  10. package/dist/esm/extractor/babelParse.native.js.map +6 -0
  11. package/dist/esm/extractor/buildClassName.native.js +48 -0
  12. package/dist/esm/extractor/buildClassName.native.js.map +6 -0
  13. package/dist/esm/extractor/bundle.native.js +93 -0
  14. package/dist/esm/extractor/bundle.native.js.map +6 -0
  15. package/dist/esm/extractor/bundleConfig.native.js +301 -0
  16. package/dist/esm/extractor/bundleConfig.native.js.map +6 -0
  17. package/dist/esm/extractor/createEvaluator.native.js +35 -0
  18. package/dist/esm/extractor/createEvaluator.native.js.map +6 -0
  19. package/dist/esm/extractor/createExtractor.native.js +1095 -0
  20. package/dist/esm/extractor/createExtractor.native.js.map +6 -0
  21. package/dist/esm/extractor/ensureImportingConcat.native.js +26 -0
  22. package/dist/esm/extractor/ensureImportingConcat.native.js.map +6 -0
  23. package/dist/esm/extractor/esbuildAliasPlugin.native.js +20 -0
  24. package/dist/esm/extractor/esbuildAliasPlugin.native.js.map +6 -0
  25. package/dist/esm/extractor/evaluateAstNode.native.js +75 -0
  26. package/dist/esm/extractor/evaluateAstNode.native.js.map +6 -0
  27. package/dist/esm/extractor/extractHelpers.native.js +93 -0
  28. package/dist/esm/extractor/extractHelpers.native.js.map +6 -0
  29. package/dist/esm/extractor/extractMediaStyle.native.js +100 -0
  30. package/dist/esm/extractor/extractMediaStyle.native.js.map +6 -0
  31. package/dist/esm/extractor/extractToClassNames.native.js +290 -0
  32. package/dist/esm/extractor/extractToClassNames.native.js.map +6 -0
  33. package/dist/esm/extractor/findTopmostFunction.native.js +16 -0
  34. package/dist/esm/extractor/findTopmostFunction.native.js.map +6 -0
  35. package/dist/esm/extractor/generateTamaguiStudioConfig.native.js +93 -0
  36. package/dist/esm/extractor/generateTamaguiStudioConfig.native.js.map +6 -0
  37. package/dist/esm/extractor/generatedUid.native.js +18 -0
  38. package/dist/esm/extractor/generatedUid.native.js.map +6 -0
  39. package/dist/esm/extractor/getPrefixLogs.native.js +7 -0
  40. package/dist/esm/extractor/getPrefixLogs.native.js.map +6 -0
  41. package/dist/esm/extractor/getPropValueFromAttributes.native.js +43 -0
  42. package/dist/esm/extractor/getPropValueFromAttributes.native.js.map +6 -0
  43. package/dist/esm/extractor/getSourceModule.native.js +42 -0
  44. package/dist/esm/extractor/getSourceModule.native.js.map +6 -0
  45. package/dist/esm/extractor/getStaticBindingsForScope.native.js +127 -0
  46. package/dist/esm/extractor/getStaticBindingsForScope.native.js.map +6 -0
  47. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.native.js +8 -0
  48. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.native.js.map +6 -0
  49. package/dist/esm/extractor/hoistClassNames.native.js +37 -0
  50. package/dist/esm/extractor/hoistClassNames.native.js.map +6 -0
  51. package/dist/esm/extractor/literalToAst.native.js +66 -0
  52. package/dist/esm/extractor/literalToAst.native.js.map +6 -0
  53. package/dist/esm/extractor/loadFile.native.js +14 -0
  54. package/dist/esm/extractor/loadFile.native.js.map +6 -0
  55. package/dist/esm/extractor/loadTamagui.native.js +248 -0
  56. package/dist/esm/extractor/loadTamagui.native.js.map +6 -0
  57. package/dist/esm/extractor/logLines.native.js +14 -0
  58. package/dist/esm/extractor/logLines.native.js.map +6 -0
  59. package/dist/esm/extractor/normalizeTernaries.native.js +37 -0
  60. package/dist/esm/extractor/normalizeTernaries.native.js.map +6 -0
  61. package/dist/esm/extractor/propsToFontFamilyCache.native.js +18 -0
  62. package/dist/esm/extractor/propsToFontFamilyCache.native.js.map +6 -0
  63. package/dist/esm/extractor/removeUnusedHooks.native.js +51 -0
  64. package/dist/esm/extractor/removeUnusedHooks.native.js.map +6 -0
  65. package/dist/esm/extractor/timer.native.js +22 -0
  66. package/dist/esm/extractor/timer.native.js.map +6 -0
  67. package/dist/esm/extractor/validHTMLAttributes.native.js +52 -0
  68. package/dist/esm/extractor/validHTMLAttributes.native.js.map +6 -0
  69. package/dist/esm/getPragmaOptions.native.js +22 -0
  70. package/dist/esm/getPragmaOptions.native.js.map +6 -0
  71. package/dist/esm/helpers/memoize.native.js +17 -0
  72. package/dist/esm/helpers/memoize.native.js.map +6 -0
  73. package/dist/esm/helpers/requireTamaguiCore.native.js +9 -0
  74. package/dist/esm/helpers/requireTamaguiCore.native.js.map +6 -0
  75. package/dist/esm/index.native.js +3 -0
  76. package/dist/esm/index.native.js.map +6 -0
  77. package/dist/esm/registerRequire.native.js +83 -0
  78. package/dist/esm/registerRequire.native.js.map +6 -0
  79. package/dist/esm/require.js +66 -0
  80. package/dist/esm/require.js.map +6 -0
  81. package/dist/esm/setup.native.js +2 -0
  82. package/dist/esm/setup.native.js.map +6 -0
  83. package/dist/esm/static.native.js +15 -0
  84. package/dist/esm/static.native.js.map +6 -0
  85. package/dist/esm/types.native.js +1 -0
  86. package/dist/esm/types.native.js.map +6 -0
  87. package/dist/esm/webpackPlugin.native.js +11 -0
  88. package/dist/esm/webpackPlugin.native.js.map +6 -0
  89. package/package.json +16 -16
@@ -0,0 +1,301 @@
1
+ import { readFileSync } from "fs";
2
+ import { basename, dirname, extname, join, relative, sep } from "path";
3
+ import generate from "@babel/generator";
4
+ import traverse from "@babel/traverse";
5
+ import * as t from "@babel/types";
6
+ import { Color, colorLog } from "@tamagui/cli-color";
7
+ import esbuild from "esbuild";
8
+ import { ensureDir, removeSync, writeFileSync } from "fs-extra";
9
+ import { registerRequire, setRequireResult } from "../registerRequire";
10
+ import { babelParse } from "./babelParse";
11
+ import { bundle } from "./bundle";
12
+ import { getTamaguiConfigPathFromOptionsConfig } from "./getTamaguiConfigPathFromOptionsConfig";
13
+ const external = [
14
+ "@tamagui/core",
15
+ "@tamagui/web",
16
+ "react",
17
+ "react-dom",
18
+ "react-native-svg"
19
+ ], esbuildExtraOptions = {
20
+ define: {
21
+ __DEV__: `${process.env.NODE_ENV === "development"}`
22
+ }
23
+ }, esbuildOptions = {
24
+ target: "es2018",
25
+ format: "cjs",
26
+ jsx: "transform",
27
+ platform: "node",
28
+ ...esbuildExtraOptions
29
+ };
30
+ let currentBundle = null, isBundling = !1, lastBundle = null;
31
+ const waitForBundle = /* @__PURE__ */ new Set();
32
+ function hasBundledConfigChanged() {
33
+ return lastBundle === currentBundle ? !1 : (lastBundle = currentBundle, !0);
34
+ }
35
+ async function getBundledConfig(props, rebuild = !1) {
36
+ if (isBundling)
37
+ await new Promise((res) => {
38
+ waitForBundle.add(res);
39
+ });
40
+ else if (!currentBundle || rebuild)
41
+ return await bundleConfig(props);
42
+ return currentBundle;
43
+ }
44
+ async function bundleConfig(props) {
45
+ try {
46
+ isBundling = !0;
47
+ const configEntry = props.config ? getTamaguiConfigPathFromOptionsConfig(props.config) : "", tmpDir = join(process.cwd(), ".tamagui"), configOutPath = join(tmpDir, "tamagui.config.cjs"), baseComponents = props.components.filter((x) => x !== "@tamagui/core"), componentOutPaths = baseComponents.map(
48
+ (componentModule) => join(
49
+ tmpDir,
50
+ `${componentModule.split(sep).join("-").replace(/[^a-z0-9]+/gi, "")}-components.config.cjs`
51
+ )
52
+ );
53
+ process.env.NODE_ENV === "development" && process.env.DEBUG?.startsWith("tamagui") && console.log("Building config entry", configEntry);
54
+ try {
55
+ await ensureDir(tmpDir);
56
+ } catch {
57
+ }
58
+ const start = Date.now();
59
+ await Promise.all([
60
+ props.config ? bundle(
61
+ {
62
+ entryPoints: [configEntry],
63
+ external,
64
+ outfile: configOutPath,
65
+ target: "node16",
66
+ ...esbuildExtraOptions
67
+ },
68
+ props.platform
69
+ ) : null,
70
+ ...baseComponents.map((componentModule, i) => bundle(
71
+ {
72
+ entryPoints: [componentModule],
73
+ resolvePlatformSpecificEntries: !0,
74
+ external,
75
+ outfile: componentOutPaths[i],
76
+ target: "node16",
77
+ ...esbuildExtraOptions
78
+ },
79
+ props.platform
80
+ ))
81
+ ]), colorLog(
82
+ Color.FgYellow,
83
+ `
84
+ \u27A1 [tamagui] (${Date.now() - start}ms):`
85
+ ), colorLog(
86
+ Color.Dim,
87
+ `
88
+ Config .${sep}${relative(process.cwd(), configOutPath)}
89
+ Components ${[
90
+ ...componentOutPaths.map((p) => `.${sep}${relative(process.cwd(), p)}`)
91
+ ].join(`
92
+ `)}
93
+ `
94
+ );
95
+ let out;
96
+ const { unregister } = registerRequire(props.platform);
97
+ try {
98
+ out = require(configOutPath);
99
+ } catch (err) {
100
+ throw err;
101
+ } finally {
102
+ unregister();
103
+ }
104
+ let config = out.default || out || out.config;
105
+ if (config && config.config && !config.tokens && (config = config.config), !config)
106
+ throw new Error(`No config: ${config}`);
107
+ let components = loadComponents({
108
+ ...props,
109
+ components: componentOutPaths
110
+ });
111
+ if (!components)
112
+ throw new Error(`No components found: ${componentOutPaths.join(", ")}`);
113
+ for (const component of components)
114
+ component.moduleName = baseComponents[componentOutPaths.indexOf(component.moduleName)], component.moduleName || (process.env.DEBUG?.includes("tamagui") || process.env.IS_TAMAGUI_DEV) && console.warn(
115
+ `\u26A0\uFE0F no module name found: ${component.moduleName} ${JSON.stringify(
116
+ baseComponents
117
+ )} in ${JSON.stringify(componentOutPaths)}`
118
+ );
119
+ const coreComponents = loadComponents({
120
+ ...props,
121
+ components: ["@tamagui/core"]
122
+ });
123
+ coreComponents && (coreComponents[0].moduleName = "@tamagui/core", components = [...components, ...coreComponents]), process.env.NODE_ENV === "development" && process.env.DEBUG?.startsWith("tamagui") && console.log("Loaded components", components);
124
+ const res = {
125
+ components,
126
+ nameToPaths: {},
127
+ tamaguiConfig: config
128
+ };
129
+ return currentBundle = res, res;
130
+ } catch (err) {
131
+ console.error(
132
+ `Error bundling tamagui config: ${err?.message} (run with DEBUG=tamagui to see stack)`
133
+ ), process.env.DEBUG?.includes("tamagui") && console.error(err.stack);
134
+ } finally {
135
+ isBundling = !1, waitForBundle.forEach((cb) => cb()), waitForBundle.clear();
136
+ }
137
+ }
138
+ function loadComponents(props, forceExports = !1) {
139
+ const componentsModules = props.components, key = componentsModules.join("");
140
+ if (!forceExports && cacheComponents[key])
141
+ return cacheComponents[key];
142
+ const { unregister } = registerRequire(props.platform, {
143
+ proxyWormImports: forceExports
144
+ });
145
+ try {
146
+ const info = componentsModules.flatMap((name) => {
147
+ const isDynamic = !!extname(name) && forceExports, fileContents = isDynamic ? readFileSync(name, "utf-8") : "", loadModule = isDynamic ? join(dirname(name), `.tamagui-dynamic-eval-${basename(name)}.tsx`) : name;
148
+ let writtenContents = fileContents, didBabel = !1;
149
+ function attemptLoad({ forceExports: forceExports2 = !1 } = {}) {
150
+ isDynamic && (writtenContents = forceExports2 ? transformAddExports(babelParse(esbuildit(fileContents, "modern"), name)) : fileContents, writeFileSync(loadModule, writtenContents), esbuild.buildSync({
151
+ ...esbuildOptions,
152
+ entryPoints: [loadModule],
153
+ outfile: loadModule,
154
+ alias: {
155
+ "react-native": require.resolve("@tamagui/react-native-prebuilt")
156
+ },
157
+ bundle: !0,
158
+ packages: "external",
159
+ allowOverwrite: !0,
160
+ // logLevel: 'silent',
161
+ sourcemap: !1,
162
+ loader: {
163
+ ".png": "dataurl",
164
+ ".jpg": "dataurl",
165
+ ".jpeg": "dataurl",
166
+ ".gif": "dataurl"
167
+ }
168
+ })), process.env.DEBUG === "tamagui" && console.log("loadModule", loadModule, require.resolve(loadModule));
169
+ const moduleResult = require(loadModule);
170
+ forceExports2 || setRequireResult(name, moduleResult);
171
+ const nameToInfo = getComponentStaticConfigByName(
172
+ name,
173
+ interopDefaultExport(moduleResult)
174
+ );
175
+ return {
176
+ moduleName: name,
177
+ nameToInfo
178
+ };
179
+ }
180
+ const dispose = () => {
181
+ isDynamic && removeSync(loadModule);
182
+ };
183
+ try {
184
+ const res = attemptLoad({
185
+ forceExports: !0
186
+ });
187
+ return didBabel = !0, res;
188
+ } catch (err) {
189
+ console.log("babel err", err, writtenContents), writtenContents = fileContents, process.env.DEBUG?.startsWith("tamagui") && console.log("Error parsing babel likely", err);
190
+ } finally {
191
+ dispose();
192
+ }
193
+ try {
194
+ return attemptLoad({
195
+ forceExports: !1
196
+ });
197
+ } catch (err) {
198
+ return process.env.TAMAGUI_ENABLE_WARN_DYNAMIC_LOAD && (console.log(`
199
+
200
+ Tamagui attempted but failed to dynamically optimize components in:
201
+ ${name}
202
+ `), console.log(err), console.log(
203
+ `At: ${loadModule}`,
204
+ `
205
+ didBabel: ${didBabel}`,
206
+ `
207
+ In:`,
208
+ writtenContents,
209
+ `
210
+ isDynamic: `,
211
+ isDynamic
212
+ )), [];
213
+ } finally {
214
+ dispose();
215
+ }
216
+ });
217
+ return cacheComponents[key] = info, info;
218
+ } catch (err) {
219
+ return console.log("Tamagui error bundling components", err.message, err.stack), null;
220
+ } finally {
221
+ unregister();
222
+ }
223
+ }
224
+ const esbuildit = (src, target) => esbuild.transformSync(src, {
225
+ ...esbuildOptions,
226
+ ...target === "modern" && {
227
+ target: "es2022",
228
+ jsx: "transform",
229
+ loader: "tsx",
230
+ platform: "neutral",
231
+ format: "esm"
232
+ }
233
+ }).code;
234
+ function getComponentStaticConfigByName(name, exported) {
235
+ const components = {};
236
+ try {
237
+ if (!exported || typeof exported != "object" || Array.isArray(exported))
238
+ throw new Error(`Invalid export from package ${name}: ${typeof exported}`);
239
+ for (const key in exported) {
240
+ const found = getTamaguiComponent(key, exported[key]);
241
+ if (found) {
242
+ const { Component, ...sc } = found.staticConfig;
243
+ components[key] = { staticConfig: sc };
244
+ }
245
+ }
246
+ } catch (err) {
247
+ process.env.TAMAGUI_ENABLE_WARN_DYNAMIC_LOAD && (console.error(
248
+ `Tamagui failed getting components from ${name} (Disable error by setting environment variable TAMAGUI_ENABLE_WARN_DYNAMIC_LOAD=1)`
249
+ ), console.error(err));
250
+ }
251
+ return components;
252
+ }
253
+ function getTamaguiComponent(name, Component) {
254
+ if (name[0].toUpperCase() !== name[0])
255
+ return;
256
+ if (Component?.staticConfig)
257
+ return Component;
258
+ }
259
+ function interopDefaultExport(mod) {
260
+ return mod?.default ?? mod;
261
+ }
262
+ const cacheComponents = {};
263
+ function transformAddExports(ast) {
264
+ const usedNames = /* @__PURE__ */ new Set();
265
+ return traverse(ast, {
266
+ ExportNamedDeclaration(nodePath) {
267
+ if (nodePath.node.specifiers)
268
+ for (const spec of nodePath.node.specifiers)
269
+ usedNames.add(
270
+ t.isIdentifier(spec.exported) ? spec.exported.name : spec.exported.value
271
+ );
272
+ }
273
+ }), traverse(ast, {
274
+ VariableDeclaration(nodePath) {
275
+ if (!t.isProgram(nodePath.parent))
276
+ return;
277
+ const decs = nodePath.node.declarations;
278
+ if (decs.length > 1)
279
+ return;
280
+ const [dec] = decs;
281
+ t.isIdentifier(dec.id) && dec.init && (usedNames.has(dec.id.name) || (usedNames.add(dec.id.name), nodePath.replaceWith(
282
+ t.exportNamedDeclaration(t.variableDeclaration("let", [dec]), [
283
+ t.exportSpecifier(t.identifier(dec.id.name), t.identifier(dec.id.name))
284
+ ])
285
+ )));
286
+ }
287
+ }), generate(ast, {
288
+ concise: !1,
289
+ filename: "test.tsx",
290
+ retainLines: !1,
291
+ sourceMaps: !1
292
+ }).code;
293
+ }
294
+ export {
295
+ bundleConfig,
296
+ esbuildOptions,
297
+ getBundledConfig,
298
+ hasBundledConfigChanged,
299
+ loadComponents
300
+ };
301
+ //# sourceMappingURL=bundleConfig.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extractor/bundleConfig.ts"],
4
+ "mappings": "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",
5
+ "names": ["forceExports"]
6
+ }
@@ -0,0 +1,35 @@
1
+ import vm from "vm";
2
+ import generate from "@babel/generator";
3
+ import * as t from "@babel/types";
4
+ import esbuild from "esbuild";
5
+ import { FAILED_EVAL } from "../constants";
6
+ import { evaluateAstNode } from "./evaluateAstNode";
7
+ function createEvaluator({
8
+ props,
9
+ staticNamespace,
10
+ sourcePath,
11
+ traversePath,
12
+ shouldPrintDebug
13
+ }) {
14
+ const evalFn = (n) => {
15
+ if (t.isIdentifier(n) && typeof staticNamespace[n.name] < "u")
16
+ return staticNamespace[n.name];
17
+ const evalContext = vm.createContext(staticNamespace), codeWithTypescriptAnnotations = `(${generate(n).code})`, code = esbuild.transformSync(codeWithTypescriptAnnotations, { loader: "tsx" }).code.replace(/;\n$/, "");
18
+ return shouldPrintDebug && console.log("evaluating", code), vm.runInContext(code, evalContext);
19
+ };
20
+ return (n) => evaluateAstNode(n, evalFn);
21
+ }
22
+ function createSafeEvaluator(attemptEval) {
23
+ return (n) => {
24
+ try {
25
+ return attemptEval(n);
26
+ } catch {
27
+ return FAILED_EVAL;
28
+ }
29
+ };
30
+ }
31
+ export {
32
+ createEvaluator,
33
+ createSafeEvaluator
34
+ };
35
+ //# sourceMappingURL=createEvaluator.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extractor/createEvaluator.ts"],
4
+ "mappings": "AAAA,OAAO,QAAQ;AAEf,OAAO,cAAc;AAErB,YAAY,OAAO;AACnB,OAAO,aAAa;AAEpB,SAAS,mBAAmB;AAE5B,SAAS,uBAAuB;AAEzB,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AAED,QAAM,SAAS,CAAC,MAAc;AAE5B,QAAI,EAAE,aAAa,CAAC,KAAK,OAAO,gBAAgB,EAAE,IAAI,IAAM;AAC1D,aAAO,gBAAgB,EAAE,IAAI;AAE/B,UAAM,cAAc,GAAG,cAAc,eAAe,GAE9C,gCAAgC,IAAI,SAAS,CAAQ,EAAE,IAAI,KAC3D,OAAO,QACV,cAAc,+BAA+B,EAAE,QAAQ,MAAM,CAAC,EAC9D,KAAK,QAAQ,QAAQ,EAAE;AAE1B,WAAI,oBAEF,QAAQ,IAAI,cAAc,IAAI,GAEzB,GAAG,aAAa,MAAM,WAAW;AAAA,EAC1C;AAEA,SAAO,CAAC,MACC,gBAAgB,GAAG,MAAM;AAEpC;AAEO,SAAS,oBAAoB,aAAiC;AACnE,SAAO,CAAC,MAAc;AACpB,QAAI;AACF,aAAO,YAAY,CAAC;AAAA,IACtB,QAAc;AACZ,aAAO;AAAA,IACT;AAAA,EACF;AACF;",
5
+ "names": []
6
+ }