@tamagui/generate-themes 1.74.3 → 1.74.5

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.
@@ -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,3 @@
1
+ export * from "./generate-themes";
2
+ export * from "./write-generate-themes";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "mappings": "AAAA,cAAc;AACd,cAAc;",
5
+ "names": []
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",
3
+ "version": "1.74.5",
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.3",
32
- "@tamagui/types": "1.74.3",
31
+ "@tamagui/create-theme": "1.74.5",
32
+ "@tamagui/types": "1.74.5",
33
33
  "esbuild-register": "^3.4.2",
34
34
  "fs-extra": "^11.1.0"
35
35
  },
36
36
  "devDependencies": {
37
- "@tamagui/build": "1.74.3"
37
+ "@tamagui/build": "1.74.5"
38
38
  }
39
39
  }