@tamagui/cli 1.32.1 → 1.32.3

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.
@@ -32,13 +32,40 @@ __export(generate_themes_exports, {
32
32
  generateThemes: () => generateThemes
33
33
  });
34
34
  module.exports = __toCommonJS(generate_themes_exports);
35
+ var import_module = __toESM(require("module"));
35
36
  var import_fs_extra = __toESM(require("fs-extra"));
36
37
  async function generateThemes(options) {
37
38
  require("esbuild-register/dist/node").register();
39
+ let promise = null;
40
+ const ogRequire = import_module.default.prototype.require;
41
+ import_module.default.prototype.require = function(id) {
42
+ const out = ogRequire.apply(this, arguments);
43
+ if (id === "@tamagui/create-theme/theme-builder") {
44
+ if (!promise) {
45
+ let resolve;
46
+ promise = new Promise((res) => {
47
+ resolve = res;
48
+ });
49
+ return createThemeIntercept(out, {
50
+ onComplete: (result) => {
51
+ resolve == null ? void 0 : resolve(result.themeBuilder);
52
+ }
53
+ });
54
+ }
55
+ }
56
+ return out;
57
+ };
38
58
  const requiredThemes = require(options.inPath);
39
59
  const themes = requiredThemes["default"] || requiredThemes["themes"];
40
60
  const generatedThemes = generatedThemesToTypescript(themes);
41
- await import_fs_extra.default.writeFile(options.outPath, generatedThemes);
61
+ const themeBuilder = promise ? await promise : null;
62
+ await Promise.all([
63
+ import_fs_extra.default.writeFile(options.outPath, generatedThemes),
64
+ (themeBuilder == null ? void 0 : themeBuilder.state) ? import_fs_extra.default.writeFile(
65
+ `${options.outPath}.theme-builder.json`,
66
+ JSON.stringify(themeBuilder == null ? void 0 : themeBuilder.state)
67
+ ) : null
68
+ ]);
42
69
  }
43
70
  function generatedThemesToTypescript(themes) {
44
71
  const deduped = /* @__PURE__ */ new Map();
@@ -84,6 +111,35 @@ function objectToJsString(obj, indent = 4) {
84
111
  ${Object.entries(obj).map(([k, v]) => `${whitespace}${k}: '${v}'`).join(",\n")}
85
112
  }`;
86
113
  }
114
+ function createThemeIntercept(createThemeExport, themeBuilderInterceptOpts) {
115
+ return new Proxy(createThemeExport, {
116
+ get(target, key) {
117
+ const out = Reflect.get(target, key);
118
+ if (key === "createThemeBuilder") {
119
+ return new Proxy(out, {
120
+ apply(target2, thisArg, argArray) {
121
+ const builder = Reflect.apply(target2, thisArg, argArray);
122
+ return themeBuilderIntercept(builder, themeBuilderInterceptOpts);
123
+ }
124
+ });
125
+ }
126
+ return out;
127
+ }
128
+ });
129
+ }
130
+ function themeBuilderIntercept(themeBuilder, themeBuilderInterceptOpts) {
131
+ return new Proxy(themeBuilder, {
132
+ get(target, key) {
133
+ const out = Reflect.get(target, key);
134
+ if (key === "build") {
135
+ themeBuilderInterceptOpts.onComplete({
136
+ themeBuilder
137
+ });
138
+ }
139
+ return out;
140
+ }
141
+ });
142
+ }
87
143
  // Annotate the CommonJS export names for ESM import in node:
88
144
  0 && (module.exports = {
89
145
  generateThemes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/generate-themes.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,sBAAe;AAEf,eAAsB,eACpB,SAIA;AACA,UAAQ,4BAA4B,EAAE,SAAS;AAC/C,QAAM,iBAAiB,QAAQ,QAAQ,MAAM;AAC7C,QAAM,SAAS,eAAe,SAAS,KAAK,eAAe,QAAQ;AACnE,QAAM,kBAAkB,4BAA4B,MAAM;AAC1D,QAAM,gBAAAA,QAAG,UAAU,QAAQ,SAAS,eAAe;AACrD;AAEA,SAAS,4BAA4B,QAA6B;AAChE,QAAM,UAAU,oBAAI,IAAoB;AACxC,QAAM,iBAAiB,oBAAI,IAAsB;AAEjD,aAAW,QAAQ,QAAQ;AACzB,UAAM,QAAQ,OAAO,IAAI;AACzB,UAAM,MAAM,KAAK,UAAU,KAAK;AAChC,QAAI,QAAQ,IAAI,GAAG,GAAG;AACpB,qBAAe,IAAI,KAAK,CAAC,GAAG,eAAe,IAAI,GAAG,GAAI,IAAI,CAAC;AAAA,IAC7D,OAAO;AACL,cAAQ,IAAI,KAAK,KAAK;AACtB,qBAAe,IAAI,KAAK,CAAC,IAAI,CAAC;AAAA,IAChC;AAAA,EACF;AAEA,QAAM,iBAAiB;AAAA,EACvB,OAAO,QAAQ,OAAO,SAAS,OAAO,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAC5D,IAAI,CAAC,CAAC,CAAC,MAAM;AACZ,WAAO,KAAK;AAAA;AAAA,EACd,CAAC,EACA,KAAK,EAAE;AAAA;AAGR,MAAI,eAAe,GAAG;AAAA;AAEtB,UAAQ,QAAQ,CAAC,UAAU;AACzB,UAAM,MAAM,KAAK,UAAU,KAAK;AAChC,UAAM,CAAC,UAAU,GAAG,SAAS,IAAI,eAAe,IAAI,GAAG;AACvD,UAAM,YAAY,gBAAgB,cAAc,iBAAiB,KAAK;AACtE,oBAAgB;AAAA,EAAK;AAErB,QAAI,UAAU,QAAQ;AACpB,YAAM,kBAAkB,UAAU;AAAA,QAChC,CAAC,SAAS,gBAAgB,UAAU;AAAA,MACtC;AACA,sBAAgB;AAAA;AAAA,IAAS,gBAAgB,KAAK,IAAI;AAAA,IACpD;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,SAAS,iBAAiB,KAAa,SAAS,GAAG;AACjD,QAAM,aAAa,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE;AACtD,SAAO;AAAA,EACP,OAAO,QAAQ,GAAG,EACjB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,aAAa,OAAO,IAAI,EAC3C,KAAK,KAAK;AAAA;AAEb;",
5
- "names": ["fs"]
4
+ "mappings": "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",
5
+ "names": ["Module", "fs", "target"]
6
6
  }
@@ -1,11 +1,38 @@
1
1
  #!/usr/bin/env node
2
+ import Module from "module";
2
3
  import fs from "fs-extra";
3
4
  async function generateThemes(options) {
4
5
  require("esbuild-register/dist/node").register();
6
+ let promise = null;
7
+ const ogRequire = Module.prototype.require;
8
+ Module.prototype.require = function(id) {
9
+ const out = ogRequire.apply(this, arguments);
10
+ if (id === "@tamagui/create-theme/theme-builder") {
11
+ if (!promise) {
12
+ let resolve;
13
+ promise = new Promise((res) => {
14
+ resolve = res;
15
+ });
16
+ return createThemeIntercept(out, {
17
+ onComplete: (result) => {
18
+ resolve == null ? void 0 : resolve(result.themeBuilder);
19
+ }
20
+ });
21
+ }
22
+ }
23
+ return out;
24
+ };
5
25
  const requiredThemes = require(options.inPath);
6
26
  const themes = requiredThemes["default"] || requiredThemes["themes"];
7
27
  const generatedThemes = generatedThemesToTypescript(themes);
8
- await fs.writeFile(options.outPath, generatedThemes);
28
+ const themeBuilder = promise ? await promise : null;
29
+ await Promise.all([
30
+ fs.writeFile(options.outPath, generatedThemes),
31
+ (themeBuilder == null ? void 0 : themeBuilder.state) ? fs.writeFile(
32
+ `${options.outPath}.theme-builder.json`,
33
+ JSON.stringify(themeBuilder == null ? void 0 : themeBuilder.state)
34
+ ) : null
35
+ ]);
9
36
  }
10
37
  function generatedThemesToTypescript(themes) {
11
38
  const deduped = /* @__PURE__ */ new Map();
@@ -51,6 +78,35 @@ function objectToJsString(obj, indent = 4) {
51
78
  ${Object.entries(obj).map(([k, v]) => `${whitespace}${k}: '${v}'`).join(",\n")}
52
79
  }`;
53
80
  }
81
+ function createThemeIntercept(createThemeExport, themeBuilderInterceptOpts) {
82
+ return new Proxy(createThemeExport, {
83
+ get(target, key) {
84
+ const out = Reflect.get(target, key);
85
+ if (key === "createThemeBuilder") {
86
+ return new Proxy(out, {
87
+ apply(target2, thisArg, argArray) {
88
+ const builder = Reflect.apply(target2, thisArg, argArray);
89
+ return themeBuilderIntercept(builder, themeBuilderInterceptOpts);
90
+ }
91
+ });
92
+ }
93
+ return out;
94
+ }
95
+ });
96
+ }
97
+ function themeBuilderIntercept(themeBuilder, themeBuilderInterceptOpts) {
98
+ return new Proxy(themeBuilder, {
99
+ get(target, key) {
100
+ const out = Reflect.get(target, key);
101
+ if (key === "build") {
102
+ themeBuilderInterceptOpts.onComplete({
103
+ themeBuilder
104
+ });
105
+ }
106
+ return out;
107
+ }
108
+ });
109
+ }
54
110
  export {
55
111
  generateThemes
56
112
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/generate-themes.ts"],
4
- "mappings": ";AAGA,OAAO,QAAQ;AAEf,eAAsB,eACpB,SAIA;AACA,UAAQ,4BAA4B,EAAE,SAAS;AAC/C,QAAM,iBAAiB,QAAQ,QAAQ,MAAM;AAC7C,QAAM,SAAS,eAAe,SAAS,KAAK,eAAe,QAAQ;AACnE,QAAM,kBAAkB,4BAA4B,MAAM;AAC1D,QAAM,GAAG,UAAU,QAAQ,SAAS,eAAe;AACrD;AAEA,SAAS,4BAA4B,QAA6B;AAChE,QAAM,UAAU,oBAAI,IAAoB;AACxC,QAAM,iBAAiB,oBAAI,IAAsB;AAEjD,aAAW,QAAQ,QAAQ;AACzB,UAAM,QAAQ,OAAO,IAAI;AACzB,UAAM,MAAM,KAAK,UAAU,KAAK;AAChC,QAAI,QAAQ,IAAI,GAAG,GAAG;AACpB,qBAAe,IAAI,KAAK,CAAC,GAAG,eAAe,IAAI,GAAG,GAAI,IAAI,CAAC;AAAA,IAC7D,OAAO;AACL,cAAQ,IAAI,KAAK,KAAK;AACtB,qBAAe,IAAI,KAAK,CAAC,IAAI,CAAC;AAAA,IAChC;AAAA,EACF;AAEA,QAAM,iBAAiB;AAAA,EACvB,OAAO,QAAQ,OAAO,SAAS,OAAO,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAC5D,IAAI,CAAC,CAAC,CAAC,MAAM;AACZ,WAAO,KAAK;AAAA;AAAA,EACd,CAAC,EACA,KAAK,EAAE;AAAA;AAGR,MAAI,eAAe,GAAG;AAAA;AAEtB,UAAQ,QAAQ,CAAC,UAAU;AACzB,UAAM,MAAM,KAAK,UAAU,KAAK;AAChC,UAAM,CAAC,UAAU,GAAG,SAAS,IAAI,eAAe,IAAI,GAAG;AACvD,UAAM,YAAY,gBAAgB,cAAc,iBAAiB,KAAK;AACtE,oBAAgB;AAAA,EAAK;AAErB,QAAI,UAAU,QAAQ;AACpB,YAAM,kBAAkB,UAAU;AAAA,QAChC,CAAC,SAAS,gBAAgB,UAAU;AAAA,MACtC;AACA,sBAAgB;AAAA;AAAA,IAAS,gBAAgB,KAAK,IAAI;AAAA,IACpD;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,SAAS,iBAAiB,KAAa,SAAS,GAAG;AACjD,QAAM,aAAa,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE;AACtD,SAAO;AAAA,EACP,OAAO,QAAQ,GAAG,EACjB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,aAAa,OAAO,IAAI,EAC3C,KAAK,KAAK;AAAA;AAEb;",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["target"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/cli",
3
- "version": "1.32.1",
3
+ "version": "1.32.3",
4
4
  "source": "src/index.ts",
5
5
  "types": "./types/index.d.ts",
6
6
  "module": "dist/esm",
@@ -36,10 +36,11 @@
36
36
  "@callstack/repack-debugger-app": "^1.0.0",
37
37
  "@fastify/sensible": "^4.1.0",
38
38
  "@fastify/static": "^5.0.2",
39
- "@tamagui/build": "1.32.1",
40
- "@tamagui/static": "1.32.1",
41
- "@tamagui/types": "1.32.1",
42
- "@tamagui/vite-plugin": "1.32.1",
39
+ "@tamagui/build": "1.32.3",
40
+ "@tamagui/create-theme": "1.32.3",
41
+ "@tamagui/static": "1.32.3",
42
+ "@tamagui/types": "1.32.3",
43
+ "@tamagui/vite-plugin": "1.32.3",
43
44
  "@types/compression": "^1.7.2",
44
45
  "@types/morgan": "^1.9.3",
45
46
  "@vitejs/plugin-react-swc": "^3.3.0",
@@ -1,8 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import Module from 'module'
4
+
5
+ import type { ThemeBuilder } from '@tamagui/create-theme/theme-builder'
3
6
  import { CLIResolvedOptions } from '@tamagui/types'
4
7
  import fs from 'fs-extra'
5
8
 
9
+ type ThemeBuilderInterceptOpts = {
10
+ onComplete: (result: { themeBuilder: ThemeBuilder<any> }) => void
11
+ }
12
+
6
13
  export async function generateThemes(
7
14
  options: CLIResolvedOptions & {
8
15
  inPath: string
@@ -10,10 +17,45 @@ export async function generateThemes(
10
17
  }
11
18
  ) {
12
19
  require('esbuild-register/dist/node').register()
20
+
21
+ let promise: Promise<null | ThemeBuilder<any>> | null = null as any
22
+
23
+ const ogRequire = Module.prototype.require
24
+ // @ts-ignore
25
+ Module.prototype.require = function (id) {
26
+ // @ts-ignore
27
+ const out = ogRequire.apply(this, arguments)
28
+ if (id === '@tamagui/create-theme/theme-builder') {
29
+ if (!promise) {
30
+ let resolve: Function
31
+ promise = new Promise((res) => {
32
+ resolve = res
33
+ })
34
+ return createThemeIntercept(out, {
35
+ onComplete: (result) => {
36
+ resolve?.(result.themeBuilder)
37
+ },
38
+ })
39
+ }
40
+ }
41
+ return out
42
+ }
43
+
13
44
  const requiredThemes = require(options.inPath)
14
45
  const themes = requiredThemes['default'] || requiredThemes['themes']
15
46
  const generatedThemes = generatedThemesToTypescript(themes)
16
- await fs.writeFile(options.outPath, generatedThemes)
47
+
48
+ const themeBuilder = promise ? await promise : null
49
+
50
+ await Promise.all([
51
+ fs.writeFile(options.outPath, generatedThemes),
52
+ themeBuilder?.state
53
+ ? fs.writeFile(
54
+ `${options.outPath}.theme-builder.json`,
55
+ JSON.stringify(themeBuilder?.state)
56
+ )
57
+ : null,
58
+ ])
17
59
  }
18
60
 
19
61
  function generatedThemesToTypescript(themes: Record<string, any>) {
@@ -66,3 +108,41 @@ ${Object.entries(obj)
66
108
  .join(',\n')}
67
109
  }`
68
110
  }
111
+
112
+ function createThemeIntercept(
113
+ createThemeExport: any,
114
+ themeBuilderInterceptOpts: ThemeBuilderInterceptOpts
115
+ ) {
116
+ return new Proxy(createThemeExport, {
117
+ get(target, key) {
118
+ const out = Reflect.get(target, key)
119
+ if (key === 'createThemeBuilder') {
120
+ return new Proxy(out, {
121
+ apply(target, thisArg, argArray) {
122
+ const builder = Reflect.apply(target, thisArg, argArray) as any
123
+ return themeBuilderIntercept(builder, themeBuilderInterceptOpts)
124
+ },
125
+ })
126
+ }
127
+ return out
128
+ },
129
+ })
130
+ }
131
+
132
+ function themeBuilderIntercept(
133
+ themeBuilder: any,
134
+ themeBuilderInterceptOpts: ThemeBuilderInterceptOpts
135
+ ) {
136
+ return new Proxy(themeBuilder, {
137
+ get(target, key) {
138
+ const out = Reflect.get(target, key)
139
+ if (key === 'build') {
140
+ // get the state and return!
141
+ themeBuilderInterceptOpts.onComplete({
142
+ themeBuilder,
143
+ })
144
+ }
145
+ return out
146
+ },
147
+ })
148
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"generate-themes.d.ts","sourceRoot":"","sources":["../src/generate-themes.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAGnD,wBAAsB,cAAc,CAClC,OAAO,EAAE,kBAAkB,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,iBAOF"}
1
+ {"version":3,"file":"generate-themes.d.ts","sourceRoot":"","sources":["../src/generate-themes.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAOnD,wBAAsB,cAAc,CAClC,OAAO,EAAE,kBAAkB,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,iBA0CF"}