@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.
Files changed (51) hide show
  1. package/dist/cjs/generate-themes.js +190 -0
  2. package/dist/cjs/generate-themes.js.map +1 -0
  3. package/dist/cjs/here.js +6 -0
  4. package/dist/cjs/here.js.map +1 -0
  5. package/dist/cjs/index.js +6 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/package.json +1 -0
  8. package/dist/cjs/write-generate-themes.js +20 -0
  9. package/dist/cjs/write-generate-themes.js.map +1 -0
  10. package/dist/esm/generate-themes.js +187 -0
  11. package/dist/esm/generate-themes.js.map +1 -0
  12. package/dist/esm/here.js +3 -0
  13. package/dist/esm/here.js.map +1 -0
  14. package/dist/esm/index.js +3 -3
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/write-generate-themes.js +17 -0
  17. package/dist/esm/write-generate-themes.js.map +1 -0
  18. package/package.json +20 -15
  19. package/src/generate-themes.ts +9 -5
  20. package/src/here.cjs.ts +3 -0
  21. package/src/here.ts +2 -0
  22. package/src/index.ts +2 -2
  23. package/src/write-generate-themes.ts +4 -4
  24. package/types/generate-themes.d.ts.map +1 -1
  25. package/types/here.d.ts +2 -0
  26. package/types/here.d.ts.map +1 -0
  27. package/types/index.d.ts +2 -2
  28. package/types/index.d.ts.map +1 -1
  29. package/types/write-generate-themes.d.ts +1 -1
  30. package/types/write-generate-themes.d.ts.map +1 -1
  31. package/dist/cjs/generate-themes.cjs +0 -185
  32. package/dist/cjs/generate-themes.native.js +0 -214
  33. package/dist/cjs/generate-themes.native.js.map +0 -1
  34. package/dist/cjs/index.cjs +0 -21
  35. package/dist/cjs/index.native.js +0 -24
  36. package/dist/cjs/index.native.js.map +0 -1
  37. package/dist/cjs/write-generate-themes.cjs +0 -55
  38. package/dist/cjs/write-generate-themes.native.js +0 -60
  39. package/dist/cjs/write-generate-themes.native.js.map +0 -1
  40. package/dist/esm/generate-themes.mjs +0 -160
  41. package/dist/esm/generate-themes.mjs.map +0 -1
  42. package/dist/esm/generate-themes.native.js +0 -186
  43. package/dist/esm/generate-themes.native.js.map +0 -1
  44. package/dist/esm/index.mjs +0 -3
  45. package/dist/esm/index.mjs.map +0 -1
  46. package/dist/esm/index.native.js +0 -3
  47. package/dist/esm/index.native.js.map +0 -1
  48. package/dist/esm/write-generate-themes.mjs +0 -19
  49. package/dist/esm/write-generate-themes.mjs.map +0 -1
  50. package/dist/esm/write-generate-themes.native.js +0 -21
  51. 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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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.url = void 0;
4
+ const node_url_1 = require("node:url");
5
+ exports.url = (0, node_url_1.pathToFileURL)(__filename).href;
6
+ //# sourceMappingURL=here.js.map
@@ -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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"}
@@ -0,0 +1,3 @@
1
+ // This module's own URL. A require made from it resolves from this package.
2
+ export const url = import.meta.url;
3
+ //# sourceMappingURL=here.js.map
@@ -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 "./generate-themes.mjs";
2
- export * from "./write-generate-themes.mjs";
3
- //# sourceMappingURL=index.js.map
1
+ export * from './generate-themes.js';
2
+ export * from './write-generate-themes.js';
3
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc","ignoreList":[]}
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.1",
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.native.js",
20
- "browser": "./dist/esm/index.mjs",
21
- "module": "./dist/esm/index.mjs",
22
- "import": "./dist/esm/index.mjs",
23
- "require": "./dist/cjs/index.cjs",
24
- "default": "./dist/esm/index.mjs"
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.1",
38
- "@hanzogui/theme-builder": "8.3.1",
39
- "@hanzogui/types": "8.3.1",
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.2.0"
41
+ "fs-extra": "^11.4.0"
42
42
  },
43
43
  "devDependencies": {
44
- "@hanzogui/build": "8.3.1"
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
  }
@@ -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
- require('esbuild-register/dist/node').register({
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 = require(inputFilePath)
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 require.cache[mod.id]
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 = require.resolve(moduleName)
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 = require.cache[mod]) !== undefined) {
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
@@ -0,0 +1,3 @@
1
+ import { pathToFileURL } from 'node:url'
2
+
3
+ export const url = pathToFileURL(__filename).href
package/src/here.ts ADDED
@@ -0,0 +1,2 @@
1
+ // This module's own URL. A require made from it resolves from this package.
2
+ export const url = import.meta.url
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 * as fs from 'fs-extra'
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 fs.readFile(outPath, 'utf-8').catch(() => null)
21
+ const existingContent = await readFile(outPath, 'utf-8').catch(() => null)
22
22
  if (existingContent === newContent) {
23
23
  return
24
24
  }
25
25
 
26
- await fs.writeFile(outPath, newContent)
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":"AASA,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM;;eAmCrD"}
1
+ {"version":3,"file":"generate-themes.d.ts","sourceRoot":"","sources":["../src/generate-themes.ts"],"names":[],"mappings":"AAaA,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM;;eAmCrD"}