@expo/cli 0.17.5 → 0.17.7

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/middleware/metroOptions.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport type { BundleOptions as MetroBundleOptions } from 'metro/src/shared/types';\nimport resolveFrom from 'resolve-from';\n\nimport { env } from '../../../utils/env';\nimport { getRouterDirectoryModuleIdWithManifest } from '../metro/router';\n\nconst debug = require('debug')('expo:metro:options') as typeof console.log;\n\nexport type ExpoMetroOptions = {\n platform: string;\n mainModuleName: string;\n mode: string;\n minify?: boolean;\n environment?: string;\n serializerOutput?: 'static';\n serializerIncludeMaps?: boolean;\n serializerIncludeBytecode?: boolean;\n lazy?: boolean;\n engine?: 'hermes';\n preserveEnvVars?: boolean;\n asyncRoutes?: boolean;\n\n baseUrl?: string;\n isExporting: boolean;\n /** Module ID relative to the projectRoot for the Expo Router app directory. */\n routerRoot: string;\n inlineSourceMap?: boolean;\n};\n\nexport type SerializerOptions = {\n includeSourceMaps?: boolean;\n includeBytecode?: boolean;\n output?: 'static';\n};\n\nexport type ExpoMetroBundleOptions = MetroBundleOptions & {\n serializerOptions?: SerializerOptions;\n};\n\nexport function shouldEnableAsyncImports(projectRoot: string): boolean {\n if (env.EXPO_NO_METRO_LAZY) {\n return false;\n }\n\n // `@expo/metro-runtime` includes support for the fetch + eval runtime code required\n // to support async imports. If it's not installed, we can't support async imports.\n // If it is installed, the user MUST import it somewhere in their project.\n // Expo Router automatically pulls this in, so we can check for it.\n return resolveFrom.silent(projectRoot, '@expo/metro-runtime') != null;\n}\n\nfunction withDefaults({\n mode = 'development',\n minify = mode === 'production',\n preserveEnvVars = env.EXPO_NO_CLIENT_ENV_VARS,\n lazy,\n ...props\n}: ExpoMetroOptions): ExpoMetroOptions {\n return {\n mode,\n minify,\n preserveEnvVars,\n lazy: !props.isExporting && lazy,\n ...props,\n };\n}\n\nexport function getBaseUrlFromExpoConfig(exp: ExpoConfig) {\n return exp.experiments?.baseUrl?.trim().replace(/\\/+$/, '') ?? '';\n}\nexport function getAsyncRoutesFromExpoConfig(exp: ExpoConfig, mode: string, platform: string) {\n let asyncRoutesSetting;\n\n if (exp.extra?.router?.asyncRoutes) {\n const asyncRoutes = exp.extra?.router?.asyncRoutes;\n if (['boolean', 'string'].includes(typeof asyncRoutes)) {\n asyncRoutesSetting = asyncRoutes;\n } else if (typeof asyncRoutes === 'object') {\n asyncRoutesSetting = asyncRoutes[platform] ?? asyncRoutes.default;\n }\n }\n\n return [mode, true].includes(asyncRoutesSetting);\n}\n\nexport function getMetroDirectBundleOptionsForExpoConfig(\n projectRoot: string,\n exp: ExpoConfig,\n options: Omit<ExpoMetroOptions, 'baseUrl' | 'routerRoot' | 'asyncRoutes'>\n): Partial<ExpoMetroBundleOptions> {\n return getMetroDirectBundleOptions({\n ...options,\n baseUrl: getBaseUrlFromExpoConfig(exp),\n routerRoot: getRouterDirectoryModuleIdWithManifest(projectRoot, exp),\n asyncRoutes: getAsyncRoutesFromExpoConfig(exp, options.mode, options.platform),\n });\n}\n\nexport function getMetroDirectBundleOptions(\n options: ExpoMetroOptions\n): Partial<ExpoMetroBundleOptions> {\n const {\n mainModuleName,\n platform,\n mode,\n minify,\n environment,\n serializerOutput,\n serializerIncludeMaps,\n serializerIncludeBytecode,\n lazy,\n engine,\n preserveEnvVars,\n asyncRoutes,\n baseUrl,\n routerRoot,\n isExporting,\n inlineSourceMap,\n } = withDefaults(options);\n\n const dev = mode !== 'production';\n const isHermes = engine === 'hermes';\n\n if (isExporting) {\n debug('Disabling lazy bundling for export build');\n options.lazy = false;\n }\n\n let fakeSourceUrl: string | undefined;\n let fakeSourceMapUrl: string | undefined;\n\n // TODO: Upstream support to Metro for passing custom serializer options.\n if (\n serializerIncludeMaps != null ||\n serializerOutput != null ||\n serializerIncludeBytecode != null\n ) {\n fakeSourceUrl = new URL(\n createBundleUrlPath(options).replace(/^\\//, ''),\n 'http://localhost:8081'\n ).toString();\n if (serializerIncludeMaps) {\n fakeSourceMapUrl = fakeSourceUrl.replace('.bundle?', '.map?');\n }\n }\n\n const bundleOptions: Partial<ExpoMetroBundleOptions> = {\n platform,\n entryFile: mainModuleName,\n dev,\n minify: !isHermes && (minify ?? !dev),\n inlineSourceMap: inlineSourceMap ?? false,\n lazy,\n unstable_transformProfile: isHermes ? 'hermes-stable' : 'default',\n customTransformOptions: {\n __proto__: null,\n engine,\n preserveEnvVars,\n asyncRoutes,\n environment,\n baseUrl,\n routerRoot,\n },\n customResolverOptions: {\n __proto__: null,\n environment,\n },\n sourceMapUrl: fakeSourceMapUrl,\n sourceUrl: fakeSourceUrl,\n serializerOptions: {\n output: serializerOutput,\n includeSourceMaps: serializerIncludeMaps,\n includeBytecode: serializerIncludeBytecode,\n },\n };\n\n return bundleOptions;\n}\n\nexport function createBundleUrlPathFromExpoConfig(\n projectRoot: string,\n exp: ExpoConfig,\n options: Omit<ExpoMetroOptions, 'baseUrl' | 'routerRoot'>\n): string {\n return createBundleUrlPath({\n ...options,\n baseUrl: getBaseUrlFromExpoConfig(exp),\n routerRoot: getRouterDirectoryModuleIdWithManifest(projectRoot, exp),\n });\n}\n\nexport function createBundleUrlPath(options: ExpoMetroOptions): string {\n const {\n platform,\n mainModuleName,\n mode,\n minify,\n environment,\n serializerOutput,\n serializerIncludeMaps,\n serializerIncludeBytecode,\n lazy,\n engine,\n preserveEnvVars,\n asyncRoutes,\n baseUrl,\n routerRoot,\n inlineSourceMap,\n isExporting,\n } = withDefaults(options);\n\n const dev = String(mode !== 'production');\n const queryParams = new URLSearchParams({\n platform: encodeURIComponent(platform),\n dev,\n // TODO: Is this still needed?\n hot: String(false),\n });\n\n // Lazy bundling must be disabled for bundle splitting to work.\n if (!isExporting && lazy) {\n queryParams.append('lazy', String(lazy));\n }\n\n if (inlineSourceMap) {\n queryParams.append('inlineSourceMap', String(inlineSourceMap));\n }\n\n if (minify) {\n queryParams.append('minify', String(minify));\n }\n\n if (engine) {\n queryParams.append('transform.engine', engine);\n }\n\n if (asyncRoutes) {\n queryParams.append('transform.asyncRoutes', String(asyncRoutes));\n }\n if (preserveEnvVars) {\n queryParams.append('transform.preserveEnvVars', String(preserveEnvVars));\n }\n if (baseUrl) {\n queryParams.append('transform.baseUrl', baseUrl);\n }\n if (routerRoot != null) {\n queryParams.append('transform.routerRoot', routerRoot);\n }\n\n if (environment) {\n queryParams.append('resolver.environment', environment);\n queryParams.append('transform.environment', environment);\n }\n\n if (serializerOutput) {\n queryParams.append('serializer.output', serializerOutput);\n }\n if (serializerIncludeMaps) {\n queryParams.append('serializer.map', String(serializerIncludeMaps));\n }\n if (serializerIncludeBytecode) {\n queryParams.append('serializer.bytecode', String(serializerIncludeBytecode));\n }\n\n return `/${encodeURI(mainModuleName)}.bundle?${queryParams.toString()}`;\n}\n"],"names":["shouldEnableAsyncImports","getBaseUrlFromExpoConfig","getAsyncRoutesFromExpoConfig","getMetroDirectBundleOptionsForExpoConfig","getMetroDirectBundleOptions","createBundleUrlPathFromExpoConfig","createBundleUrlPath","debug","require","projectRoot","env","EXPO_NO_METRO_LAZY","resolveFrom","silent","withDefaults","mode","minify","preserveEnvVars","EXPO_NO_CLIENT_ENV_VARS","lazy","props","isExporting","exp","experiments","baseUrl","trim","replace","platform","asyncRoutesSetting","extra","router","asyncRoutes","includes","default","options","routerRoot","getRouterDirectoryModuleIdWithManifest","mainModuleName","environment","serializerOutput","serializerIncludeMaps","serializerIncludeBytecode","engine","inlineSourceMap","dev","isHermes","fakeSourceUrl","fakeSourceMapUrl","URL","toString","bundleOptions","entryFile","unstable_transformProfile","customTransformOptions","__proto__","customResolverOptions","sourceMapUrl","sourceUrl","serializerOptions","output","includeSourceMaps","includeBytecode","String","queryParams","URLSearchParams","encodeURIComponent","hot","append","encodeURI"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/middleware/metroOptions.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport type { BundleOptions as MetroBundleOptions } from 'metro/src/shared/types';\nimport resolveFrom from 'resolve-from';\n\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { getRouterDirectoryModuleIdWithManifest } from '../metro/router';\n\nconst debug = require('debug')('expo:metro:options') as typeof console.log;\n\nexport type ExpoMetroOptions = {\n platform: string;\n mainModuleName: string;\n mode: string;\n minify?: boolean;\n environment?: string;\n serializerOutput?: 'static';\n serializerIncludeMaps?: boolean;\n lazy?: boolean;\n engine?: 'hermes';\n preserveEnvVars?: boolean;\n bytecode: boolean;\n asyncRoutes?: boolean;\n\n baseUrl?: string;\n isExporting: boolean;\n /** Module ID relative to the projectRoot for the Expo Router app directory. */\n routerRoot: string;\n inlineSourceMap?: boolean;\n};\n\nexport type SerializerOptions = {\n includeSourceMaps?: boolean;\n output?: 'static';\n};\n\nexport type ExpoMetroBundleOptions = MetroBundleOptions & {\n serializerOptions?: SerializerOptions;\n};\n\nexport function shouldEnableAsyncImports(projectRoot: string): boolean {\n if (env.EXPO_NO_METRO_LAZY) {\n return false;\n }\n\n // `@expo/metro-runtime` includes support for the fetch + eval runtime code required\n // to support async imports. If it's not installed, we can't support async imports.\n // If it is installed, the user MUST import it somewhere in their project.\n // Expo Router automatically pulls this in, so we can check for it.\n return resolveFrom.silent(projectRoot, '@expo/metro-runtime') != null;\n}\n\nfunction withDefaults({\n mode = 'development',\n minify = mode === 'production',\n preserveEnvVars = env.EXPO_NO_CLIENT_ENV_VARS,\n lazy,\n ...props\n}: ExpoMetroOptions): ExpoMetroOptions {\n if (props.bytecode) {\n if (props.platform === 'web') {\n throw new CommandError('Cannot use bytecode with the web platform');\n }\n if (props.engine !== 'hermes') {\n throw new CommandError('Bytecode is only supported with the Hermes engine');\n }\n }\n\n return {\n mode,\n minify,\n preserveEnvVars,\n lazy: !props.isExporting && lazy,\n ...props,\n };\n}\n\nexport function getBaseUrlFromExpoConfig(exp: ExpoConfig) {\n return exp.experiments?.baseUrl?.trim().replace(/\\/+$/, '') ?? '';\n}\nexport function getAsyncRoutesFromExpoConfig(exp: ExpoConfig, mode: string, platform: string) {\n let asyncRoutesSetting;\n\n if (exp.extra?.router?.asyncRoutes) {\n const asyncRoutes = exp.extra?.router?.asyncRoutes;\n if (['boolean', 'string'].includes(typeof asyncRoutes)) {\n asyncRoutesSetting = asyncRoutes;\n } else if (typeof asyncRoutes === 'object') {\n asyncRoutesSetting = asyncRoutes[platform] ?? asyncRoutes.default;\n }\n }\n\n return [mode, true].includes(asyncRoutesSetting);\n}\n\nexport function getMetroDirectBundleOptionsForExpoConfig(\n projectRoot: string,\n exp: ExpoConfig,\n options: Omit<ExpoMetroOptions, 'baseUrl' | 'routerRoot' | 'asyncRoutes'>\n): Partial<ExpoMetroBundleOptions> {\n return getMetroDirectBundleOptions({\n ...options,\n baseUrl: getBaseUrlFromExpoConfig(exp),\n routerRoot: getRouterDirectoryModuleIdWithManifest(projectRoot, exp),\n asyncRoutes: getAsyncRoutesFromExpoConfig(exp, options.mode, options.platform),\n });\n}\n\nexport function getMetroDirectBundleOptions(\n options: ExpoMetroOptions\n): Partial<ExpoMetroBundleOptions> {\n const {\n mainModuleName,\n platform,\n mode,\n minify,\n environment,\n serializerOutput,\n serializerIncludeMaps,\n bytecode,\n lazy,\n engine,\n preserveEnvVars,\n asyncRoutes,\n baseUrl,\n routerRoot,\n isExporting,\n inlineSourceMap,\n } = withDefaults(options);\n\n const dev = mode !== 'production';\n const isHermes = engine === 'hermes';\n\n if (isExporting) {\n debug('Disabling lazy bundling for export build');\n options.lazy = false;\n }\n\n let fakeSourceUrl: string | undefined;\n let fakeSourceMapUrl: string | undefined;\n\n // TODO: Upstream support to Metro for passing custom serializer options.\n if (serializerIncludeMaps != null || serializerOutput != null) {\n fakeSourceUrl = new URL(\n createBundleUrlPath(options).replace(/^\\//, ''),\n 'http://localhost:8081'\n ).toString();\n if (serializerIncludeMaps) {\n fakeSourceMapUrl = fakeSourceUrl.replace('.bundle?', '.map?');\n }\n }\n\n const bundleOptions: Partial<ExpoMetroBundleOptions> = {\n platform,\n entryFile: mainModuleName,\n dev,\n minify: minify ?? !dev,\n inlineSourceMap: inlineSourceMap ?? false,\n lazy,\n unstable_transformProfile: isHermes ? 'hermes-stable' : 'default',\n customTransformOptions: {\n __proto__: null,\n engine,\n preserveEnvVars,\n asyncRoutes,\n environment,\n baseUrl,\n routerRoot,\n bytecode,\n },\n customResolverOptions: {\n __proto__: null,\n environment,\n },\n sourceMapUrl: fakeSourceMapUrl,\n sourceUrl: fakeSourceUrl,\n serializerOptions: {\n output: serializerOutput,\n includeSourceMaps: serializerIncludeMaps,\n },\n };\n\n return bundleOptions;\n}\n\nexport function createBundleUrlPathFromExpoConfig(\n projectRoot: string,\n exp: ExpoConfig,\n options: Omit<ExpoMetroOptions, 'baseUrl' | 'routerRoot'>\n): string {\n return createBundleUrlPath({\n ...options,\n baseUrl: getBaseUrlFromExpoConfig(exp),\n routerRoot: getRouterDirectoryModuleIdWithManifest(projectRoot, exp),\n });\n}\n\nexport function createBundleUrlPath(options: ExpoMetroOptions): string {\n const {\n platform,\n mainModuleName,\n mode,\n minify,\n environment,\n serializerOutput,\n serializerIncludeMaps,\n lazy,\n bytecode,\n engine,\n preserveEnvVars,\n asyncRoutes,\n baseUrl,\n routerRoot,\n inlineSourceMap,\n isExporting,\n } = withDefaults(options);\n\n const dev = String(mode !== 'production');\n const queryParams = new URLSearchParams({\n platform: encodeURIComponent(platform),\n dev,\n // TODO: Is this still needed?\n hot: String(false),\n });\n\n // Lazy bundling must be disabled for bundle splitting to work.\n if (!isExporting && lazy) {\n queryParams.append('lazy', String(lazy));\n }\n\n if (inlineSourceMap) {\n queryParams.append('inlineSourceMap', String(inlineSourceMap));\n }\n\n if (minify) {\n queryParams.append('minify', String(minify));\n }\n\n // We split bytecode from the engine since you could technically use Hermes without bytecode.\n // Hermes indicates the type of language features you want to transform out of the JS, whereas bytecode\n // indicates whether you want to use the Hermes bytecode format.\n if (engine) {\n queryParams.append('transform.engine', engine);\n }\n if (bytecode) {\n queryParams.append('transform.bytecode', String(bytecode));\n }\n\n if (asyncRoutes) {\n queryParams.append('transform.asyncRoutes', String(asyncRoutes));\n }\n if (preserveEnvVars) {\n queryParams.append('transform.preserveEnvVars', String(preserveEnvVars));\n }\n if (baseUrl) {\n queryParams.append('transform.baseUrl', baseUrl);\n }\n if (routerRoot != null) {\n queryParams.append('transform.routerRoot', routerRoot);\n }\n\n if (environment) {\n queryParams.append('resolver.environment', environment);\n queryParams.append('transform.environment', environment);\n }\n\n if (serializerOutput) {\n queryParams.append('serializer.output', serializerOutput);\n }\n if (serializerIncludeMaps) {\n queryParams.append('serializer.map', String(serializerIncludeMaps));\n }\n\n return `/${encodeURI(mainModuleName)}.bundle?${queryParams.toString()}`;\n}\n"],"names":["shouldEnableAsyncImports","getBaseUrlFromExpoConfig","getAsyncRoutesFromExpoConfig","getMetroDirectBundleOptionsForExpoConfig","getMetroDirectBundleOptions","createBundleUrlPathFromExpoConfig","createBundleUrlPath","debug","require","projectRoot","env","EXPO_NO_METRO_LAZY","resolveFrom","silent","withDefaults","mode","minify","preserveEnvVars","EXPO_NO_CLIENT_ENV_VARS","lazy","props","bytecode","platform","CommandError","engine","isExporting","exp","experiments","baseUrl","trim","replace","asyncRoutesSetting","extra","router","asyncRoutes","includes","default","options","routerRoot","getRouterDirectoryModuleIdWithManifest","mainModuleName","environment","serializerOutput","serializerIncludeMaps","inlineSourceMap","dev","isHermes","fakeSourceUrl","fakeSourceMapUrl","URL","toString","bundleOptions","entryFile","unstable_transformProfile","customTransformOptions","__proto__","customResolverOptions","sourceMapUrl","sourceUrl","serializerOptions","output","includeSourceMaps","String","queryParams","URLSearchParams","encodeURIComponent","hot","append","encodeURI"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/server/serverLogLikeMetro.ts"],"sourcesContent":["/**\n * Copyright © 2024 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 { INTERNAL_CALLSITES_REGEX } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport path from 'path';\nimport * as stackTraceParser from 'stacktrace-parser';\n\nimport { env } from '../../utils/env';\nimport { memoize } from '../../utils/fn';\n\nconst groupStack: any = [];\nlet collapsedGuardTimer: ReturnType<typeof setTimeout> | undefined;\n\nexport function logLikeMetro(\n originalLogFunction: (...args: any[]) => void,\n level: string,\n platform: string,\n ...data: any[]\n) {\n // @ts-expect-error\n const logFunction = console[level] && level !== 'trace' ? level : 'log';\n const color =\n level === 'error'\n ? chalk.inverse.red\n : level === 'warn'\n ? chalk.inverse.yellow\n : chalk.inverse.white;\n\n if (level === 'group') {\n groupStack.push(level);\n } else if (level === 'groupCollapsed') {\n groupStack.push(level);\n clearTimeout(collapsedGuardTimer);\n // Inform users that logs get swallowed if they forget to call `groupEnd`.\n collapsedGuardTimer = setTimeout(() => {\n if (groupStack.includes('groupCollapsed')) {\n originalLogFunction(\n chalk.inverse.yellow.bold(' WARN '),\n 'Expected `console.groupEnd` to be called after `console.groupCollapsed`.'\n );\n groupStack.length = 0;\n }\n }, 3000);\n return;\n } else if (level === 'groupEnd') {\n groupStack.pop();\n if (!groupStack.length) {\n clearTimeout(collapsedGuardTimer);\n }\n return;\n }\n\n if (!groupStack.includes('groupCollapsed')) {\n // Remove excess whitespace at the end of a log message, if possible.\n const lastItem = data[data.length - 1];\n if (typeof lastItem === 'string') {\n data[data.length - 1] = lastItem.trimEnd();\n }\n\n const modePrefix = chalk.bold`${platform}`;\n originalLogFunction(\n modePrefix +\n ' ' +\n color.bold(` ${logFunction.toUpperCase()} `) +\n ''.padEnd(groupStack.length * 2, ' '),\n ...data\n );\n }\n}\n\nconst escapedPathSep = path.sep === '\\\\' ? '\\\\\\\\' : path.sep;\nconst SERVER_STACK_MATCHER = new RegExp(\n `${escapedPathSep}(react-dom|metro-runtime|expo-router)${escapedPathSep}`\n);\n\nfunction augmentLogsInternal(projectRoot: string) {\n const augmentLog = (name: string, fn: typeof console.log) => {\n // @ts-expect-error: TypeScript doesn't know about polyfilled functions.\n if (fn.__polyfilled) {\n return fn;\n }\n const originalFn = fn.bind(console);\n function logWithStack(...args: any[]) {\n const stack = new Error().stack;\n // Check if the log originates from the server.\n const isServerLog = !!stack?.match(SERVER_STACK_MATCHER);\n if (isServerLog) {\n if (name === 'error' || name === 'warn') {\n args.push('\\n' + formatStackLikeMetro(projectRoot, stack!));\n }\n logLikeMetro(originalFn, name, 'λ', ...args);\n } else {\n originalFn(...args);\n }\n }\n logWithStack.__polyfilled = true;\n return logWithStack;\n };\n\n ['trace', 'info', 'error', 'warn', 'log', 'group', 'groupCollapsed', 'groupEnd', 'debug'].forEach(\n (name) => {\n // @ts-expect-error\n console[name] = augmentLog(name, console[name]);\n }\n );\n}\n\nexport function formatStackLikeMetro(projectRoot: string, stack: string) {\n // Remove `Error: ` from the beginning of the stack trace.\n // Dim traces that match `INTERNAL_CALLSITES_REGEX`\n\n const stackTrace = stackTraceParser.parse(stack);\n return stackTrace\n .filter(\n (line) =>\n line.file &&\n line.file !== '<anonymous>' &&\n // Ignore unsymbolicated stack frames. It's not clear how this is possible but it sometimes happens when the graph changes.\n !/^https?:\\/\\//.test(line.file)\n )\n .map((line) => {\n // Use the same regex we use in Metro config to filter out traces:\n const isCollapsed = INTERNAL_CALLSITES_REGEX.test(line.file!);\n if (isCollapsed && !env.EXPO_DEBUG) {\n return null;\n }\n // If a file is collapsed, print it with dim styling.\n const style = isCollapsed ? chalk.dim : chalk.gray;\n // Use the `at` prefix to match Node.js\n let fileName = line.file!;\n if (fileName.startsWith(path.sep)) {\n fileName = path.relative(projectRoot, fileName);\n }\n if (line.lineNumber != null) {\n fileName += `:${line.lineNumber}`;\n if (line.column != null) {\n fileName += `:${line.column}`;\n }\n }\n\n return style(` ${line.methodName} (${fileName})`);\n })\n .filter(Boolean)\n .join('\\n');\n}\n\n/** Augment console logs to check the stack trace and format like Metro logs if we think the log came from the SSR renderer or an API route. */\nexport const augmentLogs = memoize(augmentLogsInternal);\n"],"names":["logLikeMetro","formatStackLikeMetro","stackTraceParser","groupStack","collapsedGuardTimer","originalLogFunction","level","platform","data","logFunction","console","color","chalk","inverse","red","yellow","white","push","clearTimeout","setTimeout","includes","bold","length","pop","lastItem","trimEnd","modePrefix","toUpperCase","padEnd","escapedPathSep","path","sep","SERVER_STACK_MATCHER","RegExp","augmentLogsInternal","projectRoot","augmentLog","name","fn","__polyfilled","originalFn","bind","logWithStack","args","stack","Error","isServerLog","match","forEach","stackTrace","parse","filter","line","file","test","map","isCollapsed","INTERNAL_CALLSITES_REGEX","env","EXPO_DEBUG","style","dim","gray","fileName","startsWith","relative","lineNumber","column","methodName","Boolean","join","augmentLogs","memoize"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/start/server/serverLogLikeMetro.ts"],"sourcesContent":["/**\n * Copyright © 2024 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 { INTERNAL_CALLSITES_REGEX } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport path from 'path';\nimport * as stackTraceParser from 'stacktrace-parser';\n\nimport { env } from '../../utils/env';\nimport { memoize } from '../../utils/fn';\n\nconst groupStack: any = [];\nlet collapsedGuardTimer: ReturnType<typeof setTimeout> | undefined;\n\nexport function logLikeMetro(\n originalLogFunction: (...args: any[]) => void,\n level: string,\n platform: string,\n ...data: any[]\n) {\n // @ts-expect-error\n const logFunction = console[level] && level !== 'trace' ? level : 'log';\n const color =\n level === 'error'\n ? chalk.inverse.red\n : level === 'warn'\n ? chalk.inverse.yellow\n : chalk.inverse.white;\n\n if (level === 'group') {\n groupStack.push(level);\n } else if (level === 'groupCollapsed') {\n groupStack.push(level);\n clearTimeout(collapsedGuardTimer);\n // Inform users that logs get swallowed if they forget to call `groupEnd`.\n collapsedGuardTimer = setTimeout(() => {\n if (groupStack.includes('groupCollapsed')) {\n originalLogFunction(\n chalk.inverse.yellow.bold(' WARN '),\n 'Expected `console.groupEnd` to be called after `console.groupCollapsed`.'\n );\n groupStack.length = 0;\n }\n }, 3000);\n return;\n } else if (level === 'groupEnd') {\n groupStack.pop();\n if (!groupStack.length) {\n clearTimeout(collapsedGuardTimer);\n }\n return;\n }\n\n if (!groupStack.includes('groupCollapsed')) {\n // Remove excess whitespace at the end of a log message, if possible.\n const lastItem = data[data.length - 1];\n if (typeof lastItem === 'string') {\n data[data.length - 1] = lastItem.trimEnd();\n }\n\n const modePrefix = chalk.bold`${platform}`;\n originalLogFunction(\n modePrefix +\n ' ' +\n color.bold(` ${logFunction.toUpperCase()} `) +\n ''.padEnd(groupStack.length * 2, ' '),\n ...data\n );\n }\n}\n\nconst escapedPathSep = path.sep === '\\\\' ? '\\\\\\\\' : path.sep;\nconst SERVER_STACK_MATCHER = new RegExp(\n `${escapedPathSep}(react-dom|metro-runtime|expo-router)${escapedPathSep}`\n);\n\nfunction augmentLogsInternal(projectRoot: string) {\n const augmentLog = (name: string, fn: typeof console.log) => {\n // @ts-expect-error: TypeScript doesn't know about polyfilled functions.\n if (fn.__polyfilled) {\n return fn;\n }\n const originalFn = fn.bind(console);\n function logWithStack(...args: any[]) {\n const stack = new Error().stack;\n // Check if the log originates from the server.\n const isServerLog = !!stack?.match(SERVER_STACK_MATCHER);\n if (isServerLog) {\n if (name === 'error' || name === 'warn') {\n args.push('\\n' + formatStackLikeMetro(projectRoot, stack!));\n }\n logLikeMetro(originalFn, name, 'λ', ...args);\n } else {\n originalFn(...args);\n }\n }\n logWithStack.__polyfilled = true;\n return logWithStack;\n };\n\n ['trace', 'info', 'error', 'warn', 'log', 'group', 'groupCollapsed', 'groupEnd', 'debug'].forEach(\n (name) => {\n // @ts-expect-error\n console[name] = augmentLog(name, console[name]);\n }\n );\n}\n\nexport function formatStackLikeMetro(projectRoot: string, stack: string) {\n // Remove `Error: ` from the beginning of the stack trace.\n // Dim traces that match `INTERNAL_CALLSITES_REGEX`\n\n const stackTrace = stackTraceParser.parse(stack);\n return stackTrace\n .filter(\n (line) =>\n line.file &&\n line.file !== '<anonymous>' &&\n // Ignore unsymbolicated stack frames. It's not clear how this is possible but it sometimes happens when the graph changes.\n !/^https?:\\/\\//.test(line.file)\n )\n .map((line) => {\n // Use the same regex we use in Metro config to filter out traces:\n const isCollapsed = INTERNAL_CALLSITES_REGEX.test(line.file!);\n if (isCollapsed && !env.EXPO_DEBUG) {\n return null;\n }\n // If a file is collapsed, print it with dim styling.\n const style = isCollapsed ? chalk.dim : chalk.gray;\n // Use the `at` prefix to match Node.js\n let fileName = line.file!;\n if (fileName.startsWith(path.sep)) {\n fileName = path.relative(projectRoot, fileName);\n }\n if (line.lineNumber != null) {\n fileName += `:${line.lineNumber}`;\n if (line.column != null) {\n fileName += `:${line.column}`;\n }\n }\n\n return style(` ${line.methodName} (${fileName})`);\n })\n .filter(Boolean)\n .join('\\n');\n}\n\n/** Augment console logs to check the stack trace and format like Metro logs if we think the log came from the SSR renderer or an API route. */\nexport const augmentLogs = memoize(augmentLogsInternal);\n"],"names":["logLikeMetro","formatStackLikeMetro","stackTraceParser","groupStack","collapsedGuardTimer","originalLogFunction","level","platform","data","logFunction","console","color","chalk","inverse","red","yellow","white","push","clearTimeout","setTimeout","includes","bold","length","pop","lastItem","trimEnd","modePrefix","toUpperCase","padEnd","escapedPathSep","path","sep","SERVER_STACK_MATCHER","RegExp","augmentLogsInternal","projectRoot","augmentLog","name","fn","__polyfilled","originalFn","bind","logWithStack","args","stack","Error","isServerLog","match","forEach","stackTrace","parse","filter","line","file","test","map","isCollapsed","INTERNAL_CALLSITES_REGEX","env","EXPO_DEBUG","style","dim","gray","fileName","startsWith","relative","lineNumber","column","methodName","Boolean","join","augmentLogs","memoize"],"mappings":"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"}
@@ -94,7 +94,7 @@ async function logEventAsync(event, properties = {}) {
94
94
  }
95
95
  const { userId , deviceId } = identifyData;
96
96
  const commonEventProperties = {
97
- source_version: "0.17.5",
97
+ source_version: "0.17.7",
98
98
  source: "expo"
99
99
  };
100
100
  const identity = {
@@ -135,7 +135,7 @@ function getContext() {
135
135
  },
136
136
  app: {
137
137
  name: "expo",
138
- version: "0.17.5"
138
+ version: "0.17.7"
139
139
  },
140
140
  ci: ciInfo.isCI ? {
141
141
  name: ciInfo.name,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/cli",
3
- "version": "0.17.5",
3
+ "version": "0.17.7",
4
4
  "description": "The Expo CLI",
5
5
  "main": "build/bin/cli",
6
6
  "bin": {
@@ -42,7 +42,7 @@
42
42
  "@expo/config": "~8.5.0",
43
43
  "@expo/config-plugins": "~7.8.0",
44
44
  "@expo/devcert": "^1.0.0",
45
- "@expo/env": "~0.2.0",
45
+ "@expo/env": "~0.2.2",
46
46
  "@expo/image-utils": "^0.4.0",
47
47
  "@expo/json-file": "^8.2.37",
48
48
  "@expo/metro-config": "~0.17.0",
@@ -168,5 +168,5 @@
168
168
  "tree-kill": "^1.2.2",
169
169
  "tsd": "^0.28.1"
170
170
  },
171
- "gitHead": "4f3dcf3e23eae997f884117fdd34ad734efad9fd"
171
+ "gitHead": "31bca2ea5a7b87e5566e278ef84e6d6476d6d625"
172
172
  }