vxrn 1.1.325 → 1.1.326
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/exports/dev.js +20 -198
- package/dist/exports/dev.js.map +1 -1
- package/dist/exports/dev.mjs +22 -178
- package/dist/exports/dev.mjs.map +1 -1
- package/dist/exports/dev.native.js +18 -176
- package/dist/exports/dev.native.js.map +2 -2
- package/dist/plugins/autoPreBundleDepsForSsrPlugin.js +11 -4
- package/dist/plugins/autoPreBundleDepsForSsrPlugin.js.map +1 -1
- package/dist/plugins/autoPreBundleDepsForSsrPlugin.mjs +12 -4
- package/dist/plugins/autoPreBundleDepsForSsrPlugin.mjs.map +1 -1
- package/dist/plugins/autoPreBundleDepsForSsrPlugin.native.js +7 -4
- package/dist/plugins/autoPreBundleDepsForSsrPlugin.native.js.map +2 -2
- package/dist/plugins/expoManifestRequestHandlerPlugin.js +18 -9
- package/dist/plugins/expoManifestRequestHandlerPlugin.js.map +1 -1
- package/dist/plugins/expoManifestRequestHandlerPlugin.mjs +16 -10
- package/dist/plugins/expoManifestRequestHandlerPlugin.mjs.map +1 -1
- package/dist/plugins/expoManifestRequestHandlerPlugin.native.js +15 -8
- package/dist/plugins/expoManifestRequestHandlerPlugin.native.js.map +2 -2
- package/dist/plugins/reactNativeDevServer.js +91 -0
- package/dist/plugins/reactNativeDevServer.js.map +6 -0
- package/dist/plugins/reactNativeDevServer.mjs +91 -0
- package/dist/plugins/reactNativeDevServer.mjs.map +1 -0
- package/dist/plugins/reactNativeDevServer.native.js +94 -0
- package/dist/plugins/reactNativeDevServer.native.js.map +6 -0
- package/dist/user-interface/index.js +18 -15
- package/dist/user-interface/index.js.map +1 -1
- package/dist/user-interface/index.mjs +15 -7
- package/dist/user-interface/index.mjs.map +1 -1
- package/dist/user-interface/index.native.js +14 -6
- package/dist/user-interface/index.native.js.map +2 -2
- package/dist/utils/getReactNativeConfig.js +34 -6
- package/dist/utils/getReactNativeConfig.js.map +1 -1
- package/dist/utils/getReactNativeConfig.mjs +30 -4
- package/dist/utils/getReactNativeConfig.mjs.map +1 -1
- package/dist/utils/getReactNativeConfig.native.js +45 -6
- package/dist/utils/getReactNativeConfig.native.js.map +2 -2
- package/dist/utils/getViteServerConfig.js +4 -1
- package/dist/utils/getViteServerConfig.js.map +1 -1
- package/dist/utils/getViteServerConfig.mjs +4 -2
- package/dist/utils/getViteServerConfig.mjs.map +1 -1
- package/dist/utils/getViteServerConfig.native.js +4 -1
- package/dist/utils/getViteServerConfig.native.js.map +2 -2
- package/dist/utils/printServerUrls.js +12 -0
- package/dist/utils/printServerUrls.js.map +6 -0
- package/dist/utils/printServerUrls.mjs +8 -0
- package/dist/utils/printServerUrls.mjs.map +1 -0
- package/dist/utils/printServerUrls.native.js +43 -0
- package/dist/utils/printServerUrls.native.js.map +6 -0
- package/package.json +11 -13
- package/react-native-template.js +117 -103
- package/src/exports/dev.ts +34 -319
- package/src/plugins/autoPreBundleDepsForSsrPlugin.ts +20 -1
- package/src/plugins/expoManifestRequestHandlerPlugin.ts +40 -20
- package/src/plugins/reactNativeDevServer.ts +161 -0
- package/src/user-interface/index.ts +21 -20
- package/src/utils/getReactNativeConfig.ts +56 -11
- package/src/utils/getViteServerConfig.ts +4 -0
- package/src/utils/printServerUrls.ts +24 -0
- package/types/exports/dev.d.ts +2 -12
- package/types/exports/dev.d.ts.map +1 -1
- package/types/plugins/autoPreBundleDepsForSsrPlugin.d.ts.map +1 -1
- package/types/plugins/clientInjectPlugin.d.ts +2 -2
- package/types/plugins/clientInjectPlugin.d.ts.map +1 -1
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +1 -1
- package/types/plugins/reactNativeDevServer.d.ts +4 -0
- package/types/plugins/reactNativeDevServer.d.ts.map +1 -0
- package/types/user-interface/index.d.ts +2 -4
- package/types/user-interface/index.d.ts.map +1 -1
- package/types/utils/getReactNativeConfig.d.ts +2 -2
- package/types/utils/getReactNativeConfig.d.ts.map +1 -1
- package/types/utils/getViteServerConfig.d.ts.map +1 -1
- package/types/utils/printServerUrls.d.ts +3 -0
- package/types/utils/printServerUrls.d.ts.map +1 -0
package/dist/exports/dev.js
CHANGED
|
@@ -1,216 +1,38 @@
|
|
|
1
|
-
import wsAdapter from "crossws/adapters/node";
|
|
2
1
|
import FSExtra from "fs-extra";
|
|
3
|
-
import
|
|
2
|
+
import colors from "picocolors";
|
|
4
3
|
import { createServer } from "vite";
|
|
5
|
-
import { WebSocket } from "ws";
|
|
6
4
|
import { startUserInterface } from "../user-interface/index";
|
|
7
5
|
import { bindKeypressInput } from "../utils/bindKeypressInput";
|
|
8
|
-
import {
|
|
9
|
-
addConnectedNativeClient,
|
|
10
|
-
removeConnectedNativeClient
|
|
11
|
-
} from "../utils/connectedNativeClients";
|
|
12
6
|
import { fillOptions } from "../utils/getOptionsFilled";
|
|
13
|
-
import { getReactNativeBundle } from "../utils/getReactNativeBundle";
|
|
14
7
|
import { getViteServerConfig } from "../utils/getViteServerConfig";
|
|
15
|
-
import { hotUpdateCache } from "../utils/hotUpdateCache";
|
|
16
8
|
import { applyBuiltInPatches } from "../utils/patches";
|
|
9
|
+
import { printServerUrls } from "../utils/printServerUrls";
|
|
17
10
|
import { clean } from "./clean";
|
|
18
11
|
const { ensureDir } = FSExtra, dev = async (optionsIn) => {
|
|
19
|
-
const options = await fillOptions(optionsIn), { cacheDir
|
|
20
|
-
options.clean && await clean(optionsIn),
|
|
12
|
+
const options = await fillOptions(optionsIn), { cacheDir } = options;
|
|
13
|
+
bindKeypressInput(), options.clean && await clean(optionsIn), applyBuiltInPatches(options).catch((err) => {
|
|
21
14
|
console.error(`
|
|
22
15
|
\u{1F97A} error applying built-in patches`, err);
|
|
23
16
|
}), await ensureDir(cacheDir);
|
|
24
|
-
const serverConfig = await getViteServerConfig(options)
|
|
25
|
-
viteServer
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
onError: (error) => {
|
|
36
|
-
console.error(error);
|
|
37
|
-
},
|
|
38
|
-
onRequest: (event) => {
|
|
39
|
-
process.env.DEBUG && console.info(" \u2192", event.path);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
router.get(
|
|
43
|
-
"/file",
|
|
44
|
-
defineEventHandler((e) => {
|
|
45
|
-
const query = getQuery(e);
|
|
46
|
-
if (typeof query.file == "string") {
|
|
47
|
-
const source = hotUpdateCache.get(query.file);
|
|
48
|
-
return source ? new Response(source, {
|
|
49
|
-
headers: {
|
|
50
|
-
"content-type": "text/javascript"
|
|
51
|
-
}
|
|
52
|
-
}) : (console.warn("No hot source found for", query.file), new Response("", {
|
|
53
|
-
headers: {
|
|
54
|
-
"content-type": "text/javascript"
|
|
55
|
-
}
|
|
56
|
-
}));
|
|
57
|
-
}
|
|
58
|
-
})
|
|
59
|
-
);
|
|
60
|
-
let cachedReactNativeBundle = null;
|
|
61
|
-
const rnBundleHandler = defineEventHandler(async (e) => {
|
|
62
|
-
try {
|
|
63
|
-
const bundle = await (async () => {
|
|
64
|
-
if (cachedReactNativeBundle && !process.env.VXRN_DISABLE_CACHE)
|
|
65
|
-
return cachedReactNativeBundle;
|
|
66
|
-
const builtBundle = await getReactNativeBundle(options);
|
|
67
|
-
return cachedReactNativeBundle = builtBundle, builtBundle;
|
|
68
|
-
})();
|
|
69
|
-
return new Response(bundle, {
|
|
70
|
-
headers: {
|
|
71
|
-
"content-type": "text/javascript"
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
} catch (err) {
|
|
75
|
-
console.error(` Error building React Native bundle: ${err}`), console.error(
|
|
76
|
-
`
|
|
77
|
-
|
|
78
|
-
Note, some errors may happen due to a stale Vite cache, you may want to try re-running with the "--clean" flag`
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
viteServer.watcher.addListener("change", () => {
|
|
83
|
-
cachedReactNativeBundle = null;
|
|
84
|
-
}), router.get("/index.bundle", rnBundleHandler), router.get(
|
|
85
|
-
"/.expo/.virtual-metro-entry.bundle",
|
|
86
|
-
// for Expo development builds
|
|
87
|
-
rnBundleHandler
|
|
88
|
-
), router.get(
|
|
89
|
-
"/status",
|
|
90
|
-
defineEventHandler(() => "packager-status:running")
|
|
91
|
-
), app.use(router);
|
|
92
|
-
const clients = /* @__PURE__ */ new Set();
|
|
93
|
-
let socket = null;
|
|
94
|
-
const { handleUpgrade } = wsAdapter(app.websocket);
|
|
95
|
-
app.use(
|
|
96
|
-
"/__vxrnhmr",
|
|
97
|
-
defineEventHandler({
|
|
98
|
-
handler() {
|
|
99
|
-
},
|
|
100
|
-
websocket: {
|
|
101
|
-
open(peer) {
|
|
102
|
-
process.env.DEBUG && console.debug("[hmr:web] open", peer), clients.add(peer);
|
|
103
|
-
},
|
|
104
|
-
message(peer, message) {
|
|
105
|
-
socket?.send(message.rawData);
|
|
106
|
-
},
|
|
107
|
-
close(peer, event) {
|
|
108
|
-
process.env.DEBUG && console.info("[hmr:web] close", peer, event), clients.delete(peer);
|
|
109
|
-
},
|
|
110
|
-
error(peer, error) {
|
|
111
|
-
console.error("[hmr:web] error", peer, error);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
})
|
|
115
|
-
), app.use(
|
|
116
|
-
"/__hmr",
|
|
117
|
-
defineEventHandler({
|
|
118
|
-
handler() {
|
|
119
|
-
},
|
|
120
|
-
websocket: {
|
|
121
|
-
open(peer) {
|
|
122
|
-
process.env.DEBUG && console.debug("[hmr] open", peer), addConnectedNativeClient();
|
|
123
|
-
},
|
|
124
|
-
message(peer, message) {
|
|
125
|
-
console.info("[hmr] message", peer, message), message.text().includes("ping") && peer.send("pong");
|
|
126
|
-
},
|
|
127
|
-
close(peer, event) {
|
|
128
|
-
process.env.DEBUG && console.info("[hmr] close", peer, event), removeConnectedNativeClient();
|
|
129
|
-
},
|
|
130
|
-
error(peer, error) {
|
|
131
|
-
console.error("[hmr] error", peer, error);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
})
|
|
135
|
-
), app.use(
|
|
136
|
-
"/symbolicate",
|
|
137
|
-
defineEventHandler(() => "TODO")
|
|
138
|
-
), app.use(
|
|
139
|
-
"/__client",
|
|
140
|
-
defineEventHandler({
|
|
141
|
-
handler() {
|
|
142
|
-
},
|
|
143
|
-
websocket: {
|
|
144
|
-
open(peer) {
|
|
145
|
-
console.info(" \u2460 open", peer);
|
|
146
|
-
},
|
|
147
|
-
message(peer, messageRaw) {
|
|
148
|
-
const message = JSON.parse(messageRaw.text());
|
|
149
|
-
switch (message.type) {
|
|
150
|
-
case "client-log": {
|
|
151
|
-
if (message.level === "warn" && message.data[0]?.startsWith(
|
|
152
|
-
"Sending `appearanceChanged` with no listeners registered."
|
|
153
|
-
))
|
|
154
|
-
return;
|
|
155
|
-
console.info(
|
|
156
|
-
` \u2460 ${message.level === "info" ? "" : ` [${message.level}]`}`,
|
|
157
|
-
...message.data
|
|
158
|
-
);
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
default:
|
|
162
|
-
console.warn(" \u2460 Unknown message type", message);
|
|
163
|
-
}
|
|
164
|
-
},
|
|
165
|
-
close(peer, event) {
|
|
166
|
-
console.info(" \u2460 close", peer, event);
|
|
167
|
-
},
|
|
168
|
-
error(peer, error) {
|
|
169
|
-
console.error(" \u2460 error", peer, error);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
})
|
|
173
|
-
), app.use(
|
|
174
|
-
eventHandler(
|
|
175
|
-
createProxyEventHandler({
|
|
176
|
-
target: `${server.protocol}//${server.host}:${vitePort}`,
|
|
177
|
-
enableLogger: process.env.DEBUG?.startsWith("vxrn"),
|
|
178
|
-
configureProxyRequest(event) {
|
|
179
|
-
return {
|
|
180
|
-
fetchOptions: {
|
|
181
|
-
// h3 proxy is using `fetch` internally (https://github.com/unjs/h3/blob/v1.11.1/src/utils/proxy.ts#L84-L88) and by default it will follow redirects.
|
|
182
|
-
// This will cause unexpected behavior when the target server returns a 3xx response, which the client will not get the 3xx response but instead get the content of the redirected URL as proxied.
|
|
183
|
-
// See: https://github.com/onejs/one/issues/156#issuecomment-2412876573
|
|
184
|
-
redirect: "manual"
|
|
185
|
-
}
|
|
186
|
-
};
|
|
17
|
+
const serverConfig = await getViteServerConfig(options);
|
|
18
|
+
let viteServer = null;
|
|
19
|
+
return {
|
|
20
|
+
viteServer,
|
|
21
|
+
start: async () => (viteServer = await createServer(serverConfig), viteServer.watcher.addListener("change", async (path) => {
|
|
22
|
+
const id = path.replace(process.cwd(), "");
|
|
23
|
+
if (!(!id.endsWith("tsx") && !id.endsWith("jsx")))
|
|
24
|
+
try {
|
|
25
|
+
viteServer.transformRequest(id);
|
|
26
|
+
} catch (err) {
|
|
27
|
+
console.info("err", err);
|
|
187
28
|
}
|
|
29
|
+
}), await viteServer.listen(), console.info(), console.info(colors.bold("Server running on") + " \u2AA2"), console.info(), viteServer.resolvedUrls && printServerUrls(viteServer.resolvedUrls, {}, viteServer.config.logger.info), startUserInterface({ server: viteServer }), {
|
|
30
|
+
closePromise: new Promise((res) => {
|
|
31
|
+
viteServer?.httpServer?.on("close", res);
|
|
188
32
|
})
|
|
189
|
-
)
|
|
190
|
-
);
|
|
191
|
-
const nodeServer = nodeCreateServer(toNodeListener(app));
|
|
192
|
-
return nodeServer.on("upgrade", handleUpgrade), {
|
|
193
|
-
server: nodeServer,
|
|
194
|
-
viteServer,
|
|
195
|
-
async start() {
|
|
196
|
-
nodeServer.listen(server.port, server.host);
|
|
197
|
-
const url = `${server.protocol}//${server.host}:${server.port}`;
|
|
198
|
-
return process.env.NODE_ENV === "test" ? console.info(`
|
|
199
|
-
Server running on ${url}`) : console.info(`
|
|
200
|
-
Server running on \x1B[1m${url}\x1B[0m`), startUserInterface({ server }), nodeServer.once("listening", () => {
|
|
201
|
-
vitePort && (socket = new WebSocket(`ws://${server.host}:${vitePort}/__vxrnhmr`, "vite-hmr"), socket.on("message", (msg) => {
|
|
202
|
-
const message = msg.toString();
|
|
203
|
-
for (const listener of [...clients])
|
|
204
|
-
listener.send(message);
|
|
205
|
-
}), socket.on("error", (err) => {
|
|
206
|
-
console.info("error bridging socket to vite", err);
|
|
207
|
-
}));
|
|
208
|
-
}), {
|
|
209
|
-
closePromise: new Promise((res) => viteServer.httpServer?.on("close", res))
|
|
210
|
-
};
|
|
211
|
-
},
|
|
33
|
+
}),
|
|
212
34
|
stop: async () => {
|
|
213
|
-
viteServer.watcher.removeAllListeners(), await
|
|
35
|
+
viteServer && (viteServer.watcher.removeAllListeners(), await viteServer.close());
|
|
214
36
|
}
|
|
215
37
|
};
|
|
216
38
|
};
|
package/dist/exports/dev.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/exports/dev.ts"],
|
|
4
|
-
"mappings": "
|
|
4
|
+
"mappings": "AAAA,OAAO,aAAa;AACpB,OAAO,YAAY;AACnB,SAAS,oBAAwC;AAEjD,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAC5B,SAAS,2BAA2B;AACpC,SAAS,2BAA2B;AACpC,SAAS,uBAAuB;AAChC,SAAS,aAAa;AAEtB,MAAM,EAAE,UAAU,IAAI,SAIT,MAAM,OAAO,cAA0B;AAClD,QAAM,UAAU,MAAM,YAAY,SAAS,GACrC,EAAE,SAAS,IAAI;AAErB,oBAAkB,GAEd,QAAQ,SACV,MAAM,MAAM,SAAS,GAGvB,oBAAoB,OAAO,EAAE,MAAM,CAAC,QAAQ;AAC1C,YAAQ,MAAM;AAAA,6CAAyC,GAAG;AAAA,EAC5D,CAAC,GAED,MAAM,UAAU,QAAQ;AAExB,QAAM,eAAe,MAAM,oBAAoB,OAAO;AAEtD,MAAI,aAAmC;AAEvC,SAAO;AAAA,IACL;AAAA,IAEA,OAAO,aACL,aAAa,MAAM,aAAa,YAAY,GAG5C,WAAW,QAAQ,YAAY,UAAU,OAAO,SAAS;AACvD,YAAM,KAAK,KAAK,QAAQ,QAAQ,IAAI,GAAG,EAAE;AACzC,UAAI,GAAC,GAAG,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS,KAAK;AAG7C,YAAI;AACF,UAAK,WAAY,iBAAiB,EAAE;AAAA,QACtC,SAAS,KAAK;AACZ,kBAAQ,KAAK,OAAO,GAAG;AAAA,QACzB;AAAA,IACF,CAAC,GAED,MAAM,WAAW,OAAO,GAExB,QAAQ,KAAK,GACb,QAAQ,KAAK,OAAO,KAAK,mBAAmB,IAAI,SAAI,GACpD,QAAQ,KAAK,GAET,WAAW,gBACb,gBAAgB,WAAW,cAAc,CAAC,GAAG,WAAW,OAAO,OAAO,IAAI,GAG5E,mBAAmB,EAAE,QAAQ,WAAW,CAAC,GAElC;AAAA,MACL,cAAc,IAAI,QAAQ,CAAC,QAAQ;AACjC,oBAAY,YAAY,GAAG,SAAS,GAAG;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IAGF,MAAM,YAAY;AAChB,MAAI,eACF,WAAW,QAAQ,mBAAmB,GACtC,MAAM,WAAW,MAAM;AAAA,IAE3B;AAAA,EACF;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/exports/dev.mjs
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import wsAdapter from "crossws/adapters/node";
|
|
2
1
|
import FSExtra from "fs-extra";
|
|
3
|
-
import
|
|
2
|
+
import colors from "picocolors";
|
|
4
3
|
import { createServer } from "vite";
|
|
5
|
-
import { WebSocket } from "ws";
|
|
6
4
|
import { startUserInterface } from "../user-interface/index.mjs";
|
|
7
5
|
import { bindKeypressInput } from "../utils/bindKeypressInput.mjs";
|
|
8
|
-
import { addConnectedNativeClient, removeConnectedNativeClient } from "../utils/connectedNativeClients.mjs";
|
|
9
6
|
import { fillOptions } from "../utils/getOptionsFilled.mjs";
|
|
10
|
-
import { getReactNativeBundle } from "../utils/getReactNativeBundle.mjs";
|
|
11
7
|
import { getViteServerConfig } from "../utils/getViteServerConfig.mjs";
|
|
12
|
-
import { hotUpdateCache } from "../utils/hotUpdateCache.mjs";
|
|
13
8
|
import { applyBuiltInPatches } from "../utils/patches.mjs";
|
|
9
|
+
import { printServerUrls } from "../utils/printServerUrls.mjs";
|
|
14
10
|
import { clean } from "./clean.mjs";
|
|
15
11
|
const {
|
|
16
12
|
ensureDir
|
|
@@ -18,184 +14,32 @@ const {
|
|
|
18
14
|
dev = async optionsIn => {
|
|
19
15
|
const options = await fillOptions(optionsIn),
|
|
20
16
|
{
|
|
21
|
-
cacheDir
|
|
22
|
-
server
|
|
17
|
+
cacheDir
|
|
23
18
|
} = options;
|
|
24
|
-
options.clean && (await clean(optionsIn)),
|
|
19
|
+
bindKeypressInput(), options.clean && (await clean(optionsIn)), applyBuiltInPatches(options).catch(err => {
|
|
25
20
|
console.error(`
|
|
26
21
|
\u{1F97A} error applying built-in patches`, err);
|
|
27
22
|
}), await ensureDir(cacheDir);
|
|
28
|
-
const serverConfig = await getViteServerConfig(options)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const id = path.replace(process.cwd(), "");
|
|
32
|
-
if (!(!id.endsWith("tsx") && !id.endsWith("jsx"))) try {
|
|
33
|
-
viteServer.transformRequest(id);
|
|
34
|
-
} catch (err) {
|
|
35
|
-
console.info("err", err);
|
|
36
|
-
}
|
|
37
|
-
}), await viteServer.listen();
|
|
38
|
-
const vitePort = viteServer.config.server.port,
|
|
39
|
-
{
|
|
40
|
-
createApp,
|
|
41
|
-
createRouter,
|
|
42
|
-
defineEventHandler,
|
|
43
|
-
eventHandler,
|
|
44
|
-
getQuery,
|
|
45
|
-
toNodeListener
|
|
46
|
-
} = await import("h3"),
|
|
47
|
-
{
|
|
48
|
-
createProxyEventHandler
|
|
49
|
-
} = await import("h3-proxy"),
|
|
50
|
-
router = createRouter(),
|
|
51
|
-
app = createApp({
|
|
52
|
-
onError: error => {
|
|
53
|
-
console.error(error);
|
|
54
|
-
},
|
|
55
|
-
onRequest: event => {
|
|
56
|
-
process.env.DEBUG && console.info(" \u2192", event.path);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
router.get("/file", defineEventHandler(e => {
|
|
60
|
-
const query = getQuery(e);
|
|
61
|
-
if (typeof query.file == "string") {
|
|
62
|
-
const source = hotUpdateCache.get(query.file);
|
|
63
|
-
return source ? new Response(source, {
|
|
64
|
-
headers: {
|
|
65
|
-
"content-type": "text/javascript"
|
|
66
|
-
}
|
|
67
|
-
}) : (console.warn("No hot source found for", query.file), new Response("", {
|
|
68
|
-
headers: {
|
|
69
|
-
"content-type": "text/javascript"
|
|
70
|
-
}
|
|
71
|
-
}));
|
|
72
|
-
}
|
|
73
|
-
}));
|
|
74
|
-
let cachedReactNativeBundle = null;
|
|
75
|
-
const rnBundleHandler = defineEventHandler(async e => {
|
|
76
|
-
try {
|
|
77
|
-
const bundle = await (async () => {
|
|
78
|
-
if (cachedReactNativeBundle && !process.env.VXRN_DISABLE_CACHE) return cachedReactNativeBundle;
|
|
79
|
-
const builtBundle = await getReactNativeBundle(options);
|
|
80
|
-
return cachedReactNativeBundle = builtBundle, builtBundle;
|
|
81
|
-
})();
|
|
82
|
-
return new Response(bundle, {
|
|
83
|
-
headers: {
|
|
84
|
-
"content-type": "text/javascript"
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
} catch (err) {
|
|
88
|
-
console.error(` Error building React Native bundle: ${err}`), console.error(`
|
|
89
|
-
|
|
90
|
-
Note, some errors may happen due to a stale Vite cache, you may want to try re-running with the "--clean" flag`);
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
viteServer.watcher.addListener("change", () => {
|
|
94
|
-
cachedReactNativeBundle = null;
|
|
95
|
-
}), router.get("/index.bundle", rnBundleHandler), router.get("/.expo/.virtual-metro-entry.bundle",
|
|
96
|
-
// for Expo development builds
|
|
97
|
-
rnBundleHandler), router.get("/status", defineEventHandler(() => "packager-status:running")), app.use(router);
|
|
98
|
-
const clients = /* @__PURE__ */new Set();
|
|
99
|
-
let socket = null;
|
|
100
|
-
const {
|
|
101
|
-
handleUpgrade
|
|
102
|
-
} = wsAdapter(app.websocket);
|
|
103
|
-
app.use("/__vxrnhmr", defineEventHandler({
|
|
104
|
-
handler() {},
|
|
105
|
-
websocket: {
|
|
106
|
-
open(peer) {
|
|
107
|
-
process.env.DEBUG && console.debug("[hmr:web] open", peer), clients.add(peer);
|
|
108
|
-
},
|
|
109
|
-
message(peer, message) {
|
|
110
|
-
socket?.send(message.rawData);
|
|
111
|
-
},
|
|
112
|
-
close(peer, event) {
|
|
113
|
-
process.env.DEBUG && console.info("[hmr:web] close", peer, event), clients.delete(peer);
|
|
114
|
-
},
|
|
115
|
-
error(peer, error) {
|
|
116
|
-
console.error("[hmr:web] error", peer, error);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
})), app.use("/__hmr", defineEventHandler({
|
|
120
|
-
handler() {},
|
|
121
|
-
websocket: {
|
|
122
|
-
open(peer) {
|
|
123
|
-
process.env.DEBUG && console.debug("[hmr] open", peer), addConnectedNativeClient();
|
|
124
|
-
},
|
|
125
|
-
message(peer, message) {
|
|
126
|
-
console.info("[hmr] message", peer, message), message.text().includes("ping") && peer.send("pong");
|
|
127
|
-
},
|
|
128
|
-
close(peer, event) {
|
|
129
|
-
process.env.DEBUG && console.info("[hmr] close", peer, event), removeConnectedNativeClient();
|
|
130
|
-
},
|
|
131
|
-
error(peer, error) {
|
|
132
|
-
console.error("[hmr] error", peer, error);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
})), app.use("/symbolicate", defineEventHandler(() => "TODO")), app.use("/__client", defineEventHandler({
|
|
136
|
-
handler() {},
|
|
137
|
-
websocket: {
|
|
138
|
-
open(peer) {
|
|
139
|
-
console.info(" \u2460 open", peer);
|
|
140
|
-
},
|
|
141
|
-
message(peer, messageRaw) {
|
|
142
|
-
const message = JSON.parse(messageRaw.text());
|
|
143
|
-
switch (message.type) {
|
|
144
|
-
case "client-log":
|
|
145
|
-
{
|
|
146
|
-
if (message.level === "warn" && message.data[0]?.startsWith("Sending `appearanceChanged` with no listeners registered.")) return;
|
|
147
|
-
console.info(` \u2460 ${message.level === "info" ? "" : ` [${message.level}]`}`, ...message.data);
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
default:
|
|
151
|
-
console.warn(" \u2460 Unknown message type", message);
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
close(peer, event) {
|
|
155
|
-
console.info(" \u2460 close", peer, event);
|
|
156
|
-
},
|
|
157
|
-
error(peer, error) {
|
|
158
|
-
console.error(" \u2460 error", peer, error);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
})), app.use(eventHandler(createProxyEventHandler({
|
|
162
|
-
target: `${server.protocol}//${server.host}:${vitePort}`,
|
|
163
|
-
enableLogger: process.env.DEBUG?.startsWith("vxrn"),
|
|
164
|
-
configureProxyRequest(event) {
|
|
165
|
-
return {
|
|
166
|
-
fetchOptions: {
|
|
167
|
-
// h3 proxy is using `fetch` internally (https://github.com/unjs/h3/blob/v1.11.1/src/utils/proxy.ts#L84-L88) and by default it will follow redirects.
|
|
168
|
-
// This will cause unexpected behavior when the target server returns a 3xx response, which the client will not get the 3xx response but instead get the content of the redirected URL as proxied.
|
|
169
|
-
// See: https://github.com/onejs/one/issues/156#issuecomment-2412876573
|
|
170
|
-
redirect: "manual"
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
})));
|
|
175
|
-
const nodeServer = nodeCreateServer(toNodeListener(app));
|
|
176
|
-
return nodeServer.on("upgrade", handleUpgrade), {
|
|
177
|
-
server: nodeServer,
|
|
23
|
+
const serverConfig = await getViteServerConfig(options);
|
|
24
|
+
let viteServer = null;
|
|
25
|
+
return {
|
|
178
26
|
viteServer,
|
|
179
|
-
async
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}), {
|
|
194
|
-
closePromise: new Promise(res => viteServer.httpServer?.on("close", res))
|
|
195
|
-
};
|
|
196
|
-
},
|
|
27
|
+
start: async () => (viteServer = await createServer(serverConfig), viteServer.watcher.addListener("change", async path => {
|
|
28
|
+
const id = path.replace(process.cwd(), "");
|
|
29
|
+
if (!(!id.endsWith("tsx") && !id.endsWith("jsx"))) try {
|
|
30
|
+
viteServer.transformRequest(id);
|
|
31
|
+
} catch (err) {
|
|
32
|
+
console.info("err", err);
|
|
33
|
+
}
|
|
34
|
+
}), await viteServer.listen(), console.info(), console.info(colors.bold("Server running on") + " \u2AA2"), console.info(), viteServer.resolvedUrls && printServerUrls(viteServer.resolvedUrls, {}, viteServer.config.logger.info), startUserInterface({
|
|
35
|
+
server: viteServer
|
|
36
|
+
}), {
|
|
37
|
+
closePromise: new Promise(res => {
|
|
38
|
+
viteServer?.httpServer?.on("close", res);
|
|
39
|
+
})
|
|
40
|
+
}),
|
|
197
41
|
stop: async () => {
|
|
198
|
-
viteServer.watcher.removeAllListeners(), await
|
|
42
|
+
viteServer && (viteServer.watcher.removeAllListeners(), await viteServer.close());
|
|
199
43
|
}
|
|
200
44
|
};
|
|
201
45
|
};
|
package/dist/exports/dev.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["FSExtra","colors","createServer","startUserInterface","bindKeypressInput","fillOptions","getViteServerConfig","applyBuiltInPatches","printServerUrls","clean","ensureDir","dev","optionsIn","options","cacheDir","catch","err","console","error","serverConfig","viteServer","start","watcher","addListener","path","id","replace","process","cwd","endsWith","transformRequest","info","listen","bold","resolvedUrls","config","logger","server","closePromise","Promise","res","httpServer","on","stop","removeAllListeners","close"],"sources":["../../src/exports/dev.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,OAAA,MAAa;AACpB,OAAOC,MAAA,MAAY;AACnB,SAASC,YAAA,QAAwC;AAEjD,SAASC,kBAAA,QAA0B;AACnC,SAASC,iBAAA,QAAyB;AAClC,SAASC,WAAA,QAAmB;AAC5B,SAASC,mBAAA,QAA2B;AACpC,SAASC,mBAAA,QAA2B;AACpC,SAASC,eAAA,QAAuB;AAChC,SAASC,KAAA,QAAa;AAEtB,MAAM;IAAEC;EAAU,IAAIV,OAAA;EAITW,GAAA,GAAM,MAAOC,SAAA,IAA0B;IAClD,MAAMC,OAAA,GAAU,MAAMR,WAAA,CAAYO,SAAS;MACrC;QAAEE;MAAS,IAAID,OAAA;IAErBT,iBAAA,CAAkB,GAEdS,OAAA,CAAQJ,KAAA,KACV,MAAMA,KAAA,CAAMG,SAAS,IAGvBL,mBAAA,CAAoBM,OAAO,EAAEE,KAAA,CAAOC,GAAA,IAAQ;MAC1CC,OAAA,CAAQC,KAAA,CAAM;AAAA,6CAAyCF,GAAG;IAC5D,CAAC,GAED,MAAMN,SAAA,CAAUI,QAAQ;IAExB,MAAMK,YAAA,GAAe,MAAMb,mBAAA,CAAoBO,OAAO;IAEtD,IAAIO,UAAA,GAAmC;IAEvC,OAAO;MACLA,UAAA;MAEAC,KAAA,EAAO,MAAAA,CAAA,MACLD,UAAA,GAAa,MAAMlB,YAAA,CAAaiB,YAAY,GAG5CC,UAAA,CAAWE,OAAA,CAAQC,WAAA,CAAY,UAAU,MAAOC,IAAA,IAAS;QACvD,MAAMC,EAAA,GAAKD,IAAA,CAAKE,OAAA,CAAQC,OAAA,CAAQC,GAAA,CAAI,GAAG,EAAE;QACzC,IAAI,GAACH,EAAA,CAAGI,QAAA,CAAS,KAAK,KAAK,CAACJ,EAAA,CAAGI,QAAA,CAAS,KAAK,IAG7C,IAAI;UACGT,UAAA,CAAYU,gBAAA,CAAiBL,EAAE;QACtC,SAAST,GAAA,EAAK;UACZC,OAAA,CAAQc,IAAA,CAAK,OAAOf,GAAG;QACzB;MACF,CAAC,GAED,MAAMI,UAAA,CAAWY,MAAA,CAAO,GAExBf,OAAA,CAAQc,IAAA,CAAK,GACbd,OAAA,CAAQc,IAAA,CAAK9B,MAAA,CAAOgC,IAAA,CAAK,mBAAmB,IAAI,SAAI,GACpDhB,OAAA,CAAQc,IAAA,CAAK,GAETX,UAAA,CAAWc,YAAA,IACb1B,eAAA,CAAgBY,UAAA,CAAWc,YAAA,EAAc,CAAC,GAAGd,UAAA,CAAWe,MAAA,CAAOC,MAAA,CAAOL,IAAI,GAG5E5B,kBAAA,CAAmB;QAAEkC,MAAA,EAAQjB;MAAW,CAAC,GAElC;QACLkB,YAAA,EAAc,IAAIC,OAAA,CAASC,GAAA,IAAQ;UACjCpB,UAAA,EAAYqB,UAAA,EAAYC,EAAA,CAAG,SAASF,GAAG;QACzC,CAAC;MACH;MAGFG,IAAA,EAAM,MAAAA,CAAA,KAAY;QACZvB,UAAA,KACFA,UAAA,CAAWE,OAAA,CAAQsB,kBAAA,CAAmB,GACtC,MAAMxB,UAAA,CAAWyB,KAAA,CAAM;MAE3B;IACF;EACF","ignoreList":[]}
|