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