@vxrn/vite-plugin-metro 1.2.22 → 1.2.24

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.
Files changed (27) hide show
  1. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +8 -4
  2. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.js +8 -3
  3. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.js.map +1 -1
  4. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +6 -2
  5. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -1
  6. package/dist/cjs/plugins/metroPlugin.cjs +27 -28
  7. package/dist/cjs/plugins/metroPlugin.js +7 -10
  8. package/dist/cjs/plugins/metroPlugin.js.map +1 -1
  9. package/dist/cjs/plugins/metroPlugin.native.js +21 -26
  10. package/dist/cjs/plugins/metroPlugin.native.js.map +1 -1
  11. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.js +8 -3
  12. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.js.map +1 -1
  13. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +8 -4
  14. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +1 -1
  15. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +6 -2
  16. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -1
  17. package/dist/esm/plugins/metroPlugin.js +6 -10
  18. package/dist/esm/plugins/metroPlugin.js.map +1 -1
  19. package/dist/esm/plugins/metroPlugin.mjs +27 -28
  20. package/dist/esm/plugins/metroPlugin.mjs.map +1 -1
  21. package/dist/esm/plugins/metroPlugin.native.js +21 -26
  22. package/dist/esm/plugins/metroPlugin.native.js.map +1 -1
  23. package/package.json +3 -3
  24. package/src/plugins/expoManifestRequestHandlerPlugin.ts +14 -7
  25. package/src/plugins/metroPlugin.ts +21 -22
  26. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +1 -1
  27. package/types/plugins/metroPlugin.d.ts.map +1 -1
@@ -32,13 +32,17 @@ function expoManifestRequestHandlerPlugin(options) {
32
32
  // configResolved(config) {
33
33
  // projectRoot = config.root
34
34
  // },
35
- async configureServer(server) {
35
+ configureServer(server) {
36
36
  const {
37
- root: projectRoot
38
- } = server.config,
39
- ExpoGoManifestHandlerMiddleware = (await (0, import_projectImport.projectImport)(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js")).default.ExpoGoManifestHandlerMiddleware;
37
+ root: projectRoot
38
+ } = server.config;
39
+ let ExpoGoManifestHandlerMiddleware;
40
+ const importPromise = (0, import_projectImport.projectImport)(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js").then(mod => {
41
+ ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware;
42
+ });
40
43
  server.middlewares.use(async (req, res, next) => {
41
44
  if (!req.headers["expo-platform"]) return next();
45
+ ExpoGoManifestHandlerMiddleware || (await importPromise);
42
46
  const protocol = req.socket instanceof import_node_tls.TLSSocket && req.socket.encrypted ? "https" : "http",
43
47
  manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {
44
48
  constructUrl: ({
@@ -24,14 +24,19 @@ function expoManifestRequestHandlerPlugin(options) {
24
24
  // configResolved(config) {
25
25
  // projectRoot = config.root
26
26
  // },
27
- async configureServer(server) {
28
- const { root: projectRoot } = server.config, ExpoGoManifestHandlerMiddleware = (await (0, import_projectImport.projectImport)(
27
+ configureServer(server) {
28
+ const { root: projectRoot } = server.config;
29
+ let ExpoGoManifestHandlerMiddleware;
30
+ const importPromise = (0, import_projectImport.projectImport)(
29
31
  projectRoot,
30
32
  "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js"
31
- )).default.ExpoGoManifestHandlerMiddleware;
33
+ ).then((mod) => {
34
+ ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware;
35
+ });
32
36
  server.middlewares.use(async (req, res, next) => {
33
37
  if (!req.headers["expo-platform"])
34
38
  return next();
39
+ ExpoGoManifestHandlerMiddleware || await importPromise;
35
40
  const protocol = req.socket instanceof import_node_tls.TLSSocket && req.socket.encrypted ? "https" : "http", manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {
36
41
  constructUrl: ({ scheme, hostname }) => {
37
42
  const host = req.headers["x-forwarded-host"] || req.headers.host || hostname;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/plugins/expoManifestRequestHandlerPlugin.ts"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA0B,qBAG1B,uBAA8B,mCAC9B,sEAA6E;AActE,SAAS,iCACd,SACc;AAGd,SAAO;AAAA,IACL,MAAM;AAAA;AAAA;AAAA;AAAA,IAIN,MAAM,gBAAgB,QAAQ;AAC5B,YAAM,EAAE,MAAM,YAAY,IAAI,OAAO,QAE/B,mCACJ,UAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,GACA,QAAQ;AAEV,aAAO,YAAY,IAAI,OAAO,KAAK,KAAK,SAAS;AAC/C,YAAI,CAAC,IAAI,QAAQ,eAAe;AAE9B,iBAAO,KAAK;AAGd,cAAM,WAAW,IAAI,kBAAkB,6BAAa,IAAI,OAAO,YAAY,UAAU,QAE/E,4BAA4B,IAAI,gCAAgC,aAAa;AAAA,UACjF,cAAc,CAAC,EAAE,QAAQ,SAAS,MAAM;AAEtC,kBAAM,OAAO,IAAI,QAAQ,kBAAkB,KAAK,IAAI,QAAQ,QAAQ;AAEpE,mBAAK,SAOE,GAAG,YAAY,MAAM,MAAM,IAAI,KAH7B;AAAA,UAIX;AAAA,QACF,CAAC;AAED,QAAI,SAAS,sBACX;AAAA,UACE;AAAA,UACA,QAAQ;AAAA,QACV,GAIF,0BAA0B,mBAAmB,KAAK,KAAK,IAAI;AAAA,MAC7D,CAAC;AAAA,IACH;AAAA,EACF;AACF;",
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA0B,qBAG1B,uBAA8B,mCAC9B,sEAA6E;AActE,SAAS,iCACd,SACc;AAGd,SAAO;AAAA,IACL,MAAM;AAAA;AAAA;AAAA;AAAA,IAIN,gBAAgB,QAAQ;AACtB,YAAM,EAAE,MAAM,YAAY,IAAI,OAAO;AAGrC,UAAI;AACJ,YAAM,oBAAgB;AAAA,QACpB;AAAA,QACA;AAAA,MACF,EAAE,KAAK,CAAC,QAAQ;AACd,0CAAkC,IAAI,QAAQ;AAAA,MAChD,CAAC;AAED,aAAO,YAAY,IAAI,OAAO,KAAK,KAAK,SAAS;AAC/C,YAAI,CAAC,IAAI,QAAQ,eAAe;AAE9B,iBAAO,KAAK;AAId,QAAK,mCACH,MAAM;AAGR,cAAM,WAAW,IAAI,kBAAkB,6BAAa,IAAI,OAAO,YAAY,UAAU,QAE/E,4BAA4B,IAAI,gCAAgC,aAAa;AAAA,UACjF,cAAc,CAAC,EAAE,QAAQ,SAAS,MAAM;AAEtC,kBAAM,OAAO,IAAI,QAAQ,kBAAkB,KAAK,IAAI,QAAQ,QAAQ;AAEpE,mBAAK,SAOE,GAAG,YAAY,MAAM,MAAM,IAAI,KAH7B;AAAA,UAIX;AAAA,QACF,CAAC;AAED,QAAI,SAAS,sBACX;AAAA,UACE;AAAA,UACA,QAAQ;AAAA,QACV,GAIF,0BAA0B,mBAAmB,KAAK,KAAK,IAAI;AAAA,MAC7D,CAAC;AAAA,IACH;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -37,13 +37,17 @@ function expoManifestRequestHandlerPlugin(options) {
37
37
  // configResolved(config) {
38
38
  // projectRoot = config.root
39
39
  // },
40
- async configureServer(server) {
40
+ configureServer(server) {
41
41
  var {
42
42
  root: projectRoot
43
43
  } = server.config,
44
- ExpoGoManifestHandlerMiddleware = (await (0, import_projectImport.projectImport)(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js")).default.ExpoGoManifestHandlerMiddleware;
44
+ ExpoGoManifestHandlerMiddleware,
45
+ importPromise = (0, import_projectImport.projectImport)(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js").then(function (mod) {
46
+ ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware;
47
+ });
45
48
  server.middlewares.use(async function (req, res, next) {
46
49
  if (!req.headers["expo-platform"]) return next();
50
+ ExpoGoManifestHandlerMiddleware || (await importPromise);
47
51
  var protocol = _instanceof(req.socket, import_tls.TLSSocket) && req.socket.encrypted ? "https" : "http",
48
52
  manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {
49
53
  constructUrl: function (param) {
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","expoManifestRequestHandlerPlugin_exports","__export","expoManifestRequestHandlerPlugin","module","exports","import_tls","require","import_projectImport","import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName","_instanceof","left","right","Symbol","hasInstance","options","name","configureServer","server","root","projectRoot","config","ExpoGoManifestHandlerMiddleware","projectImport","default","middlewares","use","req","res","next","headers","protocol","socket","TLSSocket","encrypted","manifestHandlerMiddleware","constructUrl","param","scheme","hostname","host","mainModuleName","patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName","handleRequestAsync"],"sources":["../../../src/plugins/expoManifestRequestHandlerPlugin.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,wCAAA;AAAAC,QAAA,CAAAD,wCAAA;EAAAE,gCAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAA0B,CAAAK,wCAGI;AAevB,IAAAK,UAAS,GAAAC,OAAA;EAAAC,oBAEA,GAAAD,OAAA;EAAAE,mEAAA,GAAAF,OAAA;AAGd,SAAOG,YAAAC,IAAA,EAAAC,KAAA;EAAA,OACLA,KAAM,mBAAAC,MAAA,UAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA,MAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA,IAAAA,IAAA,YAAAC,KAAA;AAAA;AAAA,SAAAT,iCAAAY,OAAA;EAAA;IAINC,IAAA,EAAM,+BAAwB;IAC5B;IAGQ;IACJ;IACA,MAEFC,eAAQA,CAAAC,MAAA;MAEV;UAAAC,IAAO,EAAAC;QAAgB,IAAAF,MAAO,CAAKG,MAAK;QAAAC,+BAAS,cAAAd,oBAAA,CAAAe,aAAA,EAAAH,WAAA,qFAAAI,OAAA,CAAAF,+BAAA;MAC/CJ,MAAI,CAACO,WAAI,CAAQC,GAAA,iBAAeC,GAAA,EAAAC,GAAA,EAAAC,IAAA;QAE9B,KAAAF,GAAA,CAAOG,OAAK,mBAGd,OAAMD,IAAA;QAE6E,IACjFE,QAAA,GAAArB,WAAiB,CAAQiB,GAAA,CAAAK,MAAS,EAAA1B,UAAM,CAAA2B,SAAA,KAAAN,GAAA,CAAAK,MAAA,CAAAE,SAAA;UAAAC,yBAAA,OAAAb,+BAAA,CAAAF,WAAA;YAEtCgB,YAAM,WAAAA,CAAWC,KAAQ;cAEzB;kBAAAC,MAAK;kBAAAC;gBAOK,IAAAF,KAAY;gBAAAG,IAAM,GAAAb,GAAM,CAAAG,OAHzB,wBAAAH,GAAA,CAAAG,OAAA,CAAAU,IAAA,IAAAD,QAAA;cAIX,OAAAD,MAAA,MAAAP,QAAA,IAAAO,MAAA,MAAAE,IAAA,KAAAA,IAAA;YACD;UAEG;QACFzB,OACE,EAAA0B,cAAA,QAAAhC,mEAAA,CAAAiC,4DAAA,EAAAP,yBAAA,EAAApB,OAAA,CAAA0B,cAAA,GAAAN,yBAAA,CAAAQ,kBAAA,CAAAhB,GAAA,EAAAC,GAAA,EAAAC,IAAA;MAAA;IACQ;EAK+C;AAC5D","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","expoManifestRequestHandlerPlugin_exports","__export","expoManifestRequestHandlerPlugin","module","exports","import_tls","require","import_projectImport","import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName","_instanceof","left","right","Symbol","hasInstance","options","name","configureServer","server","root","projectRoot","config","ExpoGoManifestHandlerMiddleware","importPromise","projectImport","then","default","middlewares","use","req","res","next","headers","protocol","socket","TLSSocket","encrypted","manifestHandlerMiddleware","constructUrl","param","scheme","hostname","host","mainModuleName","patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName","handleRequestAsync"],"sources":["../../../src/plugins/expoManifestRequestHandlerPlugin.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,wCAAA;AAAAC,QAAA,CAAAD,wCAAA;EAAAE,gCAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAA0B,CAAAK,wCAGI;AAevB,IAAAK,UAAS,GAAAC,OAAA;EAAAC,oBAEA,GAAAD,OAAA;EAAAE,mEAAA,GAAAF,OAAA;AAGd,SAAOG,YAAAC,IAAA,EAAAC,KAAA;EAAA,OACLA,KAAM,mBAAAC,MAAA,UAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA,MAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA,IAAAA,IAAA,YAAAC,KAAA;AAAA;AAAA,SAAAT,iCAAAY,OAAA;EAAA;IAINC,IAAA,iCAAwB;IACtB;IAGA;IACA;IAAsBC,eACpBA,CAAAC,MAAA;MAAA,IACA;UAAAC,IAAA,EAAAC;QAAA,IAAAF,MAAA,CAAAG,MAAA;QAAAC,+BAAA;QAAAC,aAAA,OAAAf,oBAAA,CAAAgB,aAAA,EAAAJ,WAAA,oFAAAK,IAAA,WAAA5B,GAAA;UACAyB,+BAAc,GAAAzB,GAAA,CAAA6B,OAAA,CAAAJ,+BAAA;QACd;MACFJ,MAAC,CAAAS,WAAA,CAAAC,GAAA,iBAAAC,GAAA,EAAAC,GAAA,EAAAC,IAAA;QAED,KAAOF,GAAA,CAAAG,OAAA,CAAY,eAAW,CAAK,EACjC,OAASD,IAAA;QAEPT,+BAAY,WAAAC,aAAA;QAIT,IAAAU,QAAA,GAAAvB,WAAA,CAAAmB,GAAA,CAAAK,MACH,EAAA5B,UAAM,CAAA6B,SAAA,KAAAN,GAAA,CAAAK,MAAA,CAAAE,SAAA;UAAAC,yBAAA,OAAAf,+BAAA,CAAAF,WAAA;YAGRkB,YAAM,WAAAA,CAAeC,KAAA;cAGnB;kBAAAC,MAAc;kBAACC;gBAAU,IAAAF,KAAS;gBAAAG,IAAM,GAAAb,GAAA,CAAAG,OAAA,wBAAAH,GAAA,CAAAG,OAAA,CAAAU,IAAA,IAAAD,QAAA;cAEtC,OAAMD,MAAO,MAAIP,QAAQ,IAAAO,MAAA,MAAkBE,IAAA,EAAK,GAAIA,IAAA;YAEpD;UAIS,EAIX;QACF3B,OAAC,EAAA4B,cAAA,QAAAlC,mEAAA,CAAAmC,4DAAA,EAAAP,yBAAA,EAAAtB,OAAA,CAAA4B,cAAA,GAAAN,yBAAA,CAAAQ,kBAAA,CAAAhB,GAAA,EAAAC,GAAA,EAAAC,IAAA;MAED,EAAI;IACF;EACE;AACQ","ignoreList":[]}
@@ -36,7 +36,6 @@ __export(metroPlugin_exports, {
36
36
  module.exports = __toCommonJS(metroPlugin_exports);
37
37
  var import_node_fs = require("node:fs"),
38
38
  import_promises = require("node:fs/promises"),
39
- import_node_url = require("node:url"),
40
39
  import_launch_editor = __toESM(require("launch-editor"), 1),
41
40
  import_projectImport = require("../utils/projectImport.cjs"),
42
41
  import_getMetroConfigFromViteConfig = require("../metro-config/getMetroConfigFromViteConfig.cjs"),
@@ -47,35 +46,37 @@ function metroPlugin(options = {}) {
47
46
  // configResolved(config) {
48
47
  // projectRoot = config.root
49
48
  // },
50
- async configureServer(server) {
49
+ configureServer(server) {
51
50
  const {
52
- logger,
53
51
  root: projectRoot
54
52
  } = server.config,
55
53
  metroStartTime = Date.now();
56
- let metroReady = !1;
57
- const {
58
- default: Metro
59
- } = await (0, import_projectImport.projectImport)(projectRoot, "metro"),
60
- {
61
- default: MetroHmrServer
62
- } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/HmrServer"),
63
- {
64
- default: createWebsocketServer
65
- } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/lib/createWebsocketServer"),
66
- {
67
- createDevMiddleware
68
- } = await (0, import_projectImport.projectImport)(projectRoot, "@react-native/dev-middleware"),
69
- config = await (0, import_getMetroConfigFromViteConfig.getMetroConfigFromViteConfig)(server.config, options);
70
- let middleware, metroServer, hmrServer, websocketEndpoints, rnDevtoolsMiddleware;
54
+ let metroReady = !1,
55
+ middleware,
56
+ metroServer,
57
+ hmrServer,
58
+ websocketEndpoints,
59
+ rnDevtoolsMiddleware;
71
60
  const metroPromise = (async () => {
72
- console.info("[metro] Starting Metro bundler in background...");
73
61
  try {
74
- const metroResult = await Metro.createConnectMiddleware(config, {
75
- // Force enable file watching, even on CI.
76
- // This is needed for HMR tests to work on CI.
77
- watch: !0
78
- });
62
+ const {
63
+ default: Metro
64
+ } = await (0, import_projectImport.projectImport)(projectRoot, "metro"),
65
+ {
66
+ default: MetroHmrServer
67
+ } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/HmrServer"),
68
+ {
69
+ default: createWebsocketServer
70
+ } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/lib/createWebsocketServer"),
71
+ {
72
+ createDevMiddleware
73
+ } = await (0, import_projectImport.projectImport)(projectRoot, "@react-native/dev-middleware"),
74
+ config = await (0, import_getMetroConfigFromViteConfig.getMetroConfigFromViteConfig)(server.config, options),
75
+ metroResult = await Metro.createConnectMiddleware(config, {
76
+ // Force enable file watching, even on CI.
77
+ // This is needed for HMR tests to work on CI.
78
+ watch: !0
79
+ });
79
80
  middleware = metroResult.middleware, metroServer = metroResult.metroServer, (0, import_patchMetroServerWithViteConfigAndMetroPluginOptions.patchMetroServerWithViteConfigAndMetroPluginOptions)(metroServer, server.config, options), hmrServer = new MetroHmrServer(metroServer.getBundler(), metroServer.getCreateModuleId(), config);
80
81
  const reactNativeDevToolsUrl = `http://${typeof server.config.server.host == "boolean" ? "localhost" : server.config.server.host}:${server.config.server.port}`,
81
82
  devMiddleware = createDevMiddleware({
@@ -99,10 +100,8 @@ function metroPlugin(options = {}) {
99
100
  console.error("[metro] Failed to start Metro:", err);
100
101
  }), metroPromise.then(() => {
101
102
  server.httpServer?.on("upgrade", (request, socket, head) => {
102
- const {
103
- pathname
104
- } = (0, import_node_url.parse)(request.url);
105
- pathname != null && websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, ws => {
103
+ const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
104
+ websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, ws => {
106
105
  websocketEndpoints[pathname].emit("connection", ws, request);
107
106
  });
108
107
  }), server.middlewares.use(rnDevtoolsMiddleware);
@@ -25,22 +25,19 @@ __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_node_url = require("node:url"), 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_projectImport = require("../utils/projectImport"), import_getMetroConfigFromViteConfig = require("../metro-config/getMetroConfigFromViteConfig"), import_patchMetroServerWithViteConfigAndMetroPluginOptions = require("../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions");
29
29
  function metroPlugin(options = {}) {
30
30
  return globalThis.__viteMetroPluginOptions__ = options, {
31
31
  name: "metro",
32
32
  // configResolved(config) {
33
33
  // projectRoot = config.root
34
34
  // },
35
- async configureServer(server) {
36
- const { logger, root: projectRoot } = server.config, metroStartTime = Date.now();
37
- let metroReady = !1;
38
- 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);
39
- let middleware, metroServer, hmrServer, websocketEndpoints, rnDevtoolsMiddleware;
35
+ configureServer(server) {
36
+ const { root: projectRoot } = server.config, metroStartTime = Date.now();
37
+ let metroReady = !1, middleware, metroServer, hmrServer, websocketEndpoints, rnDevtoolsMiddleware;
40
38
  const metroPromise = (async () => {
41
- console.info("[metro] Starting Metro bundler in background...");
42
39
  try {
43
- const metroResult = await Metro.createConnectMiddleware(config, {
40
+ 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, {
44
41
  // Force enable file watching, even on CI.
45
42
  // This is needed for HMR tests to work on CI.
46
43
  watch: !0
@@ -71,8 +68,8 @@ function metroPlugin(options = {}) {
71
68
  console.error("[metro] Failed to start Metro:", err);
72
69
  }), metroPromise.then(() => {
73
70
  server.httpServer?.on("upgrade", (request, socket, head) => {
74
- const { pathname } = (0, import_node_url.parse)(request.url);
75
- pathname != null && websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, (ws) => {
71
+ const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
72
+ websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, (ws) => {
76
73
  websocketEndpoints[pathname].emit("connection", ws, request);
77
74
  });
78
75
  }), server.middlewares.use(rnDevtoolsMiddleware);
@@ -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
  }
@@ -38,7 +38,6 @@ __export(metroPlugin_exports, {
38
38
  module.exports = __toCommonJS(metroPlugin_exports);
39
39
  var import_fs = require("fs"),
40
40
  import_promises = require("fs/promises"),
41
- import_url = require("url"),
42
41
  import_launch_editor = __toESM(require("launch-editor"), 1),
43
42
  import_projectImport = require("../utils/projectImport.native.js"),
44
43
  import_getMetroConfigFromViteConfig = require("../metro-config/getMetroConfigFromViteConfig.native.js"),
@@ -50,39 +49,37 @@ function metroPlugin() {
50
49
  // configResolved(config) {
51
50
  // projectRoot = config.root
52
51
  // },
53
- async configureServer(server) {
52
+ configureServer(server) {
54
53
  var {
55
- logger,
56
54
  root: projectRoot
57
55
  } = server.config,
58
56
  metroStartTime = Date.now(),
59
57
  metroReady = !1,
60
- {
61
- default: Metro
62
- } = await (0, import_projectImport.projectImport)(projectRoot, "metro"),
63
- {
64
- default: MetroHmrServer
65
- } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/HmrServer"),
66
- {
67
- default: createWebsocketServer
68
- } = await (0, import_projectImport.projectImport)(projectRoot, "metro/private/lib/createWebsocketServer"),
69
- {
70
- createDevMiddleware
71
- } = await (0, import_projectImport.projectImport)(projectRoot, "@react-native/dev-middleware"),
72
- config = await (0, import_getMetroConfigFromViteConfig.getMetroConfigFromViteConfig)(server.config, options),
73
58
  middleware,
74
59
  metroServer,
75
60
  hmrServer,
76
61
  websocketEndpoints,
77
62
  rnDevtoolsMiddleware,
78
63
  metroPromise = async function () {
79
- console.info("[metro] Starting Metro bundler in background...");
80
64
  try {
81
- var metroResult = await Metro.createConnectMiddleware(config, {
82
- // Force enable file watching, even on CI.
83
- // This is needed for HMR tests to work on CI.
84
- watch: !0
85
- });
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
+ });
86
83
  middleware = metroResult.middleware, metroServer = metroResult.metroServer, (0, import_patchMetroServerWithViteConfigAndMetroPluginOptions.patchMetroServerWithViteConfigAndMetroPluginOptions)(metroServer, server.config, options), hmrServer = new MetroHmrServer(metroServer.getBundler(), metroServer.getCreateModuleId(), config);
87
84
  var reactNativeDevToolsUrl = `http://${typeof server.config.server.host == "boolean" ? "localhost" : server.config.server.host}:${server.config.server.port}`,
88
85
  devMiddleware = createDevMiddleware({
@@ -107,10 +104,8 @@ function metroPlugin() {
107
104
  }), metroPromise.then(function () {
108
105
  var _server_httpServer;
109
106
  (_server_httpServer = server.httpServer) === null || _server_httpServer === void 0 || _server_httpServer.on("upgrade", function (request, socket, head) {
110
- var {
111
- pathname
112
- } = (0, import_url.parse)(request.url);
113
- pathname != null && websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, function (ws) {
107
+ var pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
108
+ websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, function (ws) {
114
109
  websocketEndpoints[pathname].emit("connection", ws, request);
115
110
  });
116
111
  }), server.middlewares.use(rnDevtoolsMiddleware);
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","metroPlugin_exports","__export","metroPlugin","module","exports","import_fs","require","import_promises","import_url","import_launch_editor","__toESM","import_projectImport","import_getMetroConfigFromViteConfig","import_patchMetroServerWithViteConfigAndMetroPluginOptions","options","arguments","length","globalThis","__viteMetroPluginOptions__","name","configureServer","server","logger","root","projectRoot","config","metroStartTime","Date","now","metroReady","default","Metro","projectImport","MetroHmrServer","createWebsocketServer","createDevMiddleware","getMetroConfigFromViteConfig","middleware","metroServer","hmrServer","websocketEndpoints","rnDevtoolsMiddleware","metroPromise","console","info","metroResult","createConnectMiddleware","watch","patchMetroServerWithViteConfigAndMetroPluginOptions","getBundler","getCreateModuleId","reactNativeDevToolsUrl","host","port","devMiddleware","serverBaseUrl","websocketServer","metroElapsed","err","error","catch","then","_server_httpServer","httpServer","on","request","socket","head","pathname","parse","url","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","headers","statusCode","method","body","chunk","toString","frame","JSON","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_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":[]}
@@ -7,14 +7,19 @@ function expoManifestRequestHandlerPlugin(options) {
7
7
  // configResolved(config) {
8
8
  // projectRoot = config.root
9
9
  // },
10
- async configureServer(server) {
11
- const { root: projectRoot } = server.config, ExpoGoManifestHandlerMiddleware = (await projectImport(
10
+ configureServer(server) {
11
+ const { root: projectRoot } = server.config;
12
+ let ExpoGoManifestHandlerMiddleware;
13
+ const importPromise = projectImport(
12
14
  projectRoot,
13
15
  "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js"
14
- )).default.ExpoGoManifestHandlerMiddleware;
16
+ ).then((mod) => {
17
+ ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware;
18
+ });
15
19
  server.middlewares.use(async (req, res, next) => {
16
20
  if (!req.headers["expo-platform"])
17
21
  return next();
22
+ ExpoGoManifestHandlerMiddleware || await importPromise;
18
23
  const protocol = req.socket instanceof TLSSocket && req.socket.encrypted ? "https" : "http", manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {
19
24
  constructUrl: ({ scheme, hostname }) => {
20
25
  const host = req.headers["x-forwarded-host"] || req.headers.host || hostname;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/plugins/expoManifestRequestHandlerPlugin.ts"],
4
- "mappings": "AAAA,SAAS,iBAAiB;AAG1B,SAAS,qBAAqB;AAC9B,SAAS,oEAAoE;AActE,SAAS,iCACd,SACc;AAGd,SAAO;AAAA,IACL,MAAM;AAAA;AAAA;AAAA;AAAA,IAIN,MAAM,gBAAgB,QAAQ;AAC5B,YAAM,EAAE,MAAM,YAAY,IAAI,OAAO,QAE/B,mCACJ,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,GACA,QAAQ;AAEV,aAAO,YAAY,IAAI,OAAO,KAAK,KAAK,SAAS;AAC/C,YAAI,CAAC,IAAI,QAAQ,eAAe;AAE9B,iBAAO,KAAK;AAGd,cAAM,WAAW,IAAI,kBAAkB,aAAa,IAAI,OAAO,YAAY,UAAU,QAE/E,4BAA4B,IAAI,gCAAgC,aAAa;AAAA,UACjF,cAAc,CAAC,EAAE,QAAQ,SAAS,MAAM;AAEtC,kBAAM,OAAO,IAAI,QAAQ,kBAAkB,KAAK,IAAI,QAAQ,QAAQ;AAEpE,mBAAK,SAOE,GAAG,YAAY,MAAM,MAAM,IAAI,KAH7B;AAAA,UAIX;AAAA,QACF,CAAC;AAED,QAAI,SAAS,kBACX;AAAA,UACE;AAAA,UACA,QAAQ;AAAA,QACV,GAIF,0BAA0B,mBAAmB,KAAK,KAAK,IAAI;AAAA,MAC7D,CAAC;AAAA,IACH;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA,SAAS,iBAAiB;AAG1B,SAAS,qBAAqB;AAC9B,SAAS,oEAAoE;AActE,SAAS,iCACd,SACc;AAGd,SAAO;AAAA,IACL,MAAM;AAAA;AAAA;AAAA;AAAA,IAIN,gBAAgB,QAAQ;AACtB,YAAM,EAAE,MAAM,YAAY,IAAI,OAAO;AAGrC,UAAI;AACJ,YAAM,gBAAgB;AAAA,QACpB;AAAA,QACA;AAAA,MACF,EAAE,KAAK,CAAC,QAAQ;AACd,0CAAkC,IAAI,QAAQ;AAAA,MAChD,CAAC;AAED,aAAO,YAAY,IAAI,OAAO,KAAK,KAAK,SAAS;AAC/C,YAAI,CAAC,IAAI,QAAQ,eAAe;AAE9B,iBAAO,KAAK;AAId,QAAK,mCACH,MAAM;AAGR,cAAM,WAAW,IAAI,kBAAkB,aAAa,IAAI,OAAO,YAAY,UAAU,QAE/E,4BAA4B,IAAI,gCAAgC,aAAa;AAAA,UACjF,cAAc,CAAC,EAAE,QAAQ,SAAS,MAAM;AAEtC,kBAAM,OAAO,IAAI,QAAQ,kBAAkB,KAAK,IAAI,QAAQ,QAAQ;AAEpE,mBAAK,SAOE,GAAG,YAAY,MAAM,MAAM,IAAI,KAH7B;AAAA,UAIX;AAAA,QACF,CAAC;AAED,QAAI,SAAS,kBACX;AAAA,UACE;AAAA,UACA,QAAQ;AAAA,QACV,GAIF,0BAA0B,mBAAmB,KAAK,KAAK,IAAI;AAAA,MAC7D,CAAC;AAAA,IACH;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -7,13 +7,17 @@ function expoManifestRequestHandlerPlugin(options) {
7
7
  // configResolved(config) {
8
8
  // projectRoot = config.root
9
9
  // },
10
- async configureServer(server) {
10
+ configureServer(server) {
11
11
  const {
12
- root: projectRoot
13
- } = server.config,
14
- ExpoGoManifestHandlerMiddleware = (await projectImport(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js")).default.ExpoGoManifestHandlerMiddleware;
12
+ root: projectRoot
13
+ } = server.config;
14
+ let ExpoGoManifestHandlerMiddleware;
15
+ const importPromise = projectImport(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js").then(mod => {
16
+ ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware;
17
+ });
15
18
  server.middlewares.use(async (req, res, next) => {
16
19
  if (!req.headers["expo-platform"]) return next();
20
+ ExpoGoManifestHandlerMiddleware || (await importPromise);
17
21
  const protocol = req.socket instanceof TLSSocket && req.socket.encrypted ? "https" : "http",
18
22
  manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {
19
23
  constructUrl: ({
@@ -1 +1 @@
1
- {"version":3,"names":["TLSSocket","projectImport","patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName","expoManifestRequestHandlerPlugin","options","name","configureServer","server","root","projectRoot","config","ExpoGoManifestHandlerMiddleware","default","middlewares","use","req","res","next","headers","protocol","socket","encrypted","manifestHandlerMiddleware","constructUrl","scheme","hostname","host","mainModuleName","handleRequestAsync"],"sources":["../../../src/plugins/expoManifestRequestHandlerPlugin.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAG1B,SAASC,aAAA,QAAqB;AAC9B,SAASC,4DAAA,QAAoE;AActE,SAASC,iCACdC,OAAA,EACc;EAGd,OAAO;IACLC,IAAA,EAAM;IAAA;IAAA;IAAA;IAIN,MAAMC,gBAAgBC,MAAA,EAAQ;MAC5B,MAAM;UAAEC,IAAA,EAAMC;QAAY,IAAIF,MAAA,CAAOG,MAAA;QAE/BC,+BAAA,IACJ,MAAMV,aAAA,CACJQ,WAAA,EACA,gFACF,GACAG,OAAA,CAAQD,+BAAA;MAEVJ,MAAA,CAAOM,WAAA,CAAYC,GAAA,CAAI,OAAOC,GAAA,EAAKC,GAAA,EAAKC,IAAA,KAAS;QAC/C,IAAI,CAACF,GAAA,CAAIG,OAAA,CAAQ,eAAe,GAE9B,OAAOD,IAAA,CAAK;QAGd,MAAME,QAAA,GAAWJ,GAAA,CAAIK,MAAA,YAAkBpB,SAAA,IAAae,GAAA,CAAIK,MAAA,CAAOC,SAAA,GAAY,UAAU;UAE/EC,yBAAA,GAA4B,IAAIX,+BAAA,CAAgCF,WAAA,EAAa;YACjFc,YAAA,EAAcA,CAAC;cAAEC,MAAA;cAAQC;YAAS,MAAM;cAEtC,MAAMC,IAAA,GAAOX,GAAA,CAAIG,OAAA,CAAQ,kBAAkB,KAAKH,GAAA,CAAIG,OAAA,CAAQQ,IAAA,IAAQD,QAAA;cAEpE,OAAKD,MAAA,GAOE,GAAGL,QAAA,IAAYK,MAAM,MAAME,IAAI,KAH7BA,IAAA;YAIX;UACF,CAAC;QAEGtB,OAAA,EAASuB,cAAA,IACXzB,4DAAA,CACEoB,yBAAA,EACAlB,OAAA,CAAQuB,cACV,GAIFL,yBAAA,CAA0BM,kBAAA,CAAmBb,GAAA,EAAKC,GAAA,EAAKC,IAAI;MAC7D,CAAC;IACH;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["TLSSocket","projectImport","patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName","expoManifestRequestHandlerPlugin","options","name","configureServer","server","root","projectRoot","config","ExpoGoManifestHandlerMiddleware","importPromise","then","mod","default","middlewares","use","req","res","next","headers","protocol","socket","encrypted","manifestHandlerMiddleware","constructUrl","scheme","hostname","host","mainModuleName","handleRequestAsync"],"sources":["../../../src/plugins/expoManifestRequestHandlerPlugin.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAG1B,SAASC,aAAA,QAAqB;AAC9B,SAASC,4DAAA,QAAoE;AActE,SAASC,iCACdC,OAAA,EACc;EAGd,OAAO;IACLC,IAAA,EAAM;IAAA;IAAA;IAAA;IAINC,gBAAgBC,MAAA,EAAQ;MACtB,MAAM;QAAEC,IAAA,EAAMC;MAAY,IAAIF,MAAA,CAAOG,MAAA;MAGrC,IAAIC,+BAAA;MACJ,MAAMC,aAAA,GAAgBX,aAAA,CACpBQ,WAAA,EACA,gFACF,EAAEI,IAAA,CAAMC,GAAA,IAAQ;QACdH,+BAAA,GAAkCG,GAAA,CAAIC,OAAA,CAAQJ,+BAAA;MAChD,CAAC;MAEDJ,MAAA,CAAOS,WAAA,CAAYC,GAAA,CAAI,OAAOC,GAAA,EAAKC,GAAA,EAAKC,IAAA,KAAS;QAC/C,IAAI,CAACF,GAAA,CAAIG,OAAA,CAAQ,eAAe,GAE9B,OAAOD,IAAA,CAAK;QAITT,+BAAA,KACH,MAAMC,aAAA;QAGR,MAAMU,QAAA,GAAWJ,GAAA,CAAIK,MAAA,YAAkBvB,SAAA,IAAakB,GAAA,CAAIK,MAAA,CAAOC,SAAA,GAAY,UAAU;UAE/EC,yBAAA,GAA4B,IAAId,+BAAA,CAAgCF,WAAA,EAAa;YACjFiB,YAAA,EAAcA,CAAC;cAAEC,MAAA;cAAQC;YAAS,MAAM;cAEtC,MAAMC,IAAA,GAAOX,GAAA,CAAIG,OAAA,CAAQ,kBAAkB,KAAKH,GAAA,CAAIG,OAAA,CAAQQ,IAAA,IAAQD,QAAA;cAEpE,OAAKD,MAAA,GAOE,GAAGL,QAAA,IAAYK,MAAM,MAAME,IAAI,KAH7BA,IAAA;YAIX;UACF,CAAC;QAEGzB,OAAA,EAAS0B,cAAA,IACX5B,4DAAA,CACEuB,yBAAA,EACArB,OAAA,CAAQ0B,cACV,GAIFL,yBAAA,CAA0BM,kBAAA,CAAmBb,GAAA,EAAKC,GAAA,EAAKC,IAAI;MAC7D,CAAC;IACH;EACF;AACF","ignoreList":[]}
@@ -10,13 +10,17 @@ function expoManifestRequestHandlerPlugin(options) {
10
10
  // configResolved(config) {
11
11
  // projectRoot = config.root
12
12
  // },
13
- async configureServer(server) {
13
+ configureServer(server) {
14
14
  var {
15
15
  root: projectRoot
16
16
  } = server.config,
17
- ExpoGoManifestHandlerMiddleware = (await projectImport(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js")).default.ExpoGoManifestHandlerMiddleware;
17
+ ExpoGoManifestHandlerMiddleware,
18
+ importPromise = projectImport(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js").then(function (mod) {
19
+ ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware;
20
+ });
18
21
  server.middlewares.use(async function (req, res, next) {
19
22
  if (!req.headers["expo-platform"]) return next();
23
+ ExpoGoManifestHandlerMiddleware || (await importPromise);
20
24
  var protocol = _instanceof(req.socket, TLSSocket) && req.socket.encrypted ? "https" : "http",
21
25
  manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {
22
26
  constructUrl: function (param) {
@@ -1 +1 @@
1
- {"version":3,"names":["TLSSocket","projectImport","patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName","_instanceof","left","right","Symbol","hasInstance","expoManifestRequestHandlerPlugin","options","name","configureServer","server","root","projectRoot","config","ExpoGoManifestHandlerMiddleware","default","middlewares","use","req","res","next","headers","protocol","socket","encrypted","manifestHandlerMiddleware","constructUrl","param","scheme","hostname","host","mainModuleName","handleRequestAsync"],"sources":["../../../src/plugins/expoManifestRequestHandlerPlugin.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAG1B,SAASC,aAAA,QAAqB;AAC9B,SAASC,4DAAA,QAAoE;AActE,SAASC,YAAAC,IAAA,EAAAC,KAAA;EAKd,OAAOA,KAAA,mBAAAC,MAAA,UAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA,MAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA,IAAAA,IAAA,YAAAC,KAAA;AAAA;AACC,SAAAG,iCAAAC,OAAA;EAAA;IAAAC,IAAA;IAIN;IACE;IAGQ;IACJ,MACAC,gBAAAC,MAAA;MACF,IACA;UAAAC,IAAA,EAAQC;QAAA,IAAAF,MAAA,CAAAG,MAAA;QAAAC,+BAAA,UAAAf,aAAA,CAAAa,WAAA,qFAAAG,OAAA,CAAAD,+BAAA;MAEVJ,MAAA,CAAOM,WAAA,CAAYC,GAAA,CAAI,gBAAYC,GAAK,EAAAC,GAAA,EAAAC,IAAS;QAC/C,IAAI,CAACF,GAAA,CAAIG,OAAA,CAAQ,eAAe,GAE9B,OAAOD,IAAA,CAAK;QAGd,IAAAE,QAAM,GAAArB,WAAe,CAAAiB,GAAA,CAAAK,MAAA,EAAkBzB,SAAA,KAAaoB,GAAI,CAAAK,MAAO,CAAAC,SAAA,GAAY,UAAU;UAE/EC,yBAAA,GAA4B,IAAIX,+BAAgC,CAAAF,WAAA,EAAa;YACjFc,YAAA,EAAc,SAAAA,CAAGC,KAAQ;cAEvB;kBAAMC,MAAA;kBAAOC;gBAAI,IAAQF,KAAA;gBAAAG,IAAA,GAAAZ,GAAkB,CAAAG,OAAS,mBAAgB,KAAAH,GAAA,CAAAG,OAAA,CAAAS,IAAA,IAAAD,QAAA;cAEpE,OAAKD,MAAA,GAOE,GAAGN,QAAA,IAAYM,MAAM,MAAME,IAAI,KAH7BA,IAAA;YAIX;UACF,CAAC;QAEGvB,OAAA,EAASwB,cAAA,IACX/B,4DAAA,CAAAyB,yBAAA,EAAAlB,OAAA,CAAAwB,cAAA,GAAAN,yBAAA,CAAAO,kBAAA,CAAAd,GAAA,EAAAC,GAAA,EAAAC,IAAA;MAAA;IACE;EACQ;AAK+C;AAC5D,SAELd,gCAAA","ignoreList":[]}
1
+ {"version":3,"names":["TLSSocket","projectImport","patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName","_instanceof","left","right","Symbol","hasInstance","expoManifestRequestHandlerPlugin","options","name","configureServer","server","root","projectRoot","config","ExpoGoManifestHandlerMiddleware","importPromise","then","mod","default","middlewares","use","req","res","next","headers","protocol","socket","encrypted","manifestHandlerMiddleware","constructUrl","param","scheme","hostname","host","mainModuleName","handleRequestAsync"],"sources":["../../../src/plugins/expoManifestRequestHandlerPlugin.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAG1B,SAASC,aAAA,QAAqB;AAC9B,SAASC,4DAAA,QAAoE;AActE,SAASC,YAAAC,IAAA,EAAAC,KAAA;EAKd,OAAOA,KAAA,mBAAAC,MAAA,UAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA,MAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA,IAAAA,IAAA,YAAAC,KAAA;AAAA;AACC,SAAAG,iCAAAC,OAAA;EAAA;IAAAC,IAAA;IAIN;IACE;IAGA;IACAC,eAAMA,CAAAC,MAAA,EAAgB;MAAA,IACpB;UAAAC,IAAA,EAAAC;QAAA,IAAAF,MAAA,CAAAG,MAAA;QAAAC,+BAAA;QAAAC,aAAA,GAAAhB,aAAA,CAAAa,WAAA,oFAAAI,IAAA,WAAAC,GAAA;UACAH,+BAAA,GAAAG,GAAA,CAAAC,OAAA,CAAAJ,+BAAA;QACF,EAAE;MACAJ,MAAA,CAAAS,WAAA,CAAAC,GAAA,iBAAkCC,GAAI,EAAAC,GAAA,EAAQC,IAAA;QAC/C,KAAAF,GAAA,CAAAG,OAAA,mBAED,OAAOD,IAAA;QACLT,+BAAiB,KAAe,MAAAC,aAAA;QAE9B,IAAAU,QAAO,GAAKxB,WAAA,CAAAoB,GAAA,CAAAK,MAAA,EAAA5B,SAAA,KAAAuB,GAAA,CAAAK,MAAA,CAAAC,SAAA;UAAAC,yBAAA,OAAAd,+BAAA,CAAAF,WAAA;YAITiB,YAAA,WAAAA,CAAAC,KAAA;cAIL,IAAM;kBAAAC,MAAA;kBAAWC;gBAAI,IAAAF,KAAA;gBAAAG,IAAkB,GAAAZ,GAAA,CAAAG,OAAiB,mBAAmB,KAAAH,GAAA,CAAAG,OAAU,CAAAS,IAE/E,IAAAD,QAAA;cACJ,OAAAD,MAAe,GAAE,GAAAN,QAAQ,IAAAM,MAAS,MAAME,IAAA,KAAAA,IAAA;YAEtC;UAEA;QAIS1B,OAIX,EAAA2B,cAAA,IAAAlC,4DAAA,CAAA4B,yBAAA,EAAArB,OAAA,CAAA2B,cAAA,GAAAN,yBAAA,CAAAO,kBAAA,CAAAd,GAAA,EAAAC,GAAA,EAAAC,IAAA;MAAA,EACF;IAEA;EACE;AACE;AACQ,SAK+CjB,gCAC5D","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { readFile } from "node:fs/promises";
3
- import { parse } from "node:url";
4
3
  import launchEditor from "launch-editor";
5
4
  import { projectImport } from "../utils/projectImport";
6
5
  import { getMetroConfigFromViteConfig } from "../metro-config/getMetroConfigFromViteConfig";
@@ -11,15 +10,12 @@ function metroPlugin(options = {}) {
11
10
  // configResolved(config) {
12
11
  // projectRoot = config.root
13
12
  // },
14
- async configureServer(server) {
15
- const { logger, root: projectRoot } = server.config, metroStartTime = Date.now();
16
- let metroReady = !1;
17
- 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);
18
- let middleware, metroServer, hmrServer, websocketEndpoints, rnDevtoolsMiddleware;
13
+ configureServer(server) {
14
+ const { root: projectRoot } = server.config, metroStartTime = Date.now();
15
+ let metroReady = !1, middleware, metroServer, hmrServer, websocketEndpoints, rnDevtoolsMiddleware;
19
16
  const metroPromise = (async () => {
20
- console.info("[metro] Starting Metro bundler in background...");
21
17
  try {
22
- const metroResult = await Metro.createConnectMiddleware(config, {
18
+ 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, {
23
19
  // Force enable file watching, even on CI.
24
20
  // This is needed for HMR tests to work on CI.
25
21
  watch: !0
@@ -50,8 +46,8 @@ function metroPlugin(options = {}) {
50
46
  console.error("[metro] Failed to start Metro:", err);
51
47
  }), metroPromise.then(() => {
52
48
  server.httpServer?.on("upgrade", (request, socket, head) => {
53
- const { pathname } = parse(request.url);
54
- pathname != null && websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, (ws) => {
49
+ const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
50
+ websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, (ws) => {
55
51
  websocketEndpoints[pathname].emit("connection", ws, request);
56
52
  });
57
53
  }), server.middlewares.use(rnDevtoolsMiddleware);
@@ -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
  }
@@ -1,6 +1,5 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { readFile } from "node:fs/promises";
3
- import { parse } from "node:url";
4
3
  import launchEditor from "launch-editor";
5
4
  import { projectImport } from "../utils/projectImport.mjs";
6
5
  import { getMetroConfigFromViteConfig } from "../metro-config/getMetroConfigFromViteConfig.mjs";
@@ -11,35 +10,37 @@ function metroPlugin(options = {}) {
11
10
  // configResolved(config) {
12
11
  // projectRoot = config.root
13
12
  // },
14
- async configureServer(server) {
13
+ configureServer(server) {
15
14
  const {
16
- logger,
17
15
  root: projectRoot
18
16
  } = server.config,
19
17
  metroStartTime = Date.now();
20
- let metroReady = !1;
21
- const {
22
- default: Metro
23
- } = await projectImport(projectRoot, "metro"),
24
- {
25
- default: MetroHmrServer
26
- } = await projectImport(projectRoot, "metro/private/HmrServer"),
27
- {
28
- default: createWebsocketServer
29
- } = await projectImport(projectRoot, "metro/private/lib/createWebsocketServer"),
30
- {
31
- createDevMiddleware
32
- } = await projectImport(projectRoot, "@react-native/dev-middleware"),
33
- config = await getMetroConfigFromViteConfig(server.config, options);
34
- let middleware, metroServer, hmrServer, websocketEndpoints, rnDevtoolsMiddleware;
18
+ let metroReady = !1,
19
+ middleware,
20
+ metroServer,
21
+ hmrServer,
22
+ websocketEndpoints,
23
+ rnDevtoolsMiddleware;
35
24
  const metroPromise = (async () => {
36
- console.info("[metro] Starting Metro bundler in background...");
37
25
  try {
38
- const metroResult = await Metro.createConnectMiddleware(config, {
39
- // Force enable file watching, even on CI.
40
- // This is needed for HMR tests to work on CI.
41
- watch: !0
42
- });
26
+ const {
27
+ default: Metro
28
+ } = await projectImport(projectRoot, "metro"),
29
+ {
30
+ default: MetroHmrServer
31
+ } = await projectImport(projectRoot, "metro/private/HmrServer"),
32
+ {
33
+ default: createWebsocketServer
34
+ } = await projectImport(projectRoot, "metro/private/lib/createWebsocketServer"),
35
+ {
36
+ createDevMiddleware
37
+ } = await projectImport(projectRoot, "@react-native/dev-middleware"),
38
+ config = await getMetroConfigFromViteConfig(server.config, options),
39
+ metroResult = await Metro.createConnectMiddleware(config, {
40
+ // Force enable file watching, even on CI.
41
+ // This is needed for HMR tests to work on CI.
42
+ watch: !0
43
+ });
43
44
  middleware = metroResult.middleware, metroServer = metroResult.metroServer, patchMetroServerWithViteConfigAndMetroPluginOptions(metroServer, server.config, options), hmrServer = new MetroHmrServer(metroServer.getBundler(), metroServer.getCreateModuleId(), config);
44
45
  const reactNativeDevToolsUrl = `http://${typeof server.config.server.host == "boolean" ? "localhost" : server.config.server.host}:${server.config.server.port}`,
45
46
  devMiddleware = createDevMiddleware({
@@ -63,10 +64,8 @@ function metroPlugin(options = {}) {
63
64
  console.error("[metro] Failed to start Metro:", err);
64
65
  }), metroPromise.then(() => {
65
66
  server.httpServer?.on("upgrade", (request, socket, head) => {
66
- const {
67
- pathname
68
- } = parse(request.url);
69
- pathname != null && websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, ws => {
67
+ const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
68
+ websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, ws => {
70
69
  websocketEndpoints[pathname].emit("connection", ws, request);
71
70
  });
72
71
  }), server.middlewares.use(rnDevtoolsMiddleware);
@@ -1 +1 @@
1
- {"version":3,"names":["existsSync","readFile","parse","launchEditor","projectImport","getMetroConfigFromViteConfig","patchMetroServerWithViteConfigAndMetroPluginOptions","metroPlugin","options","globalThis","__viteMetroPluginOptions__","name","configureServer","server","logger","root","projectRoot","config","metroStartTime","Date","now","metroReady","default","Metro","MetroHmrServer","createWebsocketServer","createDevMiddleware","middleware","metroServer","hmrServer","websocketEndpoints","rnDevtoolsMiddleware","metroPromise","console","info","metroResult","createConnectMiddleware","watch","getBundler","getCreateModuleId","reactNativeDevToolsUrl","host","port","devMiddleware","serverBaseUrl","websocketServer","metroElapsed","err","error","catch","then","httpServer","on","request","socket","head","pathname","url","handleUpgrade","ws","emit","middlewares","use","req","res","next","includes","VITE_METRO_DEBUG_BUNDLE","process","env","content","setHeader","end","headers","statusCode","method","body","chunk","toString","frame","JSON","file","e"],"sources":["../../../src/plugins/metroPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["existsSync","readFile","launchEditor","projectImport","getMetroConfigFromViteConfig","patchMetroServerWithViteConfigAndMetroPluginOptions","metroPlugin","options","globalThis","__viteMetroPluginOptions__","name","configureServer","server","root","projectRoot","config","metroStartTime","Date","now","metroReady","middleware","metroServer","hmrServer","websocketEndpoints","rnDevtoolsMiddleware","metroPromise","default","Metro","MetroHmrServer","createWebsocketServer","createDevMiddleware","metroResult","createConnectMiddleware","watch","getBundler","getCreateModuleId","reactNativeDevToolsUrl","host","port","devMiddleware","serverBaseUrl","logger","console","websocketServer","metroElapsed","info","err","error","catch","then","httpServer","on","request","socket","head","pathname","URL","url","headers","handleUpgrade","ws","emit","middlewares","use","req","res","next","includes","VITE_METRO_DEBUG_BUNDLE","process","env","content","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,6 +1,5 @@
1
1
  import { existsSync } from "fs";
2
2
  import { readFile } from "fs/promises";
3
- import { parse } from "url";
4
3
  import launchEditor from "launch-editor";
5
4
  import { projectImport } from "../utils/projectImport.native.js";
6
5
  import { getMetroConfigFromViteConfig } from "../metro-config/getMetroConfigFromViteConfig.native.js";
@@ -12,39 +11,37 @@ function metroPlugin() {
12
11
  // configResolved(config) {
13
12
  // projectRoot = config.root
14
13
  // },
15
- async configureServer(server) {
14
+ configureServer(server) {
16
15
  var {
17
- logger,
18
16
  root: projectRoot
19
17
  } = server.config,
20
18
  metroStartTime = Date.now(),
21
19
  metroReady = !1,
22
- {
23
- default: Metro
24
- } = await projectImport(projectRoot, "metro"),
25
- {
26
- default: MetroHmrServer
27
- } = await projectImport(projectRoot, "metro/private/HmrServer"),
28
- {
29
- default: createWebsocketServer
30
- } = await projectImport(projectRoot, "metro/private/lib/createWebsocketServer"),
31
- {
32
- createDevMiddleware
33
- } = await projectImport(projectRoot, "@react-native/dev-middleware"),
34
- config = await getMetroConfigFromViteConfig(server.config, options),
35
20
  middleware,
36
21
  metroServer,
37
22
  hmrServer,
38
23
  websocketEndpoints,
39
24
  rnDevtoolsMiddleware,
40
25
  metroPromise = async function () {
41
- console.info("[metro] Starting Metro bundler in background...");
42
26
  try {
43
- var metroResult = await Metro.createConnectMiddleware(config, {
44
- // Force enable file watching, even on CI.
45
- // This is needed for HMR tests to work on CI.
46
- watch: !0
47
- });
27
+ var {
28
+ default: Metro
29
+ } = await projectImport(projectRoot, "metro"),
30
+ {
31
+ default: MetroHmrServer
32
+ } = await projectImport(projectRoot, "metro/private/HmrServer"),
33
+ {
34
+ default: createWebsocketServer
35
+ } = await projectImport(projectRoot, "metro/private/lib/createWebsocketServer"),
36
+ {
37
+ createDevMiddleware
38
+ } = await projectImport(projectRoot, "@react-native/dev-middleware"),
39
+ config = await getMetroConfigFromViteConfig(server.config, options),
40
+ metroResult = await Metro.createConnectMiddleware(config, {
41
+ // Force enable file watching, even on CI.
42
+ // This is needed for HMR tests to work on CI.
43
+ watch: !0
44
+ });
48
45
  middleware = metroResult.middleware, metroServer = metroResult.metroServer, patchMetroServerWithViteConfigAndMetroPluginOptions(metroServer, server.config, options), hmrServer = new MetroHmrServer(metroServer.getBundler(), metroServer.getCreateModuleId(), config);
49
46
  var reactNativeDevToolsUrl = `http://${typeof server.config.server.host == "boolean" ? "localhost" : server.config.server.host}:${server.config.server.port}`,
50
47
  devMiddleware = createDevMiddleware({
@@ -69,10 +66,8 @@ function metroPlugin() {
69
66
  }), metroPromise.then(function () {
70
67
  var _server_httpServer;
71
68
  (_server_httpServer = server.httpServer) === null || _server_httpServer === void 0 || _server_httpServer.on("upgrade", function (request, socket, head) {
72
- var {
73
- pathname
74
- } = parse(request.url);
75
- pathname != null && websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, function (ws) {
69
+ var pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
70
+ websocketEndpoints[pathname] && websocketEndpoints[pathname].handleUpgrade(request, socket, head, function (ws) {
76
71
  websocketEndpoints[pathname].emit("connection", ws, request);
77
72
  });
78
73
  }), server.middlewares.use(rnDevtoolsMiddleware);
@@ -1 +1 @@
1
- {"version":3,"names":["existsSync","readFile","parse","launchEditor","projectImport","getMetroConfigFromViteConfig","patchMetroServerWithViteConfigAndMetroPluginOptions","metroPlugin","options","arguments","length","globalThis","__viteMetroPluginOptions__","name","configureServer","server","logger","root","projectRoot","config","metroStartTime","Date","now","metroReady","default","Metro","MetroHmrServer","createWebsocketServer","createDevMiddleware","middleware","metroServer","hmrServer","websocketEndpoints","rnDevtoolsMiddleware","metroPromise","console","info","metroResult","createConnectMiddleware","watch","getBundler","getCreateModuleId","reactNativeDevToolsUrl","host","port","devMiddleware","serverBaseUrl","websocketServer","metroElapsed","err","error","catch","then","_server_httpServer","httpServer","on","request","socket","head","pathname","url","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","content","setHeader","end","headers","statusCode","method","body","chunk","toString","frame","JSON","file","e"],"sources":["../../../src/plugins/metroPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["existsSync","readFile","launchEditor","projectImport","getMetroConfigFromViteConfig","patchMetroServerWithViteConfigAndMetroPluginOptions","metroPlugin","options","arguments","length","globalThis","__viteMetroPluginOptions__","name","configureServer","server","root","projectRoot","config","metroStartTime","Date","now","metroReady","middleware","metroServer","hmrServer","websocketEndpoints","rnDevtoolsMiddleware","metroPromise","default","Metro","MetroHmrServer","createWebsocketServer","createDevMiddleware","metroResult","createConnectMiddleware","watch","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","content","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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vxrn/vite-plugin-metro",
3
- "version": "1.2.22",
3
+ "version": "1.2.24",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "main": "dist/cjs",
@@ -60,7 +60,7 @@
60
60
  "@babel/core": "^7.28.5",
61
61
  "@babel/helper-plugin-utils": "^7.27.1",
62
62
  "@babel/types": "^7.28.5",
63
- "@vxrn/debug": "1.2.22",
63
+ "@vxrn/debug": "1.2.24",
64
64
  "babel-preset-expo": "*",
65
65
  "launch-editor": "^2.10.0",
66
66
  "micromatch": "^4.0.8",
@@ -70,7 +70,7 @@
70
70
  "@biomejs/biome": "2.3.3",
71
71
  "@expo/metro-config": "^54.0.7",
72
72
  "@react-native/dev-middleware": "^0.82.1",
73
- "@tamagui/build": "^1.138.6",
73
+ "@tamagui/build": "^1.139.2",
74
74
  "@types/babel__helper-plugin-utils": "^7",
75
75
  "@types/node": "^24.10.0",
76
76
  "depcheck": "^1.4.7",
@@ -26,15 +26,17 @@ export function expoManifestRequestHandlerPlugin(
26
26
  // configResolved(config) {
27
27
  // projectRoot = config.root
28
28
  // },
29
- async configureServer(server) {
29
+ configureServer(server) {
30
30
  const { root: projectRoot } = server.config
31
31
 
32
- const ExpoGoManifestHandlerMiddleware = (
33
- await projectImport(
34
- projectRoot,
35
- '@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js'
36
- )
37
- ).default.ExpoGoManifestHandlerMiddleware
32
+ // Lazy load the ExpoGoManifestHandlerMiddleware to avoid blocking Vite startup
33
+ let ExpoGoManifestHandlerMiddleware: any
34
+ const importPromise = projectImport(
35
+ projectRoot,
36
+ '@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js'
37
+ ).then((mod) => {
38
+ ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware
39
+ })
38
40
 
39
41
  server.middlewares.use(async (req, res, next) => {
40
42
  if (!req.headers['expo-platform']) {
@@ -42,6 +44,11 @@ export function expoManifestRequestHandlerPlugin(
42
44
  return next()
43
45
  }
44
46
 
47
+ // Wait for the import to complete if it hasn't yet
48
+ if (!ExpoGoManifestHandlerMiddleware) {
49
+ await importPromise
50
+ }
51
+
45
52
  const protocol = req.socket instanceof TLSSocket && req.socket.encrypted ? 'https' : 'http'
46
53
 
47
54
  const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {
@@ -1,6 +1,5 @@
1
1
  import { existsSync } from 'node:fs'
2
2
  import { readFile } from 'node:fs/promises'
3
- import { parse } from 'node:url'
4
3
  import type { PluginOption } from 'vite'
5
4
  import launchEditor from 'launch-editor'
6
5
 
@@ -72,29 +71,15 @@ export function metroPlugin(options: MetroPluginOptions = {}): PluginOption {
72
71
  // projectRoot = config.root
73
72
  // },
74
73
 
75
- async configureServer(server) {
76
- const { logger, root: projectRoot } = server.config
74
+ configureServer(server) {
75
+ const { root: projectRoot } = server.config
77
76
 
78
77
  // Track Metro startup separately from Vite
79
78
  const metroStartTime = Date.now()
80
79
  let metroReady = false
81
80
 
82
- const { default: Metro } = await projectImport<{
83
- default: typeof MetroT
84
- }>(projectRoot, 'metro')
85
- const { default: MetroHmrServer } = await projectImport<{
86
- default: typeof MetroHmrServerT
87
- }>(projectRoot, 'metro/private/HmrServer')
88
- const { default: createWebsocketServer } = await projectImport<{
89
- default: typeof createWebsocketServerT
90
- }>(projectRoot, 'metro/private/lib/createWebsocketServer')
91
- const { createDevMiddleware } = await projectImport<{
92
- createDevMiddleware: typeof createDevMiddlewareT
93
- }>(projectRoot, '@react-native/dev-middleware')
94
-
95
- const config = await getMetroConfigFromViteConfig(server.config, options)
96
-
97
81
  // Start Metro in background WITHOUT blocking Vite server startup
82
+ // All imports and config are done inside metroPromise to avoid blocking
98
83
  let middleware: Awaited<ReturnType<typeof MetroT.createConnectMiddleware>>['middleware']
99
84
  let metroServer: Awaited<ReturnType<typeof MetroT.createConnectMiddleware>>['metroServer']
100
85
  let hmrServer: MetroHmrServerT
@@ -102,9 +87,23 @@ export function metroPlugin(options: MetroPluginOptions = {}): PluginOption {
102
87
  let rnDevtoolsMiddleware: ReturnType<typeof createDevMiddlewareT>['middleware']
103
88
 
104
89
  const metroPromise = (async () => {
105
- console.info('[metro] Starting Metro bundler in background...')
106
-
107
90
  try {
91
+ // Import Metro modules lazily to avoid blocking Vite startup
92
+ const { default: Metro } = await projectImport<{
93
+ default: typeof MetroT
94
+ }>(projectRoot, 'metro')
95
+ const { default: MetroHmrServer } = await projectImport<{
96
+ default: typeof MetroHmrServerT
97
+ }>(projectRoot, 'metro/private/HmrServer')
98
+ const { default: createWebsocketServer } = await projectImport<{
99
+ default: typeof createWebsocketServerT
100
+ }>(projectRoot, 'metro/private/lib/createWebsocketServer')
101
+ const { createDevMiddleware } = await projectImport<{
102
+ createDevMiddleware: typeof createDevMiddlewareT
103
+ }>(projectRoot, '@react-native/dev-middleware')
104
+
105
+ const config = await getMetroConfigFromViteConfig(server.config, options)
106
+
108
107
  // @ts-expect-error TODO
109
108
  const metroResult = await Metro.createConnectMiddleware(config, {
110
109
  // Force enable file watching, even on CI.
@@ -155,9 +154,9 @@ export function metroPlugin(options: MetroPluginOptions = {}): PluginOption {
155
154
  // Setup websocket handling after Metro is ready
156
155
  metroPromise.then(() => {
157
156
  server.httpServer?.on('upgrade', (request, socket, head) => {
158
- const { pathname } = parse(request.url!)
157
+ const pathname = new URL(request.url!, `http://${request.headers.host}`).pathname
159
158
 
160
- if (pathname != null && websocketEndpoints[pathname]) {
159
+ if (websocketEndpoints[pathname]) {
161
160
  websocketEndpoints[pathname].handleUpgrade(request, socket, head, (ws) => {
162
161
  websocketEndpoints[pathname].emit('connection', ws, request)
163
162
  })
@@ -1 +1 @@
1
- {"version":3,"file":"expoManifestRequestHandlerPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/expoManifestRequestHandlerPlugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAKxC,MAAM,MAAM,6CAA6C,GAAG;IAC1D;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,CAAC,EAAE,6CAA6C,GACtD,YAAY,CAsDd"}
1
+ {"version":3,"file":"expoManifestRequestHandlerPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/expoManifestRequestHandlerPlugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAKxC,MAAM,MAAM,6CAA6C,GAAG;IAC1D;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,CAAC,EAAE,6CAA6C,GACtD,YAAY,CA6Dd"}
@@ -1 +1 @@
1
- {"version":3,"file":"metroPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/metroPlugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAOxC,OAAO,KAAK,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,OAAO,CAAA;AAMtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAIjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAEzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,sBAAsB,CAAC,EACnB,gBAAgB,GAChB,CAAC,CAAC,aAAa,EAAE,gBAAgB,KAAK,gBAAgB,CAAC,CAAA;IAC3D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,kDAAkD;IAClD,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B,oBAAoB,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,KAAK,gBAAgB,CAAA;IAC5E;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,YAAY,CA4L1E"}
1
+ {"version":3,"file":"metroPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/metroPlugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAOxC,OAAO,KAAK,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,OAAO,CAAA;AAMtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAIjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAEzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,sBAAsB,CAAC,EACnB,gBAAgB,GAChB,CAAC,CAAC,aAAa,EAAE,gBAAgB,KAAK,gBAAgB,CAAC,CAAA;IAC3D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,kDAAkD;IAClD,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B,oBAAoB,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,KAAK,gBAAgB,CAAA;IAC5E;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,YAAY,CA4L1E"}