@tamagui/generate-themes 1.74.2 → 1.74.4
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/esm/generate-themes.native.js +149 -0
- package/dist/esm/generate-themes.native.js.map +6 -0
- package/dist/esm/index.native.js +3 -0
- package/dist/esm/index.native.js.map +6 -0
- package/dist/esm/write-generate-themes.native.js +15 -0
- package/dist/esm/write-generate-themes.native.js.map +6 -0
- package/package.json +4 -4
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import Module from "module";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
const ogRequire = Module.prototype.require;
|
|
4
|
+
async function generateThemes(inputFile) {
|
|
5
|
+
const { unregister } = require("esbuild-register/dist/node").register({
|
|
6
|
+
hookIgnoreNodeModules: !1
|
|
7
|
+
}), inputFilePath = inputFile[0] === "." ? join(process.cwd(), inputFile) : inputFile;
|
|
8
|
+
purgeCache(inputFilePath);
|
|
9
|
+
let promise = null;
|
|
10
|
+
Module.prototype.require = function(id) {
|
|
11
|
+
const out = ogRequire.apply(this, arguments);
|
|
12
|
+
if (id === "@tamagui/theme-builder" && !promise) {
|
|
13
|
+
let resolve;
|
|
14
|
+
return promise = new Promise((res) => {
|
|
15
|
+
resolve = res;
|
|
16
|
+
}), createThemeIntercept(out, {
|
|
17
|
+
onComplete: (result) => {
|
|
18
|
+
resolve?.(result.themeBuilder);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return out;
|
|
23
|
+
};
|
|
24
|
+
try {
|
|
25
|
+
const requiredThemes = require(inputFilePath), themes = requiredThemes.default || requiredThemes.themes, generatedThemes = generatedThemesToTypescript(themes), themeBuilder = promise ? await promise : null;
|
|
26
|
+
return {
|
|
27
|
+
generated: generatedThemes,
|
|
28
|
+
state: themeBuilder?.state
|
|
29
|
+
};
|
|
30
|
+
} catch (err) {
|
|
31
|
+
console.warn(` \u26A0\uFE0F Error running theme builder: ${err}`, err?.stack);
|
|
32
|
+
} finally {
|
|
33
|
+
Module.prototype.require = ogRequire, unregister();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const dedupedTokens = /* @__PURE__ */ new Map();
|
|
37
|
+
function generatedThemesToTypescript(themes) {
|
|
38
|
+
const dedupedThemes = /* @__PURE__ */ new Map(), dedupedThemeToNames = /* @__PURE__ */ new Map();
|
|
39
|
+
let i = 0;
|
|
40
|
+
for (const name in themes) {
|
|
41
|
+
i++;
|
|
42
|
+
const theme = themes[name];
|
|
43
|
+
let j = 0;
|
|
44
|
+
for (const [key2, value] of Object.entries(theme)) {
|
|
45
|
+
i++;
|
|
46
|
+
const uniqueKey = `t${i}${j}`;
|
|
47
|
+
dedupedTokens.has(value) || dedupedTokens.set(value, uniqueKey);
|
|
48
|
+
}
|
|
49
|
+
const key = JSON.stringify(theme);
|
|
50
|
+
dedupedThemes.has(key) ? dedupedThemeToNames.set(key, [...dedupedThemeToNames.get(key), name]) : (dedupedThemes.set(key, theme), dedupedThemeToNames.set(key, [name]));
|
|
51
|
+
}
|
|
52
|
+
const baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]);
|
|
53
|
+
let out = `${`type Theme = {
|
|
54
|
+
${baseKeys.map(([k]) => ` ${k}: string;
|
|
55
|
+
`).join("")}
|
|
56
|
+
}`}
|
|
57
|
+
`;
|
|
58
|
+
out += `
|
|
59
|
+
function t(a) {
|
|
60
|
+
let res: Record<string, string> = {}
|
|
61
|
+
for (const [ki, vi] of a) {
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
res[ks[ki]] = vs[vi]
|
|
64
|
+
}
|
|
65
|
+
return res
|
|
66
|
+
}
|
|
67
|
+
`, out += `const vs = [
|
|
68
|
+
`;
|
|
69
|
+
let index = 0;
|
|
70
|
+
const valueToIndex = {};
|
|
71
|
+
dedupedTokens.forEach((name, value) => {
|
|
72
|
+
valueToIndex[value] = index, index++, out += ` '${value}',
|
|
73
|
+
`;
|
|
74
|
+
}), out += `]
|
|
75
|
+
|
|
76
|
+
`;
|
|
77
|
+
const keys = baseKeys.map(([k]) => k);
|
|
78
|
+
out += `const ks = [
|
|
79
|
+
`, out += keys.map((k) => `'${k}'`).join(`,
|
|
80
|
+
`), out += `]
|
|
81
|
+
|
|
82
|
+
`;
|
|
83
|
+
let nameI = 0;
|
|
84
|
+
return dedupedThemes.forEach((theme) => {
|
|
85
|
+
nameI++;
|
|
86
|
+
const key = JSON.stringify(theme), names = dedupedThemeToNames.get(key), name = `n${nameI}`, baseTheme = `const ${name} = ${objectToJsString(
|
|
87
|
+
theme,
|
|
88
|
+
keys,
|
|
89
|
+
valueToIndex
|
|
90
|
+
)} as Theme`;
|
|
91
|
+
out += `
|
|
92
|
+
${baseTheme}`;
|
|
93
|
+
const duplicateThemes = names.map((n) => `export const ${n} = ${name} as Theme`);
|
|
94
|
+
out += `
|
|
95
|
+
|
|
96
|
+
` + duplicateThemes.join(`
|
|
97
|
+
`);
|
|
98
|
+
}), out;
|
|
99
|
+
}
|
|
100
|
+
function objectToJsString(obj, keys, valueToIndex) {
|
|
101
|
+
let arrItems = [];
|
|
102
|
+
for (const key in obj) {
|
|
103
|
+
const ki = keys.indexOf(key), vi = valueToIndex[obj[key]];
|
|
104
|
+
arrItems.push(`[${ki}, ${vi}]`);
|
|
105
|
+
}
|
|
106
|
+
return `t([${arrItems.join(",")}])`;
|
|
107
|
+
}
|
|
108
|
+
function createThemeIntercept(createThemeExport, themeBuilderInterceptOpts) {
|
|
109
|
+
return new Proxy(createThemeExport, {
|
|
110
|
+
get(target, key) {
|
|
111
|
+
const out = Reflect.get(target, key);
|
|
112
|
+
return key === "createThemeBuilder" ? new Proxy(out, {
|
|
113
|
+
apply(target2, thisArg, argArray) {
|
|
114
|
+
const builder = Reflect.apply(target2, thisArg, argArray);
|
|
115
|
+
return themeBuilderIntercept(builder, themeBuilderInterceptOpts);
|
|
116
|
+
}
|
|
117
|
+
}) : out;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function themeBuilderIntercept(themeBuilder, themeBuilderInterceptOpts) {
|
|
122
|
+
return new Proxy(themeBuilder, {
|
|
123
|
+
get(target, key) {
|
|
124
|
+
const out = Reflect.get(target, key);
|
|
125
|
+
return key === "build" && themeBuilderInterceptOpts.onComplete({
|
|
126
|
+
themeBuilder
|
|
127
|
+
}), out;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
function purgeCache(moduleName) {
|
|
132
|
+
searchCache(moduleName, function(mod) {
|
|
133
|
+
delete require.cache[mod.id];
|
|
134
|
+
}), Object.keys(module.constructor._pathCache).forEach(function(cacheKey) {
|
|
135
|
+
cacheKey.indexOf(moduleName) > 0 && delete module.constructor._pathCache[cacheKey];
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function searchCache(moduleName, callback) {
|
|
139
|
+
let mod = require.resolve(moduleName);
|
|
140
|
+
mod && (mod = require.cache[mod]) !== void 0 && function traverse(mod2, depth = 0) {
|
|
141
|
+
depth > 10 || (mod2.children.forEach(function(child) {
|
|
142
|
+
traverse(child, depth + 1);
|
|
143
|
+
}), callback(mod2));
|
|
144
|
+
}(mod);
|
|
145
|
+
}
|
|
146
|
+
export {
|
|
147
|
+
generateThemes
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=generate-themes.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/generate-themes.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["key", "target", "mod"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { join } from "path";
|
|
2
|
+
import * as fs from "fs-extra";
|
|
3
|
+
async function writeGeneratedThemes(tamaguiDotDir, outPath, generatedOutput) {
|
|
4
|
+
if (!generatedOutput)
|
|
5
|
+
return;
|
|
6
|
+
const { generated, state } = generatedOutput, tamaguiDotDirExists = await fs.pathExists(tamaguiDotDir), themeBuilderStatePath = join(tamaguiDotDir, "theme-builder.json");
|
|
7
|
+
process.env.DEBUG === "tamagui" && (console.log("Generated themes:", JSON.stringify(generatedOutput, null, 2)), console.log("Writing themes to", { outPath, themeBuilderStatePath })), await Promise.all([
|
|
8
|
+
fs.writeFile(outPath, generated),
|
|
9
|
+
state && tamaguiDotDirExists ? fs.writeFile(themeBuilderStatePath, JSON.stringify(state)) : null
|
|
10
|
+
]);
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
writeGeneratedThemes
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=write-generate-themes.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/write-generate-themes.ts"],
|
|
4
|
+
"mappings": "AAAA,SAAS,YAAY;AAErB,YAAY,QAAQ;AAIpB,eAAsB,qBACpB,eACA,SACA,iBACA;AACA,MAAI,CAAC;AAAiB;AAEtB,QAAM,EAAE,WAAW,MAAM,IAAI,iBAEvB,sBAAsB,MAAM,GAAG,WAAW,aAAa,GACvD,wBAAwB,KAAK,eAAe,oBAAoB;AAEtE,EAAI,QAAQ,IAAI,UAAU,cAExB,QAAQ,IAAI,qBAAqB,KAAK,UAAU,iBAAiB,MAAM,CAAC,CAAC,GAEzE,QAAQ,IAAI,qBAAqB,EAAE,SAAS,sBAAsB,CAAC,IAGrE,MAAM,QAAQ,IAAI;AAAA,IAChB,GAAG,UAAU,SAAS,SAAS;AAAA,IAC/B,SAAS,sBACL,GAAG,UAAU,uBAAuB,KAAK,UAAU,KAAK,CAAC,IACzD;AAAA,EACN,CAAC;AACH;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/generate-themes",
|
|
3
|
-
"version": "1.74.
|
|
3
|
+
"version": "1.74.4",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"main": "dist/cjs",
|
|
@@ -28,12 +28,12 @@
|
|
|
28
28
|
"clean:build": "tamagui-build clean:build"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@tamagui/create-theme": "1.74.
|
|
32
|
-
"@tamagui/types": "1.74.
|
|
31
|
+
"@tamagui/create-theme": "1.74.4",
|
|
32
|
+
"@tamagui/types": "1.74.4",
|
|
33
33
|
"esbuild-register": "^3.4.2",
|
|
34
34
|
"fs-extra": "^11.1.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@tamagui/build": "1.74.
|
|
37
|
+
"@tamagui/build": "1.74.4"
|
|
38
38
|
}
|
|
39
39
|
}
|