@tamagui/generate-themes 2.0.0-rc.9 → 2.0.0
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/generate-themes.cjs +100 -57
- package/dist/cjs/generate-themes.native.js +118 -74
- package/dist/cjs/generate-themes.native.js.map +1 -1
- package/dist/cjs/index.cjs +7 -5
- package/dist/cjs/index.native.js +7 -5
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/write-generate-themes.cjs +32 -24
- package/dist/cjs/write-generate-themes.native.js +39 -33
- package/dist/cjs/write-generate-themes.native.js.map +1 -1
- package/dist/esm/generate-themes.mjs +88 -47
- package/dist/esm/generate-themes.mjs.map +1 -1
- package/dist/esm/generate-themes.native.js +105 -63
- package/dist/esm/generate-themes.native.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/write-generate-themes.mjs +8 -2
- package/dist/esm/write-generate-themes.mjs.map +1 -1
- package/dist/esm/write-generate-themes.native.js +15 -11
- package/dist/esm/write-generate-themes.native.js.map +1 -1
- package/package.json +7 -6
- package/src/generate-themes.ts +3 -3
- package/dist/cjs/generate-themes.js +0 -130
- package/dist/cjs/generate-themes.js.map +0 -6
- package/dist/cjs/index.js +0 -16
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/write-generate-themes.js +0 -37
- package/dist/cjs/write-generate-themes.js.map +0 -6
- package/dist/esm/generate-themes.js +0 -114
- package/dist/esm/generate-themes.js.map +0 -6
- package/dist/esm/write-generate-themes.js +0 -13
- package/dist/esm/write-generate-themes.js.map +0 -6
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
let didRegisterOnce = !1;
|
|
3
|
-
async function generateThemes(inputFile) {
|
|
4
|
-
const inputFilePath = inputFile[0] === "." ? join(process.cwd(), inputFile) : inputFile;
|
|
5
|
-
didRegisterOnce ? purgeCache(inputFilePath) : (didRegisterOnce = !0, require("esbuild-register/dist/node").register({
|
|
6
|
-
hookIgnoreNodeModules: !1
|
|
7
|
-
}));
|
|
8
|
-
let og = process.env.TAMAGUI_KEEP_THEMES;
|
|
9
|
-
process.env.TAMAGUI_KEEP_THEMES = "1", process.env.TAMAGUI_RUN_THEMEBUILDER = "1";
|
|
10
|
-
try {
|
|
11
|
-
const requiredThemes = require(inputFilePath), themes = requiredThemes.default || requiredThemes.themes || requiredThemes[Object.keys(requiredThemes)[0]];
|
|
12
|
-
return {
|
|
13
|
-
generated: generatedThemesToTypescript(themes)
|
|
14
|
-
};
|
|
15
|
-
} catch (err) {
|
|
16
|
-
console.warn(` \u26A0\uFE0F Error running theme builder:
|
|
17
|
-
`, err?.stack || err);
|
|
18
|
-
} finally {
|
|
19
|
-
process.env.TAMAGUI_KEEP_THEMES = og;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
const dedupedTokens = /* @__PURE__ */ new Map();
|
|
23
|
-
function generatedThemesToTypescript(themes) {
|
|
24
|
-
const dedupedThemes = /* @__PURE__ */ new Map(), dedupedThemeToNames = /* @__PURE__ */ new Map();
|
|
25
|
-
let i = 0;
|
|
26
|
-
for (const name in themes) {
|
|
27
|
-
i++;
|
|
28
|
-
const theme = themes[name];
|
|
29
|
-
let j = 0;
|
|
30
|
-
for (const [key2, value] of Object.entries(theme)) {
|
|
31
|
-
i++;
|
|
32
|
-
const uniqueKey = `t${i}${j}`;
|
|
33
|
-
dedupedTokens.has(value) || dedupedTokens.set(value, uniqueKey);
|
|
34
|
-
}
|
|
35
|
-
const key = JSON.stringify(theme);
|
|
36
|
-
dedupedThemes.has(key) ? dedupedThemeToNames.set(key, [...dedupedThemeToNames.get(key), name]) : (dedupedThemes.set(key, theme), dedupedThemeToNames.set(key, [name]));
|
|
37
|
-
}
|
|
38
|
-
if (!themes)
|
|
39
|
-
throw new Error("Didn't find any themes exported or returned");
|
|
40
|
-
const baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]);
|
|
41
|
-
let out = `${`type Theme = {
|
|
42
|
-
${baseKeys.map(([k]) => ` ${k}: string;
|
|
43
|
-
`).join("")}
|
|
44
|
-
}`}
|
|
45
|
-
`;
|
|
46
|
-
out += `
|
|
47
|
-
function t(a: [number, number][]) {
|
|
48
|
-
let res: Record<string,string> = {}
|
|
49
|
-
for (const [ki, vi] of a) {
|
|
50
|
-
res[ks[ki] as string] = colors[vi] as string
|
|
51
|
-
}
|
|
52
|
-
return res as Theme
|
|
53
|
-
}
|
|
54
|
-
`, out += `export const colors = [
|
|
55
|
-
`;
|
|
56
|
-
let index = 0;
|
|
57
|
-
const valueToIndex = {};
|
|
58
|
-
dedupedTokens.forEach((name, value) => {
|
|
59
|
-
valueToIndex[value] = index, index++, out += ` '${value}',
|
|
60
|
-
`;
|
|
61
|
-
}), out += `]
|
|
62
|
-
|
|
63
|
-
`;
|
|
64
|
-
const keys = baseKeys.map(([k]) => k);
|
|
65
|
-
out += `const ks = [
|
|
66
|
-
`, out += keys.map((k) => `'${k}'`).join(`,
|
|
67
|
-
`), out += `]
|
|
68
|
-
|
|
69
|
-
`;
|
|
70
|
-
let nameI = 0, themeTypes = "type ThemeNames =", exported = "export const themes: Record<ThemeNames, Theme> = {";
|
|
71
|
-
return dedupedThemes.forEach((theme) => {
|
|
72
|
-
nameI++;
|
|
73
|
-
const key = JSON.stringify(theme), names = dedupedThemeToNames.get(key), name = `n${nameI}`, baseTheme = `const ${name} = ${objectToJsString(theme, keys, valueToIndex)}`;
|
|
74
|
-
out += `
|
|
75
|
-
${baseTheme}`, names.forEach((n) => {
|
|
76
|
-
exported += `
|
|
77
|
-
${n}: ${name},`, n.toLowerCase() === n && (themeTypes += `
|
|
78
|
-
| '${n}'`);
|
|
79
|
-
});
|
|
80
|
-
}), out += `
|
|
81
|
-
|
|
82
|
-
${themeTypes}
|
|
83
|
-
|
|
84
|
-
${exported}
|
|
85
|
-
}
|
|
86
|
-
`, out;
|
|
87
|
-
}
|
|
88
|
-
function objectToJsString(obj, keys, valueToIndex) {
|
|
89
|
-
let arrItems = [];
|
|
90
|
-
for (const key in obj) {
|
|
91
|
-
const ki = keys.indexOf(key), vi = valueToIndex[obj[key]];
|
|
92
|
-
arrItems.push(`[${ki}, ${vi}]`);
|
|
93
|
-
}
|
|
94
|
-
return `t([${arrItems.join(",")}])`;
|
|
95
|
-
}
|
|
96
|
-
function purgeCache(moduleName) {
|
|
97
|
-
searchCache(moduleName, (mod) => {
|
|
98
|
-
delete require.cache[mod.id];
|
|
99
|
-
}), !(!module.constructor || !module.constructor._pathCache) && Object.keys(module.constructor._pathCache).forEach((cacheKey) => {
|
|
100
|
-
cacheKey.indexOf(moduleName) > 0 && delete module.constructor._pathCache[cacheKey];
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
function searchCache(moduleName, callback) {
|
|
104
|
-
let mod = require.resolve(moduleName);
|
|
105
|
-
mod && (mod = require.cache[mod]) !== void 0 && (function traverse(mod2, depth = 0) {
|
|
106
|
-
depth > 10 || (mod2.children.forEach((child) => {
|
|
107
|
-
traverse(child, depth + 1);
|
|
108
|
-
}), callback(mod2));
|
|
109
|
-
})(mod);
|
|
110
|
-
}
|
|
111
|
-
export {
|
|
112
|
-
generateThemes
|
|
113
|
-
};
|
|
114
|
-
//# sourceMappingURL=generate-themes.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/generate-themes.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["key", "mod"]
|
|
6
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import * as fs from "fs-extra";
|
|
2
|
-
async function writeGeneratedThemes(tamaguiDotDir, outPath, generatedOutput) {
|
|
3
|
-
if (!generatedOutput) return;
|
|
4
|
-
const { generated } = generatedOutput;
|
|
5
|
-
process.env.DEBUG === "tamagui" && console.info("Generated themes:", JSON.stringify(generatedOutput, null, 2));
|
|
6
|
-
const newContent = `// @ts-nocheck
|
|
7
|
-
` + generated;
|
|
8
|
-
await fs.readFile(outPath, "utf-8").catch(() => null) !== newContent && await fs.writeFile(outPath, newContent);
|
|
9
|
-
}
|
|
10
|
-
export {
|
|
11
|
-
writeGeneratedThemes
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=write-generate-themes.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/write-generate-themes.ts"],
|
|
4
|
-
"mappings": "AAAA,YAAY,QAAQ;AAIpB,eAAsB,qBACpB,eACA,SACA,iBACA;AACA,MAAI,CAAC,gBAAiB;AAEtB,QAAM,EAAE,UAAU,IAAI;AAEtB,EAAI,QAAQ,IAAI,UAAU,aACxB,QAAQ,KAAK,qBAAqB,KAAK,UAAU,iBAAiB,MAAM,CAAC,CAAC;AAG5E,QAAM,aAAa;AAAA,IAAqB;AAIxC,EADwB,MAAM,GAAG,SAAS,SAAS,OAAO,EAAE,MAAM,MAAM,IAAI,MACpD,cAIxB,MAAM,GAAG,UAAU,SAAS,UAAU;AACxC;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|