@expo/cli 56.1.2 → 56.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +1 -1
- package/build/src/api/endpoint.js +1 -1
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +77 -19
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/events/index.js +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +3 -4
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +6 -13
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +2 -1
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +10 -1
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +2 -2
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchClient.js +1 -1
- package/build/src/utils/telemetry/utils/context.js +1 -1
- package/package.json +16 -16
|
@@ -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 type { StackFrame } from './metro/log-box/LogBoxSymbolication';\nimport { parseErrorStack } from './metro/log-box/LogBoxSymbolication';\nimport { env } from '../../utils/env';\nimport { memoize } from '../../utils/fn';\nimport { LogBoxLog } from './metro/log-box/LogBoxLog';\nimport { getStackAsFormattedLog } from './metro/metroErrorInterface';\n\nconst debug = require('debug')('expo:metro:logger') as typeof console.log;\n\nconst CONSOLE_METHODS = [\n 'trace',\n 'info',\n 'error',\n 'warn',\n 'log',\n 'group',\n 'groupCollapsed',\n 'groupEnd',\n 'debug',\n] as const;\n\ntype ConsoleMethod = (typeof CONSOLE_METHODS)[number];\n\nconst groupStack: any = [];\nlet collapsedGuardTimer: ReturnType<typeof setTimeout> | undefined;\n\nexport function logLikeMetro(\n originalLogFunction: (...args: any[]) => void,\n level: ConsoleMethod,\n platform: string | null,\n ...data: any[]\n) {\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 =\n platform && platform !== 'BRIDGE' && platform !== 'NOBRIDGE' ? chalk.bold`${platform} ` : '';\n originalLogFunction(\n modePrefix +\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\nexport async function maybeSymbolicateAndFormatJSErrorStackLogAsync(\n projectRoot: string,\n level: 'error' | 'warn' | (string & {}),\n error: {\n message: string;\n stack: StackFrame[];\n }\n): Promise<{\n isFallback: boolean;\n stack: string;\n}> {\n const log = new LogBoxLog({\n level: level as 'error' | 'warn',\n message: {\n content: error.message,\n substitutions: [],\n },\n isComponentError: false,\n stack: error.stack,\n category: 'static',\n componentStack: [],\n });\n\n await new Promise((res) => log.symbolicate('stack', res));\n\n const formatted = getStackAsFormattedLog(projectRoot, {\n stack: log.symbolicated?.stack?.stack ?? [],\n codeFrame: log.codeFrame,\n });\n\n // NOTE: Message is printed above stack by the default Metro logic. So we don't need to include it here.\n const symbolicatedErrorStackLog = `\\n\\n${formatted.stack}`;\n\n return {\n isFallback: formatted.isFallback,\n stack: symbolicatedErrorStackLog,\n };\n}\n\n/**\n * Attempt to parse an error message string to an unsymbolicated stack.\n */\nexport function parseErrorStringToObject(errorString: string) {\n // Find the first line of the possible stack trace\n const stackStartIndex = errorString.indexOf('\\n at ');\n if (stackStartIndex === -1) {\n // No stack trace found, return the original error string\n return null;\n }\n const message = errorString.slice(0, stackStartIndex).trim();\n const stack = errorString.slice(stackStartIndex + 1);\n\n try {\n const parsedStack = parseErrorStack(stack);\n\n return {\n message,\n stack: parsedStack,\n };\n } catch (e) {\n // If parsing fails, return the original error string\n debug('Failed to parse error stack:', e);\n return null;\n }\n}\n\ntype ConsoleLogAugmented = typeof console.log & {\n __polyfilled?: typeof console.log;\n};\n\nfunction augmentLogsInternal(projectRoot: string) {\n const augmentLog = (name: ConsoleMethod, fn: ConsoleLogAugmented) => {\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\n if (isServerLog) {\n if (name === 'error' || name === 'warn') {\n if (\n args.length === 2 &&\n typeof args[1] === 'string' &&\n args[1].trim().startsWith('at ')\n ) {\n // react-dom custom stacks which are always broken.\n // A stack string like:\n // at div\n // at http://localhost:8081/node_modules/expo-router/node/render.bundle?platform=web&dev=true&hot=false&transform.engine=hermes&transform.routerRoot=app&resolver.environment=node&transform.environment=node:38008:27\n // at Background (http://localhost:8081/node_modules/expo-router/node/render.bundle?platform=web&dev=true&hot=false&transform.engine=hermes&transform.routerRoot=app&resolver.environment=node&transform.environment=node:151009:7)\n const customStack = args[1];\n\n try {\n // `error.stack` is already symbolicated by Node's source map support\n // (registered by `@expo/require-utils` when the SSR bundle is compiled), so the\n // parsed frames already point at original sources. We just reformat them.\n const parsedStack = parseErrorStack(customStack);\n args[1] = '\\n' + formatParsedStackLikeMetro(projectRoot, parsedStack, true);\n } catch {\n // If parsing fails, log the original stack.\n args.push('\\n' + formatStackLikeMetro(projectRoot, customStack));\n }\n } else {\n args.push('\\n' + formatStackLikeMetro(projectRoot, stack!));\n }\n }\n\n logLikeMetro(originalFn, name, 'λ', ...args);\n } else {\n originalFn(...args);\n }\n }\n logWithStack.__polyfilled = true;\n return logWithStack;\n };\n\n for (const name of CONSOLE_METHODS) {\n console[name] = augmentLog(name, console[name]);\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 formatParsedStackLikeMetro(projectRoot, stackTrace);\n}\n\nfunction formatParsedStackLikeMetro(\n projectRoot: string,\n stackTrace: stackTraceParser.StackFrame[],\n isComponentStack = false\n) {\n // Remove `Error: ` from the beginning of the stack trace.\n // Dim traces that match `INTERNAL_CALLSITES_REGEX`\n\n return stackTrace\n .filter(\n (line) =>\n line.file &&\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 (isComponentStack ? true : line.file !== '<anonymous>')\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 (!isComponentStack && 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":["augmentLogs","formatStackLikeMetro","logLikeMetro","maybeSymbolicateAndFormatJSErrorStackLogAsync","parseErrorStringToObject","debug","require","CONSOLE_METHODS","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","projectRoot","error","log","LogBoxLog","message","content","substitutions","isComponentError","stack","category","componentStack","Promise","res","symbolicate","formatted","getStackAsFormattedLog","symbolicated","codeFrame","symbolicatedErrorStackLog","isFallback","errorString","stackStartIndex","indexOf","slice","trim","parsedStack","parseErrorStack","e","augmentLogsInternal","augmentLog","name","fn","__polyfilled","originalFn","bind","logWithStack","args","Error","isServerLog","match","startsWith","customStack","formatParsedStackLikeMetro","stackTrace","stackTraceParser","parse","isComponentStack","filter","line","file","test","map","isCollapsed","INTERNAL_CALLSITES_REGEX","env","EXPO_DEBUG","style","dim","gray","fileName","relative","lineNumber","column","methodName","Boolean","join","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 { LogBoxLog } from './metro/log-box/LogBoxLog';\nimport type { StackFrame } from './metro/log-box/LogBoxSymbolication';\nimport { parseErrorStack } from './metro/log-box/LogBoxSymbolication';\nimport { getStackAsFormattedLog } from './metro/metroErrorInterface';\nimport { env } from '../../utils/env';\nimport { memoize } from '../../utils/fn';\n\nconst debug = require('debug')('expo:metro:logger') as typeof console.log;\n\nconst CONSOLE_METHODS = [\n 'trace',\n 'info',\n 'error',\n 'warn',\n 'log',\n 'group',\n 'groupCollapsed',\n 'groupEnd',\n 'debug',\n] as const;\n\ntype ConsoleMethod = (typeof CONSOLE_METHODS)[number];\n\nconst groupStack: any = [];\nlet collapsedGuardTimer: ReturnType<typeof setTimeout> | undefined;\n\nexport function logLikeMetro(\n originalLogFunction: (...args: any[]) => void,\n level: ConsoleMethod,\n platform: string | null,\n ...data: any[]\n) {\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 =\n platform && platform !== 'BRIDGE' && platform !== 'NOBRIDGE' ? chalk.bold`${platform} ` : '';\n originalLogFunction(\n modePrefix +\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\nexport async function maybeSymbolicateAndFormatJSErrorStackLogAsync(\n projectRoot: string,\n level: 'error' | 'warn' | (string & {}),\n error: {\n message: string;\n stack: StackFrame[];\n }\n): Promise<{\n isFallback: boolean;\n stack: string;\n}> {\n const log = new LogBoxLog({\n level: level as 'error' | 'warn',\n message: {\n content: error.message,\n substitutions: [],\n },\n isComponentError: false,\n stack: error.stack,\n category: 'static',\n componentStack: [],\n });\n\n await new Promise((res) => log.symbolicate('stack', res));\n\n const formatted = getStackAsFormattedLog(projectRoot, {\n stack: log.symbolicated?.stack?.stack ?? [],\n codeFrame: log.codeFrame,\n });\n\n // NOTE: Message is printed above stack by the default Metro logic. So we don't need to include it here.\n const symbolicatedErrorStackLog = `\\n\\n${formatted.stack}`;\n\n return {\n isFallback: formatted.isFallback,\n stack: symbolicatedErrorStackLog,\n };\n}\n\n/**\n * Attempt to parse an error message string to an unsymbolicated stack.\n */\nexport function parseErrorStringToObject(errorString: string) {\n // Find the first line of the possible stack trace\n const stackStartIndex = errorString.indexOf('\\n at ');\n if (stackStartIndex === -1) {\n // No stack trace found, return the original error string\n return null;\n }\n const message = errorString.slice(0, stackStartIndex).trim();\n const stack = errorString.slice(stackStartIndex + 1);\n\n try {\n const parsedStack = parseErrorStack(stack);\n\n return {\n message,\n stack: parsedStack,\n };\n } catch (e) {\n // If parsing fails, return the original error string\n debug('Failed to parse error stack:', e);\n return null;\n }\n}\n\ntype ConsoleLogAugmented = typeof console.log & {\n __polyfilled?: typeof console.log;\n};\n\nfunction augmentLogsInternal(projectRoot: string) {\n const augmentLog = (name: ConsoleMethod, fn: ConsoleLogAugmented) => {\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\n if (isServerLog) {\n if (name === 'error' || name === 'warn') {\n if (\n args.length === 2 &&\n typeof args[1] === 'string' &&\n args[1].trim().startsWith('at ')\n ) {\n // react-dom custom stacks which are always broken.\n // A stack string like:\n // at div\n // at http://localhost:8081/node_modules/expo-router/node/render.bundle?platform=web&dev=true&hot=false&transform.engine=hermes&transform.routerRoot=app&resolver.environment=node&transform.environment=node:38008:27\n // at Background (http://localhost:8081/node_modules/expo-router/node/render.bundle?platform=web&dev=true&hot=false&transform.engine=hermes&transform.routerRoot=app&resolver.environment=node&transform.environment=node:151009:7)\n const customStack = args[1];\n\n try {\n // `error.stack` is already symbolicated by Node's source map support\n // (registered by `@expo/require-utils` when the SSR bundle is compiled), so the\n // parsed frames already point at original sources. We just reformat them.\n const parsedStack = parseErrorStack(customStack);\n args[1] = '\\n' + formatParsedStackLikeMetro(projectRoot, parsedStack, true);\n } catch {\n // If parsing fails, log the original stack.\n args.push('\\n' + formatStackLikeMetro(projectRoot, customStack));\n }\n } else {\n args.push('\\n' + formatStackLikeMetro(projectRoot, stack!));\n }\n }\n\n logLikeMetro(originalFn, name, 'λ', ...args);\n } else {\n originalFn(...args);\n }\n }\n logWithStack.__polyfilled = true;\n return logWithStack;\n };\n\n for (const name of CONSOLE_METHODS) {\n console[name] = augmentLog(name, console[name]);\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 formatParsedStackLikeMetro(projectRoot, stackTrace);\n}\n\nfunction formatParsedStackLikeMetro(\n projectRoot: string,\n stackTrace: stackTraceParser.StackFrame[],\n isComponentStack = false\n) {\n // Remove `Error: ` from the beginning of the stack trace.\n // Dim traces that match `INTERNAL_CALLSITES_REGEX`\n\n return stackTrace\n .filter(\n (line) =>\n line.file &&\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 (isComponentStack ? true : line.file !== '<anonymous>')\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 (!isComponentStack && 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":["augmentLogs","formatStackLikeMetro","logLikeMetro","maybeSymbolicateAndFormatJSErrorStackLogAsync","parseErrorStringToObject","debug","require","CONSOLE_METHODS","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","projectRoot","error","log","LogBoxLog","message","content","substitutions","isComponentError","stack","category","componentStack","Promise","res","symbolicate","formatted","getStackAsFormattedLog","symbolicated","codeFrame","symbolicatedErrorStackLog","isFallback","errorString","stackStartIndex","indexOf","slice","trim","parsedStack","parseErrorStack","e","augmentLogsInternal","augmentLog","name","fn","__polyfilled","originalFn","bind","logWithStack","args","Error","isServerLog","match","startsWith","customStack","formatParsedStackLikeMetro","stackTrace","stackTraceParser","parse","isComponentStack","filter","line","file","test","map","isCollapsed","INTERNAL_CALLSITES_REGEX","env","EXPO_DEBUG","style","dim","gray","fileName","relative","lineNumber","column","methodName","Boolean","join","memoize"],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ class FetchClient {
|
|
|
26
26
|
this.headers = {
|
|
27
27
|
accept: 'application/json',
|
|
28
28
|
'content-type': 'application/json',
|
|
29
|
-
'user-agent': `expo-cli/${"56.1.
|
|
29
|
+
'user-agent': `expo-cli/${"56.1.4"}`,
|
|
30
30
|
authorization: 'Basic ' + _nodebuffer().Buffer.from(`${target}:`).toString('base64')
|
|
31
31
|
};
|
|
32
32
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/cli",
|
|
3
|
-
"version": "56.1.
|
|
3
|
+
"version": "56.1.4",
|
|
4
4
|
"description": "The Expo CLI",
|
|
5
5
|
"main": "main.js",
|
|
6
6
|
"bin": {
|
|
@@ -39,23 +39,23 @@
|
|
|
39
39
|
"homepage": "https://github.com/expo/expo/tree/main/packages/@expo/cli",
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@expo/code-signing-certificates": "^0.0.6",
|
|
42
|
-
"@expo/config": "~56.0.
|
|
43
|
-
"@expo/config-plugins": "~56.0.
|
|
42
|
+
"@expo/config": "~56.0.5",
|
|
43
|
+
"@expo/config-plugins": "~56.0.5",
|
|
44
44
|
"@expo/devcert": "^1.2.1",
|
|
45
45
|
"@expo/env": "~2.2.0",
|
|
46
46
|
"@expo/image-utils": "^0.9.2",
|
|
47
|
-
"@expo/inline-modules": "^0.0.
|
|
47
|
+
"@expo/inline-modules": "^0.0.7",
|
|
48
48
|
"@expo/json-file": "^10.1.0",
|
|
49
|
-
"@expo/log-box": "^56.0.
|
|
49
|
+
"@expo/log-box": "^56.0.9",
|
|
50
50
|
"@expo/metro": "~56.0.0",
|
|
51
|
-
"@expo/metro-config": "~56.0.
|
|
52
|
-
"@expo/metro-file-map": "^56.0.
|
|
51
|
+
"@expo/metro-config": "~56.0.8",
|
|
52
|
+
"@expo/metro-file-map": "^56.0.2",
|
|
53
53
|
"@expo/osascript": "^2.5.0",
|
|
54
54
|
"@expo/package-manager": "^1.11.0",
|
|
55
55
|
"@expo/plist": "^0.6.0",
|
|
56
|
-
"@expo/prebuild-config": "^56.0.
|
|
56
|
+
"@expo/prebuild-config": "^56.0.7",
|
|
57
57
|
"@expo/require-utils": "^56.1.0",
|
|
58
|
-
"@expo/router-server": "^56.0.
|
|
58
|
+
"@expo/router-server": "^56.0.8",
|
|
59
59
|
"@expo/schema-utils": "^56.0.0",
|
|
60
60
|
"@expo/spawn-async": "^1.7.2",
|
|
61
61
|
"@expo/ws-tunnel": "^1.0.1",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"connect": "^3.7.0",
|
|
73
73
|
"debug": "^4.3.4",
|
|
74
74
|
"dnssd-advertise": "^1.1.4",
|
|
75
|
-
"expo-server": "^56.0.
|
|
75
|
+
"expo-server": "^56.0.2",
|
|
76
76
|
"fetch-nodeshim": "^0.4.10",
|
|
77
77
|
"getenv": "^2.0.0",
|
|
78
78
|
"glob": "^13.0.0",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"node-forge": "^1.3.3",
|
|
82
82
|
"npm-package-arg": "^11.0.0",
|
|
83
83
|
"ora": "^3.4.0",
|
|
84
|
-
"picomatch": "^4.0.
|
|
84
|
+
"picomatch": "^4.0.4",
|
|
85
85
|
"pretty-format": "^29.7.0",
|
|
86
86
|
"progress": "^2.0.3",
|
|
87
87
|
"prompts": "^2.3.2",
|
|
@@ -157,13 +157,13 @@
|
|
|
157
157
|
"playwright": "^1.59.0",
|
|
158
158
|
"taskr": "^1.1.0",
|
|
159
159
|
"tree-kill": "^1.2.2",
|
|
160
|
-
"@expo/fingerprint": "0.
|
|
161
|
-
"expo": "56.0.0-preview.
|
|
160
|
+
"@expo/fingerprint": "0.18.1",
|
|
161
|
+
"expo": "56.0.0-preview.11",
|
|
162
|
+
"expo-modules-autolinking": "56.0.6",
|
|
162
163
|
"expo-module-scripts": "56.0.2",
|
|
163
|
-
"expo-
|
|
164
|
-
"expo-router": "56.1.3"
|
|
164
|
+
"expo-router": "56.2.0"
|
|
165
165
|
},
|
|
166
|
-
"gitHead": "
|
|
166
|
+
"gitHead": "51c27fce31a5b3a877a4b05d832dabf4a99db5e1",
|
|
167
167
|
"scripts": {
|
|
168
168
|
"build": "taskr",
|
|
169
169
|
"clean": "expo-module clean",
|