@vxrn/vite-plugin-metro 1.2.33 → 1.2.35

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.
@@ -37,9 +37,13 @@ module.exports = __toCommonJS(metroPlugin_exports);
37
37
  var import_node_fs = require("node:fs"),
38
38
  import_promises = require("node:fs/promises"),
39
39
  import_launch_editor = __toESM(require("launch-editor"), 1),
40
+ import_debug = require("@vxrn/debug"),
40
41
  import_projectImport = require("../utils/projectImport.cjs"),
41
42
  import_getMetroConfigFromViteConfig = require("../metro-config/getMetroConfigFromViteConfig.cjs"),
42
43
  import_patchMetroServerWithViteConfigAndMetroPluginOptions = require("../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.cjs");
44
+ const {
45
+ debug
46
+ } = (0, import_debug.createDebugger)("vite-plugin-metro");
43
47
  function metroPlugin(options = {}) {
44
48
  return globalThis.__viteMetroPluginOptions__ = options, {
45
49
  name: "metro",
@@ -48,16 +52,24 @@ function metroPlugin(options = {}) {
48
52
  // },
49
53
  configureServer(server) {
50
54
  const {
51
- root: projectRoot
52
- } = server.config,
53
- metroStartTime = Date.now();
55
+ root: projectRoot
56
+ } = server.config;
54
57
  let metroReady = !1,
55
58
  middleware,
56
59
  metroServer,
57
60
  hmrServer,
58
61
  websocketEndpoints,
59
- rnDevtoolsMiddleware;
60
- const metroPromise = (async () => {
62
+ rnDevtoolsMiddleware,
63
+ metroPromise,
64
+ metroPromiseResolvers;
65
+ metroPromise = new Promise((resolve, reject) => {
66
+ metroPromiseResolvers = {
67
+ resolve,
68
+ reject
69
+ };
70
+ });
71
+ const startMetro = async () => {
72
+ const metroStartTime = Date.now();
61
73
  try {
62
74
  const {
63
75
  default: Metro
@@ -89,28 +101,42 @@ function metroPlugin(options = {}) {
89
101
  websocketServer: hmrServer
90
102
  }),
91
103
  ...devMiddleware.websocketEndpoints
92
- }, metroReady = !0;
104
+ }, server.httpServer?.on("upgrade", (request, socket, head) => {
105
+ const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
106
+ websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, ws => {
107
+ websocketEndpoints[pathname].emit("connection", ws, request);
108
+ });
109
+ }), server.middlewares.use(rnDevtoolsMiddleware), metroReady = !0;
93
110
  const metroElapsed = Date.now() - metroStartTime;
94
- console.info(`[metro] Metro bundler ready (${metroElapsed}ms)`);
111
+ debug?.(`Metro bundler ready (${metroElapsed}ms)`), metroPromiseResolvers.resolve();
95
112
  } catch (err) {
96
- throw console.error("[metro] Error during Metro initialization:", err), err;
113
+ throw debug?.(`Error during Metro initialization: ${err}`), metroPromiseResolvers.reject(err), err;
97
114
  }
98
- })();
99
- metroPromise.catch(err => {
100
- console.error("[metro] Failed to start Metro:", err);
101
- }), metroPromise.then(() => {
102
- server.httpServer?.on("upgrade", (request, socket, head) => {
103
- const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
104
- websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, ws => {
105
- websocketEndpoints[pathname].emit("connection", ws, request);
106
- });
107
- }), server.middlewares.use(rnDevtoolsMiddleware);
108
- }), server.middlewares.use(async (req, res, next) => {
115
+ };
116
+ if (server.httpServer) server.httpServer.listening ? startMetro().catch(err => {
117
+ debug?.(`Failed to start Metro: ${err}`);
118
+ }) : server.httpServer.on("listening", () => {
119
+ startMetro().catch(err => {
120
+ debug?.(`Failed to start Metro: ${err}`);
121
+ });
122
+ });else {
123
+ const waitForServer = () => {
124
+ server.httpServer ? server.httpServer.listening ? startMetro().catch(err => {
125
+ debug?.(`Failed to start Metro: ${err}`);
126
+ }) : server.httpServer.on("listening", () => {
127
+ startMetro().catch(err => {
128
+ debug?.(`Failed to start Metro: ${err}`);
129
+ });
130
+ }) : setTimeout(waitForServer, 10);
131
+ };
132
+ waitForServer();
133
+ }
134
+ server.middlewares.use(async (req, res, next) => {
109
135
  if (req.url?.includes(".bundle") && !metroReady && (await metroPromise), middleware) try {
110
136
  if (req.url?.includes(".bundle")) {
111
137
  const VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;
112
138
  if (VITE_METRO_DEBUG_BUNDLE && (0, import_node_fs.existsSync)(VITE_METRO_DEBUG_BUNDLE)) {
113
- console.info(" !!! - serving debug bundle from", VITE_METRO_DEBUG_BUNDLE);
139
+ debug?.(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);
114
140
  const content = await (0, import_promises.readFile)(VITE_METRO_DEBUG_BUNDLE, "utf-8");
115
141
  res.setHeader("Content-Type", "application/javascript"), res.end(content);
116
142
  return;
@@ -134,14 +160,14 @@ function metroPlugin(options = {}) {
134
160
  const frame = JSON.parse(body);
135
161
  (0, import_launch_editor.default)(frame.file), res.statusCode = 200, res.end("Stack frame opened in editor");
136
162
  } catch (e) {
137
- return console.error("Failed to parse stack frame:", e), res.statusCode = 400, res.end("Invalid stack frame JSON");
163
+ return debug?.(`Failed to parse stack frame: ${e}`), res.statusCode = 400, res.end("Invalid stack frame JSON");
138
164
  }
139
165
  });
140
166
  return;
141
167
  }
142
168
  await middleware(req, res, next);
143
169
  } catch (error) {
144
- console.error("Metro middleware error:", error), next();
170
+ debug?.(`Metro middleware error: ${error}`), next();
145
171
  } else next();
146
172
  });
147
173
  }
@@ -25,7 +25,8 @@ __export(metroPlugin_exports, {
25
25
  metroPlugin: () => metroPlugin
26
26
  });
27
27
  module.exports = __toCommonJS(metroPlugin_exports);
28
- var import_node_fs = require("node:fs"), import_promises = require("node:fs/promises"), import_launch_editor = __toESM(require("launch-editor"), 1), import_projectImport = require("../utils/projectImport"), import_getMetroConfigFromViteConfig = require("../metro-config/getMetroConfigFromViteConfig"), import_patchMetroServerWithViteConfigAndMetroPluginOptions = require("../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions");
28
+ var import_node_fs = require("node:fs"), import_promises = require("node:fs/promises"), import_launch_editor = __toESM(require("launch-editor"), 1), import_debug = require("@vxrn/debug"), import_projectImport = require("../utils/projectImport"), import_getMetroConfigFromViteConfig = require("../metro-config/getMetroConfigFromViteConfig"), import_patchMetroServerWithViteConfigAndMetroPluginOptions = require("../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions");
29
+ const { debug } = (0, import_debug.createDebugger)("vite-plugin-metro");
29
30
  function metroPlugin(options = {}) {
30
31
  return globalThis.__viteMetroPluginOptions__ = options, {
31
32
  name: "metro",
@@ -33,9 +34,13 @@ function metroPlugin(options = {}) {
33
34
  // projectRoot = config.root
34
35
  // },
35
36
  configureServer(server) {
36
- const { root: projectRoot } = server.config, metroStartTime = Date.now();
37
- let metroReady = !1, middleware, metroServer, hmrServer, websocketEndpoints, rnDevtoolsMiddleware;
38
- const metroPromise = (async () => {
37
+ const { root: projectRoot } = server.config;
38
+ let metroReady = !1, middleware, metroServer, hmrServer, websocketEndpoints, rnDevtoolsMiddleware, metroPromise, metroPromiseResolvers;
39
+ metroPromise = new Promise((resolve, reject) => {
40
+ metroPromiseResolvers = { resolve, reject };
41
+ });
42
+ const startMetro = async () => {
43
+ const metroStartTime = Date.now();
39
44
  try {
40
45
  const { default: Metro } = await (0, import_projectImport.projectImport)(projectRoot, "metro"), { default: MetroHmrServer } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/HmrServer"), { default: createWebsocketServer } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/lib/createWebsocketServer"), { createDevMiddleware } = await (0, import_projectImport.projectImport)(projectRoot, "@react-native/dev-middleware"), config = await (0, import_getMetroConfigFromViteConfig.getMetroConfigFromViteConfig)(server.config, options), metroResult = await Metro.createConnectMiddleware(config, {
41
46
  // Force enable file watching, even on CI.
@@ -57,29 +62,45 @@ function metroPlugin(options = {}) {
57
62
  websocketServer: hmrServer
58
63
  }),
59
64
  ...devMiddleware.websocketEndpoints
60
- }, metroReady = !0;
65
+ }, server.httpServer?.on("upgrade", (request, socket, head) => {
66
+ const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
67
+ websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, (ws) => {
68
+ websocketEndpoints[pathname].emit("connection", ws, request);
69
+ });
70
+ }), server.middlewares.use(rnDevtoolsMiddleware), metroReady = !0;
61
71
  const metroElapsed = Date.now() - metroStartTime;
62
- console.info(`[metro] Metro bundler ready (${metroElapsed}ms)`);
72
+ debug?.(`Metro bundler ready (${metroElapsed}ms)`), metroPromiseResolvers.resolve();
63
73
  } catch (err) {
64
- throw console.error("[metro] Error during Metro initialization:", err), err;
74
+ throw debug?.(`Error during Metro initialization: ${err}`), metroPromiseResolvers.reject(err), err;
65
75
  }
66
- })();
67
- metroPromise.catch((err) => {
68
- console.error("[metro] Failed to start Metro:", err);
69
- }), metroPromise.then(() => {
70
- server.httpServer?.on("upgrade", (request, socket, head) => {
71
- const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
72
- websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, (ws) => {
73
- websocketEndpoints[pathname].emit("connection", ws, request);
76
+ };
77
+ if (server.httpServer)
78
+ server.httpServer.listening ? startMetro().catch((err) => {
79
+ debug?.(`Failed to start Metro: ${err}`);
80
+ }) : server.httpServer.on("listening", () => {
81
+ startMetro().catch((err) => {
82
+ debug?.(`Failed to start Metro: ${err}`);
74
83
  });
75
- }), server.middlewares.use(rnDevtoolsMiddleware);
76
- }), server.middlewares.use(async (req, res, next) => {
84
+ });
85
+ else {
86
+ const waitForServer = () => {
87
+ server.httpServer ? server.httpServer.listening ? startMetro().catch((err) => {
88
+ debug?.(`Failed to start Metro: ${err}`);
89
+ }) : server.httpServer.on("listening", () => {
90
+ startMetro().catch((err) => {
91
+ debug?.(`Failed to start Metro: ${err}`);
92
+ });
93
+ }) : setTimeout(waitForServer, 10);
94
+ };
95
+ waitForServer();
96
+ }
97
+ server.middlewares.use(async (req, res, next) => {
77
98
  if (req.url?.includes(".bundle") && !metroReady && await metroPromise, middleware)
78
99
  try {
79
100
  if (req.url?.includes(".bundle")) {
80
101
  const VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;
81
102
  if (VITE_METRO_DEBUG_BUNDLE && (0, import_node_fs.existsSync)(VITE_METRO_DEBUG_BUNDLE)) {
82
- console.info(" !!! - serving debug bundle from", VITE_METRO_DEBUG_BUNDLE);
103
+ debug?.(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);
83
104
  const content = await (0, import_promises.readFile)(VITE_METRO_DEBUG_BUNDLE, "utf-8");
84
105
  res.setHeader("Content-Type", "application/javascript"), res.end(content);
85
106
  return;
@@ -106,14 +127,14 @@ function metroPlugin(options = {}) {
106
127
  const frame = JSON.parse(body);
107
128
  (0, import_launch_editor.default)(frame.file), res.statusCode = 200, res.end("Stack frame opened in editor");
108
129
  } catch (e) {
109
- return console.error("Failed to parse stack frame:", e), res.statusCode = 400, res.end("Invalid stack frame JSON");
130
+ return debug?.(`Failed to parse stack frame: ${e}`), res.statusCode = 400, res.end("Invalid stack frame JSON");
110
131
  }
111
132
  });
112
133
  return;
113
134
  }
114
135
  await middleware(req, res, next);
115
136
  } catch (error) {
116
- console.error("Metro middleware error:", error), next();
137
+ debug?.(`Metro middleware error: ${error}`), next();
117
138
  }
118
139
  else
119
140
  next();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/plugins/metroPlugin.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["launchEditor"]
6
6
  }
@@ -39,9 +39,13 @@ module.exports = __toCommonJS(metroPlugin_exports);
39
39
  var import_fs = require("fs"),
40
40
  import_promises = require("fs/promises"),
41
41
  import_launch_editor = __toESM(require("launch-editor"), 1),
42
+ import_debug = require("@vxrn/debug"),
42
43
  import_projectImport = require("../utils/projectImport.native.js"),
43
44
  import_getMetroConfigFromViteConfig = require("../metro-config/getMetroConfigFromViteConfig.native.js"),
44
- import_patchMetroServerWithViteConfigAndMetroPluginOptions = require("../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js");
45
+ import_patchMetroServerWithViteConfigAndMetroPluginOptions = require("../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js"),
46
+ {
47
+ debug
48
+ } = (0, import_debug.createDebugger)("vite-plugin-metro");
45
49
  function metroPlugin() {
46
50
  var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
47
51
  return globalThis.__viteMetroPluginOptions__ = options, {
@@ -53,70 +57,92 @@ function metroPlugin() {
53
57
  var {
54
58
  root: projectRoot
55
59
  } = server.config,
56
- metroStartTime = Date.now(),
57
60
  metroReady = !1,
58
61
  middleware,
59
62
  metroServer,
60
63
  hmrServer,
61
64
  websocketEndpoints,
62
65
  rnDevtoolsMiddleware,
63
- metroPromise = async function () {
64
- try {
65
- var {
66
- default: Metro
67
- } = await (0, import_projectImport.projectImport)(projectRoot, "metro"),
68
- {
69
- default: MetroHmrServer
70
- } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/HmrServer"),
71
- {
72
- default: createWebsocketServer
73
- } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/lib/createWebsocketServer"),
74
- {
75
- createDevMiddleware
76
- } = await (0, import_projectImport.projectImport)(projectRoot, "@react-native/dev-middleware"),
77
- config = await (0, import_getMetroConfigFromViteConfig.getMetroConfigFromViteConfig)(server.config, options),
78
- metroResult = await Metro.createConnectMiddleware(config, {
79
- // Force enable file watching, even on CI.
80
- // This is needed for HMR tests to work on CI.
81
- watch: !0
82
- });
83
- middleware = metroResult.middleware, metroServer = metroResult.metroServer, (0, import_patchMetroServerWithViteConfigAndMetroPluginOptions.patchMetroServerWithViteConfigAndMetroPluginOptions)(metroServer, server.config, options), hmrServer = new MetroHmrServer(metroServer.getBundler(), metroServer.getCreateModuleId(), config);
84
- var reactNativeDevToolsUrl = `http://${typeof server.config.server.host == "boolean" ? "localhost" : server.config.server.host}:${server.config.server.port}`,
85
- devMiddleware = createDevMiddleware({
86
- projectRoot,
87
- serverBaseUrl: reactNativeDevToolsUrl,
88
- logger: console
89
- });
90
- rnDevtoolsMiddleware = devMiddleware.middleware, websocketEndpoints = {
91
- "/hot": createWebsocketServer({
92
- websocketServer: hmrServer
93
- }),
94
- ...devMiddleware.websocketEndpoints
95
- }, metroReady = !0;
96
- var metroElapsed = Date.now() - metroStartTime;
97
- console.info(`[metro] Metro bundler ready (${metroElapsed}ms)`);
98
- } catch (err) {
99
- throw console.error("[metro] Error during Metro initialization:", err), err;
100
- }
101
- }();
102
- metroPromise.catch(function (err) {
103
- console.error("[metro] Failed to start Metro:", err);
104
- }), metroPromise.then(function () {
105
- var _server_httpServer;
106
- (_server_httpServer = server.httpServer) === null || _server_httpServer === void 0 || _server_httpServer.on("upgrade", function (request, socket, head) {
107
- var pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
108
- websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, function (ws) {
109
- websocketEndpoints[pathname].emit("connection", ws, request);
110
- });
111
- }), server.middlewares.use(rnDevtoolsMiddleware);
112
- }), server.middlewares.use(async function (req, res, next) {
66
+ metroPromise,
67
+ metroPromiseResolvers;
68
+ metroPromise = new Promise(function (resolve, reject) {
69
+ metroPromiseResolvers = {
70
+ resolve,
71
+ reject
72
+ };
73
+ });
74
+ var startMetro = async function () {
75
+ var metroStartTime = Date.now();
76
+ try {
77
+ var _server_httpServer,
78
+ {
79
+ default: Metro
80
+ } = await (0, import_projectImport.projectImport)(projectRoot, "metro"),
81
+ {
82
+ default: MetroHmrServer
83
+ } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/HmrServer"),
84
+ {
85
+ default: createWebsocketServer
86
+ } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/lib/createWebsocketServer"),
87
+ {
88
+ createDevMiddleware
89
+ } = await (0, import_projectImport.projectImport)(projectRoot, "@react-native/dev-middleware"),
90
+ config = await (0, import_getMetroConfigFromViteConfig.getMetroConfigFromViteConfig)(server.config, options),
91
+ metroResult = await Metro.createConnectMiddleware(config, {
92
+ // Force enable file watching, even on CI.
93
+ // This is needed for HMR tests to work on CI.
94
+ watch: !0
95
+ });
96
+ middleware = metroResult.middleware, metroServer = metroResult.metroServer, (0, import_patchMetroServerWithViteConfigAndMetroPluginOptions.patchMetroServerWithViteConfigAndMetroPluginOptions)(metroServer, server.config, options), hmrServer = new MetroHmrServer(metroServer.getBundler(), metroServer.getCreateModuleId(), config);
97
+ var reactNativeDevToolsUrl = `http://${typeof server.config.server.host == "boolean" ? "localhost" : server.config.server.host}:${server.config.server.port}`,
98
+ devMiddleware = createDevMiddleware({
99
+ projectRoot,
100
+ serverBaseUrl: reactNativeDevToolsUrl,
101
+ logger: console
102
+ });
103
+ rnDevtoolsMiddleware = devMiddleware.middleware, websocketEndpoints = {
104
+ "/hot": createWebsocketServer({
105
+ websocketServer: hmrServer
106
+ }),
107
+ ...devMiddleware.websocketEndpoints
108
+ }, (_server_httpServer = server.httpServer) === null || _server_httpServer === void 0 || _server_httpServer.on("upgrade", function (request, socket, head) {
109
+ var pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
110
+ websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, function (ws) {
111
+ websocketEndpoints[pathname].emit("connection", ws, request);
112
+ });
113
+ }), server.middlewares.use(rnDevtoolsMiddleware), metroReady = !0;
114
+ var metroElapsed = Date.now() - metroStartTime;
115
+ debug?.(`Metro bundler ready (${metroElapsed}ms)`), metroPromiseResolvers.resolve();
116
+ } catch (err) {
117
+ throw debug?.(`Error during Metro initialization: ${err}`), metroPromiseResolvers.reject(err), err;
118
+ }
119
+ };
120
+ if (server.httpServer) server.httpServer.listening ? startMetro().catch(function (err) {
121
+ debug?.(`Failed to start Metro: ${err}`);
122
+ }) : server.httpServer.on("listening", function () {
123
+ startMetro().catch(function (err) {
124
+ debug?.(`Failed to start Metro: ${err}`);
125
+ });
126
+ });else {
127
+ var waitForServer = function () {
128
+ server.httpServer ? server.httpServer.listening ? startMetro().catch(function (err) {
129
+ debug?.(`Failed to start Metro: ${err}`);
130
+ }) : server.httpServer.on("listening", function () {
131
+ startMetro().catch(function (err) {
132
+ debug?.(`Failed to start Metro: ${err}`);
133
+ });
134
+ }) : setTimeout(waitForServer, 10);
135
+ };
136
+ waitForServer();
137
+ }
138
+ server.middlewares.use(async function (req, res, next) {
113
139
  var _req_url;
114
140
  if (!((_req_url = req.url) === null || _req_url === void 0) && _req_url.includes(".bundle") && !metroReady && (await metroPromise), middleware) try {
115
141
  var _req_url1, _req_headers_useragent, _req_headers_useragent1;
116
142
  if (!((_req_url1 = req.url) === null || _req_url1 === void 0) && _req_url1.includes(".bundle")) {
117
143
  var VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;
118
144
  if (VITE_METRO_DEBUG_BUNDLE && (0, import_fs.existsSync)(VITE_METRO_DEBUG_BUNDLE)) {
119
- console.info(" !!! - serving debug bundle from", VITE_METRO_DEBUG_BUNDLE);
145
+ debug?.(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);
120
146
  var content = await (0, import_promises.readFile)(VITE_METRO_DEBUG_BUNDLE, "utf-8");
121
147
  res.setHeader("Content-Type", "application/javascript"), res.end(content);
122
148
  return;
@@ -135,14 +161,14 @@ function metroPlugin() {
135
161
  var frame = JSON.parse(body);
136
162
  (0, import_launch_editor.default)(frame.file), res.statusCode = 200, res.end("Stack frame opened in editor");
137
163
  } catch (e) {
138
- return console.error("Failed to parse stack frame:", e), res.statusCode = 400, res.end("Invalid stack frame JSON");
164
+ return debug?.(`Failed to parse stack frame: ${e}`), res.statusCode = 400, res.end("Invalid stack frame JSON");
139
165
  }
140
166
  });
141
167
  return;
142
168
  }
143
169
  await middleware(req, res, next);
144
170
  } catch (error) {
145
- console.error("Metro middleware error:", error), next();
171
+ debug?.(`Metro middleware error: ${error}`), next();
146
172
  } else next();
147
173
  });
148
174
  }
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","metroPlugin_exports","__export","metroPlugin","module","exports","import_fs","require","import_promises","import_launch_editor","__toESM","import_projectImport","import_getMetroConfigFromViteConfig","import_patchMetroServerWithViteConfigAndMetroPluginOptions","options","arguments","length","globalThis","__viteMetroPluginOptions__","name","configureServer","server","root","projectRoot","config","metroStartTime","Date","now","metroReady","middleware","metroServer","hmrServer","websocketEndpoints","rnDevtoolsMiddleware","metroPromise","default","Metro","projectImport","MetroHmrServer","createWebsocketServer","createDevMiddleware","getMetroConfigFromViteConfig","metroResult","createConnectMiddleware","watch","patchMetroServerWithViteConfigAndMetroPluginOptions","getBundler","getCreateModuleId","reactNativeDevToolsUrl","host","port","devMiddleware","serverBaseUrl","logger","console","websocketServer","metroElapsed","info","err","error","catch","then","_server_httpServer","httpServer","on","request","socket","head","pathname","URL","url","headers","handleUpgrade","ws","emit","middlewares","use","req","res","next","_req_url","includes","_req_url1","_req_headers_useragent","_req_headers_useragent1","VITE_METRO_DEBUG_BUNDLE","process","env","existsSync","content","readFile","setHeader","end","statusCode","method","body","chunk","toString","frame","JSON","parse","file","e"],"sources":["../../../src/plugins/metroPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","metroPlugin_exports","__export","metroPlugin","module","exports","import_fs","require","import_promises","import_launch_editor","__toESM","import_debug","import_projectImport","import_getMetroConfigFromViteConfig","import_patchMetroServerWithViteConfigAndMetroPluginOptions","debug","createDebugger","options","arguments","length","globalThis","__viteMetroPluginOptions__","name","configureServer","server","root","projectRoot","config","metroReady","middleware","metroServer","hmrServer","websocketEndpoints","rnDevtoolsMiddleware","metroPromise","metroPromiseResolvers","Promise","resolve","reject","startMetro","metroStartTime","Date","now","_server_httpServer","default","Metro","projectImport","MetroHmrServer","createWebsocketServer","createDevMiddleware","getMetroConfigFromViteConfig","metroResult","createConnectMiddleware","watch","patchMetroServerWithViteConfigAndMetroPluginOptions","getBundler","getCreateModuleId","reactNativeDevToolsUrl","host","port","devMiddleware","serverBaseUrl","logger","console","websocketServer","httpServer","on","request","socket","head","pathname","URL","url","headers","handleUpgrade","ws","emit","middlewares","use","metroElapsed","err","listening","catch","waitForServer","setTimeout","req","res","next","_req_url","includes","_req_url1","_req_headers_useragent","_req_headers_useragent1","VITE_METRO_DEBUG_BUNDLE","process","env","existsSync","content","readFile","setHeader","end","statusCode","method","body","chunk","toString","frame","JSON","parse","file","e","error"],"sources":["../../../src/plugins/metroPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,11 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import launchEditor from "launch-editor";
4
+ import { createDebugger } from "@vxrn/debug";
4
5
  import { projectImport } from "../utils/projectImport";
5
6
  import { getMetroConfigFromViteConfig } from "../metro-config/getMetroConfigFromViteConfig";
6
7
  import { patchMetroServerWithViteConfigAndMetroPluginOptions } from "../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions";
8
+ const { debug } = createDebugger("vite-plugin-metro");
7
9
  function metroPlugin(options = {}) {
8
10
  return globalThis.__viteMetroPluginOptions__ = options, {
9
11
  name: "metro",
@@ -11,9 +13,13 @@ function metroPlugin(options = {}) {
11
13
  // projectRoot = config.root
12
14
  // },
13
15
  configureServer(server) {
14
- const { root: projectRoot } = server.config, metroStartTime = Date.now();
15
- let metroReady = !1, middleware, metroServer, hmrServer, websocketEndpoints, rnDevtoolsMiddleware;
16
- const metroPromise = (async () => {
16
+ const { root: projectRoot } = server.config;
17
+ let metroReady = !1, middleware, metroServer, hmrServer, websocketEndpoints, rnDevtoolsMiddleware, metroPromise, metroPromiseResolvers;
18
+ metroPromise = new Promise((resolve, reject) => {
19
+ metroPromiseResolvers = { resolve, reject };
20
+ });
21
+ const startMetro = async () => {
22
+ const metroStartTime = Date.now();
17
23
  try {
18
24
  const { default: Metro } = await projectImport(projectRoot, "metro"), { default: MetroHmrServer } = await projectImport(projectRoot, "metro/private/HmrServer"), { default: createWebsocketServer } = await projectImport(projectRoot, "metro/private/lib/createWebsocketServer"), { createDevMiddleware } = await projectImport(projectRoot, "@react-native/dev-middleware"), config = await getMetroConfigFromViteConfig(server.config, options), metroResult = await Metro.createConnectMiddleware(config, {
19
25
  // Force enable file watching, even on CI.
@@ -35,29 +41,45 @@ function metroPlugin(options = {}) {
35
41
  websocketServer: hmrServer
36
42
  }),
37
43
  ...devMiddleware.websocketEndpoints
38
- }, metroReady = !0;
44
+ }, server.httpServer?.on("upgrade", (request, socket, head) => {
45
+ const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
46
+ websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, (ws) => {
47
+ websocketEndpoints[pathname].emit("connection", ws, request);
48
+ });
49
+ }), server.middlewares.use(rnDevtoolsMiddleware), metroReady = !0;
39
50
  const metroElapsed = Date.now() - metroStartTime;
40
- console.info(`[metro] Metro bundler ready (${metroElapsed}ms)`);
51
+ debug?.(`Metro bundler ready (${metroElapsed}ms)`), metroPromiseResolvers.resolve();
41
52
  } catch (err) {
42
- throw console.error("[metro] Error during Metro initialization:", err), err;
53
+ throw debug?.(`Error during Metro initialization: ${err}`), metroPromiseResolvers.reject(err), err;
43
54
  }
44
- })();
45
- metroPromise.catch((err) => {
46
- console.error("[metro] Failed to start Metro:", err);
47
- }), metroPromise.then(() => {
48
- server.httpServer?.on("upgrade", (request, socket, head) => {
49
- const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
50
- websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, (ws) => {
51
- websocketEndpoints[pathname].emit("connection", ws, request);
55
+ };
56
+ if (server.httpServer)
57
+ server.httpServer.listening ? startMetro().catch((err) => {
58
+ debug?.(`Failed to start Metro: ${err}`);
59
+ }) : server.httpServer.on("listening", () => {
60
+ startMetro().catch((err) => {
61
+ debug?.(`Failed to start Metro: ${err}`);
52
62
  });
53
- }), server.middlewares.use(rnDevtoolsMiddleware);
54
- }), server.middlewares.use(async (req, res, next) => {
63
+ });
64
+ else {
65
+ const waitForServer = () => {
66
+ server.httpServer ? server.httpServer.listening ? startMetro().catch((err) => {
67
+ debug?.(`Failed to start Metro: ${err}`);
68
+ }) : server.httpServer.on("listening", () => {
69
+ startMetro().catch((err) => {
70
+ debug?.(`Failed to start Metro: ${err}`);
71
+ });
72
+ }) : setTimeout(waitForServer, 10);
73
+ };
74
+ waitForServer();
75
+ }
76
+ server.middlewares.use(async (req, res, next) => {
55
77
  if (req.url?.includes(".bundle") && !metroReady && await metroPromise, middleware)
56
78
  try {
57
79
  if (req.url?.includes(".bundle")) {
58
80
  const VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;
59
81
  if (VITE_METRO_DEBUG_BUNDLE && existsSync(VITE_METRO_DEBUG_BUNDLE)) {
60
- console.info(" !!! - serving debug bundle from", VITE_METRO_DEBUG_BUNDLE);
82
+ debug?.(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);
61
83
  const content = await readFile(VITE_METRO_DEBUG_BUNDLE, "utf-8");
62
84
  res.setHeader("Content-Type", "application/javascript"), res.end(content);
63
85
  return;
@@ -84,14 +106,14 @@ function metroPlugin(options = {}) {
84
106
  const frame = JSON.parse(body);
85
107
  launchEditor(frame.file), res.statusCode = 200, res.end("Stack frame opened in editor");
86
108
  } catch (e) {
87
- return console.error("Failed to parse stack frame:", e), res.statusCode = 400, res.end("Invalid stack frame JSON");
109
+ return debug?.(`Failed to parse stack frame: ${e}`), res.statusCode = 400, res.end("Invalid stack frame JSON");
88
110
  }
89
111
  });
90
112
  return;
91
113
  }
92
114
  await middleware(req, res, next);
93
115
  } catch (error) {
94
- console.error("Metro middleware error:", error), next();
116
+ debug?.(`Metro middleware error: ${error}`), next();
95
117
  }
96
118
  else
97
119
  next();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/plugins/metroPlugin.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }