@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.
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +8 -4
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.js +8 -3
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.js.map +1 -1
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +6 -2
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -1
- package/dist/cjs/plugins/metroPlugin.cjs +27 -28
- package/dist/cjs/plugins/metroPlugin.js +7 -10
- package/dist/cjs/plugins/metroPlugin.js.map +1 -1
- package/dist/cjs/plugins/metroPlugin.native.js +21 -26
- package/dist/cjs/plugins/metroPlugin.native.js.map +1 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.js +8 -3
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.js.map +1 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +8 -4
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +1 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +6 -2
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -1
- package/dist/esm/plugins/metroPlugin.js +6 -10
- package/dist/esm/plugins/metroPlugin.js.map +1 -1
- package/dist/esm/plugins/metroPlugin.mjs +27 -28
- package/dist/esm/plugins/metroPlugin.mjs.map +1 -1
- package/dist/esm/plugins/metroPlugin.native.js +21 -26
- package/dist/esm/plugins/metroPlugin.native.js.map +1 -1
- package/package.json +3 -3
- package/src/plugins/expoManifestRequestHandlerPlugin.ts +14 -7
- package/src/plugins/metroPlugin.ts +21 -22
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +1 -1
- 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
|
-
|
|
35
|
+
configureServer(server) {
|
|
36
36
|
const {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
28
|
-
const { root: projectRoot } = server.config
|
|
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
|
-
))
|
|
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,
|
|
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
|
-
|
|
40
|
+
configureServer(server) {
|
|
41
41
|
var {
|
|
42
42
|
root: projectRoot
|
|
43
43
|
} = server.config,
|
|
44
|
-
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,
|
|
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
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
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"),
|
|
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
|
-
|
|
36
|
-
const {
|
|
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
|
|
75
|
-
|
|
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": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA2B,oBAC3B,kBAAyB,
|
|
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
|
-
|
|
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
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
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","
|
|
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
|
-
|
|
11
|
-
const { root: projectRoot } = server.config
|
|
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
|
-
))
|
|
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,
|
|
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
|
-
|
|
10
|
+
configureServer(server) {
|
|
11
11
|
const {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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;
|
|
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
|
-
|
|
13
|
+
configureServer(server) {
|
|
14
14
|
var {
|
|
15
15
|
root: projectRoot
|
|
16
16
|
} = server.config,
|
|
17
|
-
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;
|
|
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
|
-
|
|
15
|
-
const {
|
|
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
|
|
54
|
-
|
|
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": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;
|
|
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
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
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","
|
|
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
|
-
|
|
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
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
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","
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
29
|
+
configureServer(server) {
|
|
30
30
|
const { root: projectRoot } = server.config
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
).
|
|
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
|
-
|
|
76
|
-
const {
|
|
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
|
|
157
|
+
const pathname = new URL(request.url!, `http://${request.headers.host}`).pathname
|
|
159
158
|
|
|
160
|
-
if (
|
|
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,
|
|
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":"
|
|
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"}
|