@tamagui/cli 1.52.9 → 1.53.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.
@@ -0,0 +1,58 @@
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 getVitePath_exports = {};
30
+ __export(getVitePath_exports, {
31
+ getVitePath: () => getVitePath
32
+ });
33
+ module.exports = __toCommonJS(getVitePath_exports);
34
+ var import_path = require("path");
35
+ var import_esm_resolve = __toESM(require("esm-resolve"));
36
+ var import_fs_extra = require("fs-extra");
37
+ async function getVitePath(moduleName) {
38
+ if (moduleName[0] === ".") {
39
+ return (0, import_path.join)(`apps/tamastack/src`, moduleName) + ".js";
40
+ } else {
41
+ let id = "";
42
+ const resolved = (0, import_esm_resolve.default)((0, import_path.join)(process.cwd(), "index.js"))(id);
43
+ if (!resolved) {
44
+ throw new Error(`\u274C cant find`);
45
+ }
46
+ const real = await (0, import_fs_extra.realpath)(resolved);
47
+ id = (0, import_path.relative)(file, real);
48
+ if (id.endsWith(`/react/jsx-dev-runtime.js`)) {
49
+ id = "react/jsx-runtime";
50
+ }
51
+ return id;
52
+ }
53
+ }
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ getVitePath
57
+ });
58
+ //# sourceMappingURL=getVitePath.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/dev/getVitePath.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA+B;AAE/B,yBAAoB;AACpB,sBAAyB;AAEzB,eAAsB,YAAY,YAAoB;AACpD,MAAI,WAAW,CAAC,MAAM,KAAK;AAEzB,eAAO,kBAAK,sBAAsB,UAAU,IAAI;AAAA,EAClD,OAAO;AACL,QAAI,KAAK;AACT,UAAM,eAAW,mBAAAA,aAAQ,kBAAK,QAAQ,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE;AAE5D,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,kBAAa;AAAA,IAC/B;AACA,UAAM,OAAO,UAAM,0BAAS,QAAQ;AACpC,aAAK,sBAAS,MAAM,IAAI;AACxB,QAAI,GAAG,SAAS,2BAA2B,GAAG;AAC5C,WAAK;AAAA,IACP;AACA,WAAO;AAAA,EACT;AACF;",
5
+ "names": ["resolve"]
6
+ }
package/dist/dev.js CHANGED
@@ -36,32 +36,38 @@ var import_path = require("path");
36
36
  var import_vite_native_swc = __toESM(require("@tamagui/vite-native-swc"));
37
37
  var import_vite_plugin = require("@tamagui/vite-plugin");
38
38
  var import_chalk = __toESM(require("chalk"));
39
+ var import_es_module_lexer = require("es-module-lexer");
39
40
  var import_fs_extra = require("fs-extra");
40
41
  var import_vite = require("vite");
41
42
  var import_clientInjectPlugin = require("./dev/clientInjectPlugin");
42
43
  var import_createDevServer = require("./dev/createDevServer");
43
44
  var import_utils = require("./utils");
44
45
  const dev = async (options) => {
45
- const { root, mode, paths } = options;
46
- const projectRoot = root;
46
+ const { root } = options;
47
+ process.on("uncaughtException", (err) => {
48
+ console.log((err == null ? void 0 : err.message) || err);
49
+ });
47
50
  const packageRootDir = (0, import_path.join)(__dirname, "..");
48
51
  await (0, import_vite_plugin.nativePrebuild)();
49
52
  const port = options.port || 8081;
50
53
  const plugins = [
51
- (0, import_vite_plugin.tamaguiPlugin)({
52
- ...options.tamaguiOptions,
53
- target: "native"
54
- }),
55
- (0, import_vite_native_swc.default)({
56
- tsDecorators: true
57
- }),
58
- (0, import_vite_plugin.nativePlugin)({
59
- port
60
- })
54
+ // tamaguiPlugin({
55
+ // ...options.tamaguiOptions,
56
+ // target: 'native',
57
+ // }),
58
+ {
59
+ name: "tamagui",
60
+ config() {
61
+ return {
62
+ define: {
63
+ "process.env.TAMAGUI_TARGET": JSON.stringify("native")
64
+ }
65
+ };
66
+ }
67
+ }
61
68
  ];
62
69
  if (process.env.IS_TAMAGUI_DEV) {
63
70
  const inspect = require("vite-plugin-inspect");
64
- console.log("\u{1F41E} enabling inspect plugin");
65
71
  plugins.push(inspect());
66
72
  }
67
73
  const hmrListeners = [];
@@ -69,9 +75,74 @@ const dev = async (options) => {
69
75
  let serverConfig = {
70
76
  root,
71
77
  mode: "development",
78
+ esbuild: false,
72
79
  clearScreen: false,
73
80
  appType: "custom",
74
- plugins,
81
+ plugins: [
82
+ ...plugins,
83
+ (0, import_vite_native_swc.default)({
84
+ tsDecorators: true,
85
+ mode: "serve"
86
+ }),
87
+ (0, import_vite_plugin.nativePlugin)({
88
+ port,
89
+ mode: "serve"
90
+ }),
91
+ {
92
+ name: "tamagui-client-transform",
93
+ async handleHotUpdate({ read, modules, file }) {
94
+ var _a, _b;
95
+ try {
96
+ if (!file.includes("/src/")) {
97
+ return;
98
+ }
99
+ const [module2] = modules;
100
+ if (!module2)
101
+ return;
102
+ const id = (module2 == null ? void 0 : module2.url) || file.replace(root, "");
103
+ const code = await read();
104
+ if (code.startsWith(`'use strict';`))
105
+ return;
106
+ if (!code) {
107
+ return;
108
+ }
109
+ let source = code;
110
+ source = ((_a = await (0, import_vite_native_swc.transformForBuild)(id, source)) == null ? void 0 : _a.code) || "";
111
+ const importsMap = {};
112
+ const [imports] = (0, import_es_module_lexer.parse)(source);
113
+ let accumulatedSliceOffset = 0;
114
+ for (const specifier of imports) {
115
+ const { n: importName, s: start } = specifier;
116
+ if (importName) {
117
+ const id2 = await (0, import_vite_plugin.getVitePath)(file, importName);
118
+ if (!id2) {
119
+ console.warn("???");
120
+ continue;
121
+ }
122
+ importsMap[id2] = id2.replace(/^(\.\.\/)+/, "");
123
+ const len = importName.length;
124
+ const extraLen = id2.length - len;
125
+ source = source.slice(0, start + accumulatedSliceOffset) + id2 + source.slice(start + accumulatedSliceOffset + len);
126
+ accumulatedSliceOffset += extraLen;
127
+ }
128
+ }
129
+ source = ((_b = await (0, import_vite_native_swc.swcTransform)(id, source, {
130
+ mode: "serve-cjs"
131
+ })) == null ? void 0 : _b.code) || "";
132
+ if (!source) {
133
+ throw "\u274C no source";
134
+ }
135
+ const hotUpdateSource = `exports = ((exports) => {
136
+ const require = createRequire(${JSON.stringify(importsMap, null, 2)})
137
+ ${source.replace(`import.meta.hot.accept(() => {})`, ``)};
138
+ return exports })({})`;
139
+ hotUpdatedCJSFiles.set(id, hotUpdateSource);
140
+ } catch (err) {
141
+ console.log(`Error processing hmr update:`, err);
142
+ }
143
+ }
144
+ }
145
+ ],
75
146
  server: {
76
147
  cors: true,
77
148
  port: options.port,
@@ -86,37 +157,28 @@ const dev = async (options) => {
86
157
  plugins: [...serverConfig.plugins]
87
158
  };
88
159
  const server = await (0, import_vite.createServer)(serverConfig);
89
- resolvedConfig.plugins = resolvedConfig.plugins.filter((x) => {
90
- if (x.name === "vite:import-analysis") {
91
- return false;
92
- }
93
- return true;
94
- });
95
160
  server.watcher.addListener("change", async (path) => {
96
161
  const id = path.replace(process.cwd(), "");
97
162
  if (!id.endsWith("tsx") && !id.endsWith("jsx")) {
98
163
  return;
99
164
  }
100
- const out = await server.transformRequest(id);
101
- if (!out)
102
- return;
103
- let contents = await (0, import_vite_plugin.nativeBabelTransform)(out.code);
104
- contents = contents.replace("import.meta.hot.accept(() => {})", "").replace("react_jsx-dev-runtime", "react/jsx-dev-runtime").replace(/\.js\?v=[0-9a-z]+"/gi, '"').replaceAll("/node_modules/.vite/deps/", "").replace(`import.meta.hot = (0, _client.createHotContext)("/src/App.tsx");`, "").replace('var _client = require("/@vite/client");', "");
105
- contents = `exports = ((exports) => { ${contents}; return exports })({})`;
106
- hotUpdatedCJSFiles.set(id, contents);
165
+ try {
166
+ void server.transformRequest(id);
167
+ } catch (err) {
168
+ console.log("err", err);
169
+ }
107
170
  });
108
171
  await server.listen();
172
+ let isBuilding = null;
109
173
  const dispose = await (0, import_createDevServer.createDevServer)(options, {
110
174
  hotUpdatedCJSFiles,
111
175
  listenForHMR(cb) {
112
176
  hmrListeners.push(cb);
113
177
  },
114
- getIndexBundle: async function getBundle() {
115
- const outputCode = await getBundleCode();
116
- return outputCode;
117
- },
178
+ getIndexBundle: getBundleCode,
118
179
  indexJson: getIndexJsonReponse({ port, root })
119
180
  });
181
+ getBundleCode();
120
182
  console.log(`Listening on:`, import_chalk.default.green(`http://localhost:${port}`));
121
183
  server.printUrls();
122
184
  (0, import_utils.registerDispose)(() => {
@@ -128,6 +190,14 @@ const dev = async (options) => {
128
190
  return (_a = server.httpServer) == null ? void 0 : _a.on("close", res);
129
191
  });
130
192
  async function getBundleCode() {
193
+ if (isBuilding) {
194
+ const res = await isBuilding;
195
+ return res;
196
+ }
197
+ let done;
198
+ isBuilding = new Promise((res) => {
199
+ done = res;
200
+ });
131
201
  const tmpBundle = (0, import_path.join)(process.cwd(), "bundle.tmp.js");
132
202
  if (await (0, import_fs_extra.pathExists)(tmpBundle)) {
133
203
  console.log(
@@ -137,12 +207,30 @@ const dev = async (options) => {
137
207
  return await (0, import_promises.readFile)(tmpBundle, "utf-8");
138
208
  }
139
209
  const buildOutput = await (0, import_vite.build)({
140
- plugins,
210
+ plugins: [
211
+ ...plugins,
212
+ (0, import_vite_plugin.nativePlugin)({
213
+ port,
214
+ mode: "build"
215
+ }),
216
+ (0, import_vite_native_swc.default)({
217
+ tsDecorators: true,
218
+ mode: "build"
219
+ })
220
+ ],
141
221
  appType: "custom",
142
222
  root,
143
223
  clearScreen: false,
144
224
  build: {
145
- ssr: false
225
+ ssr: false,
226
+ minify: false,
227
+ rollupOptions: {
228
+ treeshake: false,
229
+ preserveEntrySignatures: "strict",
230
+ output: {
231
+ format: "cjs"
232
+ }
233
+ }
146
234
  },
147
235
  mode: "development",
148
236
  define: {
@@ -150,44 +238,53 @@ const dev = async (options) => {
150
238
  "process.env.NODE_ENV": `"development"`
151
239
  }
152
240
  });
153
- const appCodeIn = "output" in buildOutput ? buildOutput.output[0].code : null;
154
- if (!appCodeIn) {
241
+ if (!("output" in buildOutput)) {
155
242
  throw `\u274C`;
156
243
  }
157
- const appCode = await (0, import_vite_plugin.nativeBabelTransform)(appCodeIn);
158
- const paths2 = [
159
- (0, import_path.join)(process.cwd(), "testing-area", "react.js"),
160
- (0, import_path.join)(process.cwd(), "testing-area", "react-jsx-runtime.js"),
161
- (0, import_path.join)(process.cwd(), "testing-area", "react-native.js")
162
- ];
163
- const [react, reactJsxRuntime, reactNative] = await Promise.all(
164
- paths2.map((p) => (0, import_promises.readFile)(p, "utf-8"))
165
- );
166
- const reactCode = react.replace(
167
- `module.exports = require_react_development();`,
168
- `return require_react_development()`
169
- );
170
- const reactJSXRuntimeCode = reactJsxRuntime.replace(
171
- `module.exports = require_react_jsx_runtime_production_min();`,
172
- `return require_react_jsx_runtime_production_min()`
173
- // `module.exports = require_react_jsx_dev_runtime_development();`,
174
- // `return require_react_jsx_dev_runtime_development();`
175
- );
176
- const reactNativeCode = reactNative.replace(
177
- `module.exports = require_react_native();`,
178
- `require_ReactNative();
179
- globalThis["ReactPressability"] = require_Pressability;
180
- globalThis["ReactUsePressability"] = require_usePressability;
181
- return require_react_native()`
244
+ let appCode = buildOutput.output.sort((a, b) => a["isEntry"] ? 1 : -1).map((module2) => {
245
+ if (module2.type == "chunk") {
246
+ const importsMap = {};
247
+ for (const imp of module2.imports) {
248
+ const relativePath = (0, import_path.relative)((0, import_path.dirname)(module2.fileName), imp);
249
+ importsMap[relativePath[0] === "." ? relativePath : "./" + relativePath] = imp;
250
+ }
251
+ return `
252
+ ___modules___["${module2.fileName}"] = ((exports, module2) => {
253
+ const require = createRequire(${JSON.stringify(importsMap, null, 2)})
254
+
255
+ ${module2.code.replace(`'use strict';`, "").replace("module.exports = ", "module2.exports = ")}
256
+ })
257
+
258
+ ${module2.isEntry ? `
259
+ // run entry
260
+ __specialRequire("node_modules/react-native/index.js")
261
+ __specialRequire("${module2.fileName}")
262
+ ` : ""}
263
+ `;
264
+ }
265
+ }).join("\n");
266
+ if (!appCode) {
267
+ throw `\u274C`;
268
+ }
269
+ appCode = appCode.replace("undefined.accept(() => {})", "").replace("undefined.accept(function() {});", "").replace(
270
+ `var require_react_refresh_runtime_development =`,
271
+ `var require_react_refresh_runtime_development = globalThis['__RequireReactRefreshRuntime__'] = `
272
+ ).replace(
273
+ `var require_Pressability = `,
274
+ `var require_Pressability = globalThis['__ReactPressability__'] =`
182
275
  ).replace(
183
- `ReactRefreshRuntime.injectIntoGlobalHook(global);`,
184
- `globalThis['_ReactRefreshRuntime'] = ReactRefreshRuntime; ReactRefreshRuntime.injectIntoGlobalHook(global);`
276
+ `var require_Pressability = `,
277
+ `var require_Pressability = globalThis['__ReactPressability__'] =`
278
+ ).replace(
279
+ `var require_usePressability = `,
280
+ `var require_usePressability = globalThis['__ReactUsePressability__'] =`
185
281
  );
186
282
  const templateFile = (0, import_path.join)(packageRootDir, "react-native-template.js");
187
- return (await (0, import_promises.readFile)(templateFile, "utf-8")).replace(`// -- react --`, reactCode).replace(`// -- react-native --`, reactNativeCode).replace(`// -- react/jsx-runtime --`, reactJSXRuntimeCode).replace(
188
- `// -- app --`,
189
- appCode.replace('"use strict";', "").replace("undefined.accept(() => {})", "")
190
- );
283
+ const out = await (0, import_promises.readFile)(templateFile, "utf-8") + appCode;
284
+ await (0, import_promises.writeFile)((0, import_path.join)(process.cwd(), ".tamagui", "bundle.js"), out, "utf-8");
285
+ done(out);
286
+ isBuilding = null;
287
+ return out;
191
288
  }
192
289
  };
193
290
  function getIndexJsonReponse({ port, root }) {
package/dist/dev.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/dev.ts"],
4
- "mappings": "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",
5
- "names": ["viteReactPlugin", "chalk", "paths"]
4
+ "mappings": "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",
5
+ "names": ["viteReactPlugin", "module", "id", "chalk"]
6
6
  }
@@ -0,0 +1,58 @@
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 getVitePath_exports = {};
30
+ __export(getVitePath_exports, {
31
+ getVitePath: () => getVitePath
32
+ });
33
+ module.exports = __toCommonJS(getVitePath_exports);
34
+ var import_path = require("path");
35
+ var import_esm_resolve = __toESM(require("esm-resolve"));
36
+ var import_fs_extra = require("fs-extra");
37
+ async function getVitePath(moduleName) {
38
+ if (moduleName[0] === ".") {
39
+ return (0, import_path.join)(`apps/tamastack/src`, moduleName) + ".js";
40
+ } else {
41
+ let id = "";
42
+ const resolved = (0, import_esm_resolve.default)((0, import_path.join)(process.cwd(), "index.js"))(id);
43
+ if (!resolved) {
44
+ throw new Error(`\u274C cant find`);
45
+ }
46
+ const real = await (0, import_fs_extra.realpath)(resolved);
47
+ id = (0, import_path.relative)(file, real);
48
+ if (id.endsWith(`/react/jsx-dev-runtime.js`)) {
49
+ id = "react/jsx-runtime";
50
+ }
51
+ return id;
52
+ }
53
+ }
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ getVitePath
57
+ });
58
+ //# sourceMappingURL=getVitePath.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/getVitePath.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA+B;AAE/B,yBAAoB;AACpB,sBAAyB;AAEzB,eAAsB,YAAY,YAAoB;AACpD,MAAI,WAAW,CAAC,MAAM,KAAK;AAEzB,eAAO,kBAAK,sBAAsB,UAAU,IAAI;AAAA,EAClD,OAAO;AACL,QAAI,KAAK;AACT,UAAM,eAAW,mBAAAA,aAAQ,kBAAK,QAAQ,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE;AAE5D,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,kBAAa;AAAA,IAC/B;AACA,UAAM,OAAO,UAAM,0BAAS,QAAQ;AACpC,aAAK,sBAAS,MAAM,IAAI;AACxB,QAAI,GAAG,SAAS,2BAA2B,GAAG;AAC5C,WAAK;AAAA,IACP;AACA,WAAO;AAAA,EACT;AACF;",
5
+ "names": ["resolve"]
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/cli",
3
- "version": "1.52.9",
3
+ "version": "1.53.0",
4
4
  "source": "src/index.ts",
5
5
  "types": "./types/index.d.ts",
6
6
  "main": "dist",
@@ -24,17 +24,18 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@babel/code-frame": "^7.21.4",
27
+ "@babel/plugin-transform-react-jsx": "^7.22.5",
27
28
  "@callstack/repack-debugger-app": "^1.0.0",
28
29
  "@fastify/sensible": "^4.1.0",
29
30
  "@fastify/static": "^5.0.2",
30
- "@tamagui/build": "1.52.9",
31
- "@tamagui/create-theme": "1.52.9",
32
- "@tamagui/generate-themes": "1.52.9",
33
- "@tamagui/static": "1.52.9",
34
- "@tamagui/types": "1.52.9",
35
- "@tamagui/vite-native-hmr": "1.52.9",
36
- "@tamagui/vite-native-swc": "1.52.9",
37
- "@tamagui/vite-plugin": "1.52.9",
31
+ "@tamagui/build": "1.53.0",
32
+ "@tamagui/create-theme": "1.53.0",
33
+ "@tamagui/generate-themes": "1.53.0",
34
+ "@tamagui/static": "1.53.0",
35
+ "@tamagui/types": "1.53.0",
36
+ "@tamagui/vite-native-hmr": "1.53.0",
37
+ "@tamagui/vite-native-swc": "1.53.0",
38
+ "@tamagui/vite-plugin": "1.53.0",
38
39
  "@types/compression": "^1.7.2",
39
40
  "@types/morgan": "^1.9.3",
40
41
  "@vitejs/plugin-react": "^4.0.4",
@@ -44,13 +45,16 @@
44
45
  "change-case": "^4.1.2",
45
46
  "chokidar": "^3.5.2",
46
47
  "compression": "^1.7.4",
48
+ "es-module-lexer": "^1.3.0",
47
49
  "esbuild": "^0.19.0",
50
+ "esm-resolve": "^1.0.8",
48
51
  "execa": "^5.0.0",
49
52
  "express": "^4.18.1",
50
53
  "fast-glob": "^3.2.11",
51
54
  "fastify": "^3.29.0",
52
55
  "fastify-favicon": "^3.2.0",
53
56
  "fastify-plugin": "^3.0.1",
57
+ "flow-remove-types": "^2.214.0",
54
58
  "fs-extra": "^11.1.0",
55
59
  "get-port": "^6.1.2",
56
60
  "graphology": "^0.24.1",
@@ -72,6 +76,7 @@
72
76
  "url": "^0.11.0",
73
77
  "vite": "^4.4.9",
74
78
  "vite-plugin-entry-shaking": "^0.3.2",
79
+ "vite-plugin-externals": "^0.6.2",
75
80
  "vite-tsconfig-paths": "^4.2.0",
76
81
  "ws": "^8.7.0",
77
82
  "zx": "^7.1.1"
package/src/dev.ts CHANGED
@@ -1,16 +1,15 @@
1
- import { readFile } from 'fs/promises'
2
- import { join } from 'path'
1
+ import { readFile, writeFile } from 'fs/promises'
2
+ import { dirname, join, relative } from 'path'
3
3
 
4
4
  import { CLIResolvedOptions } from '@tamagui/types'
5
- import viteReactPlugin, { swcTransform } from '@tamagui/vite-native-swc'
6
- import {
7
- nativeBabelTransform,
8
- nativePlugin,
9
- nativePrebuild,
10
- tamaguiPlugin,
11
- } from '@tamagui/vite-plugin'
5
+ import viteReactPlugin, {
6
+ swcTransform,
7
+ transformForBuild,
8
+ } from '@tamagui/vite-native-swc'
9
+ import { getVitePath, nativePlugin, nativePrebuild } from '@tamagui/vite-plugin'
12
10
  import chalk from 'chalk'
13
- import fs, { pathExists } from 'fs-extra'
11
+ import { parse } from 'es-module-lexer'
12
+ import { pathExists } from 'fs-extra'
14
13
  import { InlineConfig, build, createServer, resolveConfig } from 'vite'
15
14
 
16
15
  import { clientInjectionsPlugin } from './dev/clientInjectPlugin'
@@ -19,8 +18,11 @@ import { HMRListener } from './dev/types'
19
18
  import { registerDispose } from './utils'
20
19
 
21
20
  export const dev = async (options: CLIResolvedOptions) => {
22
- const { root, mode, paths } = options
23
- const projectRoot = root
21
+ const { root } = options
22
+
23
+ process.on('uncaughtException', (err) => {
24
+ console.log(err?.message || err)
25
+ })
24
26
 
25
27
  const packageRootDir = join(__dirname, '..')
26
28
 
@@ -31,21 +33,25 @@ export const dev = async (options: CLIResolvedOptions) => {
31
33
  const port = options.port || 8081
32
34
 
33
35
  const plugins = [
34
- tamaguiPlugin({
35
- ...options.tamaguiOptions,
36
- target: 'native',
37
- }),
38
- viteReactPlugin({
39
- tsDecorators: true,
40
- }),
41
- nativePlugin({
42
- port,
43
- }),
44
- ]
36
+ // tamaguiPlugin({
37
+ // ...options.tamaguiOptions,
38
+ // target: 'native',
39
+ // }),
40
+ {
41
+ name: 'tamagui',
42
+ config() {
43
+ return {
44
+ define: {
45
+ 'process.env.TAMAGUI_TARGET': JSON.stringify('native'),
46
+ },
47
+ }
48
+ },
49
+ },
50
+ ] satisfies InlineConfig['plugins']
45
51
 
46
52
  if (process.env.IS_TAMAGUI_DEV) {
47
53
  const inspect = require('vite-plugin-inspect')
48
- console.log('🐞 enabling inspect plugin')
54
+ // @ts-ignore
49
55
  plugins.push(inspect())
50
56
  }
51
57
 
@@ -55,9 +61,106 @@ export const dev = async (options: CLIResolvedOptions) => {
55
61
  let serverConfig = {
56
62
  root,
57
63
  mode: 'development',
64
+ esbuild: false,
58
65
  clearScreen: false,
59
66
  appType: 'custom',
60
- plugins,
67
+
68
+ plugins: [
69
+ ...plugins,
70
+
71
+ viteReactPlugin({
72
+ tsDecorators: true,
73
+ mode: 'serve',
74
+ }),
75
+
76
+ nativePlugin({
77
+ port,
78
+ mode: 'serve',
79
+ }),
80
+
81
+ {
82
+ name: 'tamagui-client-transform',
83
+
84
+ async handleHotUpdate({ read, modules, file }) {
85
+ try {
86
+ if (!file.includes('/src/')) {
87
+ return
88
+ }
89
+
90
+ const [module] = modules
91
+ if (!module) return
92
+
93
+ const id = module?.url || file.replace(root, '')
94
+
95
+ const code = await read()
96
+
97
+ // got a weird pre compiled file on startup
98
+ if (code.startsWith(`'use strict';`)) return
99
+
100
+ if (!code) {
101
+ return
102
+ }
103
+
104
+ let source = code
105
+
106
+ // we have to remove jsx before we can parse imports...
107
+ source = (await transformForBuild(id, source))?.code || ''
108
+
109
+ const importsMap = {}
110
+
111
+ // parse imports of modules into ids:
112
+ // eg `import x from '@tamagui/core'` => `import x from '/me/node_modules/@tamagui/core/index.js'`
113
+ const [imports] = parse(source)
114
+
115
+ let accumulatedSliceOffset = 0
116
+
117
+ for (const specifier of imports) {
118
+ const { n: importName, s: start } = specifier
119
+
120
+ if (importName) {
121
+ const id = await getVitePath(file, importName)
122
+ if (!id) {
123
+ console.warn('???')
124
+ continue
125
+ }
126
+
127
+ importsMap[id] = id.replace(/^(\.\.\/)+/, '')
128
+
129
+ // replace module name with id for hmr
130
+ const len = importName.length
131
+ const extraLen = id.length - len
132
+ source =
133
+ source.slice(0, start + accumulatedSliceOffset) +
134
+ id +
135
+ source.slice(start + accumulatedSliceOffset + len)
136
+ accumulatedSliceOffset += extraLen
137
+ }
138
+ }
139
+
140
+ // then we have to convert to commonjs..
141
+ source =
142
+ (
143
+ await swcTransform(id, source, {
144
+ mode: 'serve-cjs',
145
+ })
146
+ )?.code || ''
147
+
148
+ if (!source) {
149
+ throw '❌ no source'
150
+ }
151
+
152
+ const hotUpdateSource = `exports = ((exports) => {
153
+ const require = createRequire(${JSON.stringify(importsMap, null, 2)})
154
+ ${source.replace(`import.meta.hot.accept(() => {})`, ``)};
155
+ return exports })({})`
156
+
157
+ hotUpdatedCJSFiles.set(id, hotUpdateSource)
158
+ } catch (err) {
159
+ console.log(`Error processing hmr update:`, err)
160
+ }
161
+ },
162
+ },
163
+ ],
61
164
  server: {
62
165
  cors: true,
63
166
  port: options.port,
@@ -67,8 +170,10 @@ export const dev = async (options: CLIResolvedOptions) => {
67
170
 
68
171
  // first resolve config so we can pass into client plugin, then add client plugin:
69
172
  const resolvedConfig = await resolveConfig(serverConfig, 'serve')
173
+
70
174
  const viteRNClient = clientInjectionsPlugin(resolvedConfig)
71
175
 
176
+ // @ts-ignore
72
177
  plugins.push(viteRNClient)
73
178
 
74
179
  serverConfig = {
@@ -78,54 +183,35 @@ export const dev = async (options: CLIResolvedOptions) => {
78
183
 
79
184
  const server = await createServer(serverConfig)
80
185
 
81
- // @ts-ignore
82
- resolvedConfig.plugins = resolvedConfig.plugins.filter((x) => {
83
- if (x.name === 'vite:import-analysis') {
84
- return false
85
- }
86
- return true
87
- })
88
-
89
186
  server.watcher.addListener('change', async (path) => {
90
187
  const id = path.replace(process.cwd(), '')
91
-
92
188
  if (!id.endsWith('tsx') && !id.endsWith('jsx')) {
93
189
  return
94
190
  }
95
-
96
- const out = await server.transformRequest(id)
97
- if (!out) return
98
-
99
- let contents = await nativeBabelTransform(out.code)
100
-
101
- contents = contents
102
- .replace('import.meta.hot.accept(() => {})', '')
103
- .replace('react_jsx-dev-runtime', 'react/jsx-dev-runtime')
104
- .replace(/\.js\?v=[0-9a-z]+"/gi, '"')
105
- .replaceAll('/node_modules/.vite/deps/', '')
106
- .replace(`import.meta.hot = (0, _client.createHotContext)("/src/App.tsx");`, '')
107
- .replace('var _client = require("/@vite/client");', '')
108
-
109
- contents = `exports = ((exports) => { ${contents}; return exports })({})`
110
-
111
- hotUpdatedCJSFiles.set(id, contents)
191
+ // just so it thinks its loaded
192
+ try {
193
+ void server.transformRequest(id)
194
+ } catch(err) {
195
+ // ok
196
+ console.log('err', err)
197
+ }
112
198
  })
113
199
 
114
200
  await server.listen()
115
201
 
202
+ let isBuilding: Promise<string> | null = null
203
+
116
204
  const dispose = await createDevServer(options, {
117
205
  hotUpdatedCJSFiles,
118
206
  listenForHMR(cb) {
119
207
  hmrListeners.push(cb)
120
208
  },
121
- getIndexBundle: async function getBundle() {
122
- const outputCode = await getBundleCode()
123
-
124
- return outputCode
125
- },
209
+ getIndexBundle: getBundleCode,
126
210
  indexJson: getIndexJsonReponse({ port, root }),
127
211
  })
128
212
 
213
+ getBundleCode()
214
+
129
215
  // rome-ignore lint/nursery/noConsoleLog: ok
130
216
  console.log(`Listening on:`, chalk.green(`http://localhost:${port}`))
131
217
  server.printUrls()
@@ -138,6 +224,16 @@ export const dev = async (options: CLIResolvedOptions) => {
138
224
  await new Promise((res) => server.httpServer?.on('close', res))
139
225
 
140
226
  async function getBundleCode() {
227
+ if (isBuilding) {
228
+ const res = await isBuilding
229
+ return res
230
+ }
231
+
232
+ let done
233
+ isBuilding = new Promise((res) => {
234
+ done = res
235
+ })
236
+
141
237
  // for easier quick testing things:
142
238
  const tmpBundle = join(process.cwd(), 'bundle.tmp.js')
143
239
  if (await pathExists(tmpBundle)) {
@@ -151,12 +247,30 @@ export const dev = async (options: CLIResolvedOptions) => {
151
247
 
152
248
  // build app
153
249
  const buildOutput = await build({
154
- plugins,
250
+ plugins: [
251
+ ...plugins,
252
+ nativePlugin({
253
+ port,
254
+ mode: 'build',
255
+ }),
256
+ viteReactPlugin({
257
+ tsDecorators: true,
258
+ mode: 'build',
259
+ }),
260
+ ],
155
261
  appType: 'custom',
156
262
  root,
157
263
  clearScreen: false,
158
264
  build: {
159
265
  ssr: false,
266
+ minify: false,
267
+ rollupOptions: {
268
+ treeshake: false,
269
+ preserveEntrySignatures: 'strict',
270
+ output: {
271
+ format: 'cjs',
272
+ },
273
+ },
160
274
  },
161
275
  mode: 'development',
162
276
  define: {
@@ -165,60 +279,79 @@ export const dev = async (options: CLIResolvedOptions) => {
165
279
  },
166
280
  })
167
281
 
168
- const appCodeIn = 'output' in buildOutput ? buildOutput.output[0].code : null
169
-
170
- if (!appCodeIn) {
282
+ if (!('output' in buildOutput)) {
171
283
  throw `❌`
172
284
  }
173
285
 
174
- const appCode = await nativeBabelTransform(appCodeIn)
175
-
176
- const paths = [
177
- join(process.cwd(), 'testing-area', 'react.js'),
178
- join(process.cwd(), 'testing-area', 'react-jsx-runtime.js'),
179
- join(process.cwd(), 'testing-area', 'react-native.js'),
180
- ]
181
-
182
- const [react, reactJsxRuntime, reactNative] = await Promise.all(
183
- paths.map((p) => readFile(p, 'utf-8'))
184
- )
185
-
186
- const reactCode = react.replace(
187
- `module.exports = require_react_development();`,
188
- `return require_react_development()`
189
- )
286
+ let appCode = buildOutput.output
287
+ // entry last
288
+ .sort((a, b) => (a['isEntry'] ? 1 : -1))
289
+ .map((module) => {
290
+ if (module.type == 'chunk') {
291
+ const importsMap = {}
292
+ for (const imp of module.imports) {
293
+ const relativePath = relative(dirname(module.fileName), imp)
294
+ importsMap[relativePath[0] === '.' ? relativePath : './' + relativePath] = imp
295
+ }
296
+
297
+ return `
298
+ ___modules___["${module.fileName}"] = ((exports, module2) => {
299
+ const require = createRequire(${JSON.stringify(importsMap, null, 2)})
300
+
301
+ ${module.code
302
+ .replace(`'use strict';`, '')
303
+ .replace('module.exports = ', 'module2.exports = ')}
304
+ })
305
+
306
+ ${
307
+ module.isEntry
308
+ ? `
309
+ // run entry
310
+ __specialRequire("node_modules/react-native/index.js")
311
+ __specialRequire("${module.fileName}")
312
+ `
313
+ : ''
314
+ }
315
+ `
316
+ }
317
+ })
318
+ .join('\n')
190
319
 
191
- const reactJSXRuntimeCode = reactJsxRuntime.replace(
192
- `module.exports = require_react_jsx_runtime_production_min();`,
193
- `return require_react_jsx_runtime_production_min()`
194
- // `module.exports = require_react_jsx_dev_runtime_development();`,
195
- // `return require_react_jsx_dev_runtime_development();`
196
- )
320
+ if (!appCode) {
321
+ throw `❌`
322
+ }
197
323
 
198
- const reactNativeCode = reactNative
324
+ appCode = appCode
325
+ // this can be done in the individual file transform
326
+ .replace('undefined.accept(() => {})', '')
327
+ .replace('undefined.accept(function() {});', '') // swc
328
+ .replace(
329
+ `var require_react_refresh_runtime_development =`,
330
+ `var require_react_refresh_runtime_development = globalThis['__RequireReactRefreshRuntime__'] = `
331
+ )
332
+ .replace(
333
+ `var require_Pressability = `,
334
+ `var require_Pressability = globalThis['__ReactPressability__'] =`
335
+ )
199
336
  .replace(
200
- `module.exports = require_react_native();`,
201
- `require_ReactNative();
202
- globalThis["ReactPressability"] = require_Pressability;
203
- globalThis["ReactUsePressability"] = require_usePressability;
204
- return require_react_native()`
337
+ `var require_Pressability = `,
338
+ `var require_Pressability = globalThis['__ReactPressability__'] =`
205
339
  )
206
- // forcing onto global so i can re-thread it into require
207
340
  .replace(
208
- `ReactRefreshRuntime.injectIntoGlobalHook(global);`,
209
- `globalThis['_ReactRefreshRuntime'] = ReactRefreshRuntime; ReactRefreshRuntime.injectIntoGlobalHook(global);`
341
+ `var require_usePressability = `,
342
+ `var require_usePressability = globalThis['__ReactUsePressability__'] =`
210
343
  )
211
344
 
212
345
  const templateFile = join(packageRootDir, 'react-native-template.js')
213
346
 
214
- return (await readFile(templateFile, 'utf-8'))
215
- .replace(`// -- react --`, reactCode)
216
- .replace(`// -- react-native --`, reactNativeCode)
217
- .replace(`// -- react/jsx-runtime --`, reactJSXRuntimeCode)
218
- .replace(
219
- `// -- app --`,
220
- appCode.replace('"use strict";', '').replace('undefined.accept(() => {})', '')
221
- )
347
+ const out = (await readFile(templateFile, 'utf-8')) + appCode
348
+
349
+ await writeFile(join(process.cwd(), '.tamagui', 'bundle.js'), out, 'utf-8')
350
+
351
+ done(out)
352
+ isBuilding = null
353
+
354
+ return out
222
355
  }
223
356
  }
224
357
 
@@ -0,0 +1,2 @@
1
+ export declare function getVitePath(moduleName: string): Promise<string>;
2
+ //# sourceMappingURL=getVitePath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getVitePath.d.ts","sourceRoot":"","sources":["../../src/dev/getVitePath.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,mBAkBnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAiBnD,eAAO,MAAM,GAAG,YAAmB,kBAAkB,kBA0MpD,CAAA"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAgBnD,eAAO,MAAM,GAAG,YAAmB,kBAAkB,kBAgVpD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function getVitePath(moduleName: string): Promise<string>;
2
+ //# sourceMappingURL=getVitePath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getVitePath.d.ts","sourceRoot":"","sources":["../src/getVitePath.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,mBAkBnD"}