vxrn 0.1.20 → 0.1.21

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