@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
|
|
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;
|
|
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
|
|
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": ";
|
|
5
|
-
"names": []
|
|
4
|
+
"mappings": ";AAEA,OAAO,YAAY;AAInB,OAAO,QAAQ;AAMf,eAAsB,eACpB,SAIA;AACA,UAAQ,4BAA4B,EAAE,SAAS;AAE/C,MAAI,UAAoD;AAExD,QAAM,YAAY,OAAO,UAAU;AAEnC,SAAO,UAAU,UAAU,SAAU,IAAI;AAEvC,UAAM,MAAM,UAAU,MAAM,MAAM,SAAS;AAC3C,QAAI,OAAO,uCAAuC;AAChD,UAAI,CAAC,SAAS;AACZ,YAAI;AACJ,kBAAU,IAAI,QAAQ,CAAC,QAAQ;AAC7B,oBAAU;AAAA,QACZ,CAAC;AACD,eAAO,qBAAqB,KAAK;AAAA,UAC/B,YAAY,CAAC,WAAW;AACtB,+CAAU,OAAO;AAAA,UACnB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,QAAQ,QAAQ,MAAM;AAC7C,QAAM,SAAS,eAAe,SAAS,KAAK,eAAe,QAAQ;AACnE,QAAM,kBAAkB,4BAA4B,MAAM;AAE1D,QAAM,eAAe,UAAU,MAAM,UAAU;AAE/C,QAAM,QAAQ,IAAI;AAAA,IAChB,GAAG,UAAU,QAAQ,SAAS,eAAe;AAAA,KAC7C,6CAAc,SACV,GAAG;AAAA,MACD,GAAG,QAAQ;AAAA,MACX,KAAK,UAAU,6CAAc,KAAK;AAAA,IACpC,IACA;AAAA,EACN,CAAC;AACH;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;AAEA,SAAS,qBACP,mBACA,2BACA;AACA,SAAO,IAAI,MAAM,mBAAmB;AAAA,IAClC,IAAI,QAAQ,KAAK;AACf,YAAM,MAAM,QAAQ,IAAI,QAAQ,GAAG;AACnC,UAAI,QAAQ,sBAAsB;AAChC,eAAO,IAAI,MAAM,KAAK;AAAA,UACpB,MAAMA,SAAQ,SAAS,UAAU;AAC/B,kBAAM,UAAU,QAAQ,MAAMA,SAAQ,SAAS,QAAQ;AACvD,mBAAO,sBAAsB,SAAS,yBAAyB;AAAA,UACjE;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;AAEA,SAAS,sBACP,cACA,2BACA;AACA,SAAO,IAAI,MAAM,cAAc;AAAA,IAC7B,IAAI,QAAQ,KAAK;AACf,YAAM,MAAM,QAAQ,IAAI,QAAQ,GAAG;AACnC,UAAI,QAAQ,SAAS;AAEnB,kCAA0B,WAAW;AAAA,UACnC;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;",
|
|
5
|
+
"names": ["target"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/cli",
|
|
3
|
-
"version": "1.32.
|
|
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.
|
|
40
|
-
"@tamagui/
|
|
41
|
-
"@tamagui/
|
|
42
|
-
"@tamagui/
|
|
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",
|
package/src/generate-themes.ts
CHANGED
|
@@ -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
|
-
|
|
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":";
|
|
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"}
|