@vxrn/vite-plugin-metro 2.0.0-beta.53.1 → 2.0.0-beta.57.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.
- package/dist/cjs/index.cjs +0 -2
- package/dist/cjs/index.native.cjs +0 -2
- package/dist/cjs/index.native.js +0 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +48 -38
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +62 -42
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +62 -42
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/cjs/transformer/babel-transformer.cjs +53 -4
- package/dist/cjs/transformer/babel-transformer.native.cjs +65 -6
- package/dist/cjs/transformer/babel-transformer.native.js +65 -6
- package/dist/cjs/transformer/babel-transformer.native.js.map +1 -1
- package/dist/cjs/transformer/expoVirtualEnv.cjs +92 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.cjs +113 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.js +115 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.js.map +1 -0
- package/dist/cjs/transformer/loadBabelConfig.cjs +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.cjs +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.js +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.js.map +1 -1
- package/dist/cjs/transformer/metroNativeWorker.cjs +8 -20
- package/dist/cjs/transformer/metroNativeWorker.native.cjs +8 -20
- package/dist/cjs/transformer/metroNativeWorker.native.js +8 -20
- package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/cjs/transformer/transformSync.cjs +3 -3
- package/dist/cjs/transformer/transformSync.native.cjs +3 -3
- package/dist/cjs/transformer/transformSync.native.js +3 -3
- package/dist/cjs/transformer/transformSync.native.js.map +1 -1
- package/dist/cjs/utils/exit.cjs +1 -1
- package/dist/cjs/utils/exit.native.cjs +1 -1
- package/dist/cjs/utils/exit.native.js +1 -1
- package/dist/cjs/utils/exit.native.js.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.mjs +1 -2
- package/dist/esm/index.native.js +1 -2
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +48 -38
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +62 -42
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/esm/transformer/babel-transformer.mjs +133 -96
- package/dist/esm/transformer/babel-transformer.mjs.map +1 -1
- package/dist/esm/transformer/babel-transformer.native.js +147 -103
- package/dist/esm/transformer/babel-transformer.native.js.map +1 -1
- package/dist/esm/transformer/expoVirtualEnv.mjs +67 -0
- package/dist/esm/transformer/expoVirtualEnv.mjs.map +1 -0
- package/dist/esm/transformer/expoVirtualEnv.native.js +86 -0
- package/dist/esm/transformer/expoVirtualEnv.native.js.map +1 -0
- package/dist/esm/transformer/loadBabelConfig.mjs +1 -1
- package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -1
- package/dist/esm/transformer/loadBabelConfig.native.js +1 -1
- package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.mjs +8 -20
- package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.native.js +8 -20
- package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/esm/transformer/transformSync.mjs +3 -3
- package/dist/esm/transformer/transformSync.mjs.map +1 -1
- package/dist/esm/transformer/transformSync.native.js +3 -3
- package/dist/esm/transformer/transformSync.native.js.map +1 -1
- package/dist/esm/utils/exit.mjs +1 -1
- package/dist/esm/utils/exit.mjs.map +1 -1
- package/dist/esm/utils/exit.native.js +1 -1
- package/dist/esm/utils/exit.native.js.map +1 -1
- package/package.json +7 -9
- package/src/index.ts +0 -2
- package/src/metro-config/getMetroConfigFromViteConfig.test.ts +5 -0
- package/src/metro-config/getMetroConfigFromViteConfig.ts +81 -96
- package/src/plugins/metroPlugin.ts +3 -6
- package/src/transformer/babel-transformer.test.ts +118 -0
- package/src/transformer/babel-transformer.ts +82 -15
- package/src/transformer/expoVirtualEnv.integration.test.ts +106 -0
- package/src/transformer/expoVirtualEnv.test.ts +72 -0
- package/src/transformer/expoVirtualEnv.ts +115 -0
- package/src/transformer/loadBabelConfig.ts +1 -1
- package/src/transformer/metroNativeWorker.test.ts +105 -1
- package/src/transformer/metroNativeWorker.ts +12 -33
- package/src/transformer/transformSync.test.ts +22 -0
- package/src/transformer/transformSync.ts +4 -4
- package/src/utils/exit.ts +2 -2
- package/src/utils/getTerminalReporter.ts +1 -1
- package/src/utils/projectImport.ts +2 -2
- package/types/index.d.ts +0 -2
- package/types/index.d.ts.map +1 -1
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts +2 -2
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
- package/types/plugins/metroPlugin.d.ts +2 -4
- package/types/plugins/metroPlugin.d.ts.map +1 -1
- package/types/transformer/babel-transformer.d.ts +10 -1
- package/types/transformer/babel-transformer.d.ts.map +1 -1
- package/types/transformer/expoVirtualEnv.d.ts +8 -0
- package/types/transformer/expoVirtualEnv.d.ts.map +1 -0
- package/types/transformer/metroNativeWorker.d.ts.map +1 -1
- package/types/utils/projectImport.d.ts +2 -2
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +0 -59
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.cjs +0 -62
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +0 -64
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs +0 -35
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.cjs +0 -37
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -39
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +0 -40
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +0 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +0 -41
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs +0 -15
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map +0 -1
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -15
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
- package/src/plugins/expoManifestRequestHandlerPlugin.ts +0 -88
- package/src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts +0 -28
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts +0 -14
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +0 -1
- package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts +0 -5
- package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts.map +0 -1
|
@@ -512,7 +512,7 @@ describe('metroNativeWorker', () => {
|
|
|
512
512
|
expect(configDefault.defaultConfig.transformerPath).toContain('metroNativeWorker')
|
|
513
513
|
expect(configDefault.defaultConfig.transformer.transformerPath).toBeUndefined()
|
|
514
514
|
|
|
515
|
-
// Opting back into babel via metroPluginOptions leaves
|
|
515
|
+
// Opting back into babel via metroPluginOptions leaves Metro's default
|
|
516
516
|
// worker in the key, which is itself proof that top level is where metro
|
|
517
517
|
// reads it from.
|
|
518
518
|
const configOptOff = await buildMetroConfigInputFromViteConfig(mockViteConfig, {
|
|
@@ -1569,3 +1569,107 @@ export const all = { ...import.meta.env };`,
|
|
|
1569
1569
|
expect(out).toContain('"EXPO_PUBLIC_API":"one"')
|
|
1570
1570
|
})
|
|
1571
1571
|
})
|
|
1572
|
+
|
|
1573
|
+
describe('optional expo virtual env', () => {
|
|
1574
|
+
const virtualFilename = '/proj/node_modules/expo/virtual/env.js'
|
|
1575
|
+
const virtualSource = 'export const env = process.env;'
|
|
1576
|
+
|
|
1577
|
+
function runFactory(
|
|
1578
|
+
code: string,
|
|
1579
|
+
opts: { requireImpl: (...args: any[]) => any; procEnv: Record<string, string> }
|
|
1580
|
+
) {
|
|
1581
|
+
const module = { exports: {} as any }
|
|
1582
|
+
vm.runInNewContext(code, {
|
|
1583
|
+
__d(factory: any) {
|
|
1584
|
+
factory(
|
|
1585
|
+
{},
|
|
1586
|
+
opts.requireImpl,
|
|
1587
|
+
(v: any) => v,
|
|
1588
|
+
(v: any) => v,
|
|
1589
|
+
module,
|
|
1590
|
+
module.exports,
|
|
1591
|
+
[]
|
|
1592
|
+
)
|
|
1593
|
+
},
|
|
1594
|
+
process: { env: opts.procEnv },
|
|
1595
|
+
console,
|
|
1596
|
+
})
|
|
1597
|
+
return module.exports
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
const noRequire = () => {
|
|
1601
|
+
throw new Error('unexpected require call')
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
it('merges .env files over process.env in dev like upstream', async () => {
|
|
1605
|
+
const result = await transform({}, '/proj', virtualFilename, Buffer.from(virtualSource), {
|
|
1606
|
+
dev: true,
|
|
1607
|
+
minify: false,
|
|
1608
|
+
platform: 'ios',
|
|
1609
|
+
type: 'module',
|
|
1610
|
+
customTransformOptions: { environment: 'client' },
|
|
1611
|
+
})
|
|
1612
|
+
const code = result.output[0].data.code
|
|
1613
|
+
expect(code).toContain('dotEnvModules')
|
|
1614
|
+
expect(code).toContain('.env.development.local')
|
|
1615
|
+
const contextModule: any = () => ({
|
|
1616
|
+
default: { EXPO_PUBLIC_SENTINEL_DOTENV: 'dotenv-sentinel-value' },
|
|
1617
|
+
})
|
|
1618
|
+
contextModule.keys = () => ['./.env']
|
|
1619
|
+
// metro lowers require.context(rel) to require(contextId, rel)
|
|
1620
|
+
const requireImpl: any = (_id: unknown, _rel?: unknown) => contextModule
|
|
1621
|
+
const mod = runFactory(code, {
|
|
1622
|
+
requireImpl,
|
|
1623
|
+
procEnv: { EXPO_PUBLIC_SENTINEL_PROC: 'proc-sentinel-value' },
|
|
1624
|
+
})
|
|
1625
|
+
expect(mod.env.EXPO_PUBLIC_SENTINEL_DOTENV).toBe('dotenv-sentinel-value')
|
|
1626
|
+
expect(mod.env.EXPO_PUBLIC_SENTINEL_PROC).toBe('proc-sentinel-value')
|
|
1627
|
+
})
|
|
1628
|
+
|
|
1629
|
+
it('throws a naming error in production like upstream', async () => {
|
|
1630
|
+
const result = await transform({}, '/proj', virtualFilename, Buffer.from(virtualSource), {
|
|
1631
|
+
dev: false,
|
|
1632
|
+
minify: false,
|
|
1633
|
+
platform: 'ios',
|
|
1634
|
+
type: 'module',
|
|
1635
|
+
customTransformOptions: { environment: 'client' },
|
|
1636
|
+
})
|
|
1637
|
+
const mod = runFactory(result.output[0].data.code, {
|
|
1638
|
+
requireImpl: noRequire,
|
|
1639
|
+
procEnv: {},
|
|
1640
|
+
})
|
|
1641
|
+
expect(() => mod.env.EXPO_PUBLIC_ANYTHING).toThrow(
|
|
1642
|
+
'not supported in production bundles'
|
|
1643
|
+
)
|
|
1644
|
+
})
|
|
1645
|
+
|
|
1646
|
+
it('leaves .env files alone without Expo installed', async () => {
|
|
1647
|
+
const result = await transform(
|
|
1648
|
+
{},
|
|
1649
|
+
'/proj-no-expo',
|
|
1650
|
+
'/proj-no-expo/.env',
|
|
1651
|
+
Buffer.from('EXPO_PUBLIC_A=1\nSECRET=2\n'),
|
|
1652
|
+
{
|
|
1653
|
+
dev: true,
|
|
1654
|
+
minify: false,
|
|
1655
|
+
platform: 'ios',
|
|
1656
|
+
type: 'module',
|
|
1657
|
+
customTransformOptions: { environment: 'client' },
|
|
1658
|
+
}
|
|
1659
|
+
)
|
|
1660
|
+
const code = result.output[0].data.code
|
|
1661
|
+
expect(code).toContain('EXPO_PUBLIC_A')
|
|
1662
|
+
expect(code).not.toContain('EXPO_PUBLIC_A":"1')
|
|
1663
|
+
})
|
|
1664
|
+
|
|
1665
|
+
it('leaves the virtual module alone outside client environments', async () => {
|
|
1666
|
+
const result = await transform({}, '/proj', virtualFilename, Buffer.from(virtualSource), {
|
|
1667
|
+
dev: true,
|
|
1668
|
+
minify: false,
|
|
1669
|
+
platform: 'ios',
|
|
1670
|
+
type: 'module',
|
|
1671
|
+
customTransformOptions: { environment: 'react-server' },
|
|
1672
|
+
})
|
|
1673
|
+
expect(result.output[0].data.code).not.toContain('require.context')
|
|
1674
|
+
})
|
|
1675
|
+
})
|
|
@@ -14,6 +14,8 @@ import {
|
|
|
14
14
|
transformReactNativeCodegen,
|
|
15
15
|
} from '@vxrn/compiler'
|
|
16
16
|
import { withExpoPublicEnvAliases } from '@vxrn/utils/publicEnv'
|
|
17
|
+
|
|
18
|
+
import { substituteExpoVirtualEnvSource } from './expoVirtualEnv'
|
|
17
19
|
import { getPlatformEnv, metroPlatformToViteEnvironment } from '../env/platformEnv'
|
|
18
20
|
|
|
19
21
|
/**
|
|
@@ -1896,39 +1898,16 @@ export async function transform(
|
|
|
1896
1898
|
|
|
1897
1899
|
let sourceCode = typeof data === 'string' ? data : data.toString('utf8')
|
|
1898
1900
|
|
|
1899
|
-
//
|
|
1900
|
-
//
|
|
1901
|
-
// without
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
.relative(path.dirname(filename), projectRoot)
|
|
1910
|
-
.split(path.sep)
|
|
1911
|
-
.join('/')
|
|
1912
|
-
sourceCode = `const dotEnvModules = require.context(${JSON.stringify(rel)},false,/^\\.\\/\\.env/);
|
|
1913
|
-
export const env = !dotEnvModules.keys().length ? process.env : { ...process.env, ...['.env', '.env.development', '.env.local', '.env.development.local'].reduce((acc, file) => {
|
|
1914
|
-
return { ...acc, ...(dotEnvModules(file)?.default ?? {}) };
|
|
1915
|
-
}, {}) };`
|
|
1916
|
-
} else {
|
|
1917
|
-
// production inlines every value at its use site, so reaching this module
|
|
1918
|
-
// at all is a bug worth naming rather than silently returning undefined.
|
|
1919
|
-
sourceCode = `export const env = new Proxy({}, {
|
|
1920
|
-
get(target, key) {
|
|
1921
|
-
throw new Error(\`Attempting to access internal environment variable "\${String(key)}" is not supported in production bundles.\`);
|
|
1922
|
-
},
|
|
1923
|
-
});`
|
|
1924
|
-
}
|
|
1925
|
-
} else if (
|
|
1926
|
-
/(^|[\\/])\.env(\.(local|(development|production)(\.local)?))?$/.test(filename)
|
|
1927
|
-
) {
|
|
1928
|
-
const { parseEnvFile } =
|
|
1929
|
-
await import('@expo/metro-config/build/transform-worker/dot-env-development')
|
|
1930
|
-
sourceCode = `export default ${JSON.stringify(parseEnvFile(sourceCode, isClientEnvironment))};`
|
|
1931
|
-
}
|
|
1901
|
+
// narrow optional Expo compatibility, shared with the babel
|
|
1902
|
+
// transformer: only expo/virtual/env.js and .env files are special, and
|
|
1903
|
+
// apps without Expo installed never resolve or load any Expo module.
|
|
1904
|
+
sourceCode = substituteExpoVirtualEnvSource({
|
|
1905
|
+
filename,
|
|
1906
|
+
src: sourceCode,
|
|
1907
|
+
projectRoot,
|
|
1908
|
+
dev: options.dev,
|
|
1909
|
+
environment: options.customTransformOptions?.environment,
|
|
1910
|
+
})
|
|
1932
1911
|
|
|
1933
1912
|
checkReservedStrings(sourceCode, config, options)
|
|
1934
1913
|
|
|
@@ -47,4 +47,26 @@ describe('transformSync', () => {
|
|
|
47
47
|
)
|
|
48
48
|
).toThrow('use `importForwarding.moduleNames`')
|
|
49
49
|
})
|
|
50
|
+
|
|
51
|
+
it('parses the readonly Flow interfaces shipped by React Native 0.87', () => {
|
|
52
|
+
const result = transformSync(
|
|
53
|
+
`// @flow strict
|
|
54
|
+
interface Registration<TArgs> {
|
|
55
|
+
readonly context: unknown;
|
|
56
|
+
readonly listener: (...args: TArgs) => unknown;
|
|
57
|
+
}
|
|
58
|
+
export function readContext(registration: Registration<[]>): unknown {
|
|
59
|
+
return registration.context;
|
|
60
|
+
}`,
|
|
61
|
+
{
|
|
62
|
+
filename: '/project/node_modules/react-native/EventEmitter.js',
|
|
63
|
+
babelrc: false,
|
|
64
|
+
configFile: false,
|
|
65
|
+
presets: [require('@react-native/babel-preset')],
|
|
66
|
+
},
|
|
67
|
+
{ hermesParser: true }
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
expect(result?.code).toContain('function readContext(registration)')
|
|
71
|
+
})
|
|
50
72
|
})
|
|
@@ -25,7 +25,7 @@ export function transformSync(
|
|
|
25
25
|
) as babel.TransformOptions | null
|
|
26
26
|
if (!loadedBabelConfig) return null
|
|
27
27
|
|
|
28
|
-
//
|
|
28
|
+
// presets can add worklets automatically. keep the app's earlier configured pass so a
|
|
29
29
|
// later preset pass cannot serialize the closure with different options.
|
|
30
30
|
let hasWorkletsPlugin = false
|
|
31
31
|
loadedBabelConfig.plugins = loadedBabelConfig.plugins?.filter((plugin) => {
|
|
@@ -60,14 +60,14 @@ export function transformSync(
|
|
|
60
60
|
// We can try to quickly detect if the file uses flow syntax by checking for the @flow pragma which is present in every React Native file.
|
|
61
61
|
(hermesParser || src.includes(' @flow'))
|
|
62
62
|
) {
|
|
63
|
-
return
|
|
63
|
+
return parseWithFlow(src, loadedBabelConfig)
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
return parseWithBabel(src, loadedBabelConfig)
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
function
|
|
70
|
-
const sourceAst = require('
|
|
69
|
+
function parseWithFlow(src: string, babelConfig: babel.TransformOptions) {
|
|
70
|
+
const sourceAst = require('flow-parser').parse(src, {
|
|
71
71
|
babel: true,
|
|
72
72
|
sourceType: babelConfig.sourceType,
|
|
73
73
|
})
|
package/src/utils/exit.ts
CHANGED
|
@@ -191,7 +191,7 @@ function killActiveChildProcesses(signal: NodeJS.Signals): number {
|
|
|
191
191
|
*
|
|
192
192
|
* @example ```bash
|
|
193
193
|
* Done writing bundle output
|
|
194
|
-
* Detected 2 processes preventing
|
|
194
|
+
* Detected 2 processes preventing the command from exiting, forcefully exiting now.
|
|
195
195
|
* - node /Users/cedric/../node_modules/nativewind/dist/metro/tailwind/v3/child.js
|
|
196
196
|
* - node /Users/cedric/../node_modules/nativewind/dist/metro/tailwind/v3/child.js
|
|
197
197
|
* ```
|
|
@@ -213,7 +213,7 @@ function tryWarnActiveProcesses() {
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
if (!activeProcesses.length) {
|
|
216
|
-
warn('Something prevented
|
|
216
|
+
warn('Something prevented the command from exiting, forcefully exiting now.')
|
|
217
217
|
} else {
|
|
218
218
|
const singularOrPlural =
|
|
219
219
|
activeProcesses.length === 1 ? '1 process' : `${activeProcesses.length} processes`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// only import Metro types here.
|
|
2
2
|
// We use `projectImport` to dynamically import the actual modules
|
|
3
3
|
// at runtime to ensure they are loaded from the user's project root.
|
|
4
4
|
import type { TerminalReporter as TerminalReporterT, Terminal as TerminalT } from 'metro'
|
|
@@ -7,8 +7,8 @@ export const { debug } = createDebugger('vite-metro:projectImport')
|
|
|
7
7
|
/**
|
|
8
8
|
* Dynamically imports a module from the user's project root instead of this package's location.
|
|
9
9
|
*
|
|
10
|
-
* This avoids issues in monorepos or complex setups where
|
|
11
|
-
*
|
|
10
|
+
* This avoids issues in monorepos or complex setups where Metro might be
|
|
11
|
+
* installed in a nested `node_modules` directory.
|
|
12
12
|
*/
|
|
13
13
|
export async function projectImport<T = any>(
|
|
14
14
|
projectRoot: string,
|
package/types/index.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
export { metroPlugin } from './plugins/metroPlugin';
|
|
2
2
|
export type { MetroPluginOptions } from './plugins/metroPlugin';
|
|
3
|
-
export { expoManifestRequestHandlerPlugin } from './plugins/expoManifestRequestHandlerPlugin';
|
|
4
|
-
export type { ExpoManifestRequestHandlerPluginPluginOptions } from './plugins/expoManifestRequestHandlerPlugin';
|
|
5
3
|
export { getPlatformEnv, getPlatformEnvDefine, metroPlatformToViteEnvironment, type Platform, type PlatformEnv, type ViteEnvironment, } from './env/platformEnv';
|
|
6
4
|
export { checkAndClearMetroCacheFromVite } from './utils/metroCacheManager';
|
|
7
5
|
export { getMetroConfigFromViteConfig, buildMetroConfigInputFromViteConfig, } from './metro-config/getMetroConfigFromViteConfig';
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,8BAA8B,EAC9B,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,GACpC,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAAE,mDAAmD,EAAE,MAAM,oEAAoE,CAAA"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ResolvedConfig } from 'vite';
|
|
2
2
|
import type { MetroPluginOptions } from '../plugins/metroPlugin';
|
|
3
3
|
import type { ExtraConfig, MetroConfigExtended } from './types';
|
|
4
4
|
/**
|
|
5
5
|
* Build the Metro config input WITHOUT calling Metro's `loadConfig`. Returns
|
|
6
6
|
* the same shape Metro `loadConfig` expects as its second argument. Use this
|
|
7
7
|
* from a project's `metro.config.cjs` so the outer `loadConfig` (driven by
|
|
8
|
-
*
|
|
8
|
+
* the Metro CLI) is the only one that runs. this avoids infinite
|
|
9
9
|
* recursion that would happen if the inner pipeline also called `loadConfig`
|
|
10
10
|
* and re-read the same metro.config.cjs.
|
|
11
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMetroConfigFromViteConfig.d.ts","sourceRoot":"","sources":["../../src/metro-config/getMetroConfigFromViteConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"getMetroConfigFromViteConfig.d.ts","sourceRoot":"","sources":["../../src/metro-config/getMetroConfigFromViteConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,MAAM,CAAA;AAalE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAkL/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,CAqIhF;AAED,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,cAAc,EACtB,kBAAkB,EAAE,kBAAkB,GACrC,OAAO,CAAC,mBAAmB,CAAC,CA2J9B"}
|
|
@@ -46,10 +46,8 @@ export type MetroPluginOptions = {
|
|
|
46
46
|
/**
|
|
47
47
|
* Overrides the main module name which is normally defined as the `main` field in `package.json`.
|
|
48
48
|
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* It can be used to change the entry point of the React Native app without the need of using
|
|
52
|
-
* the `main` field in `package.json`.
|
|
49
|
+
* Changes the React Native entry point without requiring a `main` field in
|
|
50
|
+
* `package.json`.
|
|
53
51
|
*/
|
|
54
52
|
mainModuleName?: string;
|
|
55
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metroPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/metroPlugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"metroPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/metroPlugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAWxC,OAAO,KAAK,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,OAAO,CAAA;AAOtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAIjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAEzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,sBAAsB,CAAC,EACnB,gBAAgB,GAChB,CAAC,CAAC,aAAa,EAAE,gBAAgB,KAAK,gBAAgB,CAAC,CAAA;IAC3D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,kDAAkD;IAClD,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B,oBAAoB,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,KAAK,gBAAgB,CAAA;IAC5E;;;;;;;;;;OAUG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC1B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,YAAY,CAuT1E"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 650 Industries (Expo). All rights reserved.
|
|
3
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
import type { BabelTransformerCacheKeyOptions } from 'metro-babel-transformer';
|
|
1
9
|
import type { TransformOptions } from './babel-core';
|
|
2
|
-
export type
|
|
10
|
+
export type MetroBabelCaller = TransformOptions['caller'] & {
|
|
3
11
|
supportsReactCompiler?: boolean;
|
|
4
12
|
isReactServer?: boolean;
|
|
5
13
|
isHMREnabled?: boolean;
|
|
@@ -16,4 +24,5 @@ export type ExpoBabelCaller = TransformOptions['caller'] & {
|
|
|
16
24
|
projectRoot: string;
|
|
17
25
|
oneViteMetroBabelConfig?: boolean;
|
|
18
26
|
};
|
|
27
|
+
export declare function getCacheKey(options?: BabelTransformerCacheKeyOptions): string;
|
|
19
28
|
//# sourceMappingURL=babel-transformer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babel-transformer.d.ts","sourceRoot":"","sources":["../../src/transformer/babel-transformer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"babel-transformer.d.ts","sourceRoot":"","sources":["../../src/transformer/babel-transformer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAGV,+BAA+B,EAChC,MAAM,yBAAyB,CAAA;AAMhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAMpD,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG;IAC1D,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC,CAAA;AAuND,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,+BAA+B,GAAG,MAAM,CA8C7E"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function substituteExpoVirtualEnvSource({ filename, src, projectRoot, dev, environment, }: {
|
|
2
|
+
filename: string;
|
|
3
|
+
src: string;
|
|
4
|
+
projectRoot: string;
|
|
5
|
+
dev: boolean | undefined;
|
|
6
|
+
environment: unknown;
|
|
7
|
+
}): string;
|
|
8
|
+
//# sourceMappingURL=expoVirtualEnv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expoVirtualEnv.d.ts","sourceRoot":"","sources":["../../src/transformer/expoVirtualEnv.ts"],"names":[],"mappings":"AA4CA,wBAAgB,8BAA8B,CAAC,EAC7C,QAAQ,EACR,GAAG,EACH,WAAW,EACX,GAAG,EACH,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,OAAO,GAAG,SAAS,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;CACrB,GAAG,MAAM,CA0DT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metroNativeWorker.d.ts","sourceRoot":"","sources":["../../src/transformer/metroNativeWorker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metroNativeWorker.d.ts","sourceRoot":"","sources":["../../src/transformer/metroNativeWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ export declare const debug: (((...args: any[]) => any) & {
|
|
|
4
4
|
/**
|
|
5
5
|
* Dynamically imports a module from the user's project root instead of this package's location.
|
|
6
6
|
*
|
|
7
|
-
* This avoids issues in monorepos or complex setups where
|
|
8
|
-
*
|
|
7
|
+
* This avoids issues in monorepos or complex setups where Metro might be
|
|
8
|
+
* installed in a nested `node_modules` directory.
|
|
9
9
|
*/
|
|
10
10
|
export declare function projectImport<T = any>(projectRoot: string, path: string): Promise<T>;
|
|
11
11
|
export declare function projectResolve(projectRoot: string, path: string): string;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all) __defProp(target, name, {
|
|
7
|
-
get: all[name],
|
|
8
|
-
enumerable: true
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
-
get: () => from[key],
|
|
15
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
-
var expoManifestRequestHandlerPlugin_exports = {};
|
|
22
|
-
__export(expoManifestRequestHandlerPlugin_exports, { expoManifestRequestHandlerPlugin: () => expoManifestRequestHandlerPlugin });
|
|
23
|
-
module.exports = __toCommonJS(expoManifestRequestHandlerPlugin_exports);
|
|
24
|
-
var import_node_path = require("node:path");
|
|
25
|
-
var import_node_tls = require("node:tls");
|
|
26
|
-
var import_projectImport = require("../utils/projectImport.cjs");
|
|
27
|
-
var import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName = require("../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs");
|
|
28
|
-
function expoManifestRequestHandlerPlugin(options) {
|
|
29
|
-
return {
|
|
30
|
-
name: "expo-manifest-request-handler",
|
|
31
|
-
configureServer(server) {
|
|
32
|
-
const projectRoot = (0, import_node_path.resolve)(server.config.root);
|
|
33
|
-
let ExpoGoManifestHandlerMiddleware;
|
|
34
|
-
const importPromise = (0, import_projectImport.projectImport)(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js").then((mod) => {
|
|
35
|
-
ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware;
|
|
36
|
-
});
|
|
37
|
-
server.middlewares.use(async (req, res, next) => {
|
|
38
|
-
if (!req.headers["expo-platform"]) {
|
|
39
|
-
return next();
|
|
40
|
-
}
|
|
41
|
-
if (!ExpoGoManifestHandlerMiddleware) {
|
|
42
|
-
await importPromise;
|
|
43
|
-
}
|
|
44
|
-
const protocol = req.socket instanceof import_node_tls.TLSSocket && req.socket.encrypted ? "https" : "http";
|
|
45
|
-
const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, { constructUrl: ({ scheme, hostname }) => {
|
|
46
|
-
const host = req.headers["x-forwarded-host"] || req.headers.host || hostname;
|
|
47
|
-
if (!scheme) {
|
|
48
|
-
return host;
|
|
49
|
-
}
|
|
50
|
-
return `${protocol || scheme}://${host}`;
|
|
51
|
-
} });
|
|
52
|
-
if (options?.mainModuleName) {
|
|
53
|
-
(0, import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName)(manifestHandlerMiddleware, options.mainModuleName);
|
|
54
|
-
}
|
|
55
|
-
manifestHandlerMiddleware.handleRequestAsync(req, res, next);
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all) __defProp(target, name, {
|
|
9
|
-
get: all[name],
|
|
10
|
-
enumerable: true
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
var __copyProps = (to, from, except, desc) => {
|
|
14
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
-
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
-
get: () => from[key],
|
|
17
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
return to;
|
|
21
|
-
};
|
|
22
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
|
-
var expoManifestRequestHandlerPlugin_exports = {};
|
|
24
|
-
__export(expoManifestRequestHandlerPlugin_exports, { expoManifestRequestHandlerPlugin: () => expoManifestRequestHandlerPlugin });
|
|
25
|
-
module.exports = __toCommonJS(expoManifestRequestHandlerPlugin_exports);
|
|
26
|
-
var import_path = require("path");
|
|
27
|
-
var import_tls = require("tls");
|
|
28
|
-
var import_projectImport = require("../utils/projectImport.native.js");
|
|
29
|
-
var import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName = require("../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js");
|
|
30
|
-
function expoManifestRequestHandlerPlugin(options) {
|
|
31
|
-
return {
|
|
32
|
-
name: "expo-manifest-request-handler",
|
|
33
|
-
configureServer(server) {
|
|
34
|
-
var projectRoot = (0, import_path.resolve)(server.config.root);
|
|
35
|
-
var ExpoGoManifestHandlerMiddleware;
|
|
36
|
-
var importPromise = (0, import_projectImport.projectImport)(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js").then(function(mod) {
|
|
37
|
-
ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware;
|
|
38
|
-
});
|
|
39
|
-
server.middlewares.use(async function(req, res, next) {
|
|
40
|
-
if (!req.headers["expo-platform"]) {
|
|
41
|
-
return next();
|
|
42
|
-
}
|
|
43
|
-
if (!ExpoGoManifestHandlerMiddleware) {
|
|
44
|
-
await importPromise;
|
|
45
|
-
}
|
|
46
|
-
var protocol = req.socket instanceof import_tls.TLSSocket && req.socket.encrypted ? "https" : "http";
|
|
47
|
-
var manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, { constructUrl: function(param) {
|
|
48
|
-
var { scheme, hostname } = param;
|
|
49
|
-
var host = req.headers["x-forwarded-host"] || req.headers.host || hostname;
|
|
50
|
-
if (!scheme) {
|
|
51
|
-
return host;
|
|
52
|
-
}
|
|
53
|
-
return `${protocol || scheme}://${host}`;
|
|
54
|
-
} });
|
|
55
|
-
if (options === null || options === void 0 ? void 0 : options.mainModuleName) {
|
|
56
|
-
(0, import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName)(manifestHandlerMiddleware, options.mainModuleName);
|
|
57
|
-
}
|
|
58
|
-
manifestHandlerMiddleware.handleRequestAsync(req, res, next);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all) __defProp(target, name, {
|
|
9
|
-
get: all[name],
|
|
10
|
-
enumerable: true
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
var __copyProps = (to, from, except, desc) => {
|
|
14
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
-
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
-
get: () => from[key],
|
|
17
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
return to;
|
|
21
|
-
};
|
|
22
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
|
-
var expoManifestRequestHandlerPlugin_exports = {};
|
|
24
|
-
__export(expoManifestRequestHandlerPlugin_exports, { expoManifestRequestHandlerPlugin: () => expoManifestRequestHandlerPlugin });
|
|
25
|
-
module.exports = __toCommonJS(expoManifestRequestHandlerPlugin_exports);
|
|
26
|
-
var import_path = require("path");
|
|
27
|
-
var import_tls = require("tls");
|
|
28
|
-
var import_projectImport = require("../utils/projectImport.native.js");
|
|
29
|
-
var import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName = require("../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js");
|
|
30
|
-
function expoManifestRequestHandlerPlugin(options) {
|
|
31
|
-
return {
|
|
32
|
-
name: "expo-manifest-request-handler",
|
|
33
|
-
configureServer(server) {
|
|
34
|
-
var projectRoot = (0, import_path.resolve)(server.config.root);
|
|
35
|
-
var ExpoGoManifestHandlerMiddleware;
|
|
36
|
-
var importPromise = (0, import_projectImport.projectImport)(projectRoot, "@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js").then(function(mod) {
|
|
37
|
-
ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware;
|
|
38
|
-
});
|
|
39
|
-
server.middlewares.use(async function(req, res, next) {
|
|
40
|
-
if (!req.headers["expo-platform"]) {
|
|
41
|
-
return next();
|
|
42
|
-
}
|
|
43
|
-
if (!ExpoGoManifestHandlerMiddleware) {
|
|
44
|
-
await importPromise;
|
|
45
|
-
}
|
|
46
|
-
var protocol = req.socket instanceof import_tls.TLSSocket && req.socket.encrypted ? "https" : "http";
|
|
47
|
-
var manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, { constructUrl: function(param) {
|
|
48
|
-
var { scheme, hostname } = param;
|
|
49
|
-
var host = req.headers["x-forwarded-host"] || req.headers.host || hostname;
|
|
50
|
-
if (!scheme) {
|
|
51
|
-
return host;
|
|
52
|
-
}
|
|
53
|
-
return `${protocol || scheme}://${host}`;
|
|
54
|
-
} });
|
|
55
|
-
if (options === null || options === void 0 ? void 0 : options.mainModuleName) {
|
|
56
|
-
(0, import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName)(manifestHandlerMiddleware, options.mainModuleName);
|
|
57
|
-
}
|
|
58
|
-
manifestHandlerMiddleware.handleRequestAsync(req, res, next);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
//# sourceMappingURL=expoManifestRequestHandlerPlugin.native.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"expoManifestRequestHandlerPlugin.native.js","names":[],"sources":["cjs/plugins/expoManifestRequestHandlerPlugin.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar expoManifestRequestHandlerPlugin_exports = {};\n__export(expoManifestRequestHandlerPlugin_exports, {\n expoManifestRequestHandlerPlugin: () => expoManifestRequestHandlerPlugin\n});\nmodule.exports = __toCommonJS(expoManifestRequestHandlerPlugin_exports);\nvar import_path = require(\"path\");\nvar import_tls = require(\"tls\");\nvar import_projectImport = require(\"../utils/projectImport\");\nvar import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName = require(\"../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName\");\nfunction expoManifestRequestHandlerPlugin(options) {\n return {\n name: \"expo-manifest-request-handler\",\n // configResolved(config) {\n // projectRoot = config.root\n // },\n configureServer(server) {\n var projectRoot = (0, import_path.resolve)(server.config.root);\n var ExpoGoManifestHandlerMiddleware;\n var importPromise = (0, import_projectImport.projectImport)(projectRoot, \"@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js\").then(function(mod) {\n ExpoGoManifestHandlerMiddleware = mod.default.ExpoGoManifestHandlerMiddleware;\n });\n server.middlewares.use(async function(req, res, next) {\n if (!req.headers[\"expo-platform\"]) {\n return next();\n }\n if (!ExpoGoManifestHandlerMiddleware) {\n await importPromise;\n }\n var protocol = req.socket instanceof import_tls.TLSSocket && req.socket.encrypted ? \"https\" : \"http\";\n var manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {\n constructUrl: function(param) {\n var { scheme, hostname } = param;\n var host = req.headers[\"x-forwarded-host\"] || req.headers.host || hostname;\n if (!scheme) {\n return host;\n }\n return `${protocol || scheme}://${host}`;\n }\n });\n if (options === null || options === void 0 ? void 0 : options.mainModuleName) {\n (0, import_patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName)(manifestHandlerMiddleware, options.mainModuleName);\n }\n manifestHandlerMiddleware.handleRequestAsync(req, res, next);\n });\n }\n };\n}\n//# sourceMappingURL=expoManifestRequestHandlerPlugin.js.map\n"],"mappings":";;;AACA,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,YAAY,QAAQ,QAAQ;CAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;EAAE,KAAK,IAAI;EAAO,YAAY;CAAK,CAAC;AAChE;AACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,2CAA2C,CAAC;AAChD,SAAS,0CAA0C,EACjD,wCAAwC,iCAC1C,CAAC;AACD,OAAO,UAAU,aAAa,wCAAwC;AACtE,IAAI,cAAc,QAAQ,MAAM;AAChC,IAAI,aAAa,QAAQ,KAAK;AAC9B,IAAI,uBAAuB,QAAQ,kCAAwB;AAC3D,IAAI,sEAAsE,QAAQ,iFAAuE;AACzJ,SAAS,iCAAiC,SAAS;CACjD,OAAO;EACL,MAAM;EAIN,gBAAgB,QAAQ;GACtB,IAAI,eAAe,GAAG,YAAY,QAAO,CAAE,OAAO,OAAO,IAAI;GAC7D,IAAI;GACJ,IAAI,iBAAiB,GAAG,qBAAqB,cAAa,CAAE,aAAa,gFAAgF,CAAC,CAAC,KAAK,SAAS,KAAK;IAC5K,kCAAkC,IAAI,QAAQ;GAChD,CAAC;GACD,OAAO,YAAY,IAAI,eAAe,KAAK,KAAK,MAAM;IACpD,IAAI,CAAC,IAAI,QAAQ,kBAAkB;KACjC,OAAO,KAAK;IACd;IACA,IAAI,CAAC,iCAAiC;KACpC,MAAM;IACR;IACA,IAAI,WAAW,IAAI,kBAAkB,WAAW,aAAa,IAAI,OAAO,YAAY,UAAU;IAC9F,IAAI,4BAA4B,IAAI,gCAAgC,aAAa,EAC/E,cAAc,SAAS,OAAO;KAC5B,IAAI,EAAE,QAAQ,aAAa;KAC3B,IAAI,OAAO,IAAI,QAAQ,uBAAuB,IAAI,QAAQ,QAAQ;KAClE,IAAI,CAAC,QAAQ;MACX,OAAO;KACT;KACA,OAAO,GAAG,YAAY,OAAO,KAAK;IACpC,EACF,CAAC;IACD,IAAI,YAAY,QAAQ,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,gBAAgB;KAC5E,CAAC,GAAG,oEAAoE,6DAA4D,CAAE,2BAA2B,QAAQ,cAAc;IACzL;IACA,0BAA0B,mBAAmB,KAAK,KAAK,IAAI;GAC7D,CAAC;EACH;CACF;AACF"}
|