@tamagui/generate-themes 1.43.16 → 1.44.0

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.
@@ -33,10 +33,12 @@ __export(generate_themes_exports, {
33
33
  module.exports = __toCommonJS(generate_themes_exports);
34
34
  var import_module = __toESM(require("module"));
35
35
  var import_path = require("path");
36
+ const ogRequire = import_module.default.prototype.require;
36
37
  async function generateThemes(inputFile) {
37
- require("esbuild-register/dist/node").register();
38
+ const { unregister } = require("esbuild-register/dist/node").register();
39
+ const inputFilePath = inputFile[0] === "." ? (0, import_path.join)(process.cwd(), inputFile) : inputFile;
40
+ purgeCache(inputFilePath);
38
41
  let promise = null;
39
- const ogRequire = import_module.default.prototype.require;
40
42
  import_module.default.prototype.require = function(id) {
41
43
  const out = ogRequire.apply(this, arguments);
42
44
  if (id === "@tamagui/create-theme/theme-builder" || id === "@tamagui/theme-builder") {
@@ -55,7 +57,6 @@ async function generateThemes(inputFile) {
55
57
  return out;
56
58
  };
57
59
  try {
58
- const inputFilePath = inputFile[0] === "." ? (0, import_path.join)(process.cwd(), inputFile) : inputFile;
59
60
  const requiredThemes = require(inputFilePath);
60
61
  const themes = requiredThemes["default"] || requiredThemes["themes"];
61
62
  const generatedThemes = generatedThemesToTypescript(themes);
@@ -64,18 +65,25 @@ async function generateThemes(inputFile) {
64
65
  generated: generatedThemes,
65
66
  state: themeBuilder == null ? void 0 : themeBuilder.state
66
67
  };
68
+ } catch (err) {
69
+ console.warn(` \u26A0\uFE0F Error running theme builder: ${err}`, err == null ? void 0 : err["stack"]);
67
70
  } finally {
68
71
  import_module.default.prototype.require = ogRequire;
72
+ unregister();
69
73
  }
70
74
  }
71
75
  const dedupedTokens = /* @__PURE__ */ new Map();
72
76
  function generatedThemesToTypescript(themes) {
73
77
  const dedupedThemes = /* @__PURE__ */ new Map();
74
78
  const dedupedThemeToNames = /* @__PURE__ */ new Map();
79
+ let i = 0;
75
80
  for (const name in themes) {
81
+ i++;
76
82
  const theme = themes[name];
83
+ let j = 0;
77
84
  for (const [key2, value] of Object.entries(theme)) {
78
- const uniqueKey = `${name}_${key2}`;
85
+ i++;
86
+ const uniqueKey = `t${i}${j}`;
79
87
  if (!dedupedTokens.has(value)) {
80
88
  dedupedTokens.set(value, uniqueKey);
81
89
  }
@@ -88,44 +96,70 @@ function generatedThemesToTypescript(themes) {
88
96
  dedupedThemeToNames.set(key, [name]);
89
97
  }
90
98
  }
99
+ const baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]);
91
100
  const baseTypeString = `type Theme = {
92
- ${Object.entries(themes.light || themes[Object.keys(themes)[0]]).map(([k]) => {
101
+ ${baseKeys.map(([k]) => {
93
102
  return ` ${k}: string;
94
103
  `;
95
104
  }).join("")}
96
105
  }`;
97
- let themesString = `${baseTypeString}
106
+ let out = `${baseTypeString}
98
107
  `;
99
- dedupedTokens.forEach((names, value) => {
100
- themesString += `const ${names} = '${value}'
108
+ out += `
109
+ function t(a) {
110
+ let res = {}
111
+ for (const [ki, vi] of a) {
112
+ res[ks[ki]] = vs[vi]
113
+ }
114
+ return res
115
+ }
116
+ `;
117
+ out += `const vs = [
118
+ `;
119
+ let index = 0;
120
+ const valueToIndex = {};
121
+ dedupedTokens.forEach((name, value) => {
122
+ valueToIndex[value] = index;
123
+ index++;
124
+ out += ` '${value}',
101
125
  `;
102
126
  });
103
- themesString += "\n";
127
+ out += "]\n\n";
128
+ const keys = baseKeys.map(([k]) => k);
129
+ out += `const ks = [
130
+ `;
131
+ out += keys.map((k) => `'${k}'`).join(",\n");
132
+ out += `]
133
+
134
+ `;
135
+ let nameI = 0;
104
136
  dedupedThemes.forEach((theme) => {
137
+ nameI++;
105
138
  const key = JSON.stringify(theme);
106
- const [baseName, ...restNames] = dedupedThemeToNames.get(key);
107
- const baseTheme = `export const ${baseName} = ${objectToJsString(theme)} as Theme`;
108
- themesString += `
139
+ const names = dedupedThemeToNames.get(key);
140
+ const name = `n${nameI}`;
141
+ const baseTheme = `export const ${name} = ${objectToJsString(
142
+ theme,
143
+ keys,
144
+ valueToIndex
145
+ )} as Theme`;
146
+ out += `
109
147
  ${baseTheme}`;
110
- if (restNames.length) {
111
- const duplicateThemes = restNames.map(
112
- (name) => `export const ${name} = ${baseName} as Theme`
113
- );
114
- themesString += `
148
+ const duplicateThemes = names.map((n) => `export const ${n} = ${name} as Theme`);
149
+ out += `
115
150
 
116
151
  ` + duplicateThemes.join("\n");
117
- }
118
152
  });
119
- return themesString;
153
+ return out;
120
154
  }
121
- function objectToJsString(obj, indent = 4) {
122
- const whitespace = new Array(indent).fill(" ").join("");
123
- return `{
124
- ${Object.entries(obj).map(([k, v]) => {
125
- const variableName = dedupedTokens.get(v);
126
- return `${whitespace}${k}: ${variableName}`;
127
- }).join(",\n")}
128
- }`;
155
+ function objectToJsString(obj, keys, valueToIndex) {
156
+ let arrItems = [];
157
+ for (const key in obj) {
158
+ const ki = keys.indexOf(key);
159
+ const vi = valueToIndex[obj[key]];
160
+ arrItems.push(`[${ki}, ${vi}]`);
161
+ }
162
+ return `t([${arrItems.join(",")}])`;
129
163
  }
130
164
  function createThemeIntercept(createThemeExport, themeBuilderInterceptOpts) {
131
165
  return new Proxy(createThemeExport, {
@@ -156,6 +190,28 @@ function themeBuilderIntercept(themeBuilder, themeBuilderInterceptOpts) {
156
190
  }
157
191
  });
158
192
  }
193
+ function purgeCache(moduleName) {
194
+ searchCache(moduleName, function(mod) {
195
+ delete require.cache[mod.id];
196
+ });
197
+ Object.keys(module.constructor._pathCache).forEach(function(cacheKey) {
198
+ if (cacheKey.indexOf(moduleName) > 0) {
199
+ delete module.constructor._pathCache[cacheKey];
200
+ }
201
+ });
202
+ }
203
+ function searchCache(moduleName, callback) {
204
+ let mod = require.resolve(moduleName);
205
+ if (mod && (mod = require.cache[mod]) !== void 0) {
206
+ ;
207
+ (function traverse(mod2) {
208
+ mod2.children.forEach(function(child) {
209
+ traverse(child);
210
+ });
211
+ callback(mod2);
212
+ })(mod);
213
+ }
214
+ }
159
215
  // Annotate the CommonJS export names for ESM import in node:
160
216
  0 && (module.exports = {
161
217
  generateThemes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/generate-themes.ts"],
4
- "mappings": "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",
5
- "names": ["Module", "key", "target"]
4
+ "mappings": "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",
5
+ "names": ["Module", "key", "target", "mod"]
6
6
  }
@@ -34,6 +34,8 @@ module.exports = __toCommonJS(write_generate_themes_exports);
34
34
  var import_path = require("path");
35
35
  var fs = __toESM(require("fs-extra"));
36
36
  async function writeGeneratedThemes(tamaguiDotDir, outPath, generatedOutput) {
37
+ if (!generatedOutput)
38
+ return;
37
39
  const { generated, state } = generatedOutput;
38
40
  const tamaguiDotDirExists = await fs.pathExists(tamaguiDotDir);
39
41
  const themeBuilderStatePath = (0, import_path.join)(tamaguiDotDir, `theme-builder.json`);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/write-generate-themes.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAqB;AAErB,SAAoB;AAIpB,eAAsB,qBACpB,eACA,SACA,iBACA;AACA,QAAM,EAAE,WAAW,MAAM,IAAI;AAE7B,QAAM,sBAAsB,MAAM,GAAG,WAAW,aAAa;AAC7D,QAAM,4BAAwB,kBAAK,eAAe,oBAAoB;AAEtE,MAAI,QAAQ,IAAI,UAAU,WAAW;AAEnC,YAAQ,IAAI,qBAAqB,KAAK,UAAU,iBAAiB,MAAM,CAAC,CAAC;AAEzE,YAAQ,IAAI,qBAAqB,EAAE,SAAS,sBAAsB,CAAC;AAAA,EACrE;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,GAAG,UAAU,SAAS,SAAS;AAAA,IAC/B,SAAS,sBACL,GAAG,UAAU,uBAAuB,KAAK,UAAU,KAAK,CAAC,IACzD;AAAA,EACN,CAAC;AACH;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAqB;AAErB,SAAoB;AAIpB,eAAsB,qBACpB,eACA,SACA,iBACA;AACA,MAAI,CAAC;AAAiB;AAEtB,QAAM,EAAE,WAAW,MAAM,IAAI;AAE7B,QAAM,sBAAsB,MAAM,GAAG,WAAW,aAAa;AAC7D,QAAM,4BAAwB,kBAAK,eAAe,oBAAoB;AAEtE,MAAI,QAAQ,IAAI,UAAU,WAAW;AAEnC,YAAQ,IAAI,qBAAqB,KAAK,UAAU,iBAAiB,MAAM,CAAC,CAAC;AAEzE,YAAQ,IAAI,qBAAqB,EAAE,SAAS,sBAAsB,CAAC;AAAA,EACrE;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,GAAG,UAAU,SAAS,SAAS;AAAA,IAC/B,SAAS,sBACL,GAAG,UAAU,uBAAuB,KAAK,UAAU,KAAK,CAAC,IACzD;AAAA,EACN,CAAC;AACH;",
5
5
  "names": []
6
6
  }
@@ -1,9 +1,11 @@
1
1
  import Module from "module";
2
2
  import { join } from "path";
3
+ const ogRequire = Module.prototype.require;
3
4
  async function generateThemes(inputFile) {
4
- require("esbuild-register/dist/node").register();
5
+ const { unregister } = require("esbuild-register/dist/node").register();
6
+ const inputFilePath = inputFile[0] === "." ? join(process.cwd(), inputFile) : inputFile;
7
+ purgeCache(inputFilePath);
5
8
  let promise = null;
6
- const ogRequire = Module.prototype.require;
7
9
  Module.prototype.require = function(id) {
8
10
  const out = ogRequire.apply(this, arguments);
9
11
  if (id === "@tamagui/create-theme/theme-builder" || id === "@tamagui/theme-builder") {
@@ -22,7 +24,6 @@ async function generateThemes(inputFile) {
22
24
  return out;
23
25
  };
24
26
  try {
25
- const inputFilePath = inputFile[0] === "." ? join(process.cwd(), inputFile) : inputFile;
26
27
  const requiredThemes = require(inputFilePath);
27
28
  const themes = requiredThemes["default"] || requiredThemes["themes"];
28
29
  const generatedThemes = generatedThemesToTypescript(themes);
@@ -31,18 +32,25 @@ async function generateThemes(inputFile) {
31
32
  generated: generatedThemes,
32
33
  state: themeBuilder == null ? void 0 : themeBuilder.state
33
34
  };
35
+ } catch (err) {
36
+ console.warn(` \u26A0\uFE0F Error running theme builder: ${err}`, err == null ? void 0 : err["stack"]);
34
37
  } finally {
35
38
  Module.prototype.require = ogRequire;
39
+ unregister();
36
40
  }
37
41
  }
38
42
  const dedupedTokens = /* @__PURE__ */ new Map();
39
43
  function generatedThemesToTypescript(themes) {
40
44
  const dedupedThemes = /* @__PURE__ */ new Map();
41
45
  const dedupedThemeToNames = /* @__PURE__ */ new Map();
46
+ let i = 0;
42
47
  for (const name in themes) {
48
+ i++;
43
49
  const theme = themes[name];
50
+ let j = 0;
44
51
  for (const [key2, value] of Object.entries(theme)) {
45
- const uniqueKey = `${name}_${key2}`;
52
+ i++;
53
+ const uniqueKey = `t${i}${j}`;
46
54
  if (!dedupedTokens.has(value)) {
47
55
  dedupedTokens.set(value, uniqueKey);
48
56
  }
@@ -55,44 +63,70 @@ function generatedThemesToTypescript(themes) {
55
63
  dedupedThemeToNames.set(key, [name]);
56
64
  }
57
65
  }
66
+ const baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]);
58
67
  const baseTypeString = `type Theme = {
59
- ${Object.entries(themes.light || themes[Object.keys(themes)[0]]).map(([k]) => {
68
+ ${baseKeys.map(([k]) => {
60
69
  return ` ${k}: string;
61
70
  `;
62
71
  }).join("")}
63
72
  }`;
64
- let themesString = `${baseTypeString}
73
+ let out = `${baseTypeString}
65
74
  `;
66
- dedupedTokens.forEach((names, value) => {
67
- themesString += `const ${names} = '${value}'
75
+ out += `
76
+ function t(a) {
77
+ let res = {}
78
+ for (const [ki, vi] of a) {
79
+ res[ks[ki]] = vs[vi]
80
+ }
81
+ return res
82
+ }
83
+ `;
84
+ out += `const vs = [
85
+ `;
86
+ let index = 0;
87
+ const valueToIndex = {};
88
+ dedupedTokens.forEach((name, value) => {
89
+ valueToIndex[value] = index;
90
+ index++;
91
+ out += ` '${value}',
68
92
  `;
69
93
  });
70
- themesString += "\n";
94
+ out += "]\n\n";
95
+ const keys = baseKeys.map(([k]) => k);
96
+ out += `const ks = [
97
+ `;
98
+ out += keys.map((k) => `'${k}'`).join(",\n");
99
+ out += `]
100
+
101
+ `;
102
+ let nameI = 0;
71
103
  dedupedThemes.forEach((theme) => {
104
+ nameI++;
72
105
  const key = JSON.stringify(theme);
73
- const [baseName, ...restNames] = dedupedThemeToNames.get(key);
74
- const baseTheme = `export const ${baseName} = ${objectToJsString(theme)} as Theme`;
75
- themesString += `
106
+ const names = dedupedThemeToNames.get(key);
107
+ const name = `n${nameI}`;
108
+ const baseTheme = `export const ${name} = ${objectToJsString(
109
+ theme,
110
+ keys,
111
+ valueToIndex
112
+ )} as Theme`;
113
+ out += `
76
114
  ${baseTheme}`;
77
- if (restNames.length) {
78
- const duplicateThemes = restNames.map(
79
- (name) => `export const ${name} = ${baseName} as Theme`
80
- );
81
- themesString += `
115
+ const duplicateThemes = names.map((n) => `export const ${n} = ${name} as Theme`);
116
+ out += `
82
117
 
83
118
  ` + duplicateThemes.join("\n");
84
- }
85
119
  });
86
- return themesString;
120
+ return out;
87
121
  }
88
- function objectToJsString(obj, indent = 4) {
89
- const whitespace = new Array(indent).fill(" ").join("");
90
- return `{
91
- ${Object.entries(obj).map(([k, v]) => {
92
- const variableName = dedupedTokens.get(v);
93
- return `${whitespace}${k}: ${variableName}`;
94
- }).join(",\n")}
95
- }`;
122
+ function objectToJsString(obj, keys, valueToIndex) {
123
+ let arrItems = [];
124
+ for (const key in obj) {
125
+ const ki = keys.indexOf(key);
126
+ const vi = valueToIndex[obj[key]];
127
+ arrItems.push(`[${ki}, ${vi}]`);
128
+ }
129
+ return `t([${arrItems.join(",")}])`;
96
130
  }
97
131
  function createThemeIntercept(createThemeExport, themeBuilderInterceptOpts) {
98
132
  return new Proxy(createThemeExport, {
@@ -123,6 +157,28 @@ function themeBuilderIntercept(themeBuilder, themeBuilderInterceptOpts) {
123
157
  }
124
158
  });
125
159
  }
160
+ function purgeCache(moduleName) {
161
+ searchCache(moduleName, function(mod) {
162
+ delete require.cache[mod.id];
163
+ });
164
+ Object.keys(module.constructor._pathCache).forEach(function(cacheKey) {
165
+ if (cacheKey.indexOf(moduleName) > 0) {
166
+ delete module.constructor._pathCache[cacheKey];
167
+ }
168
+ });
169
+ }
170
+ function searchCache(moduleName, callback) {
171
+ let mod = require.resolve(moduleName);
172
+ if (mod && (mod = require.cache[mod]) !== void 0) {
173
+ ;
174
+ (function traverse(mod2) {
175
+ mod2.children.forEach(function(child) {
176
+ traverse(child);
177
+ });
178
+ callback(mod2);
179
+ })(mod);
180
+ }
181
+ }
126
182
  export {
127
183
  generateThemes
128
184
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/generate-themes.ts"],
4
- "mappings": "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",
5
- "names": ["key", "target"]
4
+ "mappings": "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",
5
+ "names": ["key", "target", "mod"]
6
6
  }
@@ -1,9 +1,11 @@
1
1
  import Module from "module";
2
2
  import { join } from "path";
3
+ const ogRequire = Module.prototype.require;
3
4
  async function generateThemes(inputFile) {
4
- require("esbuild-register/dist/node").register();
5
+ const { unregister } = require("esbuild-register/dist/node").register();
6
+ const inputFilePath = inputFile[0] === "." ? join(process.cwd(), inputFile) : inputFile;
7
+ purgeCache(inputFilePath);
5
8
  let promise = null;
6
- const ogRequire = Module.prototype.require;
7
9
  Module.prototype.require = function(id) {
8
10
  const out = ogRequire.apply(this, arguments);
9
11
  if (id === "@tamagui/create-theme/theme-builder" || id === "@tamagui/theme-builder") {
@@ -22,7 +24,6 @@ async function generateThemes(inputFile) {
22
24
  return out;
23
25
  };
24
26
  try {
25
- const inputFilePath = inputFile[0] === "." ? join(process.cwd(), inputFile) : inputFile;
26
27
  const requiredThemes = require(inputFilePath);
27
28
  const themes = requiredThemes["default"] || requiredThemes["themes"];
28
29
  const generatedThemes = generatedThemesToTypescript(themes);
@@ -31,18 +32,25 @@ async function generateThemes(inputFile) {
31
32
  generated: generatedThemes,
32
33
  state: themeBuilder == null ? void 0 : themeBuilder.state
33
34
  };
35
+ } catch (err) {
36
+ console.warn(` \u26A0\uFE0F Error running theme builder: ${err}`, err == null ? void 0 : err["stack"]);
34
37
  } finally {
35
38
  Module.prototype.require = ogRequire;
39
+ unregister();
36
40
  }
37
41
  }
38
42
  const dedupedTokens = /* @__PURE__ */ new Map();
39
43
  function generatedThemesToTypescript(themes) {
40
44
  const dedupedThemes = /* @__PURE__ */ new Map();
41
45
  const dedupedThemeToNames = /* @__PURE__ */ new Map();
46
+ let i = 0;
42
47
  for (const name in themes) {
48
+ i++;
43
49
  const theme = themes[name];
50
+ let j = 0;
44
51
  for (const [key2, value] of Object.entries(theme)) {
45
- const uniqueKey = `${name}_${key2}`;
52
+ i++;
53
+ const uniqueKey = `t${i}${j}`;
46
54
  if (!dedupedTokens.has(value)) {
47
55
  dedupedTokens.set(value, uniqueKey);
48
56
  }
@@ -55,44 +63,70 @@ function generatedThemesToTypescript(themes) {
55
63
  dedupedThemeToNames.set(key, [name]);
56
64
  }
57
65
  }
66
+ const baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]);
58
67
  const baseTypeString = `type Theme = {
59
- ${Object.entries(themes.light || themes[Object.keys(themes)[0]]).map(([k]) => {
68
+ ${baseKeys.map(([k]) => {
60
69
  return ` ${k}: string;
61
70
  `;
62
71
  }).join("")}
63
72
  }`;
64
- let themesString = `${baseTypeString}
73
+ let out = `${baseTypeString}
65
74
  `;
66
- dedupedTokens.forEach((names, value) => {
67
- themesString += `const ${names} = '${value}'
75
+ out += `
76
+ function t(a) {
77
+ let res = {}
78
+ for (const [ki, vi] of a) {
79
+ res[ks[ki]] = vs[vi]
80
+ }
81
+ return res
82
+ }
83
+ `;
84
+ out += `const vs = [
85
+ `;
86
+ let index = 0;
87
+ const valueToIndex = {};
88
+ dedupedTokens.forEach((name, value) => {
89
+ valueToIndex[value] = index;
90
+ index++;
91
+ out += ` '${value}',
68
92
  `;
69
93
  });
70
- themesString += "\n";
94
+ out += "]\n\n";
95
+ const keys = baseKeys.map(([k]) => k);
96
+ out += `const ks = [
97
+ `;
98
+ out += keys.map((k) => `'${k}'`).join(",\n");
99
+ out += `]
100
+
101
+ `;
102
+ let nameI = 0;
71
103
  dedupedThemes.forEach((theme) => {
104
+ nameI++;
72
105
  const key = JSON.stringify(theme);
73
- const [baseName, ...restNames] = dedupedThemeToNames.get(key);
74
- const baseTheme = `export const ${baseName} = ${objectToJsString(theme)} as Theme`;
75
- themesString += `
106
+ const names = dedupedThemeToNames.get(key);
107
+ const name = `n${nameI}`;
108
+ const baseTheme = `export const ${name} = ${objectToJsString(
109
+ theme,
110
+ keys,
111
+ valueToIndex
112
+ )} as Theme`;
113
+ out += `
76
114
  ${baseTheme}`;
77
- if (restNames.length) {
78
- const duplicateThemes = restNames.map(
79
- (name) => `export const ${name} = ${baseName} as Theme`
80
- );
81
- themesString += `
115
+ const duplicateThemes = names.map((n) => `export const ${n} = ${name} as Theme`);
116
+ out += `
82
117
 
83
118
  ` + duplicateThemes.join("\n");
84
- }
85
119
  });
86
- return themesString;
120
+ return out;
87
121
  }
88
- function objectToJsString(obj, indent = 4) {
89
- const whitespace = new Array(indent).fill(" ").join("");
90
- return `{
91
- ${Object.entries(obj).map(([k, v]) => {
92
- const variableName = dedupedTokens.get(v);
93
- return `${whitespace}${k}: ${variableName}`;
94
- }).join(",\n")}
95
- }`;
122
+ function objectToJsString(obj, keys, valueToIndex) {
123
+ let arrItems = [];
124
+ for (const key in obj) {
125
+ const ki = keys.indexOf(key);
126
+ const vi = valueToIndex[obj[key]];
127
+ arrItems.push(`[${ki}, ${vi}]`);
128
+ }
129
+ return `t([${arrItems.join(",")}])`;
96
130
  }
97
131
  function createThemeIntercept(createThemeExport, themeBuilderInterceptOpts) {
98
132
  return new Proxy(createThemeExport, {
@@ -123,6 +157,28 @@ function themeBuilderIntercept(themeBuilder, themeBuilderInterceptOpts) {
123
157
  }
124
158
  });
125
159
  }
160
+ function purgeCache(moduleName) {
161
+ searchCache(moduleName, function(mod) {
162
+ delete require.cache[mod.id];
163
+ });
164
+ Object.keys(module.constructor._pathCache).forEach(function(cacheKey) {
165
+ if (cacheKey.indexOf(moduleName) > 0) {
166
+ delete module.constructor._pathCache[cacheKey];
167
+ }
168
+ });
169
+ }
170
+ function searchCache(moduleName, callback) {
171
+ let mod = require.resolve(moduleName);
172
+ if (mod && (mod = require.cache[mod]) !== void 0) {
173
+ ;
174
+ (function traverse(mod2) {
175
+ mod2.children.forEach(function(child) {
176
+ traverse(child);
177
+ });
178
+ callback(mod2);
179
+ })(mod);
180
+ }
181
+ }
126
182
  export {
127
183
  generateThemes
128
184
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/generate-themes.ts"],
4
- "mappings": "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",
5
- "names": ["key", "target"]
4
+ "mappings": "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",
5
+ "names": ["key", "target", "mod"]
6
6
  }
@@ -1,6 +1,8 @@
1
1
  import { join } from "path";
2
2
  import * as fs from "fs-extra";
3
3
  async function writeGeneratedThemes(tamaguiDotDir, outPath, generatedOutput) {
4
+ if (!generatedOutput)
5
+ return;
4
6
  const { generated, state } = generatedOutput;
5
7
  const tamaguiDotDirExists = await fs.pathExists(tamaguiDotDir);
6
8
  const themeBuilderStatePath = join(tamaguiDotDir, `theme-builder.json`);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/write-generate-themes.ts"],
4
- "mappings": "AAAA,SAAS,YAAY;AAErB,YAAY,QAAQ;AAIpB,eAAsB,qBACpB,eACA,SACA,iBACA;AACA,QAAM,EAAE,WAAW,MAAM,IAAI;AAE7B,QAAM,sBAAsB,MAAM,GAAG,WAAW,aAAa;AAC7D,QAAM,wBAAwB,KAAK,eAAe,oBAAoB;AAEtE,MAAI,QAAQ,IAAI,UAAU,WAAW;AAEnC,YAAQ,IAAI,qBAAqB,KAAK,UAAU,iBAAiB,MAAM,CAAC,CAAC;AAEzE,YAAQ,IAAI,qBAAqB,EAAE,SAAS,sBAAsB,CAAC;AAAA,EACrE;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,GAAG,UAAU,SAAS,SAAS;AAAA,IAC/B,SAAS,sBACL,GAAG,UAAU,uBAAuB,KAAK,UAAU,KAAK,CAAC,IACzD;AAAA,EACN,CAAC;AACH;",
4
+ "mappings": "AAAA,SAAS,YAAY;AAErB,YAAY,QAAQ;AAIpB,eAAsB,qBACpB,eACA,SACA,iBACA;AACA,MAAI,CAAC;AAAiB;AAEtB,QAAM,EAAE,WAAW,MAAM,IAAI;AAE7B,QAAM,sBAAsB,MAAM,GAAG,WAAW,aAAa;AAC7D,QAAM,wBAAwB,KAAK,eAAe,oBAAoB;AAEtE,MAAI,QAAQ,IAAI,UAAU,WAAW;AAEnC,YAAQ,IAAI,qBAAqB,KAAK,UAAU,iBAAiB,MAAM,CAAC,CAAC;AAEzE,YAAQ,IAAI,qBAAqB,EAAE,SAAS,sBAAsB,CAAC;AAAA,EACrE;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,GAAG,UAAU,SAAS,SAAS;AAAA,IAC/B,SAAS,sBACL,GAAG,UAAU,uBAAuB,KAAK,UAAU,KAAK,CAAC,IACzD;AAAA,EACN,CAAC;AACH;",
5
5
  "names": []
6
6
  }
@@ -1,6 +1,8 @@
1
1
  import { join } from "path";
2
2
  import * as fs from "fs-extra";
3
3
  async function writeGeneratedThemes(tamaguiDotDir, outPath, generatedOutput) {
4
+ if (!generatedOutput)
5
+ return;
4
6
  const { generated, state } = generatedOutput;
5
7
  const tamaguiDotDirExists = await fs.pathExists(tamaguiDotDir);
6
8
  const themeBuilderStatePath = join(tamaguiDotDir, `theme-builder.json`);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/write-generate-themes.ts"],
4
- "mappings": "AAAA,SAAS,YAAY;AAErB,YAAY,QAAQ;AAIpB,eAAsB,qBACpB,eACA,SACA,iBACA;AACA,QAAM,EAAE,WAAW,MAAM,IAAI;AAE7B,QAAM,sBAAsB,MAAM,GAAG,WAAW,aAAa;AAC7D,QAAM,wBAAwB,KAAK,eAAe,oBAAoB;AAEtE,MAAI,QAAQ,IAAI,UAAU,WAAW;AAEnC,YAAQ,IAAI,qBAAqB,KAAK,UAAU,iBAAiB,MAAM,CAAC,CAAC;AAEzE,YAAQ,IAAI,qBAAqB,EAAE,SAAS,sBAAsB,CAAC;AAAA,EACrE;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,GAAG,UAAU,SAAS,SAAS;AAAA,IAC/B,SAAS,sBACL,GAAG,UAAU,uBAAuB,KAAK,UAAU,KAAK,CAAC,IACzD;AAAA,EACN,CAAC;AACH;",
4
+ "mappings": "AAAA,SAAS,YAAY;AAErB,YAAY,QAAQ;AAIpB,eAAsB,qBACpB,eACA,SACA,iBACA;AACA,MAAI,CAAC;AAAiB;AAEtB,QAAM,EAAE,WAAW,MAAM,IAAI;AAE7B,QAAM,sBAAsB,MAAM,GAAG,WAAW,aAAa;AAC7D,QAAM,wBAAwB,KAAK,eAAe,oBAAoB;AAEtE,MAAI,QAAQ,IAAI,UAAU,WAAW;AAEnC,YAAQ,IAAI,qBAAqB,KAAK,UAAU,iBAAiB,MAAM,CAAC,CAAC;AAEzE,YAAQ,IAAI,qBAAqB,EAAE,SAAS,sBAAsB,CAAC;AAAA,EACrE;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,GAAG,UAAU,SAAS,SAAS;AAAA,IAC/B,SAAS,sBACL,GAAG,UAAU,uBAAuB,KAAK,UAAU,KAAK,CAAC,IACzD;AAAA,EACN,CAAC;AACH;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/generate-themes",
3
- "version": "1.43.16",
3
+ "version": "1.44.0",
4
4
  "source": "src/index.ts",
5
5
  "types": "./types/index.d.ts",
6
6
  "main": "dist/cjs",
@@ -28,12 +28,12 @@
28
28
  "clean:build": "tamagui-build clean:build"
29
29
  },
30
30
  "dependencies": {
31
- "@tamagui/create-theme": "1.43.16",
32
- "@tamagui/types": "1.43.16",
31
+ "@tamagui/create-theme": "1.44.0",
32
+ "@tamagui/types": "1.44.0",
33
33
  "esbuild-register": "^3.4.2",
34
34
  "fs-extra": "^11.1.0"
35
35
  },
36
36
  "devDependencies": {
37
- "@tamagui/build": "1.43.16"
37
+ "@tamagui/build": "1.44.0"
38
38
  }
39
39
  }
@@ -7,16 +7,21 @@ type ThemeBuilderInterceptOpts = {
7
7
  onComplete: (result: { themeBuilder: ThemeBuilder<any> }) => void
8
8
  }
9
9
 
10
+ const ogRequire = Module.prototype.require
11
+
10
12
  export async function generateThemes(inputFile: string) {
11
- require('esbuild-register/dist/node').register()
13
+ const { unregister } = require('esbuild-register/dist/node').register()
14
+
15
+ const inputFilePath = inputFile[0] === '.' ? join(process.cwd(), inputFile) : inputFile
16
+ purgeCache(inputFilePath)
12
17
 
13
18
  let promise: Promise<null | ThemeBuilder<any>> | null = null as any
14
19
 
15
- const ogRequire = Module.prototype.require
16
20
  // @ts-ignore
17
21
  Module.prototype.require = function (id) {
18
22
  // @ts-ignore
19
23
  const out = ogRequire.apply(this, arguments)
24
+
20
25
  if (id === '@tamagui/create-theme/theme-builder' || id === '@tamagui/theme-builder') {
21
26
  if (!promise) {
22
27
  let resolve: Function
@@ -34,8 +39,6 @@ export async function generateThemes(inputFile: string) {
34
39
  }
35
40
 
36
41
  try {
37
- const inputFilePath =
38
- inputFile[0] === '.' ? join(process.cwd(), inputFile) : inputFile
39
42
  const requiredThemes = require(inputFilePath)
40
43
  const themes = requiredThemes['default'] || requiredThemes['themes']
41
44
  const generatedThemes = generatedThemesToTypescript(themes)
@@ -44,8 +47,11 @@ export async function generateThemes(inputFile: string) {
44
47
  generated: generatedThemes,
45
48
  state: themeBuilder?.state,
46
49
  }
50
+ } catch (err) {
51
+ console.warn(` ⚠️ Error running theme builder: ${err}`, err?.['stack'])
47
52
  } finally {
48
53
  Module.prototype.require = ogRequire
54
+ unregister()
49
55
  }
50
56
  }
51
57
 
@@ -58,12 +64,17 @@ function generatedThemesToTypescript(themes: Record<string, any>) {
58
64
  const dedupedThemes = new Map<string, Object>()
59
65
  const dedupedThemeToNames = new Map<string, string[]>()
60
66
 
67
+ let i = 0
61
68
  for (const name in themes) {
69
+ i++
70
+
62
71
  const theme: Record<string, string> = themes[name]
63
72
 
64
73
  // go through all tokens in current theme and add the new values to dedupedTokens map
74
+ let j = 0
65
75
  for (const [key, value] of Object.entries(theme)) {
66
- const uniqueKey = `${name}_${key}`
76
+ i++
77
+ const uniqueKey = `t${i}${j}`
67
78
  if (!dedupedTokens.has(value)) {
68
79
  dedupedTokens.set(value, uniqueKey)
69
80
  }
@@ -78,50 +89,81 @@ function generatedThemesToTypescript(themes: Record<string, any>) {
78
89
  }
79
90
  }
80
91
 
92
+ const baseKeys = Object.entries(themes.light || themes[Object.keys(themes)[0]]) as [
93
+ string,
94
+ string
95
+ ][]
96
+
81
97
  const baseTypeString = `type Theme = {
82
- ${Object.entries(themes.light || themes[Object.keys(themes)[0]])
98
+ ${baseKeys
83
99
  .map(([k]) => {
84
100
  return ` ${k}: string;\n`
85
101
  })
86
102
  .join('')}
87
103
  }`
88
104
 
89
- let themesString = `${baseTypeString}\n`
105
+ let out = `${baseTypeString}\n`
90
106
 
91
- // add all token variables
107
+ // add in the helper function to generate a theme:
108
+ out += `
109
+ function t(a) {
110
+ let res = {}
111
+ for (const [ki, vi] of a) {
112
+ res[ks[ki]] = vs[vi]
113
+ }
114
+ return res
115
+ }
116
+ `
92
117
 
93
- dedupedTokens.forEach((names, value) => {
94
- themesString += `const ${names} = '${value}'\n`
118
+ // add all token variables
119
+ out += `const vs = [\n`
120
+ let index = 0
121
+ const valueToIndex = {}
122
+ dedupedTokens.forEach((name, value) => {
123
+ valueToIndex[value] = index
124
+ index++
125
+ out += ` '${value}',\n`
95
126
  })
96
- themesString += '\n'
127
+ out += ']\n\n'
128
+
129
+ // add all keys array
130
+ const keys = baseKeys.map(([k]) => k)
131
+ out += `const ks = [\n`
132
+ out += keys.map((k) => `'${k}'`).join(',\n')
133
+ out += `]\n\n`
97
134
 
135
+ // add all themes
136
+ let nameI = 0
98
137
  dedupedThemes.forEach((theme) => {
138
+ nameI++
99
139
  const key = JSON.stringify(theme)
100
- const [baseName, ...restNames] = dedupedThemeToNames.get(key)!
101
- const baseTheme = `export const ${baseName} = ${objectToJsString(theme)} as Theme`
102
- themesString += `\n${baseTheme}`
103
-
104
- if (restNames.length) {
105
- const duplicateThemes = restNames.map(
106
- (name) => `export const ${name} = ${baseName} as Theme`
107
- )
108
- themesString += `\n\n` + duplicateThemes.join('\n')
109
- }
140
+ const names = dedupedThemeToNames.get(key)!
141
+ const name = `n${nameI}`
142
+ const baseTheme = `export const ${name} = ${objectToJsString(
143
+ theme,
144
+ keys,
145
+ valueToIndex
146
+ )} as Theme`
147
+ out += `\n${baseTheme}`
148
+ const duplicateThemes = names.map((n) => `export const ${n} = ${name} as Theme`)
149
+ out += `\n\n` + duplicateThemes.join('\n')
110
150
  })
111
151
 
112
- return themesString
152
+ return out
113
153
  }
114
154
 
115
- function objectToJsString(obj: Object, indent = 4) {
116
- const whitespace = new Array(indent).fill(' ').join('')
117
- return `{
118
- ${Object.entries(obj)
119
- .map(([k, v]) => {
120
- const variableName = dedupedTokens.get(v)
121
- return `${whitespace}${k}: ${variableName}`
122
- })
123
- .join(',\n')}
124
- }`
155
+ function objectToJsString(
156
+ obj: Object,
157
+ keys: string[],
158
+ valueToIndex: Record<string, number>
159
+ ) {
160
+ let arrItems: string[] = []
161
+ for (const key in obj) {
162
+ const ki = keys.indexOf(key)
163
+ const vi = valueToIndex[obj[key]]
164
+ arrItems.push(`[${ki}, ${vi}]`)
165
+ }
166
+ return `t([${arrItems.join(',')}])`
125
167
  }
126
168
 
127
169
  function createThemeIntercept(
@@ -161,3 +203,52 @@ function themeBuilderIntercept(
161
203
  },
162
204
  })
163
205
  }
206
+
207
+ /**
208
+ * Removes a module from the cache
209
+ */
210
+ function purgeCache(moduleName) {
211
+ // Traverse the cache looking for the files
212
+ // loaded by the specified module name
213
+ searchCache(moduleName, function (mod) {
214
+ delete require.cache[mod.id]
215
+ })
216
+
217
+ // Remove cached paths to the module.
218
+ // Thanks to @bentael for pointing this out.
219
+ // @ts-ignore
220
+ Object.keys(module.constructor._pathCache).forEach(function (cacheKey) {
221
+ if (cacheKey.indexOf(moduleName) > 0) {
222
+ // @ts-ignore
223
+ delete module.constructor._pathCache[cacheKey]
224
+ }
225
+ })
226
+ }
227
+
228
+ /**
229
+ * Traverses the cache to search for all the cached
230
+ * files of the specified module name
231
+ */
232
+ function searchCache(moduleName, callback) {
233
+ // Resolve the module identified by the specified name
234
+ let mod = require.resolve(moduleName)
235
+
236
+ // Check if the module has been resolved and found within
237
+ // the cache
238
+ // @ts-ignore
239
+ if (mod && (mod = require.cache[mod]) !== undefined) {
240
+ // Recursively go over the results
241
+ ;(function traverse(mod) {
242
+ // Go over each of the module's children and
243
+ // traverse them
244
+ // @ts-ignore
245
+ mod.children.forEach(function (child) {
246
+ traverse(child)
247
+ })
248
+
249
+ // Call the specified callback providing the
250
+ // found cached module
251
+ callback(mod)
252
+ })(mod)
253
+ }
254
+ }
@@ -9,6 +9,8 @@ export async function writeGeneratedThemes(
9
9
  outPath: string,
10
10
  generatedOutput: Awaited<ReturnType<typeof generateThemes>>
11
11
  ) {
12
+ if (!generatedOutput) return
13
+
12
14
  const { generated, state } = generatedOutput
13
15
 
14
16
  const tamaguiDotDirExists = await fs.pathExists(tamaguiDotDir)
@@ -1,5 +1,5 @@
1
1
  export declare function generateThemes(inputFile: string): Promise<{
2
2
  generated: string;
3
3
  state: any;
4
- }>;
4
+ } | undefined>;
5
5
  //# sourceMappingURL=generate-themes.d.ts.map
@@ -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;;;GAwCrD"}
1
+ {"version":3,"file":"generate-themes.d.ts","sourceRoot":"","sources":["../src/generate-themes.ts"],"names":[],"mappings":"AAWA,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM;;;eA4CrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"write-generate-themes.d.ts","sourceRoot":"","sources":["../src/write-generate-themes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,iBAoB5D"}
1
+ {"version":3,"file":"write-generate-themes.d.ts","sourceRoot":"","sources":["../src/write-generate-themes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,iBAsB5D"}
@@ -1,146 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var generate_themes_exports = {};
30
- __export(generate_themes_exports, {
31
- generateThemes: () => generateThemes
32
- });
33
- module.exports = __toCommonJS(generate_themes_exports);
34
- var import_module = __toESM(require("module"));
35
- var import_fs_extra = __toESM(require("fs-extra"));
36
- async function generateThemes(options) {
37
- require("esbuild-register/dist/node").register();
38
- let promise = null;
39
- const ogRequire = import_module.default.prototype.require;
40
- import_module.default.prototype.require = function(id) {
41
- const out = ogRequire.apply(this, arguments);
42
- if (id === "@tamagui/create-theme/theme-builder") {
43
- if (!promise) {
44
- let resolve;
45
- promise = new Promise((res) => {
46
- resolve = res;
47
- });
48
- return createThemeIntercept(out, {
49
- onComplete: (result) => {
50
- resolve == null ? void 0 : resolve(result.themeBuilder);
51
- }
52
- });
53
- }
54
- }
55
- return out;
56
- };
57
- const requiredThemes = require(options.inPath);
58
- const themes = requiredThemes["default"] || requiredThemes["themes"];
59
- const generatedThemes = generatedThemesToTypescript(themes);
60
- const themeBuilder = promise ? await promise : null;
61
- await Promise.all([
62
- import_fs_extra.default.writeFile(options.outPath, generatedThemes),
63
- (themeBuilder == null ? void 0 : themeBuilder.state) ? import_fs_extra.default.writeFile(
64
- `${options.outPath}.theme-builder.json`,
65
- JSON.stringify(themeBuilder == null ? void 0 : themeBuilder.state)
66
- ) : null
67
- ]);
68
- }
69
- function generatedThemesToTypescript(themes) {
70
- const deduped = /* @__PURE__ */ new Map();
71
- const dedupedToNames = /* @__PURE__ */ new Map();
72
- for (const name in themes) {
73
- const theme = themes[name];
74
- const key = JSON.stringify(theme);
75
- if (deduped.has(key)) {
76
- dedupedToNames.set(key, [...dedupedToNames.get(key), name]);
77
- } else {
78
- deduped.set(key, theme);
79
- dedupedToNames.set(key, [name]);
80
- }
81
- }
82
- const baseTypeString = `type Theme = {
83
- ${Object.entries(themes.light || themes[Object.keys(themes)[0]]).map(([k]) => {
84
- return ` ${k}: string;
85
- `;
86
- }).join("")}
87
- }`;
88
- let themesString = `${baseTypeString}
89
- `;
90
- deduped.forEach((theme) => {
91
- const key = JSON.stringify(theme);
92
- const [baseName, ...restNames] = dedupedToNames.get(key);
93
- const baseTheme = `export const ${baseName} = ${objectToJsString(theme)} as Theme`;
94
- themesString += `
95
- ${baseTheme}`;
96
- if (restNames.length) {
97
- const duplicateThemes = restNames.map(
98
- (name) => `export const ${name} = ${baseName} as Theme`
99
- );
100
- themesString += `
101
-
102
- ` + duplicateThemes.join("\n");
103
- }
104
- });
105
- return themesString;
106
- }
107
- function objectToJsString(obj, indent = 4) {
108
- const whitespace = new Array(indent).fill(" ").join("");
109
- return `{
110
- ${Object.entries(obj).map(([k, v]) => `${whitespace}${k}: '${v}'`).join(",\n")}
111
- }`;
112
- }
113
- function createThemeIntercept(createThemeExport, themeBuilderInterceptOpts) {
114
- return new Proxy(createThemeExport, {
115
- get(target, key) {
116
- const out = Reflect.get(target, key);
117
- if (key === "createThemeBuilder") {
118
- return new Proxy(out, {
119
- apply(target2, thisArg, argArray) {
120
- const builder = Reflect.apply(target2, thisArg, argArray);
121
- return themeBuilderIntercept(builder, themeBuilderInterceptOpts);
122
- }
123
- });
124
- }
125
- return out;
126
- }
127
- });
128
- }
129
- function themeBuilderIntercept(themeBuilder, themeBuilderInterceptOpts) {
130
- return new Proxy(themeBuilder, {
131
- get(target, key) {
132
- const out = Reflect.get(target, key);
133
- if (key === "build") {
134
- themeBuilderInterceptOpts.onComplete({
135
- themeBuilder
136
- });
137
- }
138
- return out;
139
- }
140
- });
141
- }
142
- // Annotate the CommonJS export names for ESM import in node:
143
- 0 && (module.exports = {
144
- generateThemes
145
- });
146
- //# sourceMappingURL=generate-themes.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/generate-themes.ts"],
4
- "mappings": "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",
5
- "names": ["Module", "fs", "target"]
6
- }
package/dist/index.js DELETED
@@ -1,23 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
- var src_exports = {};
17
- module.exports = __toCommonJS(src_exports);
18
- __reExport(src_exports, require("./generate-themes"), module.exports);
19
- // Annotate the CommonJS export names for ESM import in node:
20
- 0 && (module.exports = {
21
- ...require("./generate-themes")
22
- });
23
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,wBAAc,8BAAd;",
5
- "names": []
6
- }