@expo/cli 0.20.6 → 0.21.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 (28) hide show
  1. package/build/bin/cli +5 -3
  2. package/build/bin/cli.map +1 -1
  3. package/build/src/run/ios/appleDevice/AppleDevice.js +1 -0
  4. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  5. package/build/src/serve/index.js +91 -0
  6. package/build/src/serve/index.js.map +1 -0
  7. package/build/src/serve/serveAsync.js +218 -0
  8. package/build/src/serve/serveAsync.js.map +1 -0
  9. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +3 -15
  10. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  11. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +8 -0
  12. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  13. package/build/src/start/server/metro/MetroBundlerDevServer.js +22 -17
  14. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  15. package/build/src/start/server/metro/createServerComponentsMiddleware.js +22 -11
  16. package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
  17. package/build/src/start/server/metro/instantiateMetro.js +113 -8
  18. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  19. package/build/src/start/server/metro/metroErrors.js +1 -1
  20. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  21. package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
  22. package/build/src/start/server/metro/withMetroMultiPlatform.js +7 -2
  23. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  24. package/build/src/utils/env.js +5 -2
  25. package/build/src/utils/env.js.map +1 -1
  26. package/build/src/utils/telemetry/clients/FetchClient.js +1 -1
  27. package/build/src/utils/telemetry/utils/context.js +1 -1
  28. package/package.json +2 -2
@@ -59,7 +59,7 @@ function _interopRequireDefault(obj) {
59
59
  }
60
60
  const debug = require("debug")("expo:rsc");
61
61
  const getMetroServerRootMemo = (0, _fn.memoize)(_paths().getMetroServerRoot);
62
- function createServerComponentsMiddleware(projectRoot, { rscPath , instanceMetroOptions , ssrLoadModule , ssrLoadModuleArtifacts , useClientRouter }) {
62
+ function createServerComponentsMiddleware(projectRoot, { rscPath , instanceMetroOptions , ssrLoadModule , ssrLoadModuleArtifacts , useClientRouter , createModuleId }) {
63
63
  const routerModule = useClientRouter ? "expo-router/build/rsc/router/noopRouter" : "expo-router/build/rsc/router/expo-definedRouter";
64
64
  const rscMiddleware = (0, _rsc().getRscMiddleware)({
65
65
  config: {},
@@ -115,12 +115,11 @@ function createServerComponentsMiddleware(projectRoot, { rscPath , instanceMetro
115
115
  if (rscPathPrefix !== "/") {
116
116
  rscPathPrefix += "/";
117
117
  }
118
- async function exportServerActionsAsync({ platform , entryPoints }, files) {
118
+ async function exportServerActionsAsync({ platform , entryPoints , domRoot }, files) {
119
119
  const uniqueEntryPoints = [
120
120
  ...new Set(entryPoints)
121
121
  ];
122
122
  // TODO: Support multiple entry points in a single split server bundle...
123
- const serverRoot = getMetroServerRootMemo(projectRoot);
124
123
  const manifest = {};
125
124
  const nestedClientBoundaries = [];
126
125
  for (const entryPoint of uniqueEntryPoints){
@@ -131,7 +130,9 @@ function createServerComponentsMiddleware(projectRoot, { rscPath , instanceMetro
131
130
  // Ignore the metro runtime to avoid overwriting the original in the API route.
132
131
  modulesOnly: true,
133
132
  // Required
134
- runModule: true
133
+ runModule: true,
134
+ // Required to ensure assets load as client boundaries.
135
+ domRoot
135
136
  });
136
137
  const reactClientReferences = (ref = contents.artifacts.filter((a)=>a.type === "js")[0].metadata.reactClientReferences) == null ? void 0 : ref.map((ref)=>fileURLToFilePath(ref));
137
138
  if (reactClientReferences) {
@@ -141,7 +142,10 @@ function createServerComponentsMiddleware(projectRoot, { rscPath , instanceMetro
141
142
  if (contents.src.includes("The experimental Metro feature")) {
142
143
  throw new Error("Internal error: module runtime should not be included in server action bundles: " + entryPoint);
143
144
  }
144
- const relativeName = _path().default.relative(serverRoot, entryPoint);
145
+ const relativeName = createModuleId(entryPoint, {
146
+ platform,
147
+ environment: "react-server"
148
+ });
145
149
  const safeName = _path().default.basename(contents.artifacts.find((a)=>a.type === "js").filename);
146
150
  const outputName = `_expo/rsc/${platform}/${safeName}`;
147
151
  // While we're here, export the router for the server to dynamically render RSC.
@@ -151,7 +155,7 @@ function createServerComponentsMiddleware(projectRoot, { rscPath , instanceMetro
151
155
  });
152
156
  // Import relative to `dist/server/_expo/rsc/web/router.js`
153
157
  manifest[entryPoint] = [
154
- relativeName,
158
+ String(relativeName),
155
159
  outputName
156
160
  ];
157
161
  }
@@ -216,12 +220,16 @@ function createServerComponentsMiddleware(projectRoot, { rscPath , instanceMetro
216
220
  (0, _assert().default)(context.ssrManifest.has(relativeFilePath), `SSR manifest is missing client boundary "${relativeFilePath}"`);
217
221
  const chunk = context.ssrManifest.get(relativeFilePath);
218
222
  return {
219
- id: relativeFilePath,
223
+ id: String(createModuleId(file, {
224
+ platform: context.platform,
225
+ environment: "client"
226
+ })),
220
227
  chunks: chunk != null ? [
221
228
  chunk
222
229
  ] : []
223
230
  };
224
231
  }
232
+ const environment = isServer ? "react-server" : "client";
225
233
  const searchParams = (0, _metroOptions.createBundleUrlSearchParams)({
226
234
  mainModuleName: "",
227
235
  platform: context.platform,
@@ -238,7 +246,7 @@ function createServerComponentsMiddleware(projectRoot, { rscPath , instanceMetro
238
246
  bytecode: false,
239
247
  clientBoundaries: [],
240
248
  inlineSourceMap: false,
241
- environment: isServer ? "react-server" : "client",
249
+ environment,
242
250
  modulesOnly: true,
243
251
  runModule: false
244
252
  });
@@ -255,11 +263,14 @@ function createServerComponentsMiddleware(projectRoot, { rscPath , instanceMetro
255
263
  clientReferenceUrl.pathname += ".bundle";
256
264
  }
257
265
  // Return relative URLs to help Android fetch from wherever it was loaded from since it doesn't support localhost.
258
- const id = clientReferenceUrl.pathname + clientReferenceUrl.search;
266
+ const chunkName = clientReferenceUrl.pathname + clientReferenceUrl.search;
259
267
  return {
260
- id: relativeFilePath1,
268
+ id: String(createModuleId(filePath, {
269
+ platform: context.platform,
270
+ environment
271
+ })),
261
272
  chunks: [
262
- id
273
+ chunkName
263
274
  ]
264
275
  };
265
276
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/metro/createServerComponentsMiddleware.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { getMetroServerRoot } from '@expo/config/paths';\nimport { SerialAsset } from '@expo/metro-config/build/serializer/serializerAssets';\nimport { getRscMiddleware } from '@expo/server/build/middleware/rsc';\nimport assert from 'assert';\nimport path from 'path';\n\nimport { logMetroError } from './metroErrorInterface';\nimport { ExportAssetMap } from '../../../export/saveAssets';\nimport { stripAnsi } from '../../../utils/ansi';\nimport { memoize } from '../../../utils/fn';\nimport { getIpAddress } from '../../../utils/ip';\nimport { streamToStringAsync } from '../../../utils/stream';\nimport { createBuiltinAPIRequestHandler } from '../middleware/createBuiltinAPIRequestHandler';\nimport {\n createBundleUrlSearchParams,\n ExpoMetroOptions,\n getMetroOptionsFromUrl,\n} from '../middleware/metroOptions';\n\nconst debug = require('debug')('expo:rsc') as typeof console.log;\n\ntype SSRLoadModuleArtifactsFunc = (\n filePath: string,\n specificOptions?: Partial<ExpoMetroOptions>\n) => Promise<{ artifacts: SerialAsset[]; src: string }>;\n\ntype SSRLoadModuleFunc = <T extends Record<string, any>>(\n filePath: string,\n specificOptions?: Partial<ExpoMetroOptions>,\n extras?: { hot?: boolean }\n) => Promise<T>;\n\nconst getMetroServerRootMemo = memoize(getMetroServerRoot);\n\nexport function createServerComponentsMiddleware(\n projectRoot: string,\n {\n rscPath,\n instanceMetroOptions,\n ssrLoadModule,\n ssrLoadModuleArtifacts,\n useClientRouter,\n }: {\n rscPath: string;\n instanceMetroOptions: Partial<ExpoMetroOptions>;\n ssrLoadModule: SSRLoadModuleFunc;\n ssrLoadModuleArtifacts: SSRLoadModuleArtifactsFunc;\n useClientRouter: boolean;\n }\n) {\n const routerModule = useClientRouter\n ? 'expo-router/build/rsc/router/noopRouter'\n : 'expo-router/build/rsc/router/expo-definedRouter';\n\n const rscMiddleware = getRscMiddleware({\n config: {},\n // Disabled in development\n baseUrl: '',\n rscPath,\n onError: console.error,\n renderRsc: async (args) => {\n // In development we should add simulated versions of common production headers.\n if (args.headers['x-real-ip'] == null) {\n args.headers['x-real-ip'] = getIpAddress();\n }\n if (args.headers['x-forwarded-for'] == null) {\n args.headers['x-forwarded-for'] = args.headers['x-real-ip'];\n }\n if (args.headers['x-forwarded-proto'] == null) {\n args.headers['x-forwarded-proto'] = 'http';\n }\n\n // Dev server-only implementation.\n try {\n return await renderRscToReadableStream({\n ...args,\n headers: new Headers(args.headers),\n body: args.body!,\n });\n } catch (error: any) {\n // If you get a codeFrame error during SSR like when using a Class component in React Server Components, then this\n // will throw with:\n // {\n // rawObject: {\n // type: 'TransformError',\n // lineNumber: 0,\n // errors: [ [Object] ],\n // name: 'SyntaxError',\n // message: '...',\n // }\n // }\n\n // TODO: Revisit all error handling now that we do direct metro bundling...\n await logMetroError(projectRoot, { error });\n\n const sanitizedServerMessage = stripAnsi(error.message) ?? error.message;\n throw new Response(sanitizedServerMessage, {\n status: 500,\n headers: {\n 'Content-Type': 'text/plain',\n },\n });\n }\n },\n });\n\n let rscPathPrefix = rscPath;\n if (rscPathPrefix !== '/') {\n rscPathPrefix += '/';\n }\n\n async function exportServerActionsAsync(\n { platform, entryPoints }: { platform: string; entryPoints: string[] },\n files: ExportAssetMap\n ): Promise<{\n clientBoundaries: string[];\n manifest: Record<string, [string, string]>;\n }> {\n const uniqueEntryPoints = [...new Set(entryPoints)];\n // TODO: Support multiple entry points in a single split server bundle...\n const serverRoot = getMetroServerRootMemo(projectRoot);\n\n const manifest: Record<string, [string, string]> = {};\n const nestedClientBoundaries: string[] = [];\n for (const entryPoint of uniqueEntryPoints) {\n const contents = await ssrLoadModuleArtifacts(entryPoint, {\n environment: 'react-server',\n platform,\n // Ignore the metro runtime to avoid overwriting the original in the API route.\n modulesOnly: true,\n // Required\n runModule: true,\n });\n\n const reactClientReferences = contents.artifacts\n .filter((a) => a.type === 'js')[0]\n .metadata.reactClientReferences?.map((ref) => fileURLToFilePath(ref));\n\n if (reactClientReferences) {\n nestedClientBoundaries.push(...reactClientReferences!);\n }\n\n // Naive check to ensure the module runtime is not included in the server action bundle.\n if (contents.src.includes('The experimental Metro feature')) {\n throw new Error(\n 'Internal error: module runtime should not be included in server action bundles: ' +\n entryPoint\n );\n }\n const relativeName = path.relative(serverRoot, entryPoint);\n const safeName = path.basename(contents.artifacts.find((a) => a.type === 'js')!.filename!);\n\n const outputName = `_expo/rsc/${platform}/${safeName}`;\n // While we're here, export the router for the server to dynamically render RSC.\n files.set(outputName, {\n targetDomain: 'server',\n contents: wrapBundle(contents.src),\n });\n\n // Import relative to `dist/server/_expo/rsc/web/router.js`\n manifest[entryPoint] = [relativeName, outputName];\n }\n\n // Save the SSR manifest so we can perform more replacements in the server renderer and with server actions.\n files.set(`_expo/rsc/${platform}/action-manifest.js`, {\n targetDomain: 'server',\n contents: 'module.exports = ' + JSON.stringify(manifest),\n });\n\n return { manifest, clientBoundaries: nestedClientBoundaries };\n }\n\n async function getExpoRouterClientReferencesAsync(\n { platform, domRoot }: { platform: string; domRoot?: string },\n files: ExportAssetMap\n ): Promise<{\n reactClientReferences: string[];\n reactServerReferences: string[];\n cssModules: SerialAsset[];\n }> {\n const contents = await ssrLoadModuleArtifacts(routerModule, {\n environment: 'react-server',\n platform,\n modulesOnly: true,\n domRoot,\n });\n\n // Extract the global CSS modules that are imported from the router.\n // These will be injected in the head of the HTML document for the website.\n const cssModules = contents.artifacts.filter((a) => a.type.startsWith('css'));\n\n const reactServerReferences = contents.artifacts\n .filter((a) => a.type === 'js')[0]\n .metadata.reactServerReferences?.map((ref) => fileURLToFilePath(ref));\n\n if (!reactServerReferences) {\n throw new Error(\n 'Static server action references were not returned from the Metro SSR bundle for definedRouter'\n );\n }\n debug('React client boundaries:', reactServerReferences);\n\n const reactClientReferences = contents.artifacts\n .filter((a) => a.type === 'js')[0]\n .metadata.reactClientReferences?.map((ref) => fileURLToFilePath(ref));\n\n if (!reactClientReferences) {\n throw new Error(\n 'Static client references were not returned from the Metro SSR bundle for definedRouter'\n );\n }\n debug('React client boundaries:', reactClientReferences);\n\n // While we're here, export the router for the server to dynamically render RSC.\n files.set(`_expo/rsc/${platform}/router.js`, {\n targetDomain: 'server',\n contents: wrapBundle(contents.src),\n });\n\n return { reactClientReferences, reactServerReferences, cssModules };\n }\n\n async function getExpoRouterRscEntriesGetterAsync({ platform }: { platform: string }) {\n return ssrLoadModule<typeof import('expo-router/build/rsc/router/expo-definedRouter')>(\n routerModule,\n {\n environment: 'react-server',\n platform,\n },\n {\n hot: true,\n }\n );\n }\n\n function getResolveClientEntry(context: {\n platform: string;\n engine?: 'hermes' | null;\n ssrManifest?: Map<string, string>;\n }) {\n const serverRoot = getMetroServerRootMemo(projectRoot);\n\n const {\n mode,\n minify = false,\n isExporting,\n baseUrl,\n routerRoot,\n asyncRoutes,\n preserveEnvVars,\n reactCompiler,\n lazy,\n } = instanceMetroOptions;\n\n assert(\n isExporting != null &&\n baseUrl != null &&\n mode != null &&\n routerRoot != null &&\n asyncRoutes != null,\n `The server must be started. (isExporting: ${isExporting}, baseUrl: ${baseUrl}, mode: ${mode}, routerRoot: ${routerRoot}, asyncRoutes: ${asyncRoutes})`\n );\n\n return (file: string, isServer: boolean) => {\n if (isExporting) {\n assert(context.ssrManifest, 'SSR manifest must exist when exporting');\n const relativeFilePath = path.relative(serverRoot, file);\n\n assert(\n context.ssrManifest.has(relativeFilePath),\n `SSR manifest is missing client boundary \"${relativeFilePath}\"`\n );\n\n const chunk = context.ssrManifest.get(relativeFilePath);\n\n return {\n id: relativeFilePath,\n chunks: chunk != null ? [chunk] : [],\n };\n }\n\n const searchParams = createBundleUrlSearchParams({\n mainModuleName: '',\n platform: context.platform,\n mode,\n minify,\n lazy,\n preserveEnvVars,\n asyncRoutes,\n baseUrl,\n routerRoot,\n isExporting,\n reactCompiler: !!reactCompiler,\n engine: context.engine ?? undefined,\n bytecode: false,\n clientBoundaries: [],\n inlineSourceMap: false,\n environment: isServer ? 'react-server' : 'client',\n modulesOnly: true,\n runModule: false,\n });\n\n searchParams.set('resolver.clientboundary', String(true));\n\n const clientReferenceUrl = new URL('http://a');\n\n // TICKLE: Handshake 1\n searchParams.set('xRSC', '1');\n\n clientReferenceUrl.search = searchParams.toString();\n\n const filePath = file.startsWith('file://') ? fileURLToFilePath(file) : file;\n const relativeFilePath = path.relative(serverRoot, filePath);\n\n clientReferenceUrl.pathname = relativeFilePath;\n\n // Ensure url.pathname ends with '.bundle'\n if (!clientReferenceUrl.pathname.endsWith('.bundle')) {\n clientReferenceUrl.pathname += '.bundle';\n }\n\n // Return relative URLs to help Android fetch from wherever it was loaded from since it doesn't support localhost.\n const id = clientReferenceUrl.pathname + clientReferenceUrl.search;\n\n return { id: relativeFilePath, chunks: [id] };\n };\n }\n\n const rscRendererCache = new Map<string, typeof import('expo-router/build/rsc/rsc-renderer')>();\n\n async function getRscRendererAsync(platform: string) {\n // NOTE(EvanBacon): We memoize this now that there's a persistent server storage cache for Server Actions.\n if (rscRendererCache.has(platform)) {\n return rscRendererCache.get(platform)!;\n }\n\n // TODO: Extract CSS Modules / Assets from the bundler process\n const renderer = await ssrLoadModule<typeof import('expo-router/build/rsc/rsc-renderer')>(\n 'expo-router/build/rsc/rsc-renderer',\n {\n environment: 'react-server',\n platform,\n }\n );\n\n rscRendererCache.set(platform, renderer);\n return renderer;\n }\n\n const rscRenderContext = new Map<string, any>();\n\n function getRscRenderContext(platform: string) {\n // NOTE(EvanBacon): We memoize this now that there's a persistent server storage cache for Server Actions.\n if (rscRenderContext.has(platform)) {\n return rscRenderContext.get(platform)!;\n }\n\n const context = {};\n\n rscRenderContext.set(platform, context);\n return context;\n }\n\n async function renderRscToReadableStream(\n {\n input,\n headers,\n method,\n platform,\n body,\n engine,\n contentType,\n ssrManifest,\n decodedBody,\n }: {\n input: string;\n headers: Headers;\n method: 'POST' | 'GET';\n platform: string;\n body?: ReadableStream<Uint8Array>;\n engine?: 'hermes' | null;\n contentType?: string;\n ssrManifest?: Map<string, string>;\n decodedBody?: unknown;\n },\n isExporting: boolean | undefined = instanceMetroOptions.isExporting\n ) {\n assert(\n isExporting != null,\n 'The server must be started before calling renderRscToReadableStream.'\n );\n\n if (method === 'POST') {\n assert(body, 'Server request must be provided when method is POST (server actions)');\n }\n\n const context = getRscRenderContext(platform);\n\n context['__expo_requestHeaders'] = headers;\n\n const { renderRsc } = await getRscRendererAsync(platform);\n\n return renderRsc(\n {\n body,\n decodedBody,\n context,\n config: {},\n input,\n contentType,\n },\n {\n isExporting,\n entries: await getExpoRouterRscEntriesGetterAsync({ platform }),\n resolveClientEntry: getResolveClientEntry({ platform, engine, ssrManifest }),\n async loadServerModuleRsc(urlFragment) {\n const serverRoot = getMetroServerRootMemo(projectRoot);\n\n debug('[SSR] loadServerModuleRsc:', urlFragment);\n\n const options = getMetroOptionsFromUrl(urlFragment);\n\n return ssrLoadModule(path.join(serverRoot, options.mainModuleName), options);\n },\n }\n );\n }\n\n return {\n // Get the static client boundaries (no dead code elimination allowed) for the production export.\n getExpoRouterClientReferencesAsync,\n exportServerActionsAsync,\n\n async exportRoutesAsync(\n {\n platform,\n ssrManifest,\n }: {\n platform: string;\n ssrManifest: Map<string, string>;\n },\n files: ExportAssetMap\n ) {\n // TODO: When we add web SSR support, we need to extract CSS Modules / Assets from the bundler process to prevent FLOUC.\n const { getBuildConfig } = (await getExpoRouterRscEntriesGetterAsync({ platform })).default;\n\n // Get all the routes to render.\n const buildConfig = await getBuildConfig!(async () =>\n // TODO: Rework prefetching code to use Metro runtime.\n []\n );\n\n await Promise.all(\n Array.from(buildConfig).map(async ({ entries }) => {\n for (const { input, isStatic } of entries || []) {\n if (!isStatic) {\n debug('Skipping static export for route', { input });\n continue;\n }\n const destRscFile = path.join('_flight', platform, encodeInput(input));\n\n const pipe = await renderRscToReadableStream(\n {\n input,\n method: 'GET',\n platform,\n headers: new Headers(),\n ssrManifest,\n },\n true\n );\n\n const rsc = await streamToStringAsync(pipe);\n debug('RSC Payload', { platform, input, rsc });\n\n files.set(destRscFile, {\n contents: rsc,\n targetDomain: 'client',\n rscId: input,\n });\n }\n })\n );\n },\n\n middleware: createBuiltinAPIRequestHandler(\n // Match `/_flight/[platform]/[...path]`\n (req) => {\n return getFullUrl(req.url).pathname.startsWith(rscPathPrefix);\n },\n rscMiddleware\n ),\n onReloadRscEvent: () => {\n // NOTE: We cannot clear the renderer context because it would break the mounted context state.\n\n // Clear the render context to ensure that the next render is a fresh start.\n rscRenderContext.clear();\n },\n };\n}\n\nconst getFullUrl = (url: string) => {\n try {\n return new URL(url);\n } catch {\n return new URL(url, 'http://localhost:0');\n }\n};\n\nexport const fileURLToFilePath = (fileURL: string) => {\n if (!fileURL.startsWith('file://')) {\n throw new Error('Not a file URL');\n }\n return decodeURI(fileURL.slice('file://'.length));\n};\n\nconst encodeInput = (input: string) => {\n if (input === '') {\n return 'index.txt';\n }\n if (input === 'index') {\n throw new Error('Input should not be `index`');\n }\n if (input.startsWith('/')) {\n throw new Error('Input should not start with `/`');\n }\n if (input.endsWith('/')) {\n throw new Error('Input should not end with `/`');\n }\n return input + '.txt';\n};\n\nfunction wrapBundle(str: string) {\n // Skip the metro runtime so debugging is a bit easier.\n // Replace the __r() call with an export statement.\n // Use gm to apply to the last require line. This is needed when the bundle has side-effects.\n return str.replace(/^(__r\\(.*\\);)$/gm, 'module.exports = $1');\n}\n"],"names":["createServerComponentsMiddleware","fileURLToFilePath","debug","require","getMetroServerRootMemo","memoize","getMetroServerRoot","projectRoot","rscPath","instanceMetroOptions","ssrLoadModule","ssrLoadModuleArtifacts","useClientRouter","routerModule","rscMiddleware","getRscMiddleware","config","baseUrl","onError","console","error","renderRsc","args","headers","getIpAddress","renderRscToReadableStream","Headers","body","logMetroError","sanitizedServerMessage","stripAnsi","message","Response","status","rscPathPrefix","exportServerActionsAsync","platform","entryPoints","files","uniqueEntryPoints","Set","serverRoot","manifest","nestedClientBoundaries","entryPoint","contents","environment","modulesOnly","runModule","reactClientReferences","artifacts","filter","a","type","metadata","map","ref","push","src","includes","Error","relativeName","path","relative","safeName","basename","find","filename","outputName","set","targetDomain","wrapBundle","JSON","stringify","clientBoundaries","getExpoRouterClientReferencesAsync","domRoot","cssModules","startsWith","reactServerReferences","getExpoRouterRscEntriesGetterAsync","hot","getResolveClientEntry","context","mode","minify","isExporting","routerRoot","asyncRoutes","preserveEnvVars","reactCompiler","lazy","assert","file","isServer","ssrManifest","relativeFilePath","has","chunk","get","id","chunks","searchParams","createBundleUrlSearchParams","mainModuleName","engine","undefined","bytecode","inlineSourceMap","String","clientReferenceUrl","URL","search","toString","filePath","pathname","endsWith","rscRendererCache","Map","getRscRendererAsync","renderer","rscRenderContext","getRscRenderContext","input","method","contentType","decodedBody","entries","resolveClientEntry","loadServerModuleRsc","urlFragment","options","getMetroOptionsFromUrl","join","exportRoutesAsync","getBuildConfig","default","buildConfig","Promise","all","Array","from","isStatic","destRscFile","encodeInput","pipe","rsc","streamToStringAsync","rscId","middleware","createBuiltinAPIRequestHandler","req","getFullUrl","url","onReloadRscEvent","clear","fileURL","decodeURI","slice","length","str","replace"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/metro/createServerComponentsMiddleware.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { getMetroServerRoot } from '@expo/config/paths';\nimport { SerialAsset } from '@expo/metro-config/build/serializer/serializerAssets';\nimport { getRscMiddleware } from '@expo/server/build/middleware/rsc';\nimport assert from 'assert';\nimport path from 'path';\n\nimport { logMetroError } from './metroErrorInterface';\nimport { ExportAssetMap } from '../../../export/saveAssets';\nimport { stripAnsi } from '../../../utils/ansi';\nimport { memoize } from '../../../utils/fn';\nimport { getIpAddress } from '../../../utils/ip';\nimport { streamToStringAsync } from '../../../utils/stream';\nimport { createBuiltinAPIRequestHandler } from '../middleware/createBuiltinAPIRequestHandler';\nimport {\n createBundleUrlSearchParams,\n ExpoMetroOptions,\n getMetroOptionsFromUrl,\n} from '../middleware/metroOptions';\n\nconst debug = require('debug')('expo:rsc') as typeof console.log;\n\ntype SSRLoadModuleArtifactsFunc = (\n filePath: string,\n specificOptions?: Partial<ExpoMetroOptions>\n) => Promise<{ artifacts: SerialAsset[]; src: string }>;\n\ntype SSRLoadModuleFunc = <T extends Record<string, any>>(\n filePath: string,\n specificOptions?: Partial<ExpoMetroOptions>,\n extras?: { hot?: boolean }\n) => Promise<T>;\n\nconst getMetroServerRootMemo = memoize(getMetroServerRoot);\n\nexport function createServerComponentsMiddleware(\n projectRoot: string,\n {\n rscPath,\n instanceMetroOptions,\n ssrLoadModule,\n ssrLoadModuleArtifacts,\n useClientRouter,\n createModuleId,\n }: {\n rscPath: string;\n instanceMetroOptions: Partial<ExpoMetroOptions>;\n ssrLoadModule: SSRLoadModuleFunc;\n ssrLoadModuleArtifacts: SSRLoadModuleArtifactsFunc;\n useClientRouter: boolean;\n createModuleId: (\n filePath: string,\n context: { platform: string; environment: string }\n ) => string | number;\n }\n) {\n const routerModule = useClientRouter\n ? 'expo-router/build/rsc/router/noopRouter'\n : 'expo-router/build/rsc/router/expo-definedRouter';\n\n const rscMiddleware = getRscMiddleware({\n config: {},\n // Disabled in development\n baseUrl: '',\n rscPath,\n onError: console.error,\n renderRsc: async (args) => {\n // In development we should add simulated versions of common production headers.\n if (args.headers['x-real-ip'] == null) {\n args.headers['x-real-ip'] = getIpAddress();\n }\n if (args.headers['x-forwarded-for'] == null) {\n args.headers['x-forwarded-for'] = args.headers['x-real-ip'];\n }\n if (args.headers['x-forwarded-proto'] == null) {\n args.headers['x-forwarded-proto'] = 'http';\n }\n\n // Dev server-only implementation.\n try {\n return await renderRscToReadableStream({\n ...args,\n headers: new Headers(args.headers),\n body: args.body!,\n });\n } catch (error: any) {\n // If you get a codeFrame error during SSR like when using a Class component in React Server Components, then this\n // will throw with:\n // {\n // rawObject: {\n // type: 'TransformError',\n // lineNumber: 0,\n // errors: [ [Object] ],\n // name: 'SyntaxError',\n // message: '...',\n // }\n // }\n\n // TODO: Revisit all error handling now that we do direct metro bundling...\n await logMetroError(projectRoot, { error });\n\n const sanitizedServerMessage = stripAnsi(error.message) ?? error.message;\n throw new Response(sanitizedServerMessage, {\n status: 500,\n headers: {\n 'Content-Type': 'text/plain',\n },\n });\n }\n },\n });\n\n let rscPathPrefix = rscPath;\n if (rscPathPrefix !== '/') {\n rscPathPrefix += '/';\n }\n\n async function exportServerActionsAsync(\n {\n platform,\n entryPoints,\n domRoot,\n }: { platform: string; entryPoints: string[]; domRoot?: string },\n files: ExportAssetMap\n ): Promise<{\n clientBoundaries: string[];\n manifest: Record<string, [string, string]>;\n }> {\n const uniqueEntryPoints = [...new Set(entryPoints)];\n // TODO: Support multiple entry points in a single split server bundle...\n const manifest: Record<string, [string, string]> = {};\n const nestedClientBoundaries: string[] = [];\n\n for (const entryPoint of uniqueEntryPoints) {\n const contents = await ssrLoadModuleArtifacts(entryPoint, {\n environment: 'react-server',\n platform,\n // Ignore the metro runtime to avoid overwriting the original in the API route.\n modulesOnly: true,\n // Required\n runModule: true,\n // Required to ensure assets load as client boundaries.\n domRoot,\n });\n\n const reactClientReferences = contents.artifacts\n .filter((a) => a.type === 'js')[0]\n .metadata.reactClientReferences?.map((ref) => fileURLToFilePath(ref));\n\n if (reactClientReferences) {\n nestedClientBoundaries.push(...reactClientReferences!);\n }\n\n // Naive check to ensure the module runtime is not included in the server action bundle.\n if (contents.src.includes('The experimental Metro feature')) {\n throw new Error(\n 'Internal error: module runtime should not be included in server action bundles: ' +\n entryPoint\n );\n }\n\n const relativeName = createModuleId(entryPoint, {\n platform,\n environment: 'react-server',\n });\n const safeName = path.basename(contents.artifacts.find((a) => a.type === 'js')!.filename!);\n\n const outputName = `_expo/rsc/${platform}/${safeName}`;\n // While we're here, export the router for the server to dynamically render RSC.\n files.set(outputName, {\n targetDomain: 'server',\n contents: wrapBundle(contents.src),\n });\n\n // Import relative to `dist/server/_expo/rsc/web/router.js`\n manifest[entryPoint] = [String(relativeName), outputName];\n }\n\n // Save the SSR manifest so we can perform more replacements in the server renderer and with server actions.\n files.set(`_expo/rsc/${platform}/action-manifest.js`, {\n targetDomain: 'server',\n contents: 'module.exports = ' + JSON.stringify(manifest),\n });\n\n return { manifest, clientBoundaries: nestedClientBoundaries };\n }\n\n async function getExpoRouterClientReferencesAsync(\n { platform, domRoot }: { platform: string; domRoot?: string },\n files: ExportAssetMap\n ): Promise<{\n reactClientReferences: string[];\n reactServerReferences: string[];\n cssModules: SerialAsset[];\n }> {\n const contents = await ssrLoadModuleArtifacts(routerModule, {\n environment: 'react-server',\n platform,\n modulesOnly: true,\n domRoot,\n });\n\n // Extract the global CSS modules that are imported from the router.\n // These will be injected in the head of the HTML document for the website.\n const cssModules = contents.artifacts.filter((a) => a.type.startsWith('css'));\n\n const reactServerReferences = contents.artifacts\n .filter((a) => a.type === 'js')[0]\n .metadata.reactServerReferences?.map((ref) => fileURLToFilePath(ref));\n\n if (!reactServerReferences) {\n throw new Error(\n 'Static server action references were not returned from the Metro SSR bundle for definedRouter'\n );\n }\n debug('React client boundaries:', reactServerReferences);\n\n const reactClientReferences = contents.artifacts\n .filter((a) => a.type === 'js')[0]\n .metadata.reactClientReferences?.map((ref) => fileURLToFilePath(ref));\n\n if (!reactClientReferences) {\n throw new Error(\n 'Static client references were not returned from the Metro SSR bundle for definedRouter'\n );\n }\n debug('React client boundaries:', reactClientReferences);\n\n // While we're here, export the router for the server to dynamically render RSC.\n files.set(`_expo/rsc/${platform}/router.js`, {\n targetDomain: 'server',\n contents: wrapBundle(contents.src),\n });\n\n return { reactClientReferences, reactServerReferences, cssModules };\n }\n\n async function getExpoRouterRscEntriesGetterAsync({ platform }: { platform: string }) {\n return ssrLoadModule<typeof import('expo-router/build/rsc/router/expo-definedRouter')>(\n routerModule,\n {\n environment: 'react-server',\n platform,\n },\n {\n hot: true,\n }\n );\n }\n\n function getResolveClientEntry(context: {\n platform: string;\n engine?: 'hermes' | null;\n ssrManifest?: Map<string, string>;\n }): (\n file: string,\n isServer: boolean\n ) => {\n id: string;\n chunks: string[];\n } {\n const serverRoot = getMetroServerRootMemo(projectRoot);\n\n const {\n mode,\n minify = false,\n isExporting,\n baseUrl,\n routerRoot,\n asyncRoutes,\n preserveEnvVars,\n reactCompiler,\n lazy,\n } = instanceMetroOptions;\n\n assert(\n isExporting != null &&\n baseUrl != null &&\n mode != null &&\n routerRoot != null &&\n asyncRoutes != null,\n `The server must be started. (isExporting: ${isExporting}, baseUrl: ${baseUrl}, mode: ${mode}, routerRoot: ${routerRoot}, asyncRoutes: ${asyncRoutes})`\n );\n\n return (file: string, isServer: boolean) => {\n if (isExporting) {\n assert(context.ssrManifest, 'SSR manifest must exist when exporting');\n const relativeFilePath = path.relative(serverRoot, file);\n\n assert(\n context.ssrManifest.has(relativeFilePath),\n `SSR manifest is missing client boundary \"${relativeFilePath}\"`\n );\n\n const chunk = context.ssrManifest.get(relativeFilePath);\n\n return {\n id: String(createModuleId(file, { platform: context.platform, environment: 'client' })),\n chunks: chunk != null ? [chunk] : [],\n };\n }\n\n const environment = isServer ? 'react-server' : 'client';\n const searchParams = createBundleUrlSearchParams({\n mainModuleName: '',\n platform: context.platform,\n mode,\n minify,\n lazy,\n preserveEnvVars,\n asyncRoutes,\n baseUrl,\n routerRoot,\n isExporting,\n reactCompiler: !!reactCompiler,\n engine: context.engine ?? undefined,\n bytecode: false,\n clientBoundaries: [],\n inlineSourceMap: false,\n environment,\n modulesOnly: true,\n runModule: false,\n });\n\n searchParams.set('resolver.clientboundary', String(true));\n\n const clientReferenceUrl = new URL('http://a');\n\n // TICKLE: Handshake 1\n searchParams.set('xRSC', '1');\n\n clientReferenceUrl.search = searchParams.toString();\n\n const filePath = file.startsWith('file://') ? fileURLToFilePath(file) : file;\n\n const relativeFilePath = path.relative(serverRoot, filePath);\n\n clientReferenceUrl.pathname = relativeFilePath;\n\n // Ensure url.pathname ends with '.bundle'\n if (!clientReferenceUrl.pathname.endsWith('.bundle')) {\n clientReferenceUrl.pathname += '.bundle';\n }\n\n // Return relative URLs to help Android fetch from wherever it was loaded from since it doesn't support localhost.\n const chunkName = clientReferenceUrl.pathname + clientReferenceUrl.search;\n\n return {\n id: String(createModuleId(filePath, { platform: context.platform, environment })),\n chunks: [chunkName],\n };\n };\n }\n\n const rscRendererCache = new Map<string, typeof import('expo-router/build/rsc/rsc-renderer')>();\n\n async function getRscRendererAsync(platform: string) {\n // NOTE(EvanBacon): We memoize this now that there's a persistent server storage cache for Server Actions.\n if (rscRendererCache.has(platform)) {\n return rscRendererCache.get(platform)!;\n }\n\n // TODO: Extract CSS Modules / Assets from the bundler process\n const renderer = await ssrLoadModule<typeof import('expo-router/build/rsc/rsc-renderer')>(\n 'expo-router/build/rsc/rsc-renderer',\n {\n environment: 'react-server',\n platform,\n }\n );\n\n rscRendererCache.set(platform, renderer);\n return renderer;\n }\n\n const rscRenderContext = new Map<string, any>();\n\n function getRscRenderContext(platform: string) {\n // NOTE(EvanBacon): We memoize this now that there's a persistent server storage cache for Server Actions.\n if (rscRenderContext.has(platform)) {\n return rscRenderContext.get(platform)!;\n }\n\n const context = {};\n\n rscRenderContext.set(platform, context);\n return context;\n }\n\n async function renderRscToReadableStream(\n {\n input,\n headers,\n method,\n platform,\n body,\n engine,\n contentType,\n ssrManifest,\n decodedBody,\n }: {\n input: string;\n headers: Headers;\n method: 'POST' | 'GET';\n platform: string;\n body?: ReadableStream<Uint8Array>;\n engine?: 'hermes' | null;\n contentType?: string;\n ssrManifest?: Map<string, string>;\n decodedBody?: unknown;\n },\n isExporting: boolean | undefined = instanceMetroOptions.isExporting\n ) {\n assert(\n isExporting != null,\n 'The server must be started before calling renderRscToReadableStream.'\n );\n\n if (method === 'POST') {\n assert(body, 'Server request must be provided when method is POST (server actions)');\n }\n\n const context = getRscRenderContext(platform);\n\n context['__expo_requestHeaders'] = headers;\n\n const { renderRsc } = await getRscRendererAsync(platform);\n\n return renderRsc(\n {\n body,\n decodedBody,\n context,\n config: {},\n input,\n contentType,\n },\n {\n isExporting,\n entries: await getExpoRouterRscEntriesGetterAsync({ platform }),\n resolveClientEntry: getResolveClientEntry({ platform, engine, ssrManifest }),\n async loadServerModuleRsc(urlFragment) {\n const serverRoot = getMetroServerRootMemo(projectRoot);\n\n debug('[SSR] loadServerModuleRsc:', urlFragment);\n\n const options = getMetroOptionsFromUrl(urlFragment);\n\n return ssrLoadModule(path.join(serverRoot, options.mainModuleName), options);\n },\n }\n );\n }\n\n return {\n // Get the static client boundaries (no dead code elimination allowed) for the production export.\n getExpoRouterClientReferencesAsync,\n exportServerActionsAsync,\n\n async exportRoutesAsync(\n {\n platform,\n ssrManifest,\n }: {\n platform: string;\n ssrManifest: Map<string, string>;\n },\n files: ExportAssetMap\n ) {\n // TODO: When we add web SSR support, we need to extract CSS Modules / Assets from the bundler process to prevent FLOUC.\n const { getBuildConfig } = (await getExpoRouterRscEntriesGetterAsync({ platform })).default;\n\n // Get all the routes to render.\n const buildConfig = await getBuildConfig!(async () =>\n // TODO: Rework prefetching code to use Metro runtime.\n []\n );\n\n await Promise.all(\n Array.from(buildConfig).map(async ({ entries }) => {\n for (const { input, isStatic } of entries || []) {\n if (!isStatic) {\n debug('Skipping static export for route', { input });\n continue;\n }\n const destRscFile = path.join('_flight', platform, encodeInput(input));\n\n const pipe = await renderRscToReadableStream(\n {\n input,\n method: 'GET',\n platform,\n headers: new Headers(),\n ssrManifest,\n },\n true\n );\n\n const rsc = await streamToStringAsync(pipe);\n debug('RSC Payload', { platform, input, rsc });\n\n files.set(destRscFile, {\n contents: rsc,\n targetDomain: 'client',\n rscId: input,\n });\n }\n })\n );\n },\n\n middleware: createBuiltinAPIRequestHandler(\n // Match `/_flight/[platform]/[...path]`\n (req) => {\n return getFullUrl(req.url).pathname.startsWith(rscPathPrefix);\n },\n rscMiddleware\n ),\n onReloadRscEvent: () => {\n // NOTE: We cannot clear the renderer context because it would break the mounted context state.\n\n // Clear the render context to ensure that the next render is a fresh start.\n rscRenderContext.clear();\n },\n };\n}\n\nconst getFullUrl = (url: string) => {\n try {\n return new URL(url);\n } catch {\n return new URL(url, 'http://localhost:0');\n }\n};\n\nexport const fileURLToFilePath = (fileURL: string) => {\n if (!fileURL.startsWith('file://')) {\n throw new Error('Not a file URL');\n }\n return decodeURI(fileURL.slice('file://'.length));\n};\n\nconst encodeInput = (input: string) => {\n if (input === '') {\n return 'index.txt';\n }\n if (input === 'index') {\n throw new Error('Input should not be `index`');\n }\n if (input.startsWith('/')) {\n throw new Error('Input should not start with `/`');\n }\n if (input.endsWith('/')) {\n throw new Error('Input should not end with `/`');\n }\n return input + '.txt';\n};\n\nfunction wrapBundle(str: string) {\n // Skip the metro runtime so debugging is a bit easier.\n // Replace the __r() call with an export statement.\n // Use gm to apply to the last require line. This is needed when the bundle has side-effects.\n return str.replace(/^(__r\\(.*\\);)$/gm, 'module.exports = $1');\n}\n"],"names":["createServerComponentsMiddleware","fileURLToFilePath","debug","require","getMetroServerRootMemo","memoize","getMetroServerRoot","projectRoot","rscPath","instanceMetroOptions","ssrLoadModule","ssrLoadModuleArtifacts","useClientRouter","createModuleId","routerModule","rscMiddleware","getRscMiddleware","config","baseUrl","onError","console","error","renderRsc","args","headers","getIpAddress","renderRscToReadableStream","Headers","body","logMetroError","sanitizedServerMessage","stripAnsi","message","Response","status","rscPathPrefix","exportServerActionsAsync","platform","entryPoints","domRoot","files","uniqueEntryPoints","Set","manifest","nestedClientBoundaries","entryPoint","contents","environment","modulesOnly","runModule","reactClientReferences","artifacts","filter","a","type","metadata","map","ref","push","src","includes","Error","relativeName","safeName","path","basename","find","filename","outputName","set","targetDomain","wrapBundle","String","JSON","stringify","clientBoundaries","getExpoRouterClientReferencesAsync","cssModules","startsWith","reactServerReferences","getExpoRouterRscEntriesGetterAsync","hot","getResolveClientEntry","context","serverRoot","mode","minify","isExporting","routerRoot","asyncRoutes","preserveEnvVars","reactCompiler","lazy","assert","file","isServer","ssrManifest","relativeFilePath","relative","has","chunk","get","id","chunks","searchParams","createBundleUrlSearchParams","mainModuleName","engine","undefined","bytecode","inlineSourceMap","clientReferenceUrl","URL","search","toString","filePath","pathname","endsWith","chunkName","rscRendererCache","Map","getRscRendererAsync","renderer","rscRenderContext","getRscRenderContext","input","method","contentType","decodedBody","entries","resolveClientEntry","loadServerModuleRsc","urlFragment","options","getMetroOptionsFromUrl","join","exportRoutesAsync","getBuildConfig","default","buildConfig","Promise","all","Array","from","isStatic","destRscFile","encodeInput","pipe","rsc","streamToStringAsync","rscId","middleware","createBuiltinAPIRequestHandler","req","getFullUrl","url","onReloadRscEvent","clear","fileURL","decodeURI","slice","length","str","replace"],"mappings":"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"}
@@ -41,6 +41,27 @@ function _chalk() {
41
41
  };
42
42
  return data;
43
43
  }
44
+ function _hmrJSBundle() {
45
+ const data = /*#__PURE__*/ _interopRequireDefault(require("metro/src/DeltaBundler/Serializers/hmrJSBundle"));
46
+ _hmrJSBundle = function() {
47
+ return data;
48
+ };
49
+ return data;
50
+ }
51
+ function _revisionNotFoundError() {
52
+ const data = /*#__PURE__*/ _interopRequireDefault(require("metro/src/IncrementalBundler/RevisionNotFoundError"));
53
+ _revisionNotFoundError = function() {
54
+ return data;
55
+ };
56
+ return data;
57
+ }
58
+ function _formatBundlingError() {
59
+ const data = /*#__PURE__*/ _interopRequireDefault(require("metro/src/lib/formatBundlingError"));
60
+ _formatBundlingError = function() {
61
+ return data;
62
+ };
63
+ return data;
64
+ }
44
65
  function _metroConfig1() {
45
66
  const data = require("metro-config");
46
67
  _metroConfig1 = function() {
@@ -101,12 +122,12 @@ const terminal = new LogRespectingTerminal(process.stdout);
101
122
  async function loadMetroConfigAsync(projectRoot, options, { exp , isExporting , getMetroBundler }) {
102
123
  var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7;
103
124
  let reportEvent;
104
- const serverActionsEnabled = ((ref = exp.experiments) == null ? void 0 : ref.reactServerActions) ?? _env.env.EXPO_UNSTABLE_SERVER_ACTIONS;
125
+ const serverActionsEnabled = ((ref = exp.experiments) == null ? void 0 : ref.reactServerFunctions) ?? _env.env.EXPO_UNSTABLE_SERVER_FUNCTIONS;
105
126
  if (serverActionsEnabled) {
106
- process.env.EXPO_UNSTABLE_SERVER_ACTIONS = "1";
127
+ process.env.EXPO_UNSTABLE_SERVER_FUNCTIONS = "1";
107
128
  }
108
129
  // NOTE: Enable all the experimental Metro flags when RSC is enabled.
109
- if (((ref1 = exp.experiments) == null ? void 0 : ref1.reactServerComponents) || serverActionsEnabled) {
130
+ if (((ref1 = exp.experiments) == null ? void 0 : ref1.reactServerComponentRoutes) || serverActionsEnabled) {
110
131
  process.env.EXPO_USE_METRO_REQUIRE = "1";
111
132
  process.env.EXPO_USE_FAST_RESOLVER = "1";
112
133
  }
@@ -155,9 +176,9 @@ async function loadMetroConfigAsync(projectRoot, options, { exp , isExporting ,
155
176
  }
156
177
  if (serverActionsEnabled) {
157
178
  var ref9;
158
- _log.Log.warn(`Experimental React Server Actions are enabled. Production exports are not supported yet.`);
159
- if (!((ref9 = exp.experiments) == null ? void 0 : ref9.reactServerComponents)) {
160
- _log.Log.warn(`- React Server Components are NOT enabled. Routes will render in client-only mode.`);
179
+ _log.Log.warn(`Experimental React Server Functions are enabled. Production exports are not supported yet.`);
180
+ if (!((ref9 = exp.experiments) == null ? void 0 : ref9.reactServerComponentRoutes)) {
181
+ _log.Log.warn(`- React Server Component routes are NOT enabled. Routes will render in client mode.`);
161
182
  }
162
183
  }
163
184
  config = await (0, _withMetroMultiPlatform.withMetroMultiPlatformAsync)(projectRoot, {
@@ -167,9 +188,9 @@ async function loadMetroConfigAsync(projectRoot, options, { exp , isExporting ,
167
188
  isTsconfigPathsEnabled: ((ref4 = exp.experiments) == null ? void 0 : ref4.tsconfigPaths) ?? true,
168
189
  isFastResolverEnabled: _env.env.EXPO_USE_FAST_RESOLVER,
169
190
  isExporting,
170
- isReactCanaryEnabled: (((ref5 = exp.experiments) == null ? void 0 : ref5.reactServerComponents) || serverActionsEnabled || ((ref6 = exp.experiments) == null ? void 0 : ref6.reactCanary)) ?? false,
191
+ isReactCanaryEnabled: (((ref5 = exp.experiments) == null ? void 0 : ref5.reactServerComponentRoutes) || serverActionsEnabled || ((ref6 = exp.experiments) == null ? void 0 : ref6.reactCanary)) ?? false,
171
192
  isNamedRequiresEnabled: _env.env.EXPO_USE_METRO_REQUIRE,
172
- isReactServerComponentsEnabled: !!((ref7 = exp.experiments) == null ? void 0 : ref7.reactServerComponents),
193
+ isReactServerComponentsEnabled: !!((ref7 = exp.experiments) == null ? void 0 : ref7.reactServerComponentRoutes),
173
194
  getMetroBundler
174
195
  });
175
196
  return {
@@ -243,6 +264,90 @@ async function instantiateMetroAsync(metroBundler, options, { isExporting , exp
243
264
  }), fileBuffer);
244
265
  };
245
266
  setEventReporter(eventsSocket.reportMetroEvent);
267
+ // This function ensures that modules in source maps are sorted in the same
268
+ // order as in a plain JS bundle.
269
+ metro._getSortedModules = function(graph) {
270
+ var ref;
271
+ const modules = [
272
+ ...graph.dependencies.values()
273
+ ];
274
+ const ctx = {
275
+ platform: graph.transformOptions.platform,
276
+ environment: (ref = graph.transformOptions.customTransformOptions) == null ? void 0 : ref.environment
277
+ };
278
+ // Assign IDs to modules in a consistent order
279
+ for (const module of modules){
280
+ // @ts-expect-error
281
+ this._createModuleId(module.path, ctx);
282
+ }
283
+ // Sort by IDs
284
+ return modules.sort(// @ts-expect-error
285
+ (a, b)=>this._createModuleId(a.path, ctx) - this._createModuleId(b.path, ctx));
286
+ };
287
+ if (hmrServer) {
288
+ // Patch HMR Server to send more info to the `_createModuleId` function for deterministic module IDs.
289
+ hmrServer._prepareMessage = async function(group, options, changeEvent) {
290
+ // Fork of https://github.com/facebook/metro/blob/3b3e0aaf725cfa6907bf2c8b5fbc0da352d29efe/packages/metro/src/HmrServer.js#L327-L393
291
+ // with patch for `_createModuleId`.
292
+ const logger = !options.isInitialUpdate ? changeEvent == null ? void 0 : changeEvent.logger : null;
293
+ try {
294
+ var ref;
295
+ const revPromise = this._bundler.getRevision(group.revisionId);
296
+ if (!revPromise) {
297
+ return {
298
+ type: "error",
299
+ body: (0, _formatBundlingError().default)(new (_revisionNotFoundError()).default(group.revisionId))
300
+ };
301
+ }
302
+ logger == null ? void 0 : logger.point("updateGraph_start");
303
+ const { revision , delta } = await this._bundler.updateGraph(await revPromise, false);
304
+ logger == null ? void 0 : logger.point("updateGraph_end");
305
+ this._clientGroups.delete(group.revisionId);
306
+ group.revisionId = revision.id;
307
+ for (const client of group.clients){
308
+ client.revisionIds = client.revisionIds.filter((revisionId)=>revisionId !== group.revisionId);
309
+ client.revisionIds.push(revision.id);
310
+ }
311
+ this._clientGroups.set(group.revisionId, group);
312
+ logger == null ? void 0 : logger.point("serialize_start");
313
+ // NOTE(EvanBacon): This is the patch
314
+ const moduleIdContext = {
315
+ platform: revision.graph.transformOptions.platform,
316
+ environment: (ref = revision.graph.transformOptions.customTransformOptions) == null ? void 0 : ref.environment
317
+ };
318
+ const hmrUpdate = (0, _hmrJSBundle().default)(delta, revision.graph, {
319
+ clientUrl: group.clientUrl,
320
+ // NOTE(EvanBacon): This is also the patch
321
+ createModuleId: (moduleId)=>{
322
+ // @ts-expect-error
323
+ return this._createModuleId(moduleId, moduleIdContext);
324
+ },
325
+ includeAsyncPaths: group.graphOptions.lazy,
326
+ projectRoot: this._config.projectRoot,
327
+ serverRoot: this._config.server.unstable_serverRoot ?? this._config.projectRoot
328
+ });
329
+ logger == null ? void 0 : logger.point("serialize_end");
330
+ return {
331
+ type: "update",
332
+ body: {
333
+ revisionId: revision.id,
334
+ isInitialUpdate: options.isInitialUpdate,
335
+ ...hmrUpdate
336
+ }
337
+ };
338
+ } catch (error) {
339
+ const formattedError = (0, _formatBundlingError().default)(error);
340
+ this._config.reporter.update({
341
+ type: "bundling_error",
342
+ error
343
+ });
344
+ return {
345
+ type: "error",
346
+ body: formattedError
347
+ };
348
+ }
349
+ };
350
+ }
246
351
  return {
247
352
  metro,
248
353
  hmrServer,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/metro/instantiateMetro.ts"],"sourcesContent":["import { ExpoConfig, getConfig } from '@expo/config';\nimport { getMetroServerRoot } from '@expo/config/paths';\nimport { getDefaultConfig, LoadOptions } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport http from 'http';\nimport type Metro from 'metro';\nimport Bundler from 'metro/src/Bundler';\nimport type { TransformOptions } from 'metro/src/DeltaBundler/Worker';\nimport MetroHmrServer from 'metro/src/HmrServer';\nimport { loadConfig, resolveConfig, ConfigT } from 'metro-config';\nimport { Terminal } from 'metro-core';\nimport util from 'node:util';\n\nimport { createDevToolsPluginWebsocketEndpoint } from './DevToolsPluginWebsocketEndpoint';\nimport { MetroBundlerDevServer } from './MetroBundlerDevServer';\nimport { MetroTerminalReporter } from './MetroTerminalReporter';\nimport { attachAtlasAsync } from './debugging/attachAtlas';\nimport { createDebugMiddleware } from './debugging/createDebugMiddleware';\nimport { createMetroMiddleware } from './dev-server/createMetroMiddleware';\nimport { runServer } from './runServer-fork';\nimport { withMetroMultiPlatformAsync } from './withMetroMultiPlatform';\nimport { Log } from '../../../log';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { createCorsMiddleware } from '../middleware/CorsMiddleware';\nimport { createJsInspectorMiddleware } from '../middleware/inspector/createJsInspectorMiddleware';\nimport { prependMiddleware } from '../middleware/mutations';\nimport { getPlatformBundlers } from '../platformBundlers';\n\n// From expo/dev-server but with ability to use custom logger.\ntype MessageSocket = {\n broadcast: (method: string, params?: Record<string, any> | undefined) => void;\n};\n\n// Wrap terminal and polyfill console.log so we can log during bundling without breaking the indicator.\nclass LogRespectingTerminal extends Terminal {\n constructor(stream: import('node:net').Socket | import('node:stream').Writable) {\n super(stream);\n\n const sendLog = (...args: any[]) => {\n this._logLines.push(\n // format args like console.log\n util.format(...args)\n );\n this._scheduleUpdate();\n\n // Flush the logs to the terminal immediately so logs at the end of the process are not lost.\n this.flush();\n };\n\n console.log = sendLog;\n console.info = sendLog;\n }\n}\n\n// Share one instance of Terminal for all instances of Metro.\nconst terminal = new LogRespectingTerminal(process.stdout);\n\nexport async function loadMetroConfigAsync(\n projectRoot: string,\n options: LoadOptions,\n {\n exp,\n isExporting,\n getMetroBundler,\n }: { exp: ExpoConfig; isExporting: boolean; getMetroBundler: () => Bundler }\n) {\n let reportEvent: ((event: any) => void) | undefined;\n\n const serverActionsEnabled =\n exp.experiments?.reactServerActions ?? env.EXPO_UNSTABLE_SERVER_ACTIONS;\n\n if (serverActionsEnabled) {\n process.env.EXPO_UNSTABLE_SERVER_ACTIONS = '1';\n }\n\n // NOTE: Enable all the experimental Metro flags when RSC is enabled.\n if (exp.experiments?.reactServerComponents || serverActionsEnabled) {\n process.env.EXPO_USE_METRO_REQUIRE = '1';\n process.env.EXPO_USE_FAST_RESOLVER = '1';\n }\n\n const serverRoot = getMetroServerRoot(projectRoot);\n const terminalReporter = new MetroTerminalReporter(serverRoot, terminal);\n\n const hasConfig = await resolveConfig(options.config, projectRoot);\n let config: ConfigT = {\n ...(await loadConfig(\n { cwd: projectRoot, projectRoot, ...options },\n // If the project does not have a metro.config.js, then we use the default config.\n hasConfig.isEmpty ? getDefaultConfig(projectRoot) : undefined\n )),\n reporter: {\n update(event: any) {\n terminalReporter.update(event);\n if (reportEvent) {\n reportEvent(event);\n }\n },\n },\n };\n\n // @ts-expect-error: Set the global require cycle ignore patterns for SSR bundles. This won't work with custom global prefixes, but we don't use those.\n globalThis.__requireCycleIgnorePatterns = config.resolver?.requireCycleIgnorePatterns;\n\n if (isExporting) {\n // This token will be used in the asset plugin to ensure the path is correct for writing locally.\n // @ts-expect-error: typed as readonly.\n config.transformer.publicPath = `/assets?export_path=${\n (exp.experiments?.baseUrl ?? '') + '/assets'\n }`;\n } else {\n // @ts-expect-error: typed as readonly\n config.transformer.publicPath = '/assets/?unstable_path=.';\n }\n\n const platformBundlers = getPlatformBundlers(projectRoot, exp);\n\n if (exp.experiments?.reactCompiler) {\n Log.warn(`Experimental React Compiler is enabled.`);\n }\n\n if (env.EXPO_UNSTABLE_TREE_SHAKING && !env.EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH) {\n throw new CommandError(\n 'EXPO_UNSTABLE_TREE_SHAKING requires EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH to be enabled.'\n );\n }\n\n if (env.EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH) {\n Log.warn(`Experimental bundle optimization is enabled.`);\n }\n if (env.EXPO_UNSTABLE_TREE_SHAKING) {\n Log.warn(`Experimental tree shaking is enabled.`);\n }\n\n if (serverActionsEnabled) {\n Log.warn(\n `Experimental React Server Actions are enabled. Production exports are not supported yet.`\n );\n if (!exp.experiments?.reactServerComponents) {\n Log.warn(\n `- React Server Components are NOT enabled. Routes will render in client-only mode.`\n );\n }\n }\n\n config = await withMetroMultiPlatformAsync(projectRoot, {\n config,\n exp,\n platformBundlers,\n isTsconfigPathsEnabled: exp.experiments?.tsconfigPaths ?? true,\n isFastResolverEnabled: env.EXPO_USE_FAST_RESOLVER,\n isExporting,\n isReactCanaryEnabled:\n (exp.experiments?.reactServerComponents ||\n serverActionsEnabled ||\n exp.experiments?.reactCanary) ??\n false,\n isNamedRequiresEnabled: env.EXPO_USE_METRO_REQUIRE,\n isReactServerComponentsEnabled: !!exp.experiments?.reactServerComponents,\n getMetroBundler,\n });\n\n return {\n config,\n setEventReporter: (logger: (event: any) => void) => (reportEvent = logger),\n reporter: terminalReporter,\n };\n}\n\n/** The most generic possible setup for Metro bundler. */\nexport async function instantiateMetroAsync(\n metroBundler: MetroBundlerDevServer,\n options: Omit<LoadOptions, 'logger'>,\n {\n isExporting,\n exp = getConfig(metroBundler.projectRoot, {\n skipSDKVersionRequirement: true,\n }).exp,\n }: { isExporting: boolean; exp?: ExpoConfig }\n): Promise<{\n metro: Metro.Server;\n hmrServer: MetroHmrServer | null;\n server: http.Server;\n middleware: any;\n messageSocket: MessageSocket;\n}> {\n const projectRoot = metroBundler.projectRoot;\n\n const { config: metroConfig, setEventReporter } = await loadMetroConfigAsync(\n projectRoot,\n options,\n {\n exp,\n isExporting,\n getMetroBundler() {\n return metro.getBundler().getBundler();\n },\n }\n );\n\n // Create the core middleware stack for Metro, including websocket listeners\n const { middleware, messagesSocket, eventsSocket, websocketEndpoints } =\n createMetroMiddleware(metroConfig);\n\n if (!isExporting) {\n // Enable correct CORS headers for Expo Router features\n prependMiddleware(middleware, createCorsMiddleware(exp));\n\n // Enable debug middleware for CDP-related debugging\n const { debugMiddleware, debugWebsocketEndpoints } = createDebugMiddleware(metroBundler);\n Object.assign(websocketEndpoints, debugWebsocketEndpoints);\n middleware.use(debugMiddleware);\n middleware.use('/_expo/debugger', createJsInspectorMiddleware());\n\n // TODO(cedric): `enhanceMiddleware` is deprecated, but is currently used to unify the middleware stacks\n // See: https://github.com/facebook/metro/commit/22e85fde85ec454792a1b70eba4253747a2587a9\n // See: https://github.com/facebook/metro/commit/d0d554381f119bb80ab09dbd6a1d310b54737e52\n const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;\n // @ts-expect-error: can't mutate readonly config\n metroConfig.server.enhanceMiddleware = (metroMiddleware: any, server: Metro.Server) => {\n if (customEnhanceMiddleware) {\n metroMiddleware = customEnhanceMiddleware(metroMiddleware, server);\n }\n return middleware.use(metroMiddleware);\n };\n }\n\n // Attach Expo Atlas if enabled\n await attachAtlasAsync({\n isExporting,\n exp,\n projectRoot,\n middleware,\n metroConfig,\n // NOTE(cedric): reset the Atlas file once, and reuse it for static exports\n resetAtlasFile: isExporting,\n });\n\n const { server, hmrServer, metro } = await runServer(\n metroBundler,\n metroConfig,\n {\n websocketEndpoints: {\n ...websocketEndpoints,\n ...createDevToolsPluginWebsocketEndpoint(),\n },\n watch: !isExporting && isWatchEnabled(),\n },\n {\n mockServer: isExporting,\n }\n );\n\n // Patch transform file to remove inconvenient customTransformOptions which are only used in single well-known files.\n const originalTransformFile = metro\n .getBundler()\n .getBundler()\n .transformFile.bind(metro.getBundler().getBundler());\n\n metro.getBundler().getBundler().transformFile = async function (\n filePath: string,\n transformOptions: TransformOptions,\n fileBuffer?: Buffer\n ) {\n return originalTransformFile(\n filePath,\n pruneCustomTransformOptions(\n filePath,\n // Clone the options so we don't mutate the original.\n {\n ...transformOptions,\n customTransformOptions: {\n __proto__: null,\n ...transformOptions.customTransformOptions,\n },\n }\n ),\n fileBuffer\n );\n };\n\n setEventReporter(eventsSocket.reportMetroEvent);\n\n return {\n metro,\n hmrServer,\n server,\n middleware,\n messageSocket: messagesSocket,\n };\n}\n\n// TODO: Fork the entire transform function so we can simply regex the file contents for keywords instead.\nfunction pruneCustomTransformOptions(\n filePath: string,\n transformOptions: TransformOptions\n): TransformOptions {\n if (\n transformOptions.customTransformOptions?.dom &&\n // The only generated file that needs the dom root is `expo/dom/entry.js`\n !filePath.match(/expo\\/dom\\/entry\\.js$/)\n ) {\n // Clear the dom root option if we aren't transforming the magic entry file, this ensures\n // that cached artifacts from other DOM component bundles can be reused.\n transformOptions.customTransformOptions.dom = 'true';\n }\n\n if (\n transformOptions.customTransformOptions?.routerRoot &&\n // The router root is used all over expo-router (`process.env.EXPO_ROUTER_ABS_APP_ROOT`, `process.env.EXPO_ROUTER_APP_ROOT`) so we'll just ignore the entire package.\n !(filePath.match(/\\/expo-router\\/_ctx/) || filePath.match(/\\/expo-router\\/build\\//))\n ) {\n // Set to the default value.\n transformOptions.customTransformOptions.routerRoot = 'app';\n }\n if (\n transformOptions.customTransformOptions?.asyncRoutes &&\n // The async routes settings are also used in `expo-router/_ctx.ios.js` (and other platform variants) via `process.env.EXPO_ROUTER_IMPORT_MODE`\n !(filePath.match(/\\/expo-router\\/_ctx/) || filePath.match(/\\/expo-router\\/build\\//))\n ) {\n delete transformOptions.customTransformOptions.asyncRoutes;\n }\n\n if (\n transformOptions.customTransformOptions?.clientBoundaries &&\n // The client boundaries are only used in `@expo/metro-runtime/src/virtual.js` for production RSC exports.\n !filePath.match(/\\/@expo\\/metro-runtime\\/rsc\\/virtual\\.js$/)\n ) {\n delete transformOptions.customTransformOptions.clientBoundaries;\n }\n\n return transformOptions;\n}\n\n/**\n * Simplify and communicate if Metro is running without watching file updates,.\n * Exposed for testing.\n */\nexport function isWatchEnabled() {\n if (env.CI) {\n Log.log(\n chalk`Metro is running in CI mode, reloads are disabled. Remove {bold CI=true} to enable watch mode.`\n );\n }\n\n return !env.CI;\n}\n"],"names":["loadMetroConfigAsync","instantiateMetroAsync","isWatchEnabled","LogRespectingTerminal","Terminal","constructor","stream","sendLog","args","_logLines","push","util","format","_scheduleUpdate","flush","console","log","info","terminal","process","stdout","projectRoot","options","exp","isExporting","getMetroBundler","config","reportEvent","serverActionsEnabled","experiments","reactServerActions","env","EXPO_UNSTABLE_SERVER_ACTIONS","reactServerComponents","EXPO_USE_METRO_REQUIRE","EXPO_USE_FAST_RESOLVER","serverRoot","getMetroServerRoot","terminalReporter","MetroTerminalReporter","hasConfig","resolveConfig","loadConfig","cwd","isEmpty","getDefaultConfig","undefined","reporter","update","event","globalThis","__requireCycleIgnorePatterns","resolver","requireCycleIgnorePatterns","transformer","publicPath","baseUrl","platformBundlers","getPlatformBundlers","reactCompiler","Log","warn","EXPO_UNSTABLE_TREE_SHAKING","EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH","CommandError","withMetroMultiPlatformAsync","isTsconfigPathsEnabled","tsconfigPaths","isFastResolverEnabled","isReactCanaryEnabled","reactCanary","isNamedRequiresEnabled","isReactServerComponentsEnabled","setEventReporter","logger","metroBundler","getConfig","skipSDKVersionRequirement","metroConfig","metro","getBundler","middleware","messagesSocket","eventsSocket","websocketEndpoints","createMetroMiddleware","prependMiddleware","createCorsMiddleware","debugMiddleware","debugWebsocketEndpoints","createDebugMiddleware","Object","assign","use","createJsInspectorMiddleware","customEnhanceMiddleware","server","enhanceMiddleware","metroMiddleware","attachAtlasAsync","resetAtlasFile","hmrServer","runServer","createDevToolsPluginWebsocketEndpoint","watch","mockServer","originalTransformFile","transformFile","bind","filePath","transformOptions","fileBuffer","pruneCustomTransformOptions","customTransformOptions","__proto__","reportMetroEvent","messageSocket","dom","match","routerRoot","asyncRoutes","clientBoundaries","CI","chalk"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/metro/instantiateMetro.ts"],"sourcesContent":["import { ExpoConfig, getConfig } from '@expo/config';\nimport { getMetroServerRoot } from '@expo/config/paths';\nimport { getDefaultConfig, LoadOptions } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport http from 'http';\nimport type Metro from 'metro';\nimport { ReadOnlyGraph } from 'metro';\nimport Bundler from 'metro/src/Bundler';\nimport hmrJSBundle from 'metro/src/DeltaBundler/Serializers/hmrJSBundle';\nimport type { TransformOptions } from 'metro/src/DeltaBundler/Worker';\nimport MetroHmrServer from 'metro/src/HmrServer';\nimport RevisionNotFoundError from 'metro/src/IncrementalBundler/RevisionNotFoundError';\nimport formatBundlingError from 'metro/src/lib/formatBundlingError';\nimport { loadConfig, resolveConfig, ConfigT } from 'metro-config';\nimport { Terminal } from 'metro-core';\nimport util from 'node:util';\n\nimport { createDevToolsPluginWebsocketEndpoint } from './DevToolsPluginWebsocketEndpoint';\nimport { MetroBundlerDevServer } from './MetroBundlerDevServer';\nimport { MetroTerminalReporter } from './MetroTerminalReporter';\nimport { attachAtlasAsync } from './debugging/attachAtlas';\nimport { createDebugMiddleware } from './debugging/createDebugMiddleware';\nimport { createMetroMiddleware } from './dev-server/createMetroMiddleware';\nimport { runServer } from './runServer-fork';\nimport { withMetroMultiPlatformAsync } from './withMetroMultiPlatform';\nimport { Log } from '../../../log';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { createCorsMiddleware } from '../middleware/CorsMiddleware';\nimport { createJsInspectorMiddleware } from '../middleware/inspector/createJsInspectorMiddleware';\nimport { prependMiddleware } from '../middleware/mutations';\nimport { getPlatformBundlers } from '../platformBundlers';\n\n// From expo/dev-server but with ability to use custom logger.\ntype MessageSocket = {\n broadcast: (method: string, params?: Record<string, any> | undefined) => void;\n};\n\n// Wrap terminal and polyfill console.log so we can log during bundling without breaking the indicator.\nclass LogRespectingTerminal extends Terminal {\n constructor(stream: import('node:net').Socket | import('node:stream').Writable) {\n super(stream);\n\n const sendLog = (...args: any[]) => {\n this._logLines.push(\n // format args like console.log\n util.format(...args)\n );\n this._scheduleUpdate();\n\n // Flush the logs to the terminal immediately so logs at the end of the process are not lost.\n this.flush();\n };\n\n console.log = sendLog;\n console.info = sendLog;\n }\n}\n\n// Share one instance of Terminal for all instances of Metro.\nconst terminal = new LogRespectingTerminal(process.stdout);\n\nexport async function loadMetroConfigAsync(\n projectRoot: string,\n options: LoadOptions,\n {\n exp,\n isExporting,\n getMetroBundler,\n }: { exp: ExpoConfig; isExporting: boolean; getMetroBundler: () => Bundler }\n) {\n let reportEvent: ((event: any) => void) | undefined;\n\n const serverActionsEnabled =\n exp.experiments?.reactServerFunctions ?? env.EXPO_UNSTABLE_SERVER_FUNCTIONS;\n\n if (serverActionsEnabled) {\n process.env.EXPO_UNSTABLE_SERVER_FUNCTIONS = '1';\n }\n\n // NOTE: Enable all the experimental Metro flags when RSC is enabled.\n if (exp.experiments?.reactServerComponentRoutes || serverActionsEnabled) {\n process.env.EXPO_USE_METRO_REQUIRE = '1';\n process.env.EXPO_USE_FAST_RESOLVER = '1';\n }\n\n const serverRoot = getMetroServerRoot(projectRoot);\n const terminalReporter = new MetroTerminalReporter(serverRoot, terminal);\n\n const hasConfig = await resolveConfig(options.config, projectRoot);\n let config: ConfigT = {\n ...(await loadConfig(\n { cwd: projectRoot, projectRoot, ...options },\n // If the project does not have a metro.config.js, then we use the default config.\n hasConfig.isEmpty ? getDefaultConfig(projectRoot) : undefined\n )),\n reporter: {\n update(event: any) {\n terminalReporter.update(event);\n if (reportEvent) {\n reportEvent(event);\n }\n },\n },\n };\n\n // @ts-expect-error: Set the global require cycle ignore patterns for SSR bundles. This won't work with custom global prefixes, but we don't use those.\n globalThis.__requireCycleIgnorePatterns = config.resolver?.requireCycleIgnorePatterns;\n\n if (isExporting) {\n // This token will be used in the asset plugin to ensure the path is correct for writing locally.\n // @ts-expect-error: typed as readonly.\n config.transformer.publicPath = `/assets?export_path=${\n (exp.experiments?.baseUrl ?? '') + '/assets'\n }`;\n } else {\n // @ts-expect-error: typed as readonly\n config.transformer.publicPath = '/assets/?unstable_path=.';\n }\n\n const platformBundlers = getPlatformBundlers(projectRoot, exp);\n\n if (exp.experiments?.reactCompiler) {\n Log.warn(`Experimental React Compiler is enabled.`);\n }\n\n if (env.EXPO_UNSTABLE_TREE_SHAKING && !env.EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH) {\n throw new CommandError(\n 'EXPO_UNSTABLE_TREE_SHAKING requires EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH to be enabled.'\n );\n }\n\n if (env.EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH) {\n Log.warn(`Experimental bundle optimization is enabled.`);\n }\n if (env.EXPO_UNSTABLE_TREE_SHAKING) {\n Log.warn(`Experimental tree shaking is enabled.`);\n }\n\n if (serverActionsEnabled) {\n Log.warn(\n `Experimental React Server Functions are enabled. Production exports are not supported yet.`\n );\n if (!exp.experiments?.reactServerComponentRoutes) {\n Log.warn(\n `- React Server Component routes are NOT enabled. Routes will render in client mode.`\n );\n }\n }\n\n config = await withMetroMultiPlatformAsync(projectRoot, {\n config,\n exp,\n platformBundlers,\n isTsconfigPathsEnabled: exp.experiments?.tsconfigPaths ?? true,\n isFastResolverEnabled: env.EXPO_USE_FAST_RESOLVER,\n isExporting,\n isReactCanaryEnabled:\n (exp.experiments?.reactServerComponentRoutes ||\n serverActionsEnabled ||\n exp.experiments?.reactCanary) ??\n false,\n isNamedRequiresEnabled: env.EXPO_USE_METRO_REQUIRE,\n isReactServerComponentsEnabled: !!exp.experiments?.reactServerComponentRoutes,\n getMetroBundler,\n });\n\n return {\n config,\n setEventReporter: (logger: (event: any) => void) => (reportEvent = logger),\n reporter: terminalReporter,\n };\n}\n\n/** The most generic possible setup for Metro bundler. */\nexport async function instantiateMetroAsync(\n metroBundler: MetroBundlerDevServer,\n options: Omit<LoadOptions, 'logger'>,\n {\n isExporting,\n exp = getConfig(metroBundler.projectRoot, {\n skipSDKVersionRequirement: true,\n }).exp,\n }: { isExporting: boolean; exp?: ExpoConfig }\n): Promise<{\n metro: Metro.Server;\n hmrServer: MetroHmrServer | null;\n server: http.Server;\n middleware: any;\n messageSocket: MessageSocket;\n}> {\n const projectRoot = metroBundler.projectRoot;\n\n const { config: metroConfig, setEventReporter } = await loadMetroConfigAsync(\n projectRoot,\n options,\n {\n exp,\n isExporting,\n getMetroBundler() {\n return metro.getBundler().getBundler();\n },\n }\n );\n\n // Create the core middleware stack for Metro, including websocket listeners\n const { middleware, messagesSocket, eventsSocket, websocketEndpoints } =\n createMetroMiddleware(metroConfig);\n\n if (!isExporting) {\n // Enable correct CORS headers for Expo Router features\n prependMiddleware(middleware, createCorsMiddleware(exp));\n\n // Enable debug middleware for CDP-related debugging\n const { debugMiddleware, debugWebsocketEndpoints } = createDebugMiddleware(metroBundler);\n Object.assign(websocketEndpoints, debugWebsocketEndpoints);\n middleware.use(debugMiddleware);\n middleware.use('/_expo/debugger', createJsInspectorMiddleware());\n\n // TODO(cedric): `enhanceMiddleware` is deprecated, but is currently used to unify the middleware stacks\n // See: https://github.com/facebook/metro/commit/22e85fde85ec454792a1b70eba4253747a2587a9\n // See: https://github.com/facebook/metro/commit/d0d554381f119bb80ab09dbd6a1d310b54737e52\n const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;\n // @ts-expect-error: can't mutate readonly config\n metroConfig.server.enhanceMiddleware = (metroMiddleware: any, server: Metro.Server) => {\n if (customEnhanceMiddleware) {\n metroMiddleware = customEnhanceMiddleware(metroMiddleware, server);\n }\n return middleware.use(metroMiddleware);\n };\n }\n\n // Attach Expo Atlas if enabled\n await attachAtlasAsync({\n isExporting,\n exp,\n projectRoot,\n middleware,\n metroConfig,\n // NOTE(cedric): reset the Atlas file once, and reuse it for static exports\n resetAtlasFile: isExporting,\n });\n\n const { server, hmrServer, metro } = await runServer(\n metroBundler,\n metroConfig,\n {\n websocketEndpoints: {\n ...websocketEndpoints,\n ...createDevToolsPluginWebsocketEndpoint(),\n },\n watch: !isExporting && isWatchEnabled(),\n },\n {\n mockServer: isExporting,\n }\n );\n\n // Patch transform file to remove inconvenient customTransformOptions which are only used in single well-known files.\n const originalTransformFile = metro\n .getBundler()\n .getBundler()\n .transformFile.bind(metro.getBundler().getBundler());\n\n metro.getBundler().getBundler().transformFile = async function (\n filePath: string,\n transformOptions: TransformOptions,\n fileBuffer?: Buffer\n ) {\n return originalTransformFile(\n filePath,\n pruneCustomTransformOptions(\n filePath,\n // Clone the options so we don't mutate the original.\n {\n ...transformOptions,\n customTransformOptions: {\n __proto__: null,\n ...transformOptions.customTransformOptions,\n },\n }\n ),\n fileBuffer\n );\n };\n\n setEventReporter(eventsSocket.reportMetroEvent);\n\n // This function ensures that modules in source maps are sorted in the same\n // order as in a plain JS bundle.\n metro._getSortedModules = function (this: Metro.Server, graph: ReadOnlyGraph) {\n const modules = [...graph.dependencies.values()];\n\n const ctx = {\n platform: graph.transformOptions.platform,\n environment: graph.transformOptions.customTransformOptions?.environment,\n };\n // Assign IDs to modules in a consistent order\n for (const module of modules) {\n // @ts-expect-error\n this._createModuleId(module.path, ctx);\n }\n // Sort by IDs\n return modules.sort(\n // @ts-expect-error\n (a, b) => this._createModuleId(a.path, ctx) - this._createModuleId(b.path, ctx)\n );\n };\n\n if (hmrServer) {\n // Patch HMR Server to send more info to the `_createModuleId` function for deterministic module IDs.\n hmrServer._prepareMessage = async function (this: MetroHmrServer, group, options, changeEvent) {\n // Fork of https://github.com/facebook/metro/blob/3b3e0aaf725cfa6907bf2c8b5fbc0da352d29efe/packages/metro/src/HmrServer.js#L327-L393\n // with patch for `_createModuleId`.\n const logger = !options.isInitialUpdate ? changeEvent?.logger : null;\n try {\n const revPromise = this._bundler.getRevision(group.revisionId);\n if (!revPromise) {\n return {\n type: 'error',\n body: formatBundlingError(new RevisionNotFoundError(group.revisionId)),\n };\n }\n logger?.point('updateGraph_start');\n const { revision, delta } = await this._bundler.updateGraph(await revPromise, false);\n logger?.point('updateGraph_end');\n this._clientGroups.delete(group.revisionId);\n group.revisionId = revision.id;\n for (const client of group.clients) {\n client.revisionIds = client.revisionIds.filter(\n (revisionId) => revisionId !== group.revisionId\n );\n client.revisionIds.push(revision.id);\n }\n this._clientGroups.set(group.revisionId, group);\n logger?.point('serialize_start');\n // NOTE(EvanBacon): This is the patch\n const moduleIdContext = {\n platform: revision.graph.transformOptions.platform,\n environment: revision.graph.transformOptions.customTransformOptions?.environment,\n };\n const hmrUpdate = hmrJSBundle(delta, revision.graph, {\n clientUrl: group.clientUrl,\n // NOTE(EvanBacon): This is also the patch\n createModuleId: (moduleId: string) => {\n // @ts-expect-error\n return this._createModuleId(moduleId, moduleIdContext);\n },\n includeAsyncPaths: group.graphOptions.lazy,\n projectRoot: this._config.projectRoot,\n serverRoot: this._config.server.unstable_serverRoot ?? this._config.projectRoot,\n });\n logger?.point('serialize_end');\n return {\n type: 'update',\n body: {\n revisionId: revision.id,\n isInitialUpdate: options.isInitialUpdate,\n ...hmrUpdate,\n },\n };\n } catch (error: any) {\n const formattedError = formatBundlingError(error);\n this._config.reporter.update({\n type: 'bundling_error',\n error,\n });\n return {\n type: 'error',\n body: formattedError,\n };\n }\n };\n }\n\n return {\n metro,\n hmrServer,\n server,\n middleware,\n messageSocket: messagesSocket,\n };\n}\n\n// TODO: Fork the entire transform function so we can simply regex the file contents for keywords instead.\nfunction pruneCustomTransformOptions(\n filePath: string,\n transformOptions: TransformOptions\n): TransformOptions {\n if (\n transformOptions.customTransformOptions?.dom &&\n // The only generated file that needs the dom root is `expo/dom/entry.js`\n !filePath.match(/expo\\/dom\\/entry\\.js$/)\n ) {\n // Clear the dom root option if we aren't transforming the magic entry file, this ensures\n // that cached artifacts from other DOM component bundles can be reused.\n transformOptions.customTransformOptions.dom = 'true';\n }\n\n if (\n transformOptions.customTransformOptions?.routerRoot &&\n // The router root is used all over expo-router (`process.env.EXPO_ROUTER_ABS_APP_ROOT`, `process.env.EXPO_ROUTER_APP_ROOT`) so we'll just ignore the entire package.\n !(filePath.match(/\\/expo-router\\/_ctx/) || filePath.match(/\\/expo-router\\/build\\//))\n ) {\n // Set to the default value.\n transformOptions.customTransformOptions.routerRoot = 'app';\n }\n if (\n transformOptions.customTransformOptions?.asyncRoutes &&\n // The async routes settings are also used in `expo-router/_ctx.ios.js` (and other platform variants) via `process.env.EXPO_ROUTER_IMPORT_MODE`\n !(filePath.match(/\\/expo-router\\/_ctx/) || filePath.match(/\\/expo-router\\/build\\//))\n ) {\n delete transformOptions.customTransformOptions.asyncRoutes;\n }\n\n if (\n transformOptions.customTransformOptions?.clientBoundaries &&\n // The client boundaries are only used in `@expo/metro-runtime/src/virtual.js` for production RSC exports.\n !filePath.match(/\\/@expo\\/metro-runtime\\/rsc\\/virtual\\.js$/)\n ) {\n delete transformOptions.customTransformOptions.clientBoundaries;\n }\n\n return transformOptions;\n}\n\n/**\n * Simplify and communicate if Metro is running without watching file updates,.\n * Exposed for testing.\n */\nexport function isWatchEnabled() {\n if (env.CI) {\n Log.log(\n chalk`Metro is running in CI mode, reloads are disabled. Remove {bold CI=true} to enable watch mode.`\n );\n }\n\n return !env.CI;\n}\n"],"names":["loadMetroConfigAsync","instantiateMetroAsync","isWatchEnabled","LogRespectingTerminal","Terminal","constructor","stream","sendLog","args","_logLines","push","util","format","_scheduleUpdate","flush","console","log","info","terminal","process","stdout","projectRoot","options","exp","isExporting","getMetroBundler","config","reportEvent","serverActionsEnabled","experiments","reactServerFunctions","env","EXPO_UNSTABLE_SERVER_FUNCTIONS","reactServerComponentRoutes","EXPO_USE_METRO_REQUIRE","EXPO_USE_FAST_RESOLVER","serverRoot","getMetroServerRoot","terminalReporter","MetroTerminalReporter","hasConfig","resolveConfig","loadConfig","cwd","isEmpty","getDefaultConfig","undefined","reporter","update","event","globalThis","__requireCycleIgnorePatterns","resolver","requireCycleIgnorePatterns","transformer","publicPath","baseUrl","platformBundlers","getPlatformBundlers","reactCompiler","Log","warn","EXPO_UNSTABLE_TREE_SHAKING","EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH","CommandError","withMetroMultiPlatformAsync","isTsconfigPathsEnabled","tsconfigPaths","isFastResolverEnabled","isReactCanaryEnabled","reactCanary","isNamedRequiresEnabled","isReactServerComponentsEnabled","setEventReporter","logger","metroBundler","getConfig","skipSDKVersionRequirement","metroConfig","metro","getBundler","middleware","messagesSocket","eventsSocket","websocketEndpoints","createMetroMiddleware","prependMiddleware","createCorsMiddleware","debugMiddleware","debugWebsocketEndpoints","createDebugMiddleware","Object","assign","use","createJsInspectorMiddleware","customEnhanceMiddleware","server","enhanceMiddleware","metroMiddleware","attachAtlasAsync","resetAtlasFile","hmrServer","runServer","createDevToolsPluginWebsocketEndpoint","watch","mockServer","originalTransformFile","transformFile","bind","filePath","transformOptions","fileBuffer","pruneCustomTransformOptions","customTransformOptions","__proto__","reportMetroEvent","_getSortedModules","graph","modules","dependencies","values","ctx","platform","environment","module","_createModuleId","path","sort","a","b","_prepareMessage","group","changeEvent","isInitialUpdate","revision","revPromise","_bundler","getRevision","revisionId","type","body","formatBundlingError","RevisionNotFoundError","point","delta","updateGraph","_clientGroups","delete","id","client","clients","revisionIds","filter","set","moduleIdContext","hmrUpdate","hmrJSBundle","clientUrl","createModuleId","moduleId","includeAsyncPaths","graphOptions","lazy","_config","unstable_serverRoot","error","formattedError","messageSocket","dom","match","routerRoot","asyncRoutes","clientBoundaries","CI","chalk"],"mappings":"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"}
@@ -17,7 +17,7 @@ function isFailedToResolveNameError(error) {
17
17
  return !!error && "extraPaths" in error && error.constructor.name === "FailedToResolveNameError";
18
18
  }
19
19
  function isFailedToResolvePathError(error) {
20
- return !!error && "candidates" in error && error.constructor.name === "FailedToResolvePathError";
20
+ return !!error && "candidates" in error && error.constructor.name === "FailedToResolvePathError" && !error.message.includes("Importing native-only module");
21
21
  }
22
22
 
23
23
  //# sourceMappingURL=metroErrors.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/metro/metroErrors.ts"],"sourcesContent":["// Used to cast a type to metro errors without depending on specific versions of metro.\n\nexport type FileAndDirCandidates = {\n dir: FileCandidates;\n file: FileCandidates;\n};\n\n/**\n * This is a way to describe what files we tried to look for when resolving\n * a module name as file. This is mainly used for error reporting, so that\n * we can explain why we cannot resolve a module.\n */\nexport type FileCandidates =\n // We only tried to resolve a specific asset.\n | { type: 'asset'; name: string }\n // We attempted to resolve a name as being a source file (ex. JavaScript,\n // JSON...), in which case there can be several extensions we tried, for\n // example `/js/foo.ios.js`, `/js/foo.js`, etc. for a single prefix '/js/foo'.\n | {\n type: 'sourceFile';\n filePathPrefix: string;\n candidateExts: readonly string[];\n };\n\ntype FailedToResolveNameError = Error & {\n dirPaths: string[];\n extraPaths: string[];\n};\n\ntype FailedToResolvePathError = Error & {\n candidates: FileAndDirCandidates;\n};\n\nexport function isFailedToResolveNameError(error: any): error is FailedToResolveNameError {\n return !!error && 'extraPaths' in error && error.constructor.name === 'FailedToResolveNameError';\n}\n\nexport function isFailedToResolvePathError(error: any): error is FailedToResolvePathError {\n return !!error && 'candidates' in error && error.constructor.name === 'FailedToResolvePathError';\n}\n"],"names":["isFailedToResolveNameError","isFailedToResolvePathError","error","constructor","name"],"mappings":"AAAA,uFAAuF;AAEvF;;;;;;;;;;;IA+BgBA,0BAA0B,MAA1BA,0BAA0B;IAI1BC,0BAA0B,MAA1BA,0BAA0B;;AAJnC,SAASD,0BAA0B,CAACE,KAAU,EAAqC;IACxF,OAAO,CAAC,CAACA,KAAK,IAAI,YAAY,IAAIA,KAAK,IAAIA,KAAK,CAACC,WAAW,CAACC,IAAI,KAAK,0BAA0B,CAAC;AACnG,CAAC;AAEM,SAASH,0BAA0B,CAACC,KAAU,EAAqC;IACxF,OAAO,CAAC,CAACA,KAAK,IAAI,YAAY,IAAIA,KAAK,IAAIA,KAAK,CAACC,WAAW,CAACC,IAAI,KAAK,0BAA0B,CAAC;AACnG,CAAC"}
1
+ {"version":3,"sources":["../../../../../src/start/server/metro/metroErrors.ts"],"sourcesContent":["// Used to cast a type to metro errors without depending on specific versions of metro.\n\nexport type FileAndDirCandidates = {\n dir: FileCandidates;\n file: FileCandidates;\n};\n\n/**\n * This is a way to describe what files we tried to look for when resolving\n * a module name as file. This is mainly used for error reporting, so that\n * we can explain why we cannot resolve a module.\n */\nexport type FileCandidates =\n // We only tried to resolve a specific asset.\n | { type: 'asset'; name: string }\n // We attempted to resolve a name as being a source file (ex. JavaScript,\n // JSON...), in which case there can be several extensions we tried, for\n // example `/js/foo.ios.js`, `/js/foo.js`, etc. for a single prefix '/js/foo'.\n | {\n type: 'sourceFile';\n filePathPrefix: string;\n candidateExts: readonly string[];\n };\n\ntype FailedToResolveNameError = Error & {\n dirPaths: string[];\n extraPaths: string[];\n};\n\ntype FailedToResolvePathError = Error & {\n candidates: FileAndDirCandidates;\n};\n\nexport function isFailedToResolveNameError(error: any): error is FailedToResolveNameError {\n return !!error && 'extraPaths' in error && error.constructor.name === 'FailedToResolveNameError';\n}\n\nexport function isFailedToResolvePathError(error: any): error is FailedToResolvePathError {\n return (\n !!error &&\n 'candidates' in error &&\n error.constructor.name === 'FailedToResolvePathError' &&\n !error.message.includes('Importing native-only module')\n );\n}\n"],"names":["isFailedToResolveNameError","isFailedToResolvePathError","error","constructor","name","message","includes"],"mappings":"AAAA,uFAAuF;AAEvF;;;;;;;;;;;IA+BgBA,0BAA0B,MAA1BA,0BAA0B;IAI1BC,0BAA0B,MAA1BA,0BAA0B;;AAJnC,SAASD,0BAA0B,CAACE,KAAU,EAAqC;IACxF,OAAO,CAAC,CAACA,KAAK,IAAI,YAAY,IAAIA,KAAK,IAAIA,KAAK,CAACC,WAAW,CAACC,IAAI,KAAK,0BAA0B,CAAC;AACnG,CAAC;AAEM,SAASH,0BAA0B,CAACC,KAAU,EAAqC;IACxF,OACE,CAAC,CAACA,KAAK,IACP,YAAY,IAAIA,KAAK,IACrBA,KAAK,CAACC,WAAW,CAACC,IAAI,KAAK,0BAA0B,IACrD,CAACF,KAAK,CAACG,OAAO,CAACC,QAAQ,CAAC,8BAA8B,CAAC,CACvD;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/metro/metroPrivateServer.ts"],"sourcesContent":["import { TransformInputOptions } from 'metro';\nimport type Metro from 'metro';\nimport { ConfigT } from 'metro-config';\nimport assert from 'node:assert';\n\nexport type MetroPrivateServer = import('metro').Server & {\n _bundler: import('metro/src/IncrementalBundler').default;\n _config: ConfigT;\n _createModuleId: (path: string) => number;\n _isEnded: boolean;\n _nextBundleBuildNumber: number;\n _platforms: Set<string>;\n _reporter: import('metro/src/lib/reporting').Reporter;\n _serverOptions: import('metro').ServerOptions | void;\n\n getNewBuildNumber(): number;\n _getSortedModules(\n graph: import('metro/src/IncrementalBundler').OutputGraph\n ): import('metro/src/DeltaBundler/types').Module[];\n\n _resolveRelativePath(\n filePath: string,\n {\n relativeTo,\n resolverOptions,\n transformOptions,\n }: {\n relativeTo: 'project' | 'server';\n resolverOptions: import('metro/src/shared/types').ResolverInputOptions;\n transformOptions: TransformInputOptions;\n }\n ): Promise<string>;\n\n _shouldAddModuleToIgnoreList(module: import('metro/src/DeltaBundler/types').Module<any>): boolean;\n};\n\nexport function assertMetroPrivateServer(metro: Metro.Server): asserts metro is MetroPrivateServer {\n assert(metro, 'Metro server undefined.');\n assert(\n '_config' in metro && '_bundler' in metro,\n 'Metro server is missing expected properties (_config, _bundler). This could be due to a version mismatch or change in the Metro API.'\n );\n}\n"],"names":["assertMetroPrivateServer","metro","assert"],"mappings":"AAAA;;;;+BAoCgBA,0BAAwB;;aAAxBA,wBAAwB;;;8DAjCrB,aAAa;;;;;;;;;;;AAiCzB,SAASA,wBAAwB,CAACC,KAAmB,EAAuC;IACjGC,IAAAA,WAAM,EAAA,QAAA,EAACD,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACzCC,IAAAA,WAAM,EAAA,QAAA,EACJ,SAAS,IAAID,KAAK,IAAI,UAAU,IAAIA,KAAK,EACzC,sIAAsI,CACvI,CAAC;AACJ,CAAC"}
1
+ {"version":3,"sources":["../../../../../src/start/server/metro/metroPrivateServer.ts"],"sourcesContent":["import { TransformInputOptions } from 'metro';\nimport type Metro from 'metro';\nimport { ConfigT } from 'metro-config';\nimport assert from 'node:assert';\n\nexport type MetroPrivateServer = import('metro').Server & {\n _bundler: import('metro/src/IncrementalBundler').default;\n _config: ConfigT;\n _createModuleId: (path: string, context?: { environment?: string; platform: string }) => number;\n _isEnded: boolean;\n _nextBundleBuildNumber: number;\n _platforms: Set<string>;\n _reporter: import('metro/src/lib/reporting').Reporter;\n _serverOptions: import('metro').ServerOptions | void;\n\n getNewBuildNumber(): number;\n _getSortedModules(\n graph: import('metro/src/IncrementalBundler').OutputGraph\n ): import('metro/src/DeltaBundler/types').Module[];\n\n _resolveRelativePath(\n filePath: string,\n {\n relativeTo,\n resolverOptions,\n transformOptions,\n }: {\n relativeTo: 'project' | 'server';\n resolverOptions: import('metro/src/shared/types').ResolverInputOptions;\n transformOptions: TransformInputOptions;\n }\n ): Promise<string>;\n\n _shouldAddModuleToIgnoreList(module: import('metro/src/DeltaBundler/types').Module<any>): boolean;\n};\n\nexport function assertMetroPrivateServer(metro: Metro.Server): asserts metro is MetroPrivateServer {\n assert(metro, 'Metro server undefined.');\n assert(\n '_config' in metro && '_bundler' in metro,\n 'Metro server is missing expected properties (_config, _bundler). This could be due to a version mismatch or change in the Metro API.'\n );\n}\n"],"names":["assertMetroPrivateServer","metro","assert"],"mappings":"AAAA;;;;+BAoCgBA,0BAAwB;;aAAxBA,wBAAwB;;;8DAjCrB,aAAa;;;;;;;;;;;AAiCzB,SAASA,wBAAwB,CAACC,KAAmB,EAAuC;IACjGC,IAAAA,WAAM,EAAA,QAAA,EAACD,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACzCC,IAAAA,WAAM,EAAA,QAAA,EACJ,SAAS,IAAID,KAAK,IAAI,UAAU,IAAIA,KAAK,EACzC,sIAAsI,CACvI,CAAC;AACJ,CAAC"}