vxrn 0.1.28 → 0.1.30

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