vxrn 0.1.16 → 0.1.18

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 (139) hide show
  1. package/dist/cjs/VXRNConfigFilled.js +53 -0
  2. package/dist/cjs/VXRNConfigFilled.js.map +6 -0
  3. package/dist/cjs/VXRNConfigFilled.native.js +307 -0
  4. package/dist/cjs/VXRNConfigFilled.native.js.map +6 -0
  5. package/dist/cjs/build.js +96 -0
  6. package/dist/cjs/build.js.map +6 -0
  7. package/dist/cjs/build.native.js +237 -0
  8. package/dist/cjs/build.native.js.map +6 -0
  9. package/dist/cjs/commands/cli-build.js +36 -0
  10. package/dist/cjs/commands/cli-build.js.map +6 -0
  11. package/dist/cjs/commands/cli-build.native.js +171 -0
  12. package/dist/cjs/commands/cli-build.native.js.map +6 -0
  13. package/dist/cjs/commands/cli-dev.js +2 -2
  14. package/dist/cjs/commands/cli-dev.js.map +1 -1
  15. package/dist/cjs/commands/cli-dev.native.js +2 -2
  16. package/dist/cjs/commands/cli-dev.native.js.map +2 -2
  17. package/dist/cjs/commands/index.js +3 -1
  18. package/dist/cjs/commands/index.js.map +1 -1
  19. package/dist/cjs/commands/index.native.js +4 -0
  20. package/dist/cjs/commands/index.native.js.map +2 -2
  21. package/dist/cjs/createDevServer.js +602 -0
  22. package/dist/cjs/createDevServer.js.map +6 -0
  23. package/dist/cjs/createDevServer.native.js +1222 -0
  24. package/dist/cjs/createDevServer.native.js.map +6 -0
  25. package/dist/cjs/getBaseViteConfig.js +40 -0
  26. package/dist/cjs/getBaseViteConfig.js.map +6 -0
  27. package/dist/cjs/getBaseViteConfig.native.js +46 -0
  28. package/dist/cjs/getBaseViteConfig.native.js.map +6 -0
  29. package/dist/cjs/getOptionsFIlled.js +53 -0
  30. package/dist/cjs/getOptionsFIlled.js.map +6 -0
  31. package/dist/cjs/getOptionsFIlled.native.js +307 -0
  32. package/dist/cjs/getOptionsFIlled.native.js.map +6 -0
  33. package/dist/cjs/index.js +3 -2
  34. package/dist/cjs/index.js.map +1 -1
  35. package/dist/cjs/index.native.js +4 -2
  36. package/dist/cjs/index.native.js.map +1 -1
  37. package/dist/cjs/nativePlugin.js +1 -1
  38. package/dist/cjs/nativePlugin.native.js +1 -1
  39. package/dist/cjs/types.native.js.map +1 -1
  40. package/dist/cjs/utils/getBaseViteConfig.js +40 -0
  41. package/dist/cjs/utils/getBaseViteConfig.js.map +6 -0
  42. package/dist/cjs/utils/getBaseViteConfig.native.js +46 -0
  43. package/dist/cjs/utils/getBaseViteConfig.native.js.map +6 -0
  44. package/dist/cjs/utils/getOptionsFilled.js +53 -0
  45. package/dist/cjs/utils/getOptionsFilled.js.map +6 -0
  46. package/dist/cjs/utils/getOptionsFilled.native.js +307 -0
  47. package/dist/cjs/utils/getOptionsFilled.native.js.map +6 -0
  48. package/dist/cjs/utils/getVitePath.js +49 -0
  49. package/dist/cjs/utils/getVitePath.js.map +6 -0
  50. package/dist/cjs/utils/getVitePath.native.js +198 -0
  51. package/dist/cjs/utils/getVitePath.native.js.map +6 -0
  52. package/dist/esm/VXRNConfigFilled.js +30 -0
  53. package/dist/esm/VXRNConfigFilled.js.map +6 -0
  54. package/dist/esm/VXRNConfigFilled.mjs +34 -0
  55. package/dist/esm/VXRNConfigFilled.native.js +279 -0
  56. package/dist/esm/VXRNConfigFilled.native.js.map +6 -0
  57. package/dist/esm/build.js +83 -0
  58. package/dist/esm/build.js.map +6 -0
  59. package/dist/esm/build.mjs +56 -0
  60. package/dist/esm/build.native.js +217 -0
  61. package/dist/esm/build.native.js.map +6 -0
  62. package/dist/esm/commands/cli-build.js +23 -0
  63. package/dist/esm/commands/cli-build.js.map +6 -0
  64. package/dist/esm/commands/cli-build.mjs +22 -0
  65. package/dist/esm/commands/cli-build.native.js +156 -0
  66. package/dist/esm/commands/cli-build.native.js.map +6 -0
  67. package/dist/esm/commands/cli-dev.js +2 -2
  68. package/dist/esm/commands/cli-dev.js.map +1 -1
  69. package/dist/esm/commands/cli-dev.mjs +2 -2
  70. package/dist/esm/commands/cli-dev.native.js +2 -2
  71. package/dist/esm/commands/cli-dev.native.js.map +2 -2
  72. package/dist/esm/commands/index.js +3 -1
  73. package/dist/esm/commands/index.js.map +1 -1
  74. package/dist/esm/commands/index.mjs +3 -1
  75. package/dist/esm/commands/index.native.js +4 -0
  76. package/dist/esm/commands/index.native.js.map +2 -2
  77. package/dist/esm/createDevServer.js +613 -0
  78. package/dist/esm/createDevServer.js.map +6 -0
  79. package/dist/esm/createDevServer.mjs +574 -0
  80. package/dist/esm/createDevServer.native.js +1211 -0
  81. package/dist/esm/createDevServer.native.js.map +6 -0
  82. package/dist/esm/getBaseViteConfig.js +24 -0
  83. package/dist/esm/getBaseViteConfig.js.map +6 -0
  84. package/dist/esm/getBaseViteConfig.mjs +23 -0
  85. package/dist/esm/getBaseViteConfig.native.js +25 -0
  86. package/dist/esm/getBaseViteConfig.native.js.map +6 -0
  87. package/dist/esm/getOptionsFIlled.js +30 -0
  88. package/dist/esm/getOptionsFIlled.js.map +6 -0
  89. package/dist/esm/getOptionsFIlled.mjs +34 -0
  90. package/dist/esm/getOptionsFIlled.native.js +279 -0
  91. package/dist/esm/getOptionsFIlled.native.js.map +6 -0
  92. package/dist/esm/index.js +4 -2
  93. package/dist/esm/index.js.map +1 -1
  94. package/dist/esm/index.mjs +3 -2
  95. package/dist/esm/index.native.js +4 -2
  96. package/dist/esm/index.native.js.map +2 -2
  97. package/dist/esm/nativePlugin.js +1 -1
  98. package/dist/esm/nativePlugin.mjs +1 -1
  99. package/dist/esm/nativePlugin.native.js +1 -1
  100. package/dist/esm/utils/getBaseViteConfig.js +24 -0
  101. package/dist/esm/utils/getBaseViteConfig.js.map +6 -0
  102. package/dist/esm/utils/getBaseViteConfig.mjs +23 -0
  103. package/dist/esm/utils/getBaseViteConfig.native.js +25 -0
  104. package/dist/esm/utils/getBaseViteConfig.native.js.map +6 -0
  105. package/dist/esm/utils/getOptionsFilled.js +30 -0
  106. package/dist/esm/utils/getOptionsFilled.js.map +6 -0
  107. package/dist/esm/utils/getOptionsFilled.mjs +34 -0
  108. package/dist/esm/utils/getOptionsFilled.native.js +279 -0
  109. package/dist/esm/utils/getOptionsFilled.native.js.map +6 -0
  110. package/dist/esm/utils/getVitePath.js +27 -0
  111. package/dist/esm/utils/getVitePath.js.map +6 -0
  112. package/dist/esm/utils/getVitePath.mjs +20 -0
  113. package/dist/esm/utils/getVitePath.native.js +171 -0
  114. package/dist/esm/utils/getVitePath.native.js.map +6 -0
  115. package/package.json +6 -6
  116. package/src/build.ts +96 -0
  117. package/src/commands/cli-build.ts +25 -0
  118. package/src/commands/cli-dev.ts +2 -2
  119. package/src/commands/index.ts +2 -1
  120. package/src/{create.ts → createDevServer.ts} +122 -180
  121. package/src/index.ts +2 -1
  122. package/src/nativePlugin.ts +1 -1
  123. package/src/types.ts +2 -1
  124. package/src/utils/getBaseViteConfig.ts +22 -0
  125. package/src/utils/getOptionsFilled.ts +43 -0
  126. package/src/{getVitePath.ts → utils/getVitePath.ts} +17 -17
  127. package/types/VXRNConfigFilled.d.ts +21 -0
  128. package/types/build.d.ts +4 -0
  129. package/types/commands/cli-build.d.ts +3 -0
  130. package/types/commands/index.d.ts +1 -0
  131. package/types/create.d.ts +2 -1
  132. package/types/createDevServer.d.ts +13 -0
  133. package/types/getBaseViteConfig.d.ts +5 -0
  134. package/types/getOptionsFIlled.d.ts +21 -0
  135. package/types/index.d.ts +2 -1
  136. package/types/types.d.ts +2 -1
  137. package/types/utils/getBaseViteConfig.d.ts +5 -0
  138. package/types/utils/getOptionsFilled.d.ts +22 -0
  139. package/types/utils/getVitePath.d.ts +2 -0
@@ -0,0 +1,613 @@
1
+ import wsAdapter from "crossws/adapters/node";
2
+ import findNodeModules from "find-node-modules";
3
+ import {
4
+ createApp,
5
+ createRouter,
6
+ defineEventHandler,
7
+ defineWebSocketHandler,
8
+ eventHandler,
9
+ getQuery,
10
+ toNodeListener
11
+ } from "h3";
12
+ import { createProxyEventHandler } from "h3-proxy";
13
+ import { readFile } from "node:fs/promises";
14
+ import { createServer as nodeCreateServer } from "node:http";
15
+ import { dirname, join, relative, resolve } from "node:path";
16
+ import readline from "node:readline";
17
+ import { WebSocket } from "ws";
18
+ import * as babel from "@babel/core";
19
+ import { buildReact, buildReactJSX, buildReactNative } from "@vxrn/react-native-prebuilt";
20
+ import viteReactPlugin, { swcTransform, transformForBuild } from "@vxrn/vite-native-swc";
21
+ import { parse } from "es-module-lexer";
22
+ import FSExtra from "fs-extra";
23
+ import {
24
+ build,
25
+ createServer,
26
+ mergeConfig,
27
+ resolveConfig,
28
+ transformWithEsbuild
29
+ } from "vite";
30
+ import createViteFlow from "@vxrn/vite-flow";
31
+ import { resolve as importMetaResolve } from "import-meta-resolve";
32
+ import { clientInjectionsPlugin } from "./dev/clientInjectPlugin";
33
+ import { nativePlugin } from "./nativePlugin";
34
+ import { getBaseViteConfig } from "./utils/getBaseViteConfig";
35
+ import { getOptionsFilled } from "./utils/getOptionsFilled";
36
+ import { getVitePath } from "./utils/getVitePath";
37
+ const resolveFile = (path) => {
38
+ try {
39
+ return importMetaResolve(path, import.meta.url).replace("file://", "");
40
+ } catch {
41
+ return require.resolve(path);
42
+ }
43
+ }, nativeExtensions = [
44
+ ".native.tsx",
45
+ ".native.jsx",
46
+ ".native.js",
47
+ ".tsx",
48
+ ".ts",
49
+ ".js",
50
+ ".css",
51
+ ".json"
52
+ ], extensions = [
53
+ ".web.tsx",
54
+ ".tsx",
55
+ ".web.ts",
56
+ ".ts",
57
+ ".web.jsx",
58
+ ".jsx",
59
+ ".web.js",
60
+ ".js",
61
+ ".css",
62
+ ".json"
63
+ ], { ensureDir, pathExists, pathExistsSync } = FSExtra, patches = [
64
+ {
65
+ module: "react-native-screens",
66
+ patchFile: "react-native-screens+3.22.1.patch"
67
+ }
68
+ ];
69
+ async function checkPatches(options) {
70
+ if (options.state.applyPatches === !1)
71
+ return;
72
+ const nodeModulesDirs = findNodeModules({
73
+ cwd: options.root
74
+ }).map((relativePath) => join(options.root, relativePath)), patchesToCopy = /* @__PURE__ */ new Set();
75
+ await Promise.all(
76
+ patches.flatMap((patch) => nodeModulesDirs.flatMap(async (dir) => {
77
+ await FSExtra.pathExists(join(dir, patch.module)) && patchesToCopy.add(patch);
78
+ }))
79
+ );
80
+ let didCopy = !1;
81
+ for (const patch of [...patchesToCopy]) {
82
+ const dest = join(options.userPatchesDir, patch.patchFile);
83
+ if (!await pathExists(dest)) {
84
+ didCopy = !0, console.info(`Copying patch ${patch.module}`);
85
+ const src = join(options.internalPatchesDir, patch.patchFile);
86
+ await FSExtra.copy(src, dest);
87
+ }
88
+ }
89
+ didCopy && (console.info(
90
+ `
91
+ Please restart after applying the patch by running "npx patch-package".
92
+ Ideally add it to your devDependencies and as a postinstall script.
93
+ `
94
+ ), process.exit(0));
95
+ }
96
+ const createDevServer = async (optionsIn) => {
97
+ const options = await getOptionsFilled(optionsIn), { host, port, root, cacheDir } = options;
98
+ bindKeypressInput();
99
+ let entryRoot = "";
100
+ checkPatches(options).catch((err) => {
101
+ console.error(`
102
+ \u{1F97A} couldn't patch`, err);
103
+ }), await ensureDir(cacheDir);
104
+ const prebuilds = {
105
+ reactJSX: join(cacheDir, "react-jsx-runtime.js"),
106
+ react: join(cacheDir, "react.js"),
107
+ reactNative: join(cacheDir, "react-native.js")
108
+ };
109
+ await pathExists(prebuilds.reactNative) || (console.info("Pre-building react, react-native react/jsx-runtime (one time cost)..."), await Promise.all([
110
+ buildReactNative({
111
+ entryPoints: [resolveFile("react-native")],
112
+ outfile: prebuilds.reactNative
113
+ }),
114
+ buildReact({
115
+ entryPoints: [resolveFile("react")],
116
+ outfile: prebuilds.react
117
+ }),
118
+ buildReactJSX({
119
+ entryPoints: [resolveFile("react/jsx-dev-runtime")],
120
+ outfile: prebuilds.reactJSX
121
+ })
122
+ ]));
123
+ const viteFlow = options.flow ? createViteFlow(options.flow) : null, templateFile = resolveFile("vxrn/react-native-template.js"), hotUpdatedCJSFiles = /* @__PURE__ */ new Map(), jsxRuntime = {
124
+ // alias: 'virtual:react-jsx',
125
+ alias: prebuilds.reactJSX,
126
+ contents: await readFile(prebuilds.reactJSX, "utf-8")
127
+ }, virtualModules = {
128
+ "react-native": {
129
+ // alias: 'virtual:react-native',
130
+ alias: prebuilds.reactNative,
131
+ contents: await readFile(prebuilds.reactNative, "utf-8")
132
+ },
133
+ react: {
134
+ // alias: 'virtual:react',
135
+ alias: prebuilds.react,
136
+ contents: await readFile(prebuilds.react, "utf-8")
137
+ },
138
+ "react/jsx-runtime": jsxRuntime,
139
+ "react/jsx-dev-runtime": jsxRuntime
140
+ }, swapRnPlugin = {
141
+ name: "swap-react-native",
142
+ enforce: "pre",
143
+ resolveId(id, importer = "") {
144
+ if (id.startsWith("react-native/Libraries"))
145
+ return `virtual:rn-internals:${id}`;
146
+ if (id === "react-native-web")
147
+ return prebuilds.reactNative;
148
+ for (const targetId in virtualModules)
149
+ if (id === targetId || id.includes(`node_modules/${targetId}/`))
150
+ return virtualModules[targetId].alias;
151
+ if (id[0] === ".") {
152
+ const absolutePath = resolve(dirname(importer), id), nativePath = absolutePath.replace(/(.m?js)/, ".native.js");
153
+ if (nativePath === id)
154
+ return;
155
+ try {
156
+ const directoryPath = absolutePath + "/index.native.js", directoryNonNativePath = absolutePath + "/index.js";
157
+ if (pathExistsSync(directoryPath))
158
+ return directoryPath;
159
+ if (pathExistsSync(directoryNonNativePath))
160
+ return directoryNonNativePath;
161
+ if (pathExistsSync(nativePath))
162
+ return nativePath;
163
+ } catch (err) {
164
+ console.warn("error probably fine", err);
165
+ }
166
+ }
167
+ },
168
+ load(id) {
169
+ if (id.startsWith("virtual:rn-internals"))
170
+ return `const ___val = __cachedModules["${id.replace("virtual:rn-internals:", "")}"]
171
+ const ___defaultVal = ___val ? ___val.default || ___val : ___val
172
+ export default ___defaultVal`;
173
+ for (const targetId in virtualModules) {
174
+ const info = virtualModules[targetId];
175
+ if (id === info.alias)
176
+ return info.contents;
177
+ }
178
+ }
179
+ }, depsToOptimize = ["react", "react-dom", "@react-native/normalize-color"], reactNativeHMRPlugin = {
180
+ name: "client-transform",
181
+ async handleHotUpdate({ read, modules, file }) {
182
+ try {
183
+ if (!isWithin(root, file))
184
+ return;
185
+ const [module] = modules;
186
+ if (!module)
187
+ return;
188
+ const id = module?.url || file.replace(root, ""), code = await read();
189
+ if (code.startsWith("'use strict';") || !code)
190
+ return;
191
+ let source = code;
192
+ source = (await transformForBuild(id, source))?.code || "";
193
+ const importsMap = {}, [imports] = parse(source);
194
+ let accumulatedSliceOffset = 0;
195
+ for (const specifier of imports) {
196
+ const { n: importName, s: start } = specifier;
197
+ if (importName) {
198
+ const id2 = await getVitePath(entryRoot, file, importName);
199
+ if (!id2) {
200
+ console.warn("???");
201
+ continue;
202
+ }
203
+ importsMap[id2] = id2.replace(/^(\.\.\/)+/, "");
204
+ const len = importName.length, extraLen = id2.length - len;
205
+ source = source.slice(0, start + accumulatedSliceOffset) + id2 + source.slice(start + accumulatedSliceOffset + len), accumulatedSliceOffset += extraLen;
206
+ }
207
+ }
208
+ if (source = (await swcTransform(id, source, {
209
+ mode: "serve-cjs"
210
+ }))?.code || "", !source)
211
+ throw "\u274C no source";
212
+ importsMap.currentPath = id;
213
+ const hotUpdateSource = `exports = ((exports) => {
214
+ const require = createRequire(${JSON.stringify(importsMap, null, 2)})
215
+ ${source.replace("import.meta.hot.accept(() => {})", "").replaceAll(/import.meta.glob\(.*\)/gi, "globalThis['__importMetaGlobbed'] || {}")};
216
+ return exports })({})`;
217
+ process.env.DEBUG && console.info("Sending hot update", hotUpdateSource), hotUpdatedCJSFiles.set(id, hotUpdateSource);
218
+ } catch (err) {
219
+ console.error("Error processing hmr update:", err);
220
+ }
221
+ }
222
+ };
223
+ let serverConfig = mergeConfig(
224
+ getBaseViteConfig({
225
+ mode: "development"
226
+ }),
227
+ {
228
+ root,
229
+ clearScreen: !1,
230
+ plugins: [reactNativeHMRPlugin],
231
+ optimizeDeps: {
232
+ include: depsToOptimize,
233
+ exclude: Object.values(virtualModules).map((v) => v.alias),
234
+ force: !0,
235
+ esbuildOptions: {
236
+ resolveExtensions: extensions
237
+ }
238
+ },
239
+ server: {
240
+ hmr: {
241
+ path: "/__vxrnhmr"
242
+ },
243
+ cors: !0,
244
+ host
245
+ }
246
+ }
247
+ );
248
+ options.webConfig && (serverConfig = mergeConfig(serverConfig, options.webConfig));
249
+ const resolvedConfig = await resolveConfig(serverConfig, "serve"), viteRNClientPlugin = clientInjectionsPlugin(resolvedConfig);
250
+ serverConfig = {
251
+ ...serverConfig,
252
+ plugins: [...serverConfig.plugins]
253
+ };
254
+ const viteServer = await createServer(serverConfig);
255
+ viteServer.watcher.addListener("change", async (path) => {
256
+ const id = path.replace(process.cwd(), "");
257
+ if (!(!id.endsWith("tsx") && !id.endsWith("jsx")))
258
+ try {
259
+ viteServer.transformRequest(id);
260
+ } catch (err) {
261
+ console.info("err", err);
262
+ }
263
+ });
264
+ let isBuilding = null;
265
+ await viteServer.listen();
266
+ const vitePort = viteServer.config.server.port;
267
+ console.info("vite running on", vitePort);
268
+ const router = createRouter(), app = createApp({
269
+ onError: (error) => {
270
+ console.error(error);
271
+ },
272
+ onRequest: (event) => {
273
+ console.info(" \u2192", event.path);
274
+ }
275
+ });
276
+ router.get(
277
+ "/file",
278
+ defineEventHandler((e) => {
279
+ const query = getQuery(e);
280
+ if (typeof query.file == "string") {
281
+ const source = hotUpdatedCJSFiles.get(query.file);
282
+ return new Response(source, {
283
+ headers: {
284
+ "content-type": "text/javascript"
285
+ }
286
+ });
287
+ }
288
+ })
289
+ ), router.get(
290
+ "/index.bundle",
291
+ defineEventHandler(async (e) => new Response(await getBundleCode(), {
292
+ headers: {
293
+ "content-type": "text/javascript"
294
+ }
295
+ }))
296
+ ), router.get(
297
+ "/status",
298
+ defineEventHandler(() => "packager-status:running")
299
+ ), app.use(router), app.use(
300
+ defineEventHandler(async ({ node: { req } }) => {
301
+ if (req.headers["user-agent"]?.match(/Expo|React/) && (req.url === "/" || req.url?.startsWith("/?platform=")))
302
+ return getIndexJsonResponse({ port, root });
303
+ })
304
+ );
305
+ const { handleUpgrade } = wsAdapter(app.websocket);
306
+ if (vitePort) {
307
+ const clients = /* @__PURE__ */ new Set(), socket = new WebSocket(`ws://localhost:${vitePort}/__vxrnhmr`, "vite-hmr");
308
+ console.info("connecting to vite..."), socket.on("open", () => {
309
+ console.info("...connected to vite!");
310
+ }), socket.on("message", (msg) => {
311
+ const message = msg.toString();
312
+ console.info(clients.size, "message", message);
313
+ for (const listener of [...clients])
314
+ listener.send(message);
315
+ }), socket.on("error", (err) => {
316
+ console.info("err", err);
317
+ }), app.use(
318
+ "/__vxrnhmr",
319
+ defineWebSocketHandler({
320
+ open(peer) {
321
+ console.debug("[hmr:web] open", peer), clients.add(peer);
322
+ },
323
+ message(peer, message) {
324
+ socket.send(message.rawData);
325
+ },
326
+ close(peer, event) {
327
+ console.info("[hmr:web] close", peer, event), clients.delete(peer);
328
+ },
329
+ error(peer, error) {
330
+ console.error("[hmr:web] error", peer, error);
331
+ }
332
+ })
333
+ );
334
+ }
335
+ app.use(
336
+ "/__hmr",
337
+ defineWebSocketHandler({
338
+ open(peer) {
339
+ console.debug("[hmr] open", peer);
340
+ },
341
+ message(peer, message) {
342
+ console.info("[hmr] message", peer, message), message.text().includes("ping") && peer.send("pong");
343
+ },
344
+ close(peer, event) {
345
+ console.info("[hmr] close", peer, event);
346
+ },
347
+ error(peer, error) {
348
+ console.error("[hmr] error", peer, error);
349
+ }
350
+ })
351
+ ), app.use(
352
+ "/__client",
353
+ defineWebSocketHandler({
354
+ open(peer) {
355
+ console.info("[client] open", peer);
356
+ },
357
+ message(peer, messageRaw) {
358
+ const message = JSON.parse(messageRaw.text());
359
+ switch (message.type) {
360
+ case "client-log": {
361
+ console.info(`\u{1FAB5} [${message.level}]`, ...message.data);
362
+ return;
363
+ }
364
+ default:
365
+ console.warn("[client] Unknown message type", message);
366
+ }
367
+ },
368
+ close(peer, event) {
369
+ console.info("[client] close", peer, event);
370
+ },
371
+ error(peer, error) {
372
+ console.error("[client] error", peer, error);
373
+ }
374
+ })
375
+ );
376
+ const proxyEventHandler = createProxyEventHandler({
377
+ target: `http://127.0.0.1:${vitePort}`,
378
+ enableLogger: !!process.env.DEBUG
379
+ });
380
+ app.use(eventHandler(proxyEventHandler));
381
+ const server = nodeCreateServer(toNodeListener(app));
382
+ return server.on("upgrade", handleUpgrade), {
383
+ nativeServer: server,
384
+ viteServer,
385
+ async start() {
386
+ return server.listen(port), console.info(`Server running on http://localhost:${port}`), {
387
+ closePromise: new Promise((res) => viteServer.httpServer?.on("close", res))
388
+ };
389
+ },
390
+ stop: async () => {
391
+ await Promise.all([server.close(), viteServer.close()]);
392
+ }
393
+ };
394
+ async function getBundleCode() {
395
+ if (process.env.LOAD_TMP_BUNDLE) {
396
+ const tmpBundle = join(process.cwd(), "bundle.tmp.js");
397
+ if (await pathExists(tmpBundle))
398
+ return console.info("\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F returning temp bundle \u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F", tmpBundle), await readFile(tmpBundle, "utf-8");
399
+ }
400
+ if (isBuilding)
401
+ return await isBuilding;
402
+ let done;
403
+ isBuilding = new Promise((res) => {
404
+ done = res;
405
+ });
406
+ async function babelReanimated(input, filename) {
407
+ return await new Promise((res, rej) => {
408
+ babel.transform(
409
+ input,
410
+ {
411
+ plugins: ["react-native-reanimated/plugin"],
412
+ filename
413
+ },
414
+ (err, result) => {
415
+ (!result || err) && rej(err || "no res"), res(result.code);
416
+ }
417
+ );
418
+ });
419
+ }
420
+ const buildInput = options.entryNative || "index.jsx";
421
+ let buildConfig = {
422
+ plugins: [
423
+ viteFlow,
424
+ swapRnPlugin,
425
+ {
426
+ name: "reanimated",
427
+ async transform(code, id) {
428
+ if (code.includes("worklet"))
429
+ return await babelReanimated(code, id);
430
+ }
431
+ },
432
+ viteRNClientPlugin,
433
+ nativePlugin({
434
+ root,
435
+ port,
436
+ mode: "build"
437
+ }),
438
+ viteReactPlugin({
439
+ tsDecorators: !0,
440
+ mode: "build"
441
+ }),
442
+ // viteInspectPlugin({
443
+ // build: true,
444
+ // outputDir: '.vite-inspect',
445
+ // }),
446
+ {
447
+ name: "treat-js-files-as-jsx",
448
+ async transform(code, id) {
449
+ return id.match(/expo-status-bar/) ? transformWithEsbuild(code, id, {
450
+ loader: "jsx",
451
+ jsx: "automatic"
452
+ }) : null;
453
+ }
454
+ }
455
+ ].filter(Boolean),
456
+ appType: "custom",
457
+ root,
458
+ clearScreen: !1,
459
+ optimizeDeps: {
460
+ include: depsToOptimize,
461
+ esbuildOptions: {
462
+ jsx: "automatic"
463
+ }
464
+ },
465
+ resolve: {
466
+ extensions: nativeExtensions
467
+ },
468
+ mode: "development",
469
+ define: {
470
+ "process.env.NODE_ENV": '"development"'
471
+ },
472
+ build: {
473
+ ssr: !1,
474
+ minify: !1,
475
+ commonjsOptions: {
476
+ transformMixedEsModules: !0
477
+ },
478
+ rollupOptions: {
479
+ treeshake: !1,
480
+ preserveEntrySignatures: "strict",
481
+ output: {
482
+ preserveModules: !0,
483
+ format: "cjs"
484
+ }
485
+ }
486
+ }
487
+ };
488
+ options.buildConfig && (buildConfig = mergeConfig(buildConfig, options.buildConfig)), await resolveConfig(buildConfig, "build");
489
+ const buildOutput = await build(buildConfig);
490
+ if (!("output" in buildOutput))
491
+ throw "\u274C";
492
+ let appCode = buildOutput.output.sort((a, b) => a.isEntry ? 1 : -1).map((outputModule) => {
493
+ if (outputModule.type == "chunk") {
494
+ const importsMap = {
495
+ currentPath: outputModule.fileName
496
+ };
497
+ for (const imp of outputModule.imports) {
498
+ const relativePath = relative(dirname(outputModule.fileName), imp);
499
+ importsMap[relativePath[0] === "." ? relativePath : "./" + relativePath] = imp;
500
+ }
501
+ return outputModule.isEntry && (entryRoot = dirname(outputModule.fileName)), `
502
+ ___modules___["${outputModule.fileName}"] = ((exports, module) => {
503
+ const require = createRequire(${JSON.stringify(importsMap, null, 2)})
504
+
505
+ ${outputModule.code}
506
+ })
507
+
508
+ ${outputModule.isEntry ? `
509
+ // run entry
510
+ const __require = createRequire({})
511
+ __require("react-native")
512
+ __require("${outputModule.fileName}")
513
+ ` : ""}
514
+ `;
515
+ }
516
+ }).join(`
517
+ `);
518
+ if (!appCode)
519
+ throw "\u274C";
520
+ appCode = appCode.replaceAll("undefined.accept(() => {})", "").replaceAll("undefined.accept(function() {});", "").replaceAll("(void 0).accept(() => {})", "").replaceAll("(void 0).accept(function() {});", "");
521
+ const appRootParent = join(root, "..", ".."), out = (await readFile(templateFile, "utf-8")).replace("_virtual/virtual_react-native.js", relative(appRootParent, prebuilds.reactNative)).replace("_virtual/virtual_react.js", relative(appRootParent, prebuilds.react)).replaceAll("_virtual/virtual_react-jsx.js", relative(appRootParent, prebuilds.reactJSX)) + appCode;
522
+ return done(out), isBuilding = null, out;
523
+ }
524
+ };
525
+ function getIndexJsonResponse({ port, root }) {
526
+ return {
527
+ name: "myapp",
528
+ slug: "myapp",
529
+ scheme: "myapp",
530
+ version: "1.0.0",
531
+ jsEngine: "jsc",
532
+ orientation: "portrait",
533
+ icon: "./assets/icon.png",
534
+ userInterfaceStyle: "light",
535
+ splash: {
536
+ image: "./assets/splash.png",
537
+ resizeMode: "contain",
538
+ backgroundColor: "#ffffff",
539
+ imageUrl: "http://127.0.0.1:8081/assets/./assets/splash.png"
540
+ },
541
+ updates: { fallbackToCacheTimeout: 0 },
542
+ assetBundlePatterns: ["**/*"],
543
+ ios: { supportsTablet: !0, bundleIdentifier: "com.natew.myapp" },
544
+ android: {
545
+ package: "com.tamagui.myapp",
546
+ adaptiveIcon: {
547
+ foregroundImage: "./assets/adaptive-icon.png",
548
+ backgroundColor: "#FFFFFF",
549
+ foregroundImageUrl: "http://127.0.0.1:8081/assets/./assets/adaptive-icon.png"
550
+ }
551
+ },
552
+ web: { favicon: "./assets/favicon.png" },
553
+ extra: { eas: { projectId: "061b4470-78c7-4d6a-b850-8167fb0a3434" } },
554
+ _internal: {
555
+ isDebug: !1,
556
+ projectRoot: root,
557
+ dynamicConfigPath: null,
558
+ staticConfigPath: join(root, "app.json"),
559
+ packageJsonPath: join(root, "package.json")
560
+ },
561
+ sdkVersion: "47.0.0",
562
+ platforms: ["ios", "android", "web"],
563
+ iconUrl: `http://127.0.0.1:${port}/assets/./assets/icon.png`,
564
+ debuggerHost: `127.0.0.1:${port}`,
565
+ logUrl: `http://127.0.0.1:${port}/logs`,
566
+ developer: { tool: "expo-cli", projectRoot: root },
567
+ packagerOpts: { dev: !0 },
568
+ mainModuleName: "index",
569
+ __flipperHack: "React Native packager is running",
570
+ hostUri: `127.0.0.1:${port}`,
571
+ bundleUrl: `http://127.0.0.1:${port}/index.bundle?platform=ios&dev=true&hot=false&lazy=true`,
572
+ id: "@anonymous/myapp-473c4543-3c36-4786-9db1-c66a62ac9b78"
573
+ };
574
+ }
575
+ function bindKeypressInput() {
576
+ if (!process.stdin.setRawMode) {
577
+ console.warn({
578
+ msg: "Interactive mode is not supported in this environment"
579
+ });
580
+ return;
581
+ }
582
+ readline.emitKeypressEvents(process.stdin), process.stdin.setRawMode(!0), process.stdin.on("keypress", (_key, data) => {
583
+ const { ctrl, name } = data;
584
+ if (ctrl === !0)
585
+ switch (name) {
586
+ case "c":
587
+ process.exit();
588
+ case "z":
589
+ process.emit("SIGTSTP", "SIGTSTP");
590
+ break;
591
+ }
592
+ else
593
+ switch (name) {
594
+ case "r":
595
+ break;
596
+ case "d":
597
+ break;
598
+ case "c":
599
+ process.stdout.write("\x1B[2J\x1B[0;0H");
600
+ break;
601
+ }
602
+ });
603
+ }
604
+ function isWithin(outer, inner) {
605
+ const rel = relative(outer, inner);
606
+ return !rel.startsWith("../") && rel !== "..";
607
+ }
608
+ export {
609
+ bindKeypressInput,
610
+ createDevServer,
611
+ resolveFile
612
+ };
613
+ //# sourceMappingURL=createDevServer.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createDevServer.ts"],
4
+ "mappings": "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",
5
+ "names": ["id"]
6
+ }