@hanzogui/generate-themes 8.3.1 → 8.3.2
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.js +190 -0
- package/dist/cjs/generate-themes.js.map +1 -0
- package/dist/cjs/here.js +6 -0
- package/dist/cjs/here.js.map +1 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/write-generate-themes.js +20 -0
- package/dist/cjs/write-generate-themes.js.map +1 -0
- package/dist/esm/generate-themes.js +187 -0
- package/dist/esm/generate-themes.js.map +1 -0
- package/dist/esm/here.js +3 -0
- package/dist/esm/here.js.map +1 -0
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/write-generate-themes.js +17 -0
- package/dist/esm/write-generate-themes.js.map +1 -0
- package/package.json +20 -15
- package/src/generate-themes.ts +9 -5
- package/src/here.cjs.ts +3 -0
- package/src/here.ts +2 -0
- package/src/index.ts +2 -2
- package/src/write-generate-themes.ts +4 -4
- package/types/generate-themes.d.ts.map +1 -1
- package/types/here.d.ts +2 -0
- package/types/here.d.ts.map +1 -0
- package/types/index.d.ts +2 -2
- package/types/index.d.ts.map +1 -1
- package/types/write-generate-themes.d.ts +1 -1
- package/types/write-generate-themes.d.ts.map +1 -1
- package/dist/cjs/generate-themes.cjs +0 -185
- package/dist/cjs/generate-themes.native.js +0 -214
- package/dist/cjs/generate-themes.native.js.map +0 -1
- package/dist/cjs/index.cjs +0 -21
- package/dist/cjs/index.native.js +0 -24
- package/dist/cjs/index.native.js.map +0 -1
- package/dist/cjs/write-generate-themes.cjs +0 -55
- package/dist/cjs/write-generate-themes.native.js +0 -60
- package/dist/cjs/write-generate-themes.native.js.map +0 -1
- package/dist/esm/generate-themes.mjs +0 -160
- package/dist/esm/generate-themes.mjs.map +0 -1
- package/dist/esm/generate-themes.native.js +0 -186
- package/dist/esm/generate-themes.native.js.map +0 -1
- package/dist/esm/index.mjs +0 -3
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js +0 -3
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/write-generate-themes.mjs +0 -19
- package/dist/esm/write-generate-themes.mjs.map +0 -1
- package/dist/esm/write-generate-themes.native.js +0 -21
- package/dist/esm/write-generate-themes.native.js.map +0 -1
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateThemes = generateThemes;
|
|
4
|
+
const node_module_1 = require("node:module");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
const here_ts_1 = require("./here.js");
|
|
7
|
+
const need = (0, node_module_1.createRequire)(here_ts_1.url);
|
|
8
|
+
let didRegisterOnce = false;
|
|
9
|
+
async function generateThemes(inputFile) {
|
|
10
|
+
const inputFilePath = inputFile[0] === '.' ? (0, node_path_1.join)(process.cwd(), inputFile) : inputFile;
|
|
11
|
+
if (!didRegisterOnce) {
|
|
12
|
+
didRegisterOnce = true;
|
|
13
|
+
// the unregsiter does basically nothing and keeps a process running
|
|
14
|
+
need('esbuild-register/dist/node').register({
|
|
15
|
+
hookIgnoreNodeModules: false,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
purgeCache(inputFilePath);
|
|
20
|
+
}
|
|
21
|
+
let og = process.env.GUI_KEEP_THEMES;
|
|
22
|
+
process.env.GUI_KEEP_THEMES = '1';
|
|
23
|
+
process.env.GUI_RUN_THEMEBUILDER = '1';
|
|
24
|
+
try {
|
|
25
|
+
const requiredThemes = need(inputFilePath);
|
|
26
|
+
const themes = requiredThemes['default'] ||
|
|
27
|
+
requiredThemes['themes'] ||
|
|
28
|
+
requiredThemes[Object.keys(requiredThemes)[0]];
|
|
29
|
+
const generatedThemes = generatedThemesToTypescript(themes);
|
|
30
|
+
return {
|
|
31
|
+
generated: generatedThemes,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
console.warn(` ⚠️ Error running theme builder:\n`, err?.['stack'] || err);
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
process.env.GUI_KEEP_THEMES = og;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* value -> name of variable
|
|
43
|
+
*/
|
|
44
|
+
const dedupedTokens = new Map();
|
|
45
|
+
function generatedThemesToTypescript(themes) {
|
|
46
|
+
const dedupedThemes = new Map();
|
|
47
|
+
const dedupedThemeToNames = new Map();
|
|
48
|
+
let i = 0;
|
|
49
|
+
for (const name in themes) {
|
|
50
|
+
i++;
|
|
51
|
+
const theme = themes[name];
|
|
52
|
+
// go through all tokens in current theme and add the new values to dedupedTokens map
|
|
53
|
+
let j = 0;
|
|
54
|
+
for (const [key, value] of Object.entries(theme)) {
|
|
55
|
+
i++;
|
|
56
|
+
const uniqueKey = `t${i}${j}`;
|
|
57
|
+
if (!dedupedTokens.has(value)) {
|
|
58
|
+
dedupedTokens.set(value, uniqueKey);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const key = JSON.stringify(theme);
|
|
62
|
+
if (dedupedThemes.has(key)) {
|
|
63
|
+
dedupedThemeToNames.set(key, [...dedupedThemeToNames.get(key), name]);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
dedupedThemes.set(key, theme);
|
|
67
|
+
dedupedThemeToNames.set(key, [name]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (!themes) {
|
|
71
|
+
throw new Error(`Didn't find any themes exported or returned`);
|
|
72
|
+
}
|
|
73
|
+
const baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]);
|
|
74
|
+
const baseTypeString = `export type Theme = {
|
|
75
|
+
${baseKeys
|
|
76
|
+
.map(([k]) => {
|
|
77
|
+
return ` ${k}: string;\n`;
|
|
78
|
+
})
|
|
79
|
+
.join('')}
|
|
80
|
+
}`;
|
|
81
|
+
let out = `${baseTypeString}\n`;
|
|
82
|
+
// add in the helper function to generate a theme:
|
|
83
|
+
out += `
|
|
84
|
+
function t(a: [number, number][]) {
|
|
85
|
+
let res: Record<string,string> = {}
|
|
86
|
+
for (const [ki, vi] of a) {
|
|
87
|
+
res[ks[ki] as string] = colors[vi] as string
|
|
88
|
+
}
|
|
89
|
+
return res as Theme
|
|
90
|
+
}
|
|
91
|
+
`;
|
|
92
|
+
// add all token variables
|
|
93
|
+
out += `export const colors = [\n`;
|
|
94
|
+
let index = 0;
|
|
95
|
+
const valueToIndex = {};
|
|
96
|
+
dedupedTokens.forEach((name, value) => {
|
|
97
|
+
valueToIndex[value] = index;
|
|
98
|
+
index++;
|
|
99
|
+
out += ` '${value}',\n`;
|
|
100
|
+
});
|
|
101
|
+
out += ']\n\n';
|
|
102
|
+
// add all keys array
|
|
103
|
+
const keys = baseKeys.map(([k]) => k);
|
|
104
|
+
out += `const ks = [\n`;
|
|
105
|
+
out += keys.map((k) => `'${k}'`).join(',\n');
|
|
106
|
+
out += `]\n\n`;
|
|
107
|
+
// add all themes
|
|
108
|
+
let nameI = 0;
|
|
109
|
+
let themeTypes = `export type ThemeNames =`;
|
|
110
|
+
let exported = `export type Themes = Record<ThemeNames, Theme>\n\nexport const themes: Themes = {`;
|
|
111
|
+
dedupedThemes.forEach((theme) => {
|
|
112
|
+
nameI++;
|
|
113
|
+
const key = JSON.stringify(theme);
|
|
114
|
+
const names = dedupedThemeToNames.get(key);
|
|
115
|
+
const name = `n${nameI}`;
|
|
116
|
+
const baseTheme = `const ${name} = ${objectToJsString(theme, keys, valueToIndex)}`;
|
|
117
|
+
out += `\n${baseTheme}`;
|
|
118
|
+
names.forEach((n) => {
|
|
119
|
+
exported += `\n ${n}: ${name},`;
|
|
120
|
+
if (n.toLowerCase() === n) {
|
|
121
|
+
themeTypes += `\n | '${n}'`;
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
out += `\n\n${themeTypes}\n\n${exported}\n}\n`;
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
function objectToJsString(obj, keys, valueToIndex) {
|
|
129
|
+
let arrItems = [];
|
|
130
|
+
for (const key in obj) {
|
|
131
|
+
const ki = keys.indexOf(key);
|
|
132
|
+
const vi = valueToIndex[obj[key]];
|
|
133
|
+
arrItems.push(`[${ki}, ${vi}]`);
|
|
134
|
+
}
|
|
135
|
+
return `t([${arrItems.join(',')}])`;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Removes a module from the cache
|
|
139
|
+
*/
|
|
140
|
+
function purgeCache(moduleName) {
|
|
141
|
+
// Traverse the cache looking for the files
|
|
142
|
+
// loaded by the specified module name
|
|
143
|
+
searchCache(moduleName, (mod) => {
|
|
144
|
+
delete need.cache[mod.id];
|
|
145
|
+
});
|
|
146
|
+
// @ts-ignore
|
|
147
|
+
if (!module.constructor || !module.constructor._pathCache) {
|
|
148
|
+
// bun doesn't have this
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// Remove cached paths to the module.
|
|
152
|
+
// Thanks to @bentael for pointing this out.
|
|
153
|
+
// @ts-ignore
|
|
154
|
+
Object.keys(module.constructor._pathCache).forEach((cacheKey) => {
|
|
155
|
+
if (cacheKey.indexOf(moduleName) > 0) {
|
|
156
|
+
// @ts-ignore
|
|
157
|
+
delete module.constructor._pathCache[cacheKey];
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Traverses the cache to search for all the cached
|
|
163
|
+
* files of the specified module name
|
|
164
|
+
*/
|
|
165
|
+
function searchCache(moduleName, callback) {
|
|
166
|
+
// Resolve the module identified by the specified name
|
|
167
|
+
let mod = need.resolve(moduleName);
|
|
168
|
+
// Check if the module has been resolved and found within
|
|
169
|
+
// the cache
|
|
170
|
+
// @ts-ignore
|
|
171
|
+
if (mod && (mod = need.cache[mod]) !== undefined) {
|
|
172
|
+
// Recursively go over the results
|
|
173
|
+
;
|
|
174
|
+
(function traverse(mod, depth = 0) {
|
|
175
|
+
// avoid recursing too much
|
|
176
|
+
if (depth > 10)
|
|
177
|
+
return;
|
|
178
|
+
// Go over each of the module's children and
|
|
179
|
+
// traverse them
|
|
180
|
+
// @ts-ignore
|
|
181
|
+
mod.children.forEach((child) => {
|
|
182
|
+
traverse(child, depth + 1);
|
|
183
|
+
});
|
|
184
|
+
// Call the specified callback providing the
|
|
185
|
+
// found cached module
|
|
186
|
+
callback(mod);
|
|
187
|
+
})(mod);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=generate-themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-themes.js","sourceRoot":"","sources":["../../src/generate-themes.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/here.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"here.cjs.js","sourceRoot":"","sources":["../../src/here.cjs.ts"],"names":[],"mappings":";;;AAAA,uCAAwC;AAE3B,QAAA,GAAG,GAAG,IAAA,wBAAa,EAAC,UAAU,CAAC,CAAC,IAAI,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./generate-themes.js"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./write-generate-themes.js"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,+DAAoC;AACpC,qEAA0C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "type": "commonjs" }
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.writeGeneratedThemes = writeGeneratedThemes;
|
|
4
|
+
const promises_1 = require("node:fs/promises");
|
|
5
|
+
async function writeGeneratedThemes(hanzoguiDotDir, outPath, generatedOutput) {
|
|
6
|
+
if (!generatedOutput)
|
|
7
|
+
return;
|
|
8
|
+
const { generated } = generatedOutput;
|
|
9
|
+
if (process.env.DEBUG === 'hanzogui') {
|
|
10
|
+
console.info(`Generated themes:`, JSON.stringify(generatedOutput, null, 2));
|
|
11
|
+
}
|
|
12
|
+
const newContent = `// @ts-nocheck\n` + generated;
|
|
13
|
+
// Skip writing if contents are unchanged
|
|
14
|
+
const existingContent = await (0, promises_1.readFile)(outPath, 'utf-8').catch(() => null);
|
|
15
|
+
if (existingContent === newContent) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
await (0, promises_1.writeFile)(outPath, newContent);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=write-generate-themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-generate-themes.js","sourceRoot":"","sources":["../../src/write-generate-themes.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AAI/C,KAAK,+BACV,cAAsB,EACtB,OAAe,EACf,eAA2D;IAE3D,IAAI,CAAC,eAAe;QAAE,OAAM;IAE5B,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAA;IAErC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,MAAM,UAAU,GAAG,kBAAkB,GAAG,SAAS,CAAA;IAEjD,yCAAyC;IACzC,MAAM,eAAe,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC1E,IAAI,eAAe,KAAK,UAAU,EAAE,CAAC;QACnC,OAAM;IACR,CAAC;IAED,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AACtC,CAAC"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { url } from './here.js';
|
|
4
|
+
const need = createRequire(url);
|
|
5
|
+
let didRegisterOnce = false;
|
|
6
|
+
export async function generateThemes(inputFile) {
|
|
7
|
+
const inputFilePath = inputFile[0] === '.' ? join(process.cwd(), inputFile) : inputFile;
|
|
8
|
+
if (!didRegisterOnce) {
|
|
9
|
+
didRegisterOnce = true;
|
|
10
|
+
// the unregsiter does basically nothing and keeps a process running
|
|
11
|
+
need('esbuild-register/dist/node').register({
|
|
12
|
+
hookIgnoreNodeModules: false,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
purgeCache(inputFilePath);
|
|
17
|
+
}
|
|
18
|
+
let og = process.env.GUI_KEEP_THEMES;
|
|
19
|
+
process.env.GUI_KEEP_THEMES = '1';
|
|
20
|
+
process.env.GUI_RUN_THEMEBUILDER = '1';
|
|
21
|
+
try {
|
|
22
|
+
const requiredThemes = need(inputFilePath);
|
|
23
|
+
const themes = requiredThemes['default'] ||
|
|
24
|
+
requiredThemes['themes'] ||
|
|
25
|
+
requiredThemes[Object.keys(requiredThemes)[0]];
|
|
26
|
+
const generatedThemes = generatedThemesToTypescript(themes);
|
|
27
|
+
return {
|
|
28
|
+
generated: generatedThemes,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
console.warn(` ⚠️ Error running theme builder:\n`, err?.['stack'] || err);
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
process.env.GUI_KEEP_THEMES = og;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* value -> name of variable
|
|
40
|
+
*/
|
|
41
|
+
const dedupedTokens = new Map();
|
|
42
|
+
function generatedThemesToTypescript(themes) {
|
|
43
|
+
const dedupedThemes = new Map();
|
|
44
|
+
const dedupedThemeToNames = new Map();
|
|
45
|
+
let i = 0;
|
|
46
|
+
for (const name in themes) {
|
|
47
|
+
i++;
|
|
48
|
+
const theme = themes[name];
|
|
49
|
+
// go through all tokens in current theme and add the new values to dedupedTokens map
|
|
50
|
+
let j = 0;
|
|
51
|
+
for (const [key, value] of Object.entries(theme)) {
|
|
52
|
+
i++;
|
|
53
|
+
const uniqueKey = `t${i}${j}`;
|
|
54
|
+
if (!dedupedTokens.has(value)) {
|
|
55
|
+
dedupedTokens.set(value, uniqueKey);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const key = JSON.stringify(theme);
|
|
59
|
+
if (dedupedThemes.has(key)) {
|
|
60
|
+
dedupedThemeToNames.set(key, [...dedupedThemeToNames.get(key), name]);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
dedupedThemes.set(key, theme);
|
|
64
|
+
dedupedThemeToNames.set(key, [name]);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (!themes) {
|
|
68
|
+
throw new Error(`Didn't find any themes exported or returned`);
|
|
69
|
+
}
|
|
70
|
+
const baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]);
|
|
71
|
+
const baseTypeString = `export type Theme = {
|
|
72
|
+
${baseKeys
|
|
73
|
+
.map(([k]) => {
|
|
74
|
+
return ` ${k}: string;\n`;
|
|
75
|
+
})
|
|
76
|
+
.join('')}
|
|
77
|
+
}`;
|
|
78
|
+
let out = `${baseTypeString}\n`;
|
|
79
|
+
// add in the helper function to generate a theme:
|
|
80
|
+
out += `
|
|
81
|
+
function t(a: [number, number][]) {
|
|
82
|
+
let res: Record<string,string> = {}
|
|
83
|
+
for (const [ki, vi] of a) {
|
|
84
|
+
res[ks[ki] as string] = colors[vi] as string
|
|
85
|
+
}
|
|
86
|
+
return res as Theme
|
|
87
|
+
}
|
|
88
|
+
`;
|
|
89
|
+
// add all token variables
|
|
90
|
+
out += `export const colors = [\n`;
|
|
91
|
+
let index = 0;
|
|
92
|
+
const valueToIndex = {};
|
|
93
|
+
dedupedTokens.forEach((name, value) => {
|
|
94
|
+
valueToIndex[value] = index;
|
|
95
|
+
index++;
|
|
96
|
+
out += ` '${value}',\n`;
|
|
97
|
+
});
|
|
98
|
+
out += ']\n\n';
|
|
99
|
+
// add all keys array
|
|
100
|
+
const keys = baseKeys.map(([k]) => k);
|
|
101
|
+
out += `const ks = [\n`;
|
|
102
|
+
out += keys.map((k) => `'${k}'`).join(',\n');
|
|
103
|
+
out += `]\n\n`;
|
|
104
|
+
// add all themes
|
|
105
|
+
let nameI = 0;
|
|
106
|
+
let themeTypes = `export type ThemeNames =`;
|
|
107
|
+
let exported = `export type Themes = Record<ThemeNames, Theme>\n\nexport const themes: Themes = {`;
|
|
108
|
+
dedupedThemes.forEach((theme) => {
|
|
109
|
+
nameI++;
|
|
110
|
+
const key = JSON.stringify(theme);
|
|
111
|
+
const names = dedupedThemeToNames.get(key);
|
|
112
|
+
const name = `n${nameI}`;
|
|
113
|
+
const baseTheme = `const ${name} = ${objectToJsString(theme, keys, valueToIndex)}`;
|
|
114
|
+
out += `\n${baseTheme}`;
|
|
115
|
+
names.forEach((n) => {
|
|
116
|
+
exported += `\n ${n}: ${name},`;
|
|
117
|
+
if (n.toLowerCase() === n) {
|
|
118
|
+
themeTypes += `\n | '${n}'`;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
out += `\n\n${themeTypes}\n\n${exported}\n}\n`;
|
|
123
|
+
return out;
|
|
124
|
+
}
|
|
125
|
+
function objectToJsString(obj, keys, valueToIndex) {
|
|
126
|
+
let arrItems = [];
|
|
127
|
+
for (const key in obj) {
|
|
128
|
+
const ki = keys.indexOf(key);
|
|
129
|
+
const vi = valueToIndex[obj[key]];
|
|
130
|
+
arrItems.push(`[${ki}, ${vi}]`);
|
|
131
|
+
}
|
|
132
|
+
return `t([${arrItems.join(',')}])`;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Removes a module from the cache
|
|
136
|
+
*/
|
|
137
|
+
function purgeCache(moduleName) {
|
|
138
|
+
// Traverse the cache looking for the files
|
|
139
|
+
// loaded by the specified module name
|
|
140
|
+
searchCache(moduleName, (mod) => {
|
|
141
|
+
delete need.cache[mod.id];
|
|
142
|
+
});
|
|
143
|
+
// @ts-ignore
|
|
144
|
+
if (!module.constructor || !module.constructor._pathCache) {
|
|
145
|
+
// bun doesn't have this
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
// Remove cached paths to the module.
|
|
149
|
+
// Thanks to @bentael for pointing this out.
|
|
150
|
+
// @ts-ignore
|
|
151
|
+
Object.keys(module.constructor._pathCache).forEach((cacheKey) => {
|
|
152
|
+
if (cacheKey.indexOf(moduleName) > 0) {
|
|
153
|
+
// @ts-ignore
|
|
154
|
+
delete module.constructor._pathCache[cacheKey];
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Traverses the cache to search for all the cached
|
|
160
|
+
* files of the specified module name
|
|
161
|
+
*/
|
|
162
|
+
function searchCache(moduleName, callback) {
|
|
163
|
+
// Resolve the module identified by the specified name
|
|
164
|
+
let mod = need.resolve(moduleName);
|
|
165
|
+
// Check if the module has been resolved and found within
|
|
166
|
+
// the cache
|
|
167
|
+
// @ts-ignore
|
|
168
|
+
if (mod && (mod = need.cache[mod]) !== undefined) {
|
|
169
|
+
// Recursively go over the results
|
|
170
|
+
;
|
|
171
|
+
(function traverse(mod, depth = 0) {
|
|
172
|
+
// avoid recursing too much
|
|
173
|
+
if (depth > 10)
|
|
174
|
+
return;
|
|
175
|
+
// Go over each of the module's children and
|
|
176
|
+
// traverse them
|
|
177
|
+
// @ts-ignore
|
|
178
|
+
mod.children.forEach((child) => {
|
|
179
|
+
traverse(child, depth + 1);
|
|
180
|
+
});
|
|
181
|
+
// Call the specified callback providing the
|
|
182
|
+
// found cached module
|
|
183
|
+
callback(mod);
|
|
184
|
+
})(mod);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=generate-themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-themes.js","sourceRoot":"","sources":["../../src/generate-themes.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/here.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"here.js","sourceRoot":"","sources":["../../src/here.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,CAAA"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export * from './generate-themes.js';
|
|
2
|
+
export * from './write-generate-themes.js';
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
export async function writeGeneratedThemes(hanzoguiDotDir, outPath, generatedOutput) {
|
|
3
|
+
if (!generatedOutput)
|
|
4
|
+
return;
|
|
5
|
+
const { generated } = generatedOutput;
|
|
6
|
+
if (process.env.DEBUG === 'hanzogui') {
|
|
7
|
+
console.info(`Generated themes:`, JSON.stringify(generatedOutput, null, 2));
|
|
8
|
+
}
|
|
9
|
+
const newContent = `// @ts-nocheck\n` + generated;
|
|
10
|
+
// Skip writing if contents are unchanged
|
|
11
|
+
const existingContent = await readFile(outPath, 'utf-8').catch(() => null);
|
|
12
|
+
if (existingContent === newContent) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
await writeFile(outPath, newContent);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=write-generate-themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-generate-themes.js","sourceRoot":"","sources":["../../src/write-generate-themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAItD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,cAAsB,EACtB,OAAe,EACf,eAA2D;IAE3D,IAAI,CAAC,eAAe;QAAE,OAAM;IAE5B,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAA;IAErC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,MAAM,UAAU,GAAG,kBAAkB,GAAG,SAAS,CAAA;IAEjD,yCAAyC;IACzC,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC1E,IAAI,eAAe,KAAK,UAAU,EAAE,CAAC;QACnC,OAAM;IACR,CAAC;IAED,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AACtC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanzogui/generate-themes",
|
|
3
|
-
"version": "8.3.
|
|
3
|
+
"version": "8.3.2",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"files": [
|
|
6
6
|
"src",
|
|
@@ -9,38 +9,43 @@
|
|
|
9
9
|
],
|
|
10
10
|
"type": "module",
|
|
11
11
|
"sideEffects": false,
|
|
12
|
-
"main": "dist/cjs",
|
|
13
|
-
"module": "dist/esm",
|
|
12
|
+
"main": "./dist/cjs/index.js",
|
|
13
|
+
"module": "./dist/esm/index.js",
|
|
14
14
|
"types": "./types/index.d.ts",
|
|
15
15
|
"exports": {
|
|
16
16
|
"./package.json": "./package.json",
|
|
17
17
|
".": {
|
|
18
18
|
"types": "./types/index.d.ts",
|
|
19
|
-
"react-native": "./dist/esm/index.
|
|
20
|
-
"browser": "./dist/esm/index.
|
|
21
|
-
"module": "./dist/esm/index.
|
|
22
|
-
"import": "./dist/esm/index.
|
|
23
|
-
"require": "./dist/cjs/index.
|
|
24
|
-
"default": "./dist/esm/index.
|
|
19
|
+
"react-native": "./dist/esm/index.js",
|
|
20
|
+
"browser": "./dist/esm/index.js",
|
|
21
|
+
"module": "./dist/esm/index.js",
|
|
22
|
+
"import": "./dist/esm/index.js",
|
|
23
|
+
"require": "./dist/cjs/index.js",
|
|
24
|
+
"default": "./dist/esm/index.js"
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"publishConfig": {
|
|
28
28
|
"access": "public"
|
|
29
29
|
},
|
|
30
30
|
"scripts": {
|
|
31
|
-
"build": "hanzogui-build",
|
|
31
|
+
"build": "hanzogui-build --skip-native",
|
|
32
32
|
"watch": "bun run build --watch",
|
|
33
33
|
"clean": "hanzogui-build clean",
|
|
34
34
|
"clean:build": "hanzogui-build clean:build"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@hanzogui/create-theme": "8.3.
|
|
38
|
-
"@hanzogui/theme-builder": "8.3.
|
|
39
|
-
"@hanzogui/types": "8.3.
|
|
37
|
+
"@hanzogui/create-theme": "8.3.2",
|
|
38
|
+
"@hanzogui/theme-builder": "8.3.2",
|
|
39
|
+
"@hanzogui/types": "8.3.2",
|
|
40
40
|
"esbuild-register": "^3.6.0",
|
|
41
|
-
"fs-extra": "^11.
|
|
41
|
+
"fs-extra": "^11.4.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@hanzogui/build": "8.3.
|
|
44
|
+
"@hanzogui/build": "8.3.2"
|
|
45
|
+
},
|
|
46
|
+
"repository": {
|
|
47
|
+
"type": "git",
|
|
48
|
+
"url": "git+https://github.com/hanzoai/gui.git",
|
|
49
|
+
"directory": "pkgs/core/generate-themes"
|
|
45
50
|
}
|
|
46
51
|
}
|
package/src/generate-themes.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'
|
|
1
2
|
import type { ThemeBuilder } from '@hanzogui/theme-builder'
|
|
2
3
|
import { join } from 'node:path'
|
|
4
|
+
import { url } from './here.ts'
|
|
5
|
+
|
|
6
|
+
const need = createRequire(url)
|
|
3
7
|
|
|
4
8
|
type ThemeBuilderInterceptOpts = {
|
|
5
9
|
onComplete: (result: { themeBuilder: ThemeBuilder<any> }) => void
|
|
@@ -13,7 +17,7 @@ export async function generateThemes(inputFile: string) {
|
|
|
13
17
|
if (!didRegisterOnce) {
|
|
14
18
|
didRegisterOnce = true
|
|
15
19
|
// the unregsiter does basically nothing and keeps a process running
|
|
16
|
-
|
|
20
|
+
need('esbuild-register/dist/node').register({
|
|
17
21
|
hookIgnoreNodeModules: false,
|
|
18
22
|
})
|
|
19
23
|
} else {
|
|
@@ -25,7 +29,7 @@ export async function generateThemes(inputFile: string) {
|
|
|
25
29
|
process.env.GUI_RUN_THEMEBUILDER = '1'
|
|
26
30
|
|
|
27
31
|
try {
|
|
28
|
-
const requiredThemes =
|
|
32
|
+
const requiredThemes = need(inputFilePath)
|
|
29
33
|
|
|
30
34
|
const themes =
|
|
31
35
|
requiredThemes['default'] ||
|
|
@@ -173,7 +177,7 @@ function purgeCache(moduleName) {
|
|
|
173
177
|
// Traverse the cache looking for the files
|
|
174
178
|
// loaded by the specified module name
|
|
175
179
|
searchCache(moduleName, (mod) => {
|
|
176
|
-
delete
|
|
180
|
+
delete need.cache[mod.id]
|
|
177
181
|
})
|
|
178
182
|
|
|
179
183
|
// @ts-ignore
|
|
@@ -199,12 +203,12 @@ function purgeCache(moduleName) {
|
|
|
199
203
|
*/
|
|
200
204
|
function searchCache(moduleName, callback) {
|
|
201
205
|
// Resolve the module identified by the specified name
|
|
202
|
-
let mod =
|
|
206
|
+
let mod = need.resolve(moduleName)
|
|
203
207
|
|
|
204
208
|
// Check if the module has been resolved and found within
|
|
205
209
|
// the cache
|
|
206
210
|
// @ts-ignore
|
|
207
|
-
if (mod && (mod =
|
|
211
|
+
if (mod && (mod = need.cache[mod]) !== undefined) {
|
|
208
212
|
// Recursively go over the results
|
|
209
213
|
;(function traverse(mod, depth = 0) {
|
|
210
214
|
// avoid recursing too much
|
package/src/here.cjs.ts
ADDED
package/src/here.ts
ADDED
package/src/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './generate-themes'
|
|
2
|
-
export * from './write-generate-themes'
|
|
1
|
+
export * from './generate-themes.ts'
|
|
2
|
+
export * from './write-generate-themes.ts'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { readFile, writeFile } from 'node:fs/promises'
|
|
2
2
|
|
|
3
|
-
import type { generateThemes } from './generate-themes'
|
|
3
|
+
import type { generateThemes } from './generate-themes.ts'
|
|
4
4
|
|
|
5
5
|
export async function writeGeneratedThemes(
|
|
6
6
|
hanzoguiDotDir: string,
|
|
@@ -18,10 +18,10 @@ export async function writeGeneratedThemes(
|
|
|
18
18
|
const newContent = `// @ts-nocheck\n` + generated
|
|
19
19
|
|
|
20
20
|
// Skip writing if contents are unchanged
|
|
21
|
-
const existingContent = await
|
|
21
|
+
const existingContent = await readFile(outPath, 'utf-8').catch(() => null)
|
|
22
22
|
if (existingContent === newContent) {
|
|
23
23
|
return
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
await
|
|
26
|
+
await writeFile(outPath, newContent)
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-themes.d.ts","sourceRoot":"","sources":["../src/generate-themes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-themes.d.ts","sourceRoot":"","sources":["../src/generate-themes.ts"],"names":[],"mappings":"AAaA,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM;;eAmCrD"}
|