@tamagui/generate-themes 1.116.1 → 1.116.3

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,181 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
+ // If the importer is in node compatibility mode or this is not an ESM
17
+ // file that has been converted to a CommonJS file using a Babel-
18
+ // compatible transform (i.e. "__esModule" has not been set), then set
19
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
21
+ mod
22
+ )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
23
+ var generate_themes_exports = {};
24
+ __export(generate_themes_exports, {
25
+ generateThemes: () => generateThemes
26
+ });
27
+ module.exports = __toCommonJS(generate_themes_exports);
28
+ var import_module = __toESM(require("module")), import_path = require("path");
29
+ const ogRequire = import_module.default.prototype.require;
30
+ let didRegisterOnce = !1;
31
+ async function generateThemes(inputFile) {
32
+ didRegisterOnce || require("esbuild-register/dist/node").register({
33
+ hookIgnoreNodeModules: !1
34
+ });
35
+ const inputFilePath = inputFile[0] === "." ? (0, import_path.join)(process.cwd(), inputFile) : inputFile;
36
+ purgeCache(inputFilePath);
37
+ let promise = null;
38
+ import_module.default.prototype.require = function(id) {
39
+ const out = ogRequire.apply(this, arguments);
40
+ if (id === "@tamagui/theme-builder" && !promise) {
41
+ let resolve;
42
+ return promise = new Promise((res) => {
43
+ resolve = res;
44
+ }), createThemeIntercept(out, {
45
+ onComplete: (result) => {
46
+ resolve?.(result.themeBuilder);
47
+ }
48
+ });
49
+ }
50
+ return out;
51
+ };
52
+ try {
53
+ const requiredThemes = require(inputFilePath), themes = requiredThemes.default || requiredThemes.themes, generatedThemes = generatedThemesToTypescript(themes);
54
+ let tm;
55
+ if (promise) {
56
+ let finished = !1;
57
+ promise.then(() => {
58
+ finished = !0;
59
+ }), tm = setTimeout(() => {
60
+ finished || console.warn(
61
+ "Warning: ThemeBuilder didn't finish after a couple seconds, did you forget to call .build()?"
62
+ );
63
+ }, 2e3);
64
+ }
65
+ const themeBuilder = promise ? await promise : null;
66
+ return clearTimeout(tm), {
67
+ generated: generatedThemes,
68
+ state: themeBuilder?.state
69
+ };
70
+ } catch (err) {
71
+ console.warn(` \u26A0\uFE0F Error running theme builder: ${err}`, err?.stack);
72
+ } finally {
73
+ import_module.default.prototype.require = ogRequire;
74
+ }
75
+ }
76
+ const dedupedTokens = /* @__PURE__ */ new Map();
77
+ function generatedThemesToTypescript(themes) {
78
+ const dedupedThemes = /* @__PURE__ */ new Map(), dedupedThemeToNames = /* @__PURE__ */ new Map();
79
+ let i = 0;
80
+ for (const name in themes) {
81
+ i++;
82
+ const theme = themes[name];
83
+ let j = 0;
84
+ for (const [key2, value] of Object.entries(theme)) {
85
+ i++;
86
+ const uniqueKey = `t${i}${j}`;
87
+ dedupedTokens.has(value) || dedupedTokens.set(value, uniqueKey);
88
+ }
89
+ const key = JSON.stringify(theme);
90
+ dedupedThemes.has(key) ? dedupedThemeToNames.set(key, [...dedupedThemeToNames.get(key), name]) : (dedupedThemes.set(key, theme), dedupedThemeToNames.set(key, [name]));
91
+ }
92
+ const baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]);
93
+ let out = `${`type Theme = {
94
+ ${baseKeys.map(([k]) => ` ${k}: string;
95
+ `).join("")}
96
+ }`}
97
+ `;
98
+ out += `
99
+ function t(a: [number, number][]) {
100
+ let res: Record<string,string> = {}
101
+ for (const [ki, vi] of a) {
102
+ res[ks[ki] as string] = vs[vi] as string
103
+ }
104
+ return res as Theme
105
+ }
106
+ `, out += `const vs = [
107
+ `;
108
+ let index = 0;
109
+ const valueToIndex = {};
110
+ dedupedTokens.forEach((name, value) => {
111
+ valueToIndex[value] = index, index++, out += ` '${value}',
112
+ `;
113
+ }), out += `]
114
+
115
+ `;
116
+ const keys = baseKeys.map(([k]) => k);
117
+ out += `const ks = [
118
+ `, out += keys.map((k) => `'${k}'`).join(`,
119
+ `), out += `]
120
+
121
+ `;
122
+ let nameI = 0;
123
+ return dedupedThemes.forEach((theme) => {
124
+ nameI++;
125
+ const key = JSON.stringify(theme), names = dedupedThemeToNames.get(key), name = `n${nameI}`, baseTheme = `const ${name} = ${objectToJsString(theme, keys, valueToIndex)}`;
126
+ out += `
127
+ ${baseTheme}`;
128
+ const duplicateThemes = names.map((n) => `export const ${n} = ${name}`);
129
+ out += `
130
+
131
+ ` + duplicateThemes.join(`
132
+ `);
133
+ }), out;
134
+ }
135
+ function objectToJsString(obj, keys, valueToIndex) {
136
+ let arrItems = [];
137
+ for (const key in obj) {
138
+ const ki = keys.indexOf(key), vi = valueToIndex[obj[key]];
139
+ arrItems.push(`[${ki}, ${vi}]`);
140
+ }
141
+ return `t([${arrItems.join(",")}])`;
142
+ }
143
+ function createThemeIntercept(createThemeExport, themeBuilderInterceptOpts) {
144
+ return new Proxy(createThemeExport, {
145
+ get(target, key) {
146
+ const out = Reflect.get(target, key);
147
+ return key === "createThemeBuilder" ? new Proxy(out, {
148
+ apply(target2, thisArg, argArray) {
149
+ const builder = Reflect.apply(target2, thisArg, argArray);
150
+ return themeBuilderIntercept(builder, themeBuilderInterceptOpts);
151
+ }
152
+ }) : out;
153
+ }
154
+ });
155
+ }
156
+ function themeBuilderIntercept(themeBuilder, themeBuilderInterceptOpts) {
157
+ return new Proxy(themeBuilder, {
158
+ get(target, key) {
159
+ const out = Reflect.get(target, key);
160
+ return key === "build" && themeBuilderInterceptOpts.onComplete({
161
+ themeBuilder
162
+ }), out;
163
+ }
164
+ });
165
+ }
166
+ function purgeCache(moduleName) {
167
+ searchCache(moduleName, function(mod) {
168
+ delete require.cache[mod.id];
169
+ }), Object.keys(module.constructor._pathCache).forEach(function(cacheKey) {
170
+ cacheKey.indexOf(moduleName) > 0 && delete module.constructor._pathCache[cacheKey];
171
+ });
172
+ }
173
+ function searchCache(moduleName, callback) {
174
+ let mod = require.resolve(moduleName);
175
+ mod && (mod = require.cache[mod]) !== void 0 && function traverse(mod2, depth = 0) {
176
+ depth > 10 || (mod2.children.forEach(function(child) {
177
+ traverse(child, depth + 1);
178
+ }), callback(mod2));
179
+ }(mod);
180
+ }
181
+ //# sourceMappingURL=generate-themes.js.map
@@ -0,0 +1,16 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from == "object" || typeof from == "function")
7
+ for (let key of __getOwnPropNames(from))
8
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
9
+ return to;
10
+ }, __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
11
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
12
+ var src_exports = {};
13
+ module.exports = __toCommonJS(src_exports);
14
+ __reExport(src_exports, require("./generate-themes"), module.exports);
15
+ __reExport(src_exports, require("./write-generate-themes"), module.exports);
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,37 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
+ // If the importer is in node compatibility mode or this is not an ESM
17
+ // file that has been converted to a CommonJS file using a Babel-
18
+ // compatible transform (i.e. "__esModule" has not been set), then set
19
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
21
+ mod
22
+ )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
23
+ var write_generate_themes_exports = {};
24
+ __export(write_generate_themes_exports, {
25
+ writeGeneratedThemes: () => writeGeneratedThemes
26
+ });
27
+ module.exports = __toCommonJS(write_generate_themes_exports);
28
+ var import_path = require("path"), fs = __toESM(require("fs-extra"));
29
+ async function writeGeneratedThemes(tamaguiDotDir, outPath, generatedOutput) {
30
+ if (!generatedOutput) return;
31
+ const { generated, state } = generatedOutput, tamaguiDotDirExists = await fs.pathExists(tamaguiDotDir), themeBuilderStatePath = (0, import_path.join)(tamaguiDotDir, "theme-builder.json");
32
+ process.env.DEBUG === "tamagui" && (console.info("Generated themes:", JSON.stringify(generatedOutput, null, 2)), console.info("Writing themes to", { outPath, themeBuilderStatePath })), await Promise.all([
33
+ fs.writeFile(outPath, generated),
34
+ state && tamaguiDotDirExists ? fs.writeFile(themeBuilderStatePath, JSON.stringify(state)) : null
35
+ ]);
36
+ }
37
+ //# sourceMappingURL=write-generate-themes.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/generate-themes",
3
- "version": "1.116.1",
3
+ "version": "1.116.3",
4
4
  "source": "src/index.ts",
5
5
  "types": "./types/index.d.ts",
6
6
  "main": "dist/cjs",
@@ -31,13 +31,13 @@
31
31
  "clean:build": "tamagui-build clean:build"
32
32
  },
33
33
  "dependencies": {
34
- "@tamagui/create-theme": "1.116.1",
35
- "@tamagui/theme-builder": "1.116.1",
36
- "@tamagui/types": "1.116.1",
34
+ "@tamagui/create-theme": "1.116.3",
35
+ "@tamagui/theme-builder": "1.116.3",
36
+ "@tamagui/types": "1.116.3",
37
37
  "esbuild-register": "^3.6.0",
38
38
  "fs-extra": "^11.2.0"
39
39
  },
40
40
  "devDependencies": {
41
- "@tamagui/build": "1.116.1"
41
+ "@tamagui/build": "1.116.3"
42
42
  }
43
43
  }
File without changes