@vxrn/vite-plugin-metro 2.0.0-beta.51.1 → 2.0.0-beta.53.1

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/env/platformEnv.cjs +2 -0
  2. package/dist/cjs/env/platformEnv.native.cjs +2 -0
  3. package/dist/cjs/env/platformEnv.native.js +2 -0
  4. package/dist/cjs/env/platformEnv.native.js.map +1 -1
  5. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.cjs +10 -15
  6. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.cjs +27 -48
  7. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js +27 -48
  8. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
  9. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +25 -2
  10. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +26 -2
  11. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +26 -2
  12. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  13. package/dist/cjs/transformer/metroNativeWorker.cjs +12 -9
  14. package/dist/cjs/transformer/metroNativeWorker.native.cjs +16 -10
  15. package/dist/cjs/transformer/metroNativeWorker.native.js +16 -10
  16. package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
  17. package/dist/esm/env/platformEnv.mjs +2 -0
  18. package/dist/esm/env/platformEnv.mjs.map +1 -1
  19. package/dist/esm/env/platformEnv.native.js +2 -0
  20. package/dist/esm/env/platformEnv.native.js.map +1 -1
  21. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs +11 -15
  22. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs.map +1 -1
  23. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js +28 -48
  24. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
  25. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +25 -2
  26. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
  27. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +26 -2
  28. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  29. package/dist/esm/transformer/metroNativeWorker.mjs +12 -9
  30. package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
  31. package/dist/esm/transformer/metroNativeWorker.native.js +16 -10
  32. package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
  33. package/package.json +4 -4
  34. package/src/babel-plugins/import-meta-env-plugin.ts +1 -1
  35. package/src/env/platformEnv.test.ts +12 -2
  36. package/src/env/platformEnv.ts +3 -0
  37. package/src/metro-config/getMetroBabelConfigFromViteConfig.test.ts +19 -25
  38. package/src/metro-config/getMetroBabelConfigFromViteConfig.ts +8 -27
  39. package/src/metro-config/getMetroConfigFromViteConfig.test.ts +55 -0
  40. package/src/metro-config/getMetroConfigFromViteConfig.ts +40 -2
  41. package/src/transformer/metroNativeWorker.test.ts +29 -16
  42. package/src/transformer/metroNativeWorker.ts +31 -18
  43. package/types/babel-plugins/import-meta-env-plugin.d.ts +1 -1
  44. package/types/env/platformEnv.d.ts +1 -0
  45. package/types/env/platformEnv.d.ts.map +1 -1
  46. package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts +1 -1
  47. package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts.map +1 -1
  48. package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
  49. package/types/transformer/metroNativeWorker.d.ts +3 -5
  50. package/types/transformer/metroNativeWorker.d.ts.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vxrn/vite-plugin-metro",
3
- "version": "2.0.0-beta.51.1",
3
+ "version": "2.0.0-beta.53.1",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "main": "dist/cjs",
@@ -74,9 +74,9 @@
74
74
  "@jridgewell/remapping": "^2.3.0",
75
75
  "@jridgewell/trace-mapping": "^0.3.25",
76
76
  "@oxc-project/runtime": "^0.112.0",
77
- "@vxrn/compiler": "2.0.0-beta.51.1",
78
- "@vxrn/debug": "2.0.0-beta.51.1",
79
- "@vxrn/utils": "2.0.0-beta.51.1",
77
+ "@vxrn/compiler": "2.0.0-beta.53.1",
78
+ "@vxrn/debug": "2.0.0-beta.53.1",
79
+ "@vxrn/utils": "2.0.0-beta.53.1",
80
80
  "babel-preset-expo": "58.0.0-canary-20260909-ea7a89a",
81
81
  "esbuild": "^0.25.12",
82
82
  "launch-editor": "^2.10.0",
@@ -9,7 +9,7 @@ type PluginOptions = {
9
9
  /**
10
10
  * Babel plugin to replace `import.meta.env.*` and `process.env.*` with env values.
11
11
  *
12
- * Platform-specific env vars (VITE_ENVIRONMENT, VITE_NATIVE, ONE_PLATFORM, TAMAGUI_ENVIRONMENT)
12
+ * Platform-specific env vars (VITE_ENVIRONMENT, VITE_NATIVE, ONE_PLATFORM, EXPO_OS, TAMAGUI_ENVIRONMENT)
13
13
  * are automatically injected based on the babel caller's platform.
14
14
  *
15
15
  * This plugin is referenced by name since Metro runs transformers in separate workers:
@@ -13,8 +13,18 @@ describe('one platform env contract', () => {
13
13
  expect(getPlatformEnv('ssr').ONE_PLATFORM).toBe('web')
14
14
  })
15
15
 
16
- it('never defines EXPO_OS', () => {
17
- for (const environment of ['client', 'ssr', 'ios', 'android'] as const) {
16
+ it('defines the Expo platform alias only on native', () => {
17
+ for (const environment of ['ios', 'android'] as const) {
18
+ expect(getPlatformEnv(environment).EXPO_OS).toBe(
19
+ getPlatformEnv(environment).ONE_PLATFORM
20
+ )
21
+ const define = getPlatformEnvDefine(environment)
22
+ expect(define['process.env.EXPO_OS']).toBe(define['process.env.ONE_PLATFORM'])
23
+ expect(define['import.meta.env.EXPO_OS']).toBe(
24
+ define['import.meta.env.ONE_PLATFORM']
25
+ )
26
+ }
27
+ for (const environment of ['client', 'ssr'] as const) {
18
28
  expect(getPlatformEnv(environment)).not.toHaveProperty('EXPO_OS')
19
29
  const define = getPlatformEnvDefine(environment)
20
30
  expect(define).not.toHaveProperty('process.env.EXPO_OS')
@@ -5,6 +5,7 @@ export type PlatformEnv = {
5
5
  VITE_ENVIRONMENT: ViteEnvironment
6
6
  VITE_NATIVE: '' | '1'
7
7
  ONE_PLATFORM: 'web' | 'ios' | 'android'
8
+ EXPO_OS?: 'ios' | 'android'
8
9
  TAMAGUI_TARGET: 'web' | 'native'
9
10
  TAMAGUI_ENVIRONMENT: ViteEnvironment
10
11
  }
@@ -28,6 +29,7 @@ const platformEnvMap: Record<ViteEnvironment, PlatformEnv> = {
28
29
  VITE_ENVIRONMENT: 'ios',
29
30
  VITE_NATIVE: '1',
30
31
  ONE_PLATFORM: 'ios',
32
+ EXPO_OS: 'ios',
31
33
  TAMAGUI_TARGET: 'native',
32
34
  TAMAGUI_ENVIRONMENT: 'ios',
33
35
  },
@@ -35,6 +37,7 @@ const platformEnvMap: Record<ViteEnvironment, PlatformEnv> = {
35
37
  VITE_ENVIRONMENT: 'android',
36
38
  VITE_NATIVE: '1',
37
39
  ONE_PLATFORM: 'android',
40
+ EXPO_OS: 'android',
38
41
  TAMAGUI_TARGET: 'native',
39
42
  TAMAGUI_ENVIRONMENT: 'android',
40
43
  },
@@ -18,41 +18,35 @@ function pluginEnv(config: any): Record<string, any> {
18
18
  }
19
19
 
20
20
  describe('metro babel env contract', () => {
21
- it('picks up ONE_PUBLIC_ keys by default and never copies expo keys', () => {
22
- process.env.ONE_PUBLIC_API = 'https://api.test'
23
- try {
24
- const env = pluginEnv(
25
- viteConfig({ env: { ONE_PUBLIC_API: 'https://api.test' } })
26
- )
27
- expect(env.ONE_PUBLIC_API).toBe('https://api.test')
28
- expect(env).not.toHaveProperty('EXPO_OS')
29
- } finally {
30
- delete process.env.ONE_PUBLIC_API
31
- }
21
+ it('picks up ONE_PUBLIC_ keys by default with Expo aliases', () => {
22
+ const env = pluginEnv(viteConfig({ env: { ONE_PUBLIC_API: 'https://api.test' } }))
23
+ expect(env.ONE_PUBLIC_API).toBe('https://api.test')
24
+ expect(env.EXPO_PUBLIC_API).toBe('https://api.test')
32
25
  })
33
26
 
34
27
  it('harvests ONE_PLATFORM from defines for parity with rolldown', () => {
35
- const env = pluginEnv(
36
- viteConfig({ define: { 'process.env.ONE_PLATFORM': '"ios"' } })
37
- )
28
+ const env = pluginEnv(viteConfig({ define: { 'process.env.ONE_PLATFORM': '"ios"' } }))
38
29
  expect(env.ONE_PLATFORM).toBe('ios')
39
30
  })
40
31
 
41
- it('rejects an expo env prefix instead of copying it', () => {
42
- expect(() =>
43
- pluginEnv(viteConfig({ envPrefix: ['VITE_', 'EXPO_PUBLIC_'] }))
44
- ).toThrow(/rename it to ONE_PUBLIC_\*/)
32
+ it('accepts an Expo env prefix', () => {
33
+ expect(pluginEnv(viteConfig({ envPrefix: ['VITE_', 'EXPO_PUBLIC_'] }))).toMatchObject(
34
+ { MODE: 'development' }
35
+ )
45
36
  })
46
37
 
47
- it('rejects expo keys hiding in the loaded env', () => {
48
- expect(() =>
38
+ it('accepts Expo keys without creating One names', () => {
39
+ expect(pluginEnv(viteConfig({ env: { EXPO_PUBLIC_API: 'x' } }))).toMatchObject({
40
+ EXPO_PUBLIC_API: 'x',
41
+ })
42
+ expect(
49
43
  pluginEnv(viteConfig({ env: { EXPO_PUBLIC_API: 'x' } }))
50
- ).toThrow(/rename it to ONE_PUBLIC_\*/)
44
+ ).not.toHaveProperty('ONE_PUBLIC_API')
51
45
  })
52
46
 
53
- it('rejects expo keys hiding in defines', () => {
54
- expect(() =>
55
- pluginEnv(viteConfig({ define: { 'process.env.EXPO_OS': '"ios"' } }))
56
- ).toThrow(/ONE_PUBLIC_\* or ONE_PLATFORM/)
47
+ it('accepts Expo platform defines for the platform plugin to override', () => {
48
+ expect(
49
+ pluginEnv(viteConfig({ define: { 'process.env.EXPO_OS': '"ios"' } })).EXPO_OS
50
+ ).toBe('ios')
57
51
  })
58
52
  })
@@ -1,10 +1,11 @@
1
1
  import type { ResolvedConfig } from 'vite'
2
2
  import type { TransformOptions } from '@babel/core'
3
+ import { withExpoPublicEnvAliases } from '@vxrn/utils/publicEnv'
3
4
 
4
5
  /**
5
6
  * Creates babel config for Metro transforms from Vite config.
6
7
  *
7
- * Platform-specific env vars (VITE_ENVIRONMENT, VITE_NATIVE, ONE_PLATFORM, TAMAGUI_ENVIRONMENT)
8
+ * Platform-specific env vars (VITE_ENVIRONMENT, VITE_NATIVE, ONE_PLATFORM, EXPO_OS, TAMAGUI_ENVIRONMENT)
8
9
  * are handled by the import-meta-env-plugin based on caller.platform and always take precedence.
9
10
  */
10
11
  export function getMetroBabelConfigFromViteConfig(
@@ -18,48 +19,28 @@ export function getMetroBabelConfigFromViteConfig(
18
19
  SSR: false,
19
20
  }
20
21
 
21
- const envPrefix = config.envPrefix || ['VITE_', 'ONE_PUBLIC_']
22
+ const envPrefix = config.envPrefix || ['VITE_', 'ONE_PUBLIC_', 'EXPO_PUBLIC_']
22
23
  const prefixes = Array.isArray(envPrefix) ? envPrefix : [envPrefix]
23
24
 
24
- // expo-prefixed public vars fail with a migration error instead of being
25
- // copied, ignored, or aliased into the bundle.
26
- for (const prefix of prefixes) {
27
- if (prefix.startsWith('EXPO_')) {
28
- throw new Error(
29
- `[vxrn/metro] env prefix "${prefix}" is removed. rename it to ONE_PUBLIC_*`
30
- )
31
- }
32
- }
33
-
34
25
  for (const key of Object.keys(config.env)) {
35
- if (key.startsWith('EXPO_PUBLIC_')) {
36
- throw new Error(
37
- `[vxrn/metro] ${key} uses the removed expo prefix. rename it to ONE_PUBLIC_*`
38
- )
39
- }
40
26
  if (prefixes.some((p) => key.startsWith(p))) {
41
- importMetaEnv[key] = process.env[key]
27
+ importMetaEnv[key] = process.env[key] ?? config.env[key]
42
28
  }
43
29
  }
44
30
 
45
31
  // also harvest keys from config.define (populated by env-defining plugins like one's).
46
32
  // we union the user's envPrefix with framework-level defaults so we still pick up
47
- // VITE_/ONE_PUBLIC_/ONE_ even when another plugin replaces envPrefix wholesale
33
+ // VITE_/ONE_PUBLIC_/EXPO_PUBLIC_/ONE_ even when another plugin replaces envPrefix wholesale
48
34
  // (e.g. some plugins set it to a single project-specific prefix).
49
35
  const definePrefixes = Array.from(
50
- new Set([...prefixes, 'VITE_', 'ONE_PUBLIC_', 'ONE_'])
36
+ new Set([...prefixes, 'VITE_', 'ONE_PUBLIC_', 'EXPO_PUBLIC_', 'ONE_'])
51
37
  )
52
38
  for (const defineKey of Object.keys(config.define || {})) {
53
39
  const m = defineKey.match(/^process\.env\.([A-Z][A-Z0-9_]*)$/)
54
40
  if (!m) continue
55
41
  const key = m[1]
56
- if (key.startsWith('EXPO_PUBLIC_') || key === 'EXPO_OS') {
57
- throw new Error(
58
- `[vxrn/metro] ${key} uses the removed expo contract. rename it to ONE_PUBLIC_* or ONE_PLATFORM`
59
- )
60
- }
61
42
  if (key in importMetaEnv) continue
62
- if (!definePrefixes.some((p) => key.startsWith(p))) continue
43
+ if (key !== 'EXPO_OS' && !definePrefixes.some((p) => key.startsWith(p))) continue
63
44
  const raw = config.define![defineKey]
64
45
  try {
65
46
  importMetaEnv[key] = typeof raw === 'string' ? JSON.parse(raw) : raw
@@ -72,7 +53,7 @@ export function getMetroBabelConfigFromViteConfig(
72
53
  plugins: [
73
54
  [
74
55
  '@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin',
75
- { env: importMetaEnv },
56
+ { env: withExpoPublicEnvAliases(importMetaEnv) },
76
57
  ],
77
58
  ],
78
59
  }
@@ -0,0 +1,55 @@
1
+ import fs from 'node:fs'
2
+ import path from 'node:path'
3
+ import { afterAll, describe, expect, it } from 'vitest'
4
+ import { buildMetroConfigInputFromViteConfig } from './getMetroConfigFromViteConfig'
5
+
6
+ const tmpDirs: string[] = []
7
+
8
+ afterAll(() => {
9
+ for (const tmpDir of tmpDirs) {
10
+ fs.rmSync(tmpDir, { recursive: true, force: true })
11
+ }
12
+ })
13
+
14
+ describe('bare main module entry', () => {
15
+ it('survives a resolver-replacing defaultConfigOverrides', async () => {
16
+ const workspaceRoot = path.resolve(__dirname, '../../../../')
17
+ const fixtureRoot = fs.mkdtempSync(path.join(workspaceRoot, '.tmp-metro-entry-'))
18
+ tmpDirs.push(fixtureRoot)
19
+ fs.writeFileSync(
20
+ path.join(fixtureRoot, 'package.json'),
21
+ JSON.stringify({ name: 'tmp-metro-entry', private: true })
22
+ )
23
+
24
+ const seen: string[] = []
25
+ const { defaultConfig } = await buildMetroConfigInputFromViteConfig(
26
+ { root: fixtureRoot } as any,
27
+ {
28
+ mainModuleName: 'one/metro-entry',
29
+ watchman: false,
30
+ defaultConfigOverrides: {
31
+ resolver: {
32
+ sourceExts: ['js'],
33
+ },
34
+ },
35
+ } as any
36
+ )
37
+
38
+ const context = {
39
+ originModulePath: `${fixtureRoot}/.`,
40
+ resolveRequest: (_ctx: any, name: string) => {
41
+ seen.push(name)
42
+ return { type: 'sourceFile', filePath: name }
43
+ },
44
+ }
45
+ await (defaultConfig as any).resolver.resolveRequest(
46
+ context,
47
+ './one/metro-entry',
48
+ 'ios'
49
+ )
50
+ expect(seen).toEqual(['one/metro-entry'])
51
+
52
+ await (defaultConfig as any).resolver.resolveRequest(context, 'react-native', 'ios')
53
+ expect(seen).toEqual(['one/metro-entry', 'react-native'])
54
+ })
55
+ })
@@ -52,6 +52,40 @@ function rewriteMainModuleBundleUrl(
52
52
  return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`)
53
53
  }
54
54
 
55
+ function isBareSpecifier(name: string) {
56
+ return name !== '' && !name.startsWith('.') && !name.startsWith('/')
57
+ }
58
+
59
+ // metro parses `/one/metro-entry.bundle` to the entry `./one/metro-entry`
60
+ // relative to the server root, which misses node_modules package lookup.
61
+ function bareMainModuleForRequest(
62
+ moduleName: string,
63
+ mainModuleName: string | undefined
64
+ ) {
65
+ if (!mainModuleName || !isBareSpecifier(mainModuleName)) return undefined
66
+ if (moduleName === `./${mainModuleName}`) return mainModuleName
67
+ return undefined
68
+ }
69
+
70
+ // defaultConfigOverrides and Metro config loading can replace the resolver.
71
+ // enforce package semantics on the final config while leaving every other
72
+ // request on the resolver selected by that composition.
73
+ function enforceBareMainModuleEntry(config: any, mainModuleName: string | undefined) {
74
+ if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config
75
+ const innerResolveRequest = config?.resolver?.resolveRequest
76
+ return {
77
+ ...config,
78
+ resolver: {
79
+ ...config?.resolver,
80
+ resolveRequest: (context: any, moduleName: string, platform: string) => {
81
+ const bareMain = bareMainModuleForRequest(moduleName, mainModuleName)
82
+ const resolveRequest = innerResolveRequest || context.resolveRequest
83
+ return resolveRequest(context, bareMain ?? moduleName, platform)
84
+ },
85
+ },
86
+ }
87
+ }
88
+
55
89
  async function isWatchmanResponsive(projectRoot: string) {
56
90
  let probe = watchmanResponsivePromises.get(projectRoot)
57
91
  if (probe) {
@@ -287,7 +321,11 @@ export async function buildMetroConfigInputFromViteConfig(
287
321
  : defaultConfigOverrides),
288
322
  }
289
323
 
290
- return { defaultConfig: merged, projectRoot, extraConfig }
324
+ return {
325
+ defaultConfig: enforceBareMainModuleEntry(merged, mainModuleName),
326
+ projectRoot,
327
+ extraConfig,
328
+ }
291
329
  }
292
330
 
293
331
  export async function getMetroConfigFromViteConfig(
@@ -468,7 +506,7 @@ export async function getMetroConfigFromViteConfig(
468
506
  )
469
507
 
470
508
  return {
471
- ...metroConfig,
509
+ ...enforceBareMainModuleEntry(metroConfig, mainModuleName),
472
510
  ...extraConfig,
473
511
  } as MetroConfigExtended
474
512
  }
@@ -1518,41 +1518,54 @@ describe('metro babel fallback config names', () => {
1518
1518
  })
1519
1519
 
1520
1520
  describe('one public env contract in the metro worker', () => {
1521
- it('inlines ONE_PUBLIC_ reads in dev and prod with no virtual module', () => {
1521
+ it('inlines One and Expo public reads in dev and prod with no virtual module', () => {
1522
1522
  for (const isProduction of [false, true]) {
1523
1523
  const out = applyInlineEnvVars(
1524
- 'export const api = process.env.ONE_PUBLIC_API;',
1524
+ `export const values = [process.env.ONE_PUBLIC_API, process.env.EXPO_PUBLIC_API, import.meta.env.EXPO_PUBLIC_API];
1525
+ export const all = { ...import.meta.env };`,
1525
1526
  'env.ts',
1526
1527
  isProduction,
1527
1528
  { ONE_PUBLIC_API: 'https://api.test' }
1528
1529
  )
1529
- expect(out).toBe('export const api = "https://api.test";')
1530
+ expect(out).toContain(
1531
+ 'export const values = ["https://api.test", "https://api.test", "https://api.test"];'
1532
+ )
1533
+ expect(out).toContain('"EXPO_PUBLIC_API":"https://api.test"')
1530
1534
  expect(out).not.toContain('expo/virtual/env')
1531
1535
  expect(out).not.toContain('_$$_EXPO_ENV')
1532
1536
  }
1533
1537
  })
1534
1538
 
1535
- it('rejects EXPO_PUBLIC_ reads instead of copying or ignoring them', () => {
1539
+ it('preserves explicit conflicting values', () => {
1536
1540
  for (const isProduction of [false, true]) {
1537
- expect(() =>
1538
- applyInlineEnvVars(
1539
- 'export const api = process.env.EXPO_PUBLIC_API;',
1540
- 'env.ts',
1541
- isProduction,
1542
- {}
1543
- )
1544
- ).toThrow(/rename it to ONE_PUBLIC_\*/)
1541
+ const out = applyInlineEnvVars(
1542
+ 'export const values = [process.env.ONE_PUBLIC_API, process.env.EXPO_PUBLIC_API];',
1543
+ 'env.ts',
1544
+ isProduction,
1545
+ { ONE_PUBLIC_API: 'one', EXPO_PUBLIC_API: 'expo' }
1546
+ )
1547
+ expect(out).toBe('export const values = ["one", "expo"];')
1545
1548
  }
1546
1549
  })
1547
1550
 
1548
- it('carries ONE_PLATFORM through the whole import.meta.env object', () => {
1551
+ it('accepts Expo runtime feature flags that are not configured', () => {
1552
+ const out = applyInlineEnvVars(
1553
+ 'export const useRnFetch = process.env.EXPO_PUBLIC_USE_RN_FETCH;',
1554
+ '/app/node_modules/expo/build/winter/runtime.native.js',
1555
+ false,
1556
+ { EXPO_PUBLIC_USE_RN_FETCH: undefined }
1557
+ )
1558
+ expect(out).toBe('export const useRnFetch = undefined;')
1559
+ })
1560
+
1561
+ it('carries public aliases through the whole import.meta.env object', () => {
1549
1562
  const out = applyInlineEnvVars(
1550
1563
  'export const all = { ...import.meta.env };',
1551
1564
  'env.ts',
1552
1565
  true,
1553
- { ONE_PLATFORM: 'android' }
1566
+ { ONE_PUBLIC_API: 'one' }
1554
1567
  )
1555
- expect(out).toContain('"ONE_PLATFORM":"android"')
1556
- expect(out).not.toContain('EXPO_OS')
1568
+ expect(out).toContain('"ONE_PUBLIC_API":"one"')
1569
+ expect(out).toContain('"EXPO_PUBLIC_API":"one"')
1557
1570
  })
1558
1571
  })
@@ -13,6 +13,7 @@ import {
13
13
  transformHermesLoops,
14
14
  transformReactNativeCodegen,
15
15
  } from '@vxrn/compiler'
16
+ import { withExpoPublicEnvAliases } from '@vxrn/utils/publicEnv'
16
17
  import { getPlatformEnv, metroPlatformToViteEnvironment } from '../env/platformEnv'
17
18
 
18
19
  /**
@@ -516,17 +517,15 @@ export function applyModuleResolverAliases(
516
517
 
517
518
  /**
518
519
  * Native port of one's `babel-plugin-inline-one-server-url` for public env.
519
- * Every `process.env.ONE_PUBLIC_*` read is inlined as a literal in both modes,
520
+ * Every `process.env.ONE_PUBLIC_*` or `process.env.EXPO_PUBLIC_*` read is
521
+ * inlined as a literal in both modes,
520
522
  * matching the rolldown native defines: a native runtime has no `process.env`
521
523
  * to read it back out of, and without this the reads survive into the bundle
522
- * and every ONE_PUBLIC_ value is undefined at runtime.
524
+ * and every public value is undefined at runtime.
523
525
  *
524
526
  * `process.env.ONE_SERVER_URL` is inlined in both modes, matching one's plugin:
525
527
  * it is how a native bundle knows where to fetch loader data from.
526
528
  *
527
- * `process.env.EXPO_PUBLIC_*` reads fail with a migration error instead of
528
- * being copied, ignored, or aliased.
529
- *
530
529
  * Both live in one pass because they are the same rewrite over the same walk,
531
530
  * and a second parse of every file is the cost this transformer exists to avoid.
532
531
  */
@@ -544,6 +543,13 @@ export function applyInlineEnvVars(
544
543
  }
545
544
  if (!parsed?.program) return code
546
545
 
546
+ const processPublicEnv = Object.fromEntries(
547
+ Object.entries(process.env).filter(
548
+ ([key]) => key.startsWith('ONE_PUBLIC_') || key.startsWith('EXPO_PUBLIC_')
549
+ )
550
+ )
551
+ const effectiveEnv = withExpoPublicEnvAliases({ ...processPublicEnv, ...env })
552
+
547
553
  const ms = new MagicString(code)
548
554
 
549
555
  // edits are collected rather than written straight through, because a folded
@@ -597,14 +603,12 @@ export function applyInlineEnvVars(
597
603
  return
598
604
  }
599
605
 
600
- if (isProcessEnv && !isAssignmentTarget && key?.startsWith('EXPO_PUBLIC_')) {
601
- throw new Error(
602
- `[vxrn/metro] ${key} uses the removed expo prefix. rename it to ONE_PUBLIC_*`
603
- )
604
- }
605
-
606
- if (isProcessEnv && !isAssignmentTarget && key?.startsWith('ONE_PUBLIC_')) {
607
- replace(node, env[key] ?? process.env[key] ?? undefined)
606
+ if (
607
+ isProcessEnv &&
608
+ !isAssignmentTarget &&
609
+ (key?.startsWith('ONE_PUBLIC_') || key?.startsWith('EXPO_PUBLIC_'))
610
+ ) {
611
+ replace(node, effectiveEnv[key] ?? undefined)
608
612
  return
609
613
  }
610
614
 
@@ -617,21 +621,30 @@ export function applyInlineEnvVars(
617
621
  keyOf(obj.property, obj.computed) === 'env' &&
618
622
  key !== undefined
619
623
  ) {
620
- replace(node, env[key])
624
+ replace(node, effectiveEnv[key])
621
625
  return
622
626
  }
623
627
 
624
628
  // bare `import.meta.env`, spread or passed around whole.
625
629
  if (!isAssignmentTarget && isImportMeta(obj) && key === 'env') {
626
- edits.push({ start: node.start, end: node.end, text: JSON.stringify(env) })
630
+ edits.push({
631
+ start: node.start,
632
+ end: node.end,
633
+ text: JSON.stringify(effectiveEnv),
634
+ })
627
635
  return
628
636
  }
629
637
 
630
638
  // `process.env.X` for anything the vite env map defines. runs after the
631
- // branches above so ONE_SERVER_URL and ONE_PUBLIC_* keep their own
639
+ // branches above so ONE_SERVER_URL and public env keep their own
632
640
  // handling.
633
- if (isProcessEnv && !isAssignmentTarget && key !== undefined && key in env) {
634
- replace(node, env[key])
641
+ if (
642
+ isProcessEnv &&
643
+ !isAssignmentTarget &&
644
+ key !== undefined &&
645
+ key in effectiveEnv
646
+ ) {
647
+ replace(node, effectiveEnv[key])
635
648
  return
636
649
  }
637
650
  }
@@ -5,7 +5,7 @@ type PluginOptions = {
5
5
  /**
6
6
  * Babel plugin to replace `import.meta.env.*` and `process.env.*` with env values.
7
7
  *
8
- * Platform-specific env vars (VITE_ENVIRONMENT, VITE_NATIVE, ONE_PLATFORM, TAMAGUI_ENVIRONMENT)
8
+ * Platform-specific env vars (VITE_ENVIRONMENT, VITE_NATIVE, ONE_PLATFORM, EXPO_OS, TAMAGUI_ENVIRONMENT)
9
9
  * are automatically injected based on the babel caller's platform.
10
10
  *
11
11
  * This plugin is referenced by name since Metro runs transformers in separate workers:
@@ -4,6 +4,7 @@ export type PlatformEnv = {
4
4
  VITE_ENVIRONMENT: ViteEnvironment;
5
5
  VITE_NATIVE: '' | '1';
6
6
  ONE_PLATFORM: 'web' | 'ios' | 'android';
7
+ EXPO_OS?: 'ios' | 'android';
7
8
  TAMAGUI_TARGET: 'web' | 'native';
8
9
  TAMAGUI_ENVIRONMENT: ViteEnvironment;
9
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"platformEnv.d.ts","sourceRoot":"","sources":["../../src/env/platformEnv.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,CAAA;AAChD,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;AAElE,MAAM,MAAM,WAAW,GAAG;IACxB,gBAAgB,EAAE,eAAe,CAAA;IACjC,WAAW,EAAE,EAAE,GAAG,GAAG,CAAA;IACrB,YAAY,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;IACvC,cAAc,EAAE,KAAK,GAAG,QAAQ,CAAA;IAChC,mBAAmB,EAAE,eAAe,CAAA;CACrC,CAAA;AAiCD,wBAAgB,cAAc,CAAC,WAAW,EAAE,eAAe,GAAG,WAAW,CAExE;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAC7C,eAAe,CAIjB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,eAAe,GAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUxB"}
1
+ {"version":3,"file":"platformEnv.d.ts","sourceRoot":"","sources":["../../src/env/platformEnv.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,CAAA;AAChD,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;AAElE,MAAM,MAAM,WAAW,GAAG;IACxB,gBAAgB,EAAE,eAAe,CAAA;IACjC,WAAW,EAAE,EAAE,GAAG,GAAG,CAAA;IACrB,YAAY,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;IACvC,OAAO,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B,cAAc,EAAE,KAAK,GAAG,QAAQ,CAAA;IAChC,mBAAmB,EAAE,eAAe,CAAA;CACrC,CAAA;AAmCD,wBAAgB,cAAc,CAAC,WAAW,EAAE,eAAe,GAAG,WAAW,CAExE;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAC7C,eAAe,CAIjB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,eAAe,GAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUxB"}
@@ -3,7 +3,7 @@ import type { TransformOptions } from '@babel/core';
3
3
  /**
4
4
  * Creates babel config for Metro transforms from Vite config.
5
5
  *
6
- * Platform-specific env vars (VITE_ENVIRONMENT, VITE_NATIVE, ONE_PLATFORM, TAMAGUI_ENVIRONMENT)
6
+ * Platform-specific env vars (VITE_ENVIRONMENT, VITE_NATIVE, ONE_PLATFORM, EXPO_OS, TAMAGUI_ENVIRONMENT)
7
7
  * are handled by the import-meta-env-plugin based on caller.platform and always take precedence.
8
8
  */
9
9
  export declare function getMetroBabelConfigFromViteConfig(config: ResolvedConfig): TransformOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"getMetroBabelConfigFromViteConfig.d.ts","sourceRoot":"","sources":["../../src/metro-config/getMetroBabelConfigFromViteConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,cAAc,GACrB,gBAAgB,CAmElB"}
1
+ {"version":3,"file":"getMetroBabelConfigFromViteConfig.d.ts","sourceRoot":"","sources":["../../src/metro-config/getMetroBabelConfigFromViteConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAGnD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,cAAc,GACrB,gBAAgB,CA+ClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"getMetroConfigFromViteConfig.d.ts","sourceRoot":"","sources":["../../src/metro-config/getMetroConfigFromViteConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAe1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAqH/D;;;;;;;GAOG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,cAAc,EACtB,kBAAkB,EAAE,kBAAkB,GACrC,OAAO,CAAC;IAAE,aAAa,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC,CAkJhF;AAED,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,cAAc,EACtB,kBAAkB,EAAE,kBAAkB,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAkL9B"}
1
+ {"version":3,"file":"getMetroConfigFromViteConfig.d.ts","sourceRoot":"","sources":["../../src/metro-config/getMetroConfigFromViteConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAe1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAuJ/D;;;;;;;GAOG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,cAAc,EACtB,kBAAkB,EAAE,kBAAkB,GACrC,OAAO,CAAC;IAAE,aAAa,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC,CAsJhF;AAED,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,cAAc,EACtB,kBAAkB,EAAE,kBAAkB,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAkL9B"}
@@ -125,17 +125,15 @@ export declare function resolveAliasSpecifier(specifier: string, filename: strin
125
125
  export declare function applyModuleResolverAliases(code: string, filename: string, projectRoot: string, aliases: Record<string, string>): string;
126
126
  /**
127
127
  * Native port of one's `babel-plugin-inline-one-server-url` for public env.
128
- * Every `process.env.ONE_PUBLIC_*` read is inlined as a literal in both modes,
128
+ * Every `process.env.ONE_PUBLIC_*` or `process.env.EXPO_PUBLIC_*` read is
129
+ * inlined as a literal in both modes,
129
130
  * matching the rolldown native defines: a native runtime has no `process.env`
130
131
  * to read it back out of, and without this the reads survive into the bundle
131
- * and every ONE_PUBLIC_ value is undefined at runtime.
132
+ * and every public value is undefined at runtime.
132
133
  *
133
134
  * `process.env.ONE_SERVER_URL` is inlined in both modes, matching one's plugin:
134
135
  * it is how a native bundle knows where to fetch loader data from.
135
136
  *
136
- * `process.env.EXPO_PUBLIC_*` reads fail with a migration error instead of
137
- * being copied, ignored, or aliased.
138
- *
139
137
  * Both live in one pass because they are the same rewrite over the same walk,
140
138
  * and a second parse of every file is the cost this transformer exists to avoid.
141
139
  */
@@ -1 +1 @@
1
- {"version":3,"file":"metroNativeWorker.d.ts","sourceRoot":"","sources":["../../src/transformer/metroNativeWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metroNativeWorker.d.ts","sourceRoot":"","sources":["../../src/transformer/metroNativeWorker.ts"],"names":[],"mappings":"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"}