vxrn 1.15.10 → 1.16.0

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 (89) hide show
  1. package/dist/config/getAdditionalViteConfig.mjs +10 -1
  2. package/dist/config/getAdditionalViteConfig.mjs.map +1 -1
  3. package/dist/config/getAdditionalViteConfig.native.js +10 -1
  4. package/dist/config/getAdditionalViteConfig.native.js.map +1 -1
  5. package/dist/config/getBaseViteConfigOnly.mjs +1 -1
  6. package/dist/config/getBaseViteConfigOnly.mjs.map +1 -1
  7. package/dist/config/getBaseViteConfigOnly.native.js +1 -1
  8. package/dist/config/getBaseViteConfigOnly.native.js.map +1 -1
  9. package/dist/exports/build.mjs +11 -4
  10. package/dist/exports/build.mjs.map +1 -1
  11. package/dist/exports/build.native.js +17 -5
  12. package/dist/exports/build.native.js.map +1 -1
  13. package/dist/exports/loadEnv.test.mjs +65 -0
  14. package/dist/exports/loadEnv.test.mjs.map +1 -0
  15. package/dist/exports/loadEnv.test.native.js +65 -0
  16. package/dist/exports/loadEnv.test.native.js.map +1 -0
  17. package/dist/exports/prebuild.mjs +2 -1
  18. package/dist/exports/prebuild.mjs.map +1 -1
  19. package/dist/exports/prebuild.native.js +2 -1
  20. package/dist/exports/prebuild.native.js.map +1 -1
  21. package/dist/exports/prebuildWithoutExpo.mjs +2 -1
  22. package/dist/exports/prebuildWithoutExpo.mjs.map +1 -1
  23. package/dist/exports/prebuildWithoutExpo.native.js +2 -1
  24. package/dist/exports/prebuildWithoutExpo.native.js.map +1 -1
  25. package/dist/plugins/expoManifestRequestHandlerPlugin.mjs +2 -1
  26. package/dist/plugins/expoManifestRequestHandlerPlugin.mjs.map +1 -1
  27. package/dist/plugins/expoManifestRequestHandlerPlugin.native.js +2 -1
  28. package/dist/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -1
  29. package/dist/rn-commands/bundle/buildBundle.mjs +5 -1
  30. package/dist/rn-commands/bundle/buildBundle.mjs.map +1 -1
  31. package/dist/rn-commands/bundle/buildBundle.native.js +5 -1
  32. package/dist/rn-commands/bundle/buildBundle.native.js.map +1 -1
  33. package/dist/user-interface/index.mjs +13 -4
  34. package/dist/user-interface/index.mjs.map +1 -1
  35. package/dist/user-interface/index.native.js +13 -4
  36. package/dist/user-interface/index.native.js.map +1 -1
  37. package/dist/utils/bindKeypressInput.mjs +4 -4
  38. package/dist/utils/bindKeypressInput.mjs.map +1 -1
  39. package/dist/utils/bindKeypressInput.native.js +4 -4
  40. package/dist/utils/bindKeypressInput.native.js.map +1 -1
  41. package/dist/utils/bindKeypressInput.test.mjs +48 -0
  42. package/dist/utils/bindKeypressInput.test.mjs.map +1 -0
  43. package/dist/utils/bindKeypressInput.test.native.js +48 -0
  44. package/dist/utils/bindKeypressInput.test.native.js.map +1 -0
  45. package/dist/utils/createNativeDevEngine.mjs +3 -2
  46. package/dist/utils/createNativeDevEngine.mjs.map +1 -1
  47. package/dist/utils/createNativeDevEngine.native.js +3 -2
  48. package/dist/utils/createNativeDevEngine.native.js.map +1 -1
  49. package/dist/utils/expoRun.mjs +2 -1
  50. package/dist/utils/expoRun.mjs.map +1 -1
  51. package/dist/utils/expoRun.native.js +2 -1
  52. package/dist/utils/expoRun.native.js.map +1 -1
  53. package/dist/utils/isWithin.mjs +2 -2
  54. package/dist/utils/isWithin.mjs.map +1 -1
  55. package/dist/utils/isWithin.native.js +2 -2
  56. package/dist/utils/isWithin.native.js.map +1 -1
  57. package/package.json +12 -12
  58. package/src/config/getAdditionalViteConfig.ts +10 -1
  59. package/src/config/getBaseViteConfigOnly.ts +1 -4
  60. package/src/exports/build.ts +22 -4
  61. package/src/exports/loadEnv.test.ts +69 -0
  62. package/src/exports/prebuild.ts +3 -1
  63. package/src/exports/prebuildWithoutExpo.ts +2 -1
  64. package/src/plugins/expoManifestRequestHandlerPlugin.ts +3 -2
  65. package/src/rn-commands/bundle/buildBundle.ts +4 -0
  66. package/src/types.ts +14 -0
  67. package/src/user-interface/index.ts +15 -4
  68. package/src/utils/bindKeypressInput.test.ts +61 -0
  69. package/src/utils/bindKeypressInput.ts +5 -4
  70. package/src/utils/createNativeDevEngine.ts +4 -2
  71. package/src/utils/expoRun.ts +2 -1
  72. package/src/utils/isWithin.ts +2 -2
  73. package/types/config/getAdditionalViteConfig.d.ts.map +1 -1
  74. package/types/config/getBaseViteConfigOnly.d.ts.map +1 -1
  75. package/types/config/getOptionsFilled.d.ts.map +1 -1
  76. package/types/exports/build.d.ts.map +1 -1
  77. package/types/exports/loadEnv.test.d.ts +2 -0
  78. package/types/exports/loadEnv.test.d.ts.map +1 -0
  79. package/types/exports/prebuild.d.ts.map +1 -1
  80. package/types/exports/prebuildWithoutExpo.d.ts.map +1 -1
  81. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +1 -1
  82. package/types/rn-commands/bundle/buildBundle.d.ts.map +1 -1
  83. package/types/types.d.ts +13 -0
  84. package/types/types.d.ts.map +1 -1
  85. package/types/user-interface/index.d.ts.map +1 -1
  86. package/types/utils/bindKeypressInput.d.ts.map +1 -1
  87. package/types/utils/bindKeypressInput.test.d.ts +2 -0
  88. package/types/utils/bindKeypressInput.test.d.ts.map +1 -0
  89. package/types/utils/expoRun.d.ts.map +1 -1
@@ -1,5 +1,6 @@
1
1
  import module from 'node:module'
2
2
  import path from 'node:path'
3
+ import { pathToFileURL } from 'node:url'
3
4
  import FSExtra from 'fs-extra'
4
5
 
5
6
  /*
@@ -27,7 +28,7 @@ export const generateForPlatform = async (
27
28
  ),
28
29
  platform
29
30
  )
30
- const walk = (await import(importPath)).default.default
31
+ const walk = (await import(pathToFileURL(importPath).href)).default.default
31
32
  walk(src).forEach((absoluteSrc: string) => {
32
33
  const relativeFilePath = transformPath(path.relative(src, absoluteSrc))
33
34
  .replace(/HelloWorld/g, appName)
@@ -1,6 +1,7 @@
1
1
  import { join } from 'node:path'
2
2
  import module from 'node:module'
3
3
  import { TLSSocket } from 'node:tls'
4
+ import { pathToFileURL } from 'node:url'
4
5
 
5
6
  import type { Plugin } from 'vite'
6
7
  import colors from 'picocolors'
@@ -48,8 +49,8 @@ export function expoManifestRequestHandlerPlugin(
48
49
  '@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js',
49
50
  { paths: [projectRoot] }
50
51
  )
51
- ExpoGoManifestHandlerMiddleware = (await import(importPath)).default
52
- .ExpoGoManifestHandlerMiddleware
52
+ ExpoGoManifestHandlerMiddleware = (await import(pathToFileURL(importPath).href))
53
+ .default.ExpoGoManifestHandlerMiddleware
53
54
  } catch (e) {
54
55
  expoGoManifestHandlerMiddlewareImportError = e
55
56
  }
@@ -80,6 +80,10 @@ export async function buildBundle(
80
80
  root,
81
81
  platform,
82
82
  dev,
83
+ // pass through ONE_SERVER_URL so the native prelude can inject it into
84
+ // process.env. without this, getURL.native falls back to the dummy
85
+ // 'http://one-server.example.com' and runtime loader fetches fail in prod.
86
+ serverUrl: process.env.ONE_SERVER_URL,
83
87
  })
84
88
  const builtBundle = result.code
85
89
 
package/src/types.ts CHANGED
@@ -56,6 +56,20 @@ export type VXRNBuildOptions = {
56
56
  * Uses Vite mergeConfig to overwrite any build configuration during build
57
57
  */
58
58
  config?: InlineConfig
59
+
60
+ /**
61
+ * Unify the server-side build. Api routes and middlewares share the SSR
62
+ * server's config (same defines, plugins, externalization rules) instead of
63
+ * deriving from the web/client build. Also drops the blanket
64
+ * `ssr.noExternal: true` so rolldown can externalize what it cannot bundle.
65
+ *
66
+ * This is the direction One is moving — in the next major it becomes the
67
+ * default and api/middleware lose their separate config surfaces entirely.
68
+ * Opt in now to avoid surprise later.
69
+ *
70
+ * @default false
71
+ */
72
+ unified?: boolean
59
73
  }
60
74
 
61
75
  export type VXRNOptions = {
@@ -1,5 +1,6 @@
1
1
  import { exec } from 'node:child_process'
2
2
  import module from 'node:module'
3
+ import { pathToFileURL } from 'node:url'
3
4
  import type { ViteDevServer } from 'vite'
4
5
  import { filterViteServerResolvedUrls } from '../utils/filterViteServerResolvedUrls'
5
6
 
@@ -126,6 +127,10 @@ const COMMANDS = [
126
127
  ] satisfies Command[]
127
128
 
128
129
  export async function startUserInterface(context: Context) {
130
+ if (!supportsKeyboardCommands()) {
131
+ return
132
+ }
133
+
129
134
  printCommandsTable(context)
130
135
  startInterceptingKeyStrokes(context)
131
136
  }
@@ -159,10 +164,14 @@ function restoreTerminal() {
159
164
  process.stdout.write('\x1b[0m')
160
165
  }
161
166
 
167
+ function supportsKeyboardCommands() {
168
+ const { stdin } = process
169
+ return Boolean(stdin.isTTY && stdin.setRawMode)
170
+ }
171
+
162
172
  function startInterceptingKeyStrokes(context: Context) {
163
173
  const { stdin } = process
164
- if (!stdin.setRawMode) {
165
- console.warn('Using a non-interactive terminal, keyboard commands are disabled.')
174
+ if (!supportsKeyboardCommands()) {
166
175
  return
167
176
  }
168
177
  stdin.setRawMode(true)
@@ -313,7 +322,9 @@ async function openIos(ctx: Context) {
313
322
  paths: [projectRoot],
314
323
  }
315
324
  )
316
- const applePlatformManagerModule = await import(applePlatformManagerModuleImportPath)
325
+ const applePlatformManagerModule = await import(
326
+ pathToFileURL(applePlatformManagerModuleImportPath).href
327
+ )
317
328
  const PlatformManager = applePlatformManagerModule.default.ApplePlatformManager
318
329
 
319
330
  // TODO: Support dev client
@@ -347,7 +358,7 @@ async function openAndroid(ctx: Context) {
347
358
  }
348
359
  )
349
360
  const androidPlatformManagerModule = await import(
350
- androidPlatformManagerModuleImportPath
361
+ pathToFileURL(androidPlatformManagerModuleImportPath).href
351
362
  )
352
363
  const PlatformManager = androidPlatformManagerModule.default.AndroidPlatformManager
353
364
 
@@ -0,0 +1,61 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest'
2
+ import { startUserInterface } from '../user-interface/index'
3
+ import { bindKeypressInput } from './bindKeypressInput'
4
+
5
+ type StartUserInterfaceContext = Parameters<typeof startUserInterface>[0]
6
+
7
+ const originalIsTTY = Object.getOwnPropertyDescriptor(process.stdin, 'isTTY')
8
+ const originalSetRawMode = Object.getOwnPropertyDescriptor(process.stdin, 'setRawMode')
9
+
10
+ function restoreStdinProperty(
11
+ property: 'isTTY' | 'setRawMode',
12
+ descriptor?: PropertyDescriptor
13
+ ) {
14
+ if (descriptor) {
15
+ Object.defineProperty(process.stdin, property, descriptor)
16
+ return
17
+ }
18
+
19
+ Reflect.deleteProperty(process.stdin, property)
20
+ }
21
+
22
+ function stubNonInteractiveStdin() {
23
+ Object.defineProperty(process.stdin, 'isTTY', {
24
+ configurable: true,
25
+ value: false,
26
+ })
27
+ Object.defineProperty(process.stdin, 'setRawMode', {
28
+ configurable: true,
29
+ value: undefined,
30
+ })
31
+ }
32
+
33
+ afterEach(() => {
34
+ restoreStdinProperty('isTTY', originalIsTTY)
35
+ restoreStdinProperty('setRawMode', originalSetRawMode)
36
+ vi.restoreAllMocks()
37
+ })
38
+
39
+ describe('bindKeypressInput', () => {
40
+ it('does not warn when stdin is not interactive', () => {
41
+ const warn = vi.spyOn(console, 'warn').mockImplementation(() => {})
42
+ stubNonInteractiveStdin()
43
+
44
+ bindKeypressInput()
45
+
46
+ expect(warn).not.toHaveBeenCalled()
47
+ })
48
+ })
49
+
50
+ describe('startUserInterface', () => {
51
+ it('does not print keyboard commands when stdin is not interactive', async () => {
52
+ const info = vi.spyOn(console, 'info').mockImplementation(() => {})
53
+ const warn = vi.spyOn(console, 'warn').mockImplementation(() => {})
54
+ stubNonInteractiveStdin()
55
+
56
+ await startUserInterface({ server: {} } as StartUserInterfaceContext)
57
+
58
+ expect(info).not.toHaveBeenCalled()
59
+ expect(warn).not.toHaveBeenCalled()
60
+ })
61
+ })
@@ -9,11 +9,12 @@ function restoreTerminal() {
9
9
  process.stdout.write('\x1b[0m')
10
10
  }
11
11
 
12
+ function supportsKeypressInput() {
13
+ return Boolean(process.stdin.isTTY && process.stdin.setRawMode)
14
+ }
15
+
12
16
  export function bindKeypressInput() {
13
- if (!process.stdin.setRawMode) {
14
- console.warn({
15
- msg: 'Interactive mode is not supported in this environment',
16
- })
17
+ if (!supportsKeypressInput()) {
17
18
  return
18
19
  }
19
20
 
@@ -616,7 +616,8 @@ var _routes = import.meta.glob(${JSON.stringify(routeGlobs)}, { exhaustive: true
616
616
  // fix route keys: One expects '/${routerRoot}/...' prefix but import.meta.glob returns './${routerRoot}/...'
617
617
  var routes = {};
618
618
  Object.keys(_routes).forEach(function(key) {
619
- routes[key.replace(/^\\./, '')] = _routes[key];
619
+ var normalizedKey = key.replace(/^\\.\\//, '');
620
+ routes['/' + normalizedKey] = _routes[key];
620
621
  });
621
622
 
622
623
  createApp({
@@ -878,7 +879,8 @@ function assetPlugin(opts: { root: string; platform: string }): Plugin {
878
879
  const name = basename(id, `.${ext}`)
879
880
  const dir = dirname(id)
880
881
  const relativePath = relative(opts.root, id)
881
- const httpLocation = '/assets/' + dirname(relativePath)
882
+ // On Windows, change backslashes to slashes to get proper URL path from file path.
883
+ const httpLocation = '/assets/' + dirname(relativePath).replace(/\\/g, '/')
882
884
 
883
885
  // simple asset registration (TODO: scale detection like rollipop)
884
886
  const assetData = {
@@ -1,4 +1,5 @@
1
1
  import module from 'node:module'
2
+ import { pathToFileURL } from 'node:url'
2
3
  import { fillOptions } from '../config/getOptionsFilled'
3
4
  import { applyBuiltInPatches } from '../utils/patches'
4
5
 
@@ -23,7 +24,7 @@ export async function expoRun({
23
24
  const importPath = require.resolve(`@expo/cli/build/src/run/${platform}/index.js`, {
24
25
  paths: [root],
25
26
  })
26
- const expoRun = (await import(importPath)).default[
27
+ const expoRun = (await import(pathToFileURL(importPath).href)).default[
27
28
  `expoRun${platform.charAt(0).toUpperCase() + platform.slice(1)}`
28
29
  ]
29
30
  await expoRun([
@@ -1,6 +1,6 @@
1
- import { relative } from 'node:path'
1
+ import { isAbsolute, relative } from 'node:path'
2
2
 
3
3
  export function isWithin(outer: string, inner: string) {
4
4
  const rel = relative(outer, inner)
5
- return !rel.startsWith('../') && rel !== '..'
5
+ return !rel.startsWith('..') && !isAbsolute(rel)
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getAdditionalViteConfig.d.ts","sourceRoot":"","sources":["../../src/config/getAdditionalViteConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,MAAM,CAAA;AAMpD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAwCvE"}
1
+ {"version":3,"file":"getAdditionalViteConfig.d.ts","sourceRoot":"","sources":["../../src/config/getAdditionalViteConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,MAAM,CAAA;AAMpD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAiDvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"getBaseViteConfigOnly.d.ts","sourceRoot":"","sources":["../../src/config/getBaseViteConfigOnly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAIxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAI3D,eAAO,MAAM,MAAM,UAqBlB,CAAA;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAqGxC"}
1
+ {"version":3,"file":"getBaseViteConfigOnly.d.ts","sourceRoot":"","sources":["../../src/config/getBaseViteConfigOnly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAIxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAI3D,eAAO,MAAM,MAAM,UAqBlB,CAAA;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAkGxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getOptionsFilled.d.ts","sourceRoot":"","sources":["../../src/config/getOptionsFilled.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAOjD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;AAIvE,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,EAAE,IAAY,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,IAAI,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;;;;;;;cAJP,CAAC;eAMF,CAAA;;;;GAiE/B;AAED,wBAAgB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;cAzEC,CAAC;eAMF,CAAA;;;;SAqE/B"}
1
+ {"version":3,"file":"getOptionsFilled.d.ts","sourceRoot":"","sources":["../../src/config/getOptionsFilled.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAOjD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;AAIvE,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,EAAE,IAAY,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,IAAI,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;;;;;;;cAelC,CAAN;eAME,CADF;;;;GA+CC;AAED,wBAAgB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;cAtD1B,CAAN;eAME,CADF;;;;SAmDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/exports/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAA;AAaxE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAuBtD,eAAO,MAAM,KAAK,GAAU,WAAW,WAAW,EAAE,YAAW,SAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+BpC,CAAC;mBAGhC,CAAC;;;;;;;;;;;;EA8SV,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/exports/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAA;AAaxE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAuBtD,eAAO,MAAM,KAAK,GAAU,WAAW,WAAW,EAAE,YAAW,SAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiDrE,CAAN;mBAKsE,CAAC;;;;;;;;;;;;EA4SxE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loadEnv.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadEnv.test.d.ts","sourceRoot":"","sources":["../../src/exports/loadEnv.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"prebuild.d.ts","sourceRoot":"","sources":["../../src/exports/prebuild.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,QAAQ,GAAU,oDAK5B;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;IACrC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,EAAE,OAAO,CAAA;CACd,kBA8MA,CAAA;AA2DD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,iBAOpB"}
1
+ {"version":3,"file":"prebuild.d.ts","sourceRoot":"","sources":["../../src/exports/prebuild.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,QAAQ,GAAU,oDAK5B;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;IACrC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,EAAE,OAAO,CAAA;CACd,kBA+MA,CAAA;AA2DD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,iBAOpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"prebuildWithoutExpo.d.ts","sourceRoot":"","sources":["../../src/exports/prebuildWithoutExpo.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,mBAAmB,GAC9B,MAAM,MAAM,EACZ,UAAU,KAAK,GAAG,SAAS,EAC3B,WAAW,GAAG,kBAwDf,CAAA"}
1
+ {"version":3,"file":"prebuildWithoutExpo.d.ts","sourceRoot":"","sources":["../../src/exports/prebuildWithoutExpo.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,mBAAmB,GAC9B,MAAM,MAAM,EACZ,UAAU,KAAK,GAAG,SAAS,EAC3B,WAAW,GAAG,kBAwDf,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"expoManifestRequestHandlerPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/expoManifestRequestHandlerPlugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAIlC,KAAK,sCAAsC,GAAG,EAI7C,CAAA;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,sCAAsC,GAC9C,MAAM,CAsLR"}
1
+ {"version":3,"file":"expoManifestRequestHandlerPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/expoManifestRequestHandlerPlugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAIlC,KAAK,sCAAsC,GAAG,EAI7C,CAAA;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,sCAAsC,GAC9C,MAAM,CAsLR"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildBundle.d.ts","sourceRoot":"","sources":["../../../src/rn-commands/bundle/buildBundle.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,GAAG,EAAE,OAAO,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wBAAwB,EAAE,OAAO,CAAA;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,wBAAwB,EAAE,MAAM,CAAA;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAC/B,CAAA;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,iBAAiB,EACvB,UAAU,GAAE,GAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAkEf"}
1
+ {"version":3,"file":"buildBundle.d.ts","sourceRoot":"","sources":["../../../src/rn-commands/bundle/buildBundle.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,GAAG,EAAE,OAAO,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wBAAwB,EAAE,OAAO,CAAA;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,wBAAwB,EAAE,MAAM,CAAA;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAC/B,CAAA;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,iBAAiB,EACvB,UAAU,GAAE,GAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAsEf"}
package/types/types.d.ts CHANGED
@@ -45,6 +45,19 @@ export type VXRNBuildOptions = {
45
45
  * Uses Vite mergeConfig to overwrite any build configuration during build
46
46
  */
47
47
  config?: InlineConfig;
48
+ /**
49
+ * Unify the server-side build. Api routes and middlewares share the SSR
50
+ * server's config (same defines, plugins, externalization rules) instead of
51
+ * deriving from the web/client build. Also drops the blanket
52
+ * `ssr.noExternal: true` so rolldown can externalize what it cannot bundle.
53
+ *
54
+ * This is the direction One is moving — in the next major it becomes the
55
+ * default and api/middleware lose their separate config surfaces entirely.
56
+ * Opt in now to avoid surprise later.
57
+ *
58
+ * @default false
59
+ */
60
+ unified?: boolean;
48
61
  };
49
62
  export type VXRNOptions = {
50
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user-interface/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAGzC,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,aAAa,CAAA;CACtB,CAAA;AAwHD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO,iBAGxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user-interface/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAGzC,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,aAAa,CAAA;CACtB,CAAA;AAwHD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO,iBAOxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"bindKeypressInput.d.ts","sourceRoot":"","sources":["../../src/utils/bindKeypressInput.ts"],"names":[],"mappings":"AAWA,wBAAgB,iBAAiB,SAyDhC"}
1
+ {"version":3,"file":"bindKeypressInput.d.ts","sourceRoot":"","sources":["../../src/utils/bindKeypressInput.ts"],"names":[],"mappings":"AAeA,wBAAgB,iBAAiB,SAsDhC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bindKeypressInput.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindKeypressInput.test.d.ts","sourceRoot":"","sources":["../../src/utils/bindKeypressInput.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"expoRun.d.ts","sourceRoot":"","sources":["../../src/utils/expoRun.ts"],"names":[],"mappings":"AAIA,wBAAsB,OAAO,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,IAAI,GACL,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,iBA4BA"}
1
+ {"version":3,"file":"expoRun.d.ts","sourceRoot":"","sources":["../../src/utils/expoRun.ts"],"names":[],"mappings":"AAKA,wBAAsB,OAAO,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,IAAI,GACL,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,iBA4BA"}