@tamagui/generate-themes 2.7.7 → 3.0.0-beta.1093.1
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 +145 -135
- package/dist/cjs/generate-themes.native.cjs +224 -0
- package/dist/cjs/generate-themes.native.js +173 -161
- package/dist/cjs/generate-themes.native.js.map +1 -1
- package/dist/cjs/index.cjs +9 -11
- package/dist/cjs/index.native.cjs +21 -0
- package/dist/cjs/index.native.js +9 -10
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/write-generate-themes.cjs +28 -39
- package/dist/cjs/write-generate-themes.native.cjs +48 -0
- package/dist/cjs/write-generate-themes.native.js +30 -40
- package/dist/cjs/write-generate-themes.native.js.map +1 -1
- package/dist/esm/generate-themes.mjs +132 -117
- package/dist/esm/generate-themes.mjs.map +1 -1
- package/dist/esm/generate-themes.native.js +160 -144
- package/dist/esm/generate-themes.native.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.mjs +3 -3
- package/dist/esm/index.native.js +3 -3
- package/dist/esm/write-generate-themes.mjs +13 -13
- package/dist/esm/write-generate-themes.mjs.map +1 -1
- package/dist/esm/write-generate-themes.native.js +15 -15
- package/dist/esm/write-generate-themes.native.js.map +1 -1
- package/package.json +7 -6
- package/src/generate-themes.ts +34 -18
- package/types/generate-themes.d.ts.map +1 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
|
@@ -1,96 +1,105 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
7
|
var __export = (target, all) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
10
12
|
};
|
|
11
13
|
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
19
21
|
};
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
25
|
+
}) : target, mod));
|
|
26
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
27
|
var generate_themes_exports = {};
|
|
24
|
-
__export(generate_themes_exports, {
|
|
25
|
-
generateThemes: () => generateThemes
|
|
26
|
-
});
|
|
28
|
+
__export(generate_themes_exports, { generateThemes: () => generateThemes });
|
|
27
29
|
module.exports = __toCommonJS(generate_themes_exports);
|
|
30
|
+
var import_node_module = __toESM(require("node:module"), 1);
|
|
28
31
|
var import_node_path = require("node:path");
|
|
32
|
+
const ModuleInternals = import_node_module.default;
|
|
29
33
|
let didRegisterOnce = false;
|
|
30
34
|
async function generateThemes(inputFile) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
35
|
+
const inputFilePath = inputFile[0] === "." ? (0, import_node_path.join)(process.cwd(), inputFile) : inputFile;
|
|
36
|
+
if (!didRegisterOnce) {
|
|
37
|
+
didRegisterOnce = true;
|
|
38
|
+
const nodeResolve = ModuleInternals._resolveFilename;
|
|
39
|
+
require("esbuild-register/dist/node").register({ hookIgnoreNodeModules: false });
|
|
40
|
+
const chained = ModuleInternals._resolveFilename;
|
|
41
|
+
ModuleInternals._resolveFilename = function(request, ...args) {
|
|
42
|
+
if (request[0] !== "." && !request.startsWith("/")) {
|
|
43
|
+
try {
|
|
44
|
+
return nodeResolve.call(this, request, ...args);
|
|
45
|
+
} catch {}
|
|
46
|
+
}
|
|
47
|
+
return chained.call(this, request, ...args);
|
|
48
|
+
};
|
|
49
|
+
} else {
|
|
50
|
+
purgeCache(inputFilePath);
|
|
51
|
+
}
|
|
52
|
+
let og = process.env.TAMAGUI_KEEP_THEMES;
|
|
53
|
+
process.env.TAMAGUI_KEEP_THEMES = "1";
|
|
54
|
+
try {
|
|
55
|
+
const requiredThemes = require(inputFilePath);
|
|
56
|
+
const themes = requiredThemes["default"] || requiredThemes["themes"] || requiredThemes[Object.keys(requiredThemes)[0]];
|
|
57
|
+
const generatedThemes = generatedThemesToTypescript(themes);
|
|
58
|
+
return { generated: generatedThemes };
|
|
59
|
+
} catch (err) {
|
|
60
|
+
console.warn(` \u26A0\uFE0F Error running theme builder:
|
|
52
61
|
`, err?.["stack"] || err);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
62
|
+
} finally {
|
|
63
|
+
process.env.TAMAGUI_KEEP_THEMES = og;
|
|
64
|
+
}
|
|
56
65
|
}
|
|
57
|
-
const dedupedTokens = /* @__PURE__ */new Map();
|
|
58
66
|
function generatedThemesToTypescript(themes) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
67
|
+
const dedupedTokens = /* @__PURE__ */ new Map();
|
|
68
|
+
const dedupedThemes = /* @__PURE__ */ new Map();
|
|
69
|
+
const dedupedThemeToNames = /* @__PURE__ */ new Map();
|
|
70
|
+
let i = 0;
|
|
71
|
+
for (const name in themes) {
|
|
72
|
+
i++;
|
|
73
|
+
const theme = themes[name];
|
|
74
|
+
let j = 0;
|
|
75
|
+
for (const [key2, value] of Object.entries(theme)) {
|
|
76
|
+
i++;
|
|
77
|
+
const uniqueKey = `t${i}${j}`;
|
|
78
|
+
if (!dedupedTokens.has(value)) {
|
|
79
|
+
dedupedTokens.set(value, uniqueKey);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const key = JSON.stringify(theme);
|
|
83
|
+
if (dedupedThemes.has(key)) {
|
|
84
|
+
dedupedThemeToNames.set(key, [...dedupedThemeToNames.get(key), name]);
|
|
85
|
+
} else {
|
|
86
|
+
dedupedThemes.set(key, theme);
|
|
87
|
+
dedupedThemeToNames.set(key, [name]);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (!themes) {
|
|
91
|
+
throw new Error(`Didn't find any themes exported or returned`);
|
|
92
|
+
}
|
|
93
|
+
const baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]);
|
|
94
|
+
const baseTypeString = `export type Theme = {
|
|
86
95
|
${baseKeys.map(([k]) => {
|
|
87
|
-
|
|
96
|
+
return ` ${JSON.stringify(k)}: string;
|
|
88
97
|
`;
|
|
89
|
-
|
|
98
|
+
}).join("")}
|
|
90
99
|
}`;
|
|
91
|
-
|
|
100
|
+
let out = `${baseTypeString}
|
|
92
101
|
`;
|
|
93
|
-
|
|
102
|
+
out += `
|
|
94
103
|
function t(a: [number, number][]) {
|
|
95
104
|
let res: Record<string,string> = {}
|
|
96
105
|
for (const [ki, vi] of a) {
|
|
@@ -99,87 +108,88 @@ function t(a: [number, number][]) {
|
|
|
99
108
|
return res as Theme
|
|
100
109
|
}
|
|
101
110
|
`;
|
|
102
|
-
|
|
111
|
+
out += `export const colors = [
|
|
103
112
|
`;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
113
|
+
let index = 0;
|
|
114
|
+
const valueToIndex = {};
|
|
115
|
+
dedupedTokens.forEach((name, value) => {
|
|
116
|
+
valueToIndex[value] = index;
|
|
117
|
+
index++;
|
|
118
|
+
out += ` '${value}',
|
|
110
119
|
`;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
120
|
+
});
|
|
121
|
+
out += "]\n\n";
|
|
122
|
+
const keys = baseKeys.map(([k]) => k);
|
|
123
|
+
out += `const ks = [
|
|
115
124
|
`;
|
|
116
|
-
|
|
117
|
-
|
|
125
|
+
out += keys.map((k) => JSON.stringify(k)).join(",\n");
|
|
126
|
+
out += `]
|
|
118
127
|
|
|
119
128
|
`;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
129
|
+
let nameI = 0;
|
|
130
|
+
let themeTypes = `export type ThemeNames =`;
|
|
131
|
+
let exported = `export type Themes = Record<ThemeNames, Theme>
|
|
123
132
|
|
|
124
133
|
export const themes: Themes = {`;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
134
|
+
dedupedThemes.forEach((theme) => {
|
|
135
|
+
nameI++;
|
|
136
|
+
const key = JSON.stringify(theme);
|
|
137
|
+
const names = dedupedThemeToNames.get(key);
|
|
138
|
+
const name = `n${nameI}`;
|
|
139
|
+
const baseTheme = `const ${name} = ${objectToJsString(theme, keys, valueToIndex)}`;
|
|
140
|
+
out += `
|
|
132
141
|
${baseTheme}`;
|
|
133
|
-
|
|
134
|
-
|
|
142
|
+
names.forEach((n) => {
|
|
143
|
+
exported += `
|
|
135
144
|
${n}: ${name},`;
|
|
136
|
-
|
|
137
|
-
|
|
145
|
+
if (n.toLowerCase() === n) {
|
|
146
|
+
themeTypes += `
|
|
138
147
|
| '${n}'`;
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
out += `
|
|
143
152
|
|
|
144
153
|
${themeTypes}
|
|
145
154
|
|
|
146
155
|
${exported}
|
|
147
156
|
}
|
|
148
157
|
`;
|
|
149
|
-
|
|
158
|
+
return out;
|
|
150
159
|
}
|
|
151
160
|
function objectToJsString(obj, keys, valueToIndex) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
161
|
+
let arrItems = [];
|
|
162
|
+
for (const key in obj) {
|
|
163
|
+
const ki = keys.indexOf(key);
|
|
164
|
+
const vi = valueToIndex[obj[key]];
|
|
165
|
+
arrItems.push(`[${ki}, ${vi}]`);
|
|
166
|
+
}
|
|
167
|
+
return `t([${arrItems.join(",")}])`;
|
|
159
168
|
}
|
|
160
169
|
function purgeCache(moduleName) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
searchCache(moduleName, (mod) => {
|
|
171
|
+
delete require.cache[mod.id];
|
|
172
|
+
});
|
|
173
|
+
const pathCache = ModuleInternals._pathCache;
|
|
174
|
+
if (!pathCache) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
Object.keys(pathCache).forEach((cacheKey) => {
|
|
178
|
+
if (cacheKey.indexOf(moduleName) > 0) {
|
|
179
|
+
delete pathCache[cacheKey];
|
|
180
|
+
}
|
|
181
|
+
});
|
|
172
182
|
}
|
|
173
183
|
function searchCache(moduleName, callback) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
184
|
+
let mod = require.resolve(moduleName);
|
|
185
|
+
if (mod && (mod = require.cache[mod]) !== void 0) {
|
|
186
|
+
;
|
|
187
|
+
(function traverse(mod2, depth = 0) {
|
|
188
|
+
if (depth > 10) return;
|
|
189
|
+
mod2.children.forEach((child) => {
|
|
190
|
+
traverse(child, depth + 1);
|
|
191
|
+
});
|
|
192
|
+
callback(mod2);
|
|
193
|
+
})(mod);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: true
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
18
|
+
get: () => from[key],
|
|
19
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
25
|
+
value: mod,
|
|
26
|
+
enumerable: true
|
|
27
|
+
}) : target, mod));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var generate_themes_exports = {};
|
|
30
|
+
__export(generate_themes_exports, { generateThemes: () => generateThemes });
|
|
31
|
+
module.exports = __toCommonJS(generate_themes_exports);
|
|
32
|
+
var import_module = __toESM(require("module"), 1);
|
|
33
|
+
var import_path = require("path");
|
|
34
|
+
var ModuleInternals = import_module.default;
|
|
35
|
+
var didRegisterOnce = false;
|
|
36
|
+
async function generateThemes(inputFile) {
|
|
37
|
+
var inputFilePath = inputFile[0] === "." ? (0, import_path.join)(process.cwd(), inputFile) : inputFile;
|
|
38
|
+
if (!didRegisterOnce) {
|
|
39
|
+
didRegisterOnce = true;
|
|
40
|
+
var nodeResolve = ModuleInternals._resolveFilename;
|
|
41
|
+
require("esbuild-register/dist/node").register({ hookIgnoreNodeModules: false });
|
|
42
|
+
var chained = ModuleInternals._resolveFilename;
|
|
43
|
+
ModuleInternals._resolveFilename = function(request) {
|
|
44
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
45
|
+
args[_key - 1] = arguments[_key];
|
|
46
|
+
}
|
|
47
|
+
if (request[0] !== "." && !request.startsWith("/")) {
|
|
48
|
+
try {
|
|
49
|
+
return nodeResolve.call(this, request, ...args);
|
|
50
|
+
} catch (e) {}
|
|
51
|
+
}
|
|
52
|
+
return chained.call(this, request, ...args);
|
|
53
|
+
};
|
|
54
|
+
} else {
|
|
55
|
+
purgeCache(inputFilePath);
|
|
56
|
+
}
|
|
57
|
+
var og = process.env.TAMAGUI_KEEP_THEMES;
|
|
58
|
+
process.env.TAMAGUI_KEEP_THEMES = "1";
|
|
59
|
+
try {
|
|
60
|
+
var requiredThemes = require(inputFilePath);
|
|
61
|
+
var themes = requiredThemes["default"] || requiredThemes["themes"] || requiredThemes[Object.keys(requiredThemes)[0]];
|
|
62
|
+
var generatedThemes = generatedThemesToTypescript(themes);
|
|
63
|
+
return { generated: generatedThemes };
|
|
64
|
+
} catch (err) {
|
|
65
|
+
console.warn(` \u26A0\uFE0F Error running theme builder:
|
|
66
|
+
`, (err === null || err === void 0 ? void 0 : err["stack"]) || err);
|
|
67
|
+
} finally {
|
|
68
|
+
process.env.TAMAGUI_KEEP_THEMES = og;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function generatedThemesToTypescript(themes) {
|
|
72
|
+
var dedupedTokens = /* @__PURE__ */ new Map();
|
|
73
|
+
var dedupedThemes = /* @__PURE__ */ new Map();
|
|
74
|
+
var dedupedThemeToNames = /* @__PURE__ */ new Map();
|
|
75
|
+
var i = 0;
|
|
76
|
+
for (var name in themes) {
|
|
77
|
+
i++;
|
|
78
|
+
var theme = themes[name];
|
|
79
|
+
var j = 0;
|
|
80
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
81
|
+
try {
|
|
82
|
+
for (var _iterator = Object.entries(theme)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
83
|
+
var [key, value] = _step.value;
|
|
84
|
+
i++;
|
|
85
|
+
var uniqueKey = `t${i}${j}`;
|
|
86
|
+
if (!dedupedTokens.has(value)) {
|
|
87
|
+
dedupedTokens.set(value, uniqueKey);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
} catch (err) {
|
|
91
|
+
_didIteratorError = true;
|
|
92
|
+
_iteratorError = err;
|
|
93
|
+
} finally {
|
|
94
|
+
try {
|
|
95
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
96
|
+
_iterator.return();
|
|
97
|
+
}
|
|
98
|
+
} finally {
|
|
99
|
+
if (_didIteratorError) {
|
|
100
|
+
throw _iteratorError;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
var key1 = JSON.stringify(theme);
|
|
105
|
+
if (dedupedThemes.has(key1)) {
|
|
106
|
+
dedupedThemeToNames.set(key1, [...dedupedThemeToNames.get(key1), name]);
|
|
107
|
+
} else {
|
|
108
|
+
dedupedThemes.set(key1, theme);
|
|
109
|
+
dedupedThemeToNames.set(key1, [name]);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (!themes) {
|
|
113
|
+
throw new Error(`Didn't find any themes exported or returned`);
|
|
114
|
+
}
|
|
115
|
+
var baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]);
|
|
116
|
+
var baseTypeString = `export type Theme = {
|
|
117
|
+
${baseKeys.map(function(param) {
|
|
118
|
+
var [k] = param;
|
|
119
|
+
return ` ${JSON.stringify(k)}: string;
|
|
120
|
+
`;
|
|
121
|
+
}).join("")}
|
|
122
|
+
}`;
|
|
123
|
+
var out = `${baseTypeString}
|
|
124
|
+
`;
|
|
125
|
+
out += `
|
|
126
|
+
function t(a: [number, number][]) {
|
|
127
|
+
let res: Record<string,string> = {}
|
|
128
|
+
for (const [ki, vi] of a) {
|
|
129
|
+
res[ks[ki] as string] = colors[vi] as string
|
|
130
|
+
}
|
|
131
|
+
return res as Theme
|
|
132
|
+
}
|
|
133
|
+
`;
|
|
134
|
+
out += `export const colors = [
|
|
135
|
+
`;
|
|
136
|
+
var index = 0;
|
|
137
|
+
var valueToIndex = {};
|
|
138
|
+
dedupedTokens.forEach(function(name2, value2) {
|
|
139
|
+
valueToIndex[value2] = index;
|
|
140
|
+
index++;
|
|
141
|
+
out += ` '${value2}',
|
|
142
|
+
`;
|
|
143
|
+
});
|
|
144
|
+
out += "]\n\n";
|
|
145
|
+
var keys = baseKeys.map(function(param) {
|
|
146
|
+
var [k] = param;
|
|
147
|
+
return k;
|
|
148
|
+
});
|
|
149
|
+
out += `const ks = [
|
|
150
|
+
`;
|
|
151
|
+
out += keys.map(function(k) {
|
|
152
|
+
return JSON.stringify(k);
|
|
153
|
+
}).join(",\n");
|
|
154
|
+
out += `]
|
|
155
|
+
|
|
156
|
+
`;
|
|
157
|
+
var nameI = 0;
|
|
158
|
+
var themeTypes = `export type ThemeNames =`;
|
|
159
|
+
var exported = `export type Themes = Record<ThemeNames, Theme>
|
|
160
|
+
|
|
161
|
+
export const themes: Themes = {`;
|
|
162
|
+
dedupedThemes.forEach(function(theme2) {
|
|
163
|
+
nameI++;
|
|
164
|
+
var key2 = JSON.stringify(theme2);
|
|
165
|
+
var names = dedupedThemeToNames.get(key2);
|
|
166
|
+
var name2 = `n${nameI}`;
|
|
167
|
+
var baseTheme = `const ${name2} = ${objectToJsString(theme2, keys, valueToIndex)}`;
|
|
168
|
+
out += `
|
|
169
|
+
${baseTheme}`;
|
|
170
|
+
names.forEach(function(n) {
|
|
171
|
+
exported += `
|
|
172
|
+
${n}: ${name2},`;
|
|
173
|
+
if (n.toLowerCase() === n) {
|
|
174
|
+
themeTypes += `
|
|
175
|
+
| '${n}'`;
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
out += `
|
|
180
|
+
|
|
181
|
+
${themeTypes}
|
|
182
|
+
|
|
183
|
+
${exported}
|
|
184
|
+
}
|
|
185
|
+
`;
|
|
186
|
+
return out;
|
|
187
|
+
}
|
|
188
|
+
function objectToJsString(obj, keys, valueToIndex) {
|
|
189
|
+
var arrItems = [];
|
|
190
|
+
for (var key in obj) {
|
|
191
|
+
var ki = keys.indexOf(key);
|
|
192
|
+
var vi = valueToIndex[obj[key]];
|
|
193
|
+
arrItems.push(`[${ki}, ${vi}]`);
|
|
194
|
+
}
|
|
195
|
+
return `t([${arrItems.join(",")}])`;
|
|
196
|
+
}
|
|
197
|
+
function purgeCache(moduleName) {
|
|
198
|
+
searchCache(moduleName, function(mod) {
|
|
199
|
+
delete require.cache[mod.id];
|
|
200
|
+
});
|
|
201
|
+
var pathCache = ModuleInternals._pathCache;
|
|
202
|
+
if (!pathCache) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
Object.keys(pathCache).forEach(function(cacheKey) {
|
|
206
|
+
if (cacheKey.indexOf(moduleName) > 0) {
|
|
207
|
+
delete pathCache[cacheKey];
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
function searchCache(moduleName, callback) {
|
|
212
|
+
var mod = require.resolve(moduleName);
|
|
213
|
+
if (mod && (mod = require.cache[mod]) !== void 0) {
|
|
214
|
+
;
|
|
215
|
+
(function traverse(mod2) {
|
|
216
|
+
var depth = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
|
|
217
|
+
if (depth > 10) return;
|
|
218
|
+
mod2.children.forEach(function(child) {
|
|
219
|
+
traverse(child, depth + 1);
|
|
220
|
+
});
|
|
221
|
+
callback(mod2);
|
|
222
|
+
})(mod);
|
|
223
|
+
}
|
|
224
|
+
}
|