@expo/cli 1.0.0-canary-20250207-8bc5146 → 1.0.0-canary-20250219-4a5dade

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/utils/getOrPromptApplicationId.ts"],"sourcesContent":["import { GraphQLError } from '@0no-co/graphql.web';\nimport { ExpoConfig, getConfig } from '@expo/config';\nimport { CombinedError } from '@urql/core';\nimport chalk from 'chalk';\n\nimport { memoize } from './fn';\nimport { learnMore } from './link';\nimport { attemptModification } from './modifyConfigAsync';\nimport prompt, { confirmAsync } from './prompts';\nimport {\n assertValidBundleId,\n assertValidPackage,\n getBundleIdWarningAsync,\n getPackageNameWarningAsync,\n getSanitizedBundleIdentifier,\n getSanitizedPackage,\n validateBundleId,\n validatePackage,\n validatePackageWithWarning,\n} from './validateApplicationId';\nimport { AppQuery } from '../api/graphql/queries/AppQuery';\nimport * as Log from '../log';\n\nconst debug = require('debug')('expo:app-id') as typeof console.log;\n\nasync function getRecommendedReverseDomainNameSecondPartAsync(\n exp: ExpoConfig\n): Promise<string | null> {\n const easProjectId = exp.extra?.eas?.projectId;\n if (!easProjectId) {\n return null;\n }\n\n try {\n const app = await AppQuery.byIdAsync(easProjectId);\n return app.ownerAccount.name;\n } catch (e) {\n if (e instanceof GraphQLError || e instanceof CombinedError) {\n return null;\n }\n throw e;\n }\n}\n\nconst NO_BUNDLE_ID_MESSAGE = `Project must have a \\`ios.bundleIdentifier\\` set in the Expo config (app.json or app.config.js).`;\n\nconst NO_PACKAGE_MESSAGE = `Project must have a \\`android.package\\` set in the Expo config (app.json or app.config.js).`;\n\n/**\n * Get the bundle identifier from the Expo config or prompt the user to choose a new bundle identifier.\n * Prompted value will be validated against the App Store and a local regex.\n * If the project Expo config is a static JSON file, the bundle identifier will be updated in the config automatically.\n */\nexport async function getOrPromptForBundleIdentifierAsync(\n projectRoot: string,\n exp: ExpoConfig = getConfig(projectRoot).exp\n): Promise<string> {\n const current = exp.ios?.bundleIdentifier;\n if (current) {\n assertValidBundleId(current);\n return current;\n }\n\n return promptForBundleIdWithInitialAsync(\n projectRoot,\n exp,\n await getRecommendedBundleIdAsync(exp)\n );\n}\n\nconst memoLog = memoize(Log.log);\n\nasync function promptForBundleIdWithInitialAsync(\n projectRoot: string,\n exp: ExpoConfig,\n bundleIdentifier?: string\n): Promise<string> {\n if (!bundleIdentifier) {\n memoLog(\n chalk`\\n{bold 📝 iOS Bundle Identifier} {dim ${learnMore(\n 'https://expo.fyi/bundle-identifier'\n )}}\\n`\n );\n\n // Prompt the user for the bundle ID.\n // Even if the project is using a dynamic config we can still\n // prompt a better error message, recommend a default value, and help the user\n // validate their custom bundle ID upfront.\n const { input } = await prompt(\n {\n type: 'text',\n name: 'input',\n // The Apple helps people know this isn't an EAS feature.\n message: `What would you like your iOS bundle identifier to be?`,\n validate: validateBundleId,\n },\n {\n nonInteractiveHelp: NO_BUNDLE_ID_MESSAGE,\n }\n );\n bundleIdentifier = input as string;\n }\n\n // Warn the user if the bundle ID is already in use.\n const warning = await getBundleIdWarningAsync(bundleIdentifier);\n\n if (warning && !(await warnAndConfirmAsync(warning))) {\n // Cycle the Bundle ID prompt to try again.\n return await promptForBundleIdWithInitialAsync(projectRoot, exp);\n }\n\n // Apply the changes to the config.\n if (\n await attemptModification(\n projectRoot,\n {\n ios: { ...(exp.ios || {}), bundleIdentifier },\n },\n { ios: { bundleIdentifier } }\n )\n ) {\n Log.log(chalk.gray`\\u203A Apple bundle identifier: ${bundleIdentifier}`);\n }\n\n return bundleIdentifier;\n}\n\nasync function warnAndConfirmAsync(warning: string): Promise<boolean> {\n Log.log();\n Log.warn(warning);\n Log.log();\n if (\n !(await confirmAsync({\n message: `Continue?`,\n initial: true,\n }))\n ) {\n return false;\n }\n return true;\n}\n\n// Recommend a bundle identifier based on the account name of the owner of the project and project slug.\nasync function getRecommendedBundleIdAsync(exp: ExpoConfig): Promise<string | undefined> {\n const possibleIdFromAndroid = exp.android?.package\n ? getSanitizedBundleIdentifier(exp.android.package)\n : undefined;\n // Attempt to use the android package name first since it's convenient to have them aligned.\n if (possibleIdFromAndroid && validateBundleId(possibleIdFromAndroid)) {\n return possibleIdFromAndroid;\n } else {\n const recommendedReverseDomainNameSecondPart =\n await getRecommendedReverseDomainNameSecondPartAsync(exp);\n if (recommendedReverseDomainNameSecondPart) {\n const possibleId = getSanitizedBundleIdentifier(\n `com.${recommendedReverseDomainNameSecondPart}.${exp.slug}`\n );\n if (validateBundleId(possibleId)) {\n return possibleId;\n }\n } else {\n debug('Could not generate recommended name from EAS');\n }\n }\n\n return undefined;\n}\n\n// Recommend a package name based on the account name of the owner of the project and project slug.\nasync function getRecommendedPackageNameAsync(exp: ExpoConfig): Promise<string | undefined> {\n const possibleIdFromApple = exp.ios?.bundleIdentifier\n ? getSanitizedPackage(exp.ios.bundleIdentifier)\n : undefined;\n\n // Attempt to use the ios bundle id first since it's convenient to have them aligned.\n if (possibleIdFromApple && validatePackage(possibleIdFromApple)) {\n return possibleIdFromApple;\n } else {\n const recommendedReverseDomainNameSecondPart =\n await getRecommendedReverseDomainNameSecondPartAsync(exp);\n if (recommendedReverseDomainNameSecondPart) {\n const possibleId = getSanitizedPackage(\n `com.${recommendedReverseDomainNameSecondPart}.${exp.slug}`\n );\n if (validatePackage(possibleId)) {\n return possibleId;\n } else {\n debug(\n `Recommended package name is invalid: \"${possibleId}\" (owner: ${recommendedReverseDomainNameSecondPart}, slug: ${exp.slug})`\n );\n }\n } else {\n debug('Could not generate recommended name from EAS');\n }\n }\n return undefined;\n}\n\n/**\n * Get the package name from the Expo config or prompt the user to choose a new package name.\n * Prompted value will be validated against the Play Store and a local regex.\n * If the project Expo config is a static JSON file, the package name will be updated in the config automatically.\n */\nexport async function getOrPromptForPackageAsync(\n projectRoot: string,\n exp: ExpoConfig = getConfig(projectRoot).exp\n): Promise<string> {\n const current = exp.android?.package;\n if (current) {\n assertValidPackage(current);\n return current;\n }\n\n return await promptForPackageAsync(projectRoot, exp);\n}\n\nasync function promptForPackageAsync(projectRoot: string, exp: ExpoConfig): Promise<string> {\n return promptForPackageWithInitialAsync(\n projectRoot,\n exp,\n await getRecommendedPackageNameAsync(exp)\n );\n}\n\nasync function promptForPackageWithInitialAsync(\n projectRoot: string,\n exp: ExpoConfig,\n packageName?: string\n): Promise<string> {\n if (!packageName) {\n memoLog(\n chalk`\\n{bold 📝 Android package} {dim ${learnMore('https://expo.fyi/android-package')}}\\n`\n );\n\n // Prompt the user for the android package.\n // Even if the project is using a dynamic config we can still\n // prompt a better error message, recommend a default value, and help the user\n // validate their custom android package upfront.\n const { input } = await prompt(\n {\n type: 'text',\n name: 'input',\n message: `What would you like your Android package name to be?`,\n validate: validatePackageWithWarning,\n },\n {\n nonInteractiveHelp: NO_PACKAGE_MESSAGE,\n }\n );\n packageName = input as string;\n }\n\n // Warn the user if the package name is already in use.\n const warning = await getPackageNameWarningAsync(packageName);\n if (warning && !(await warnAndConfirmAsync(warning))) {\n // Cycle the Package name prompt to try again.\n return promptForPackageWithInitialAsync(projectRoot, exp);\n }\n\n // Apply the changes to the config.\n if (\n await attemptModification(\n projectRoot,\n {\n android: { ...(exp.android || {}), package: packageName },\n },\n {\n android: { package: packageName },\n }\n )\n ) {\n Log.log(chalk.gray`\\u203A Android package name: ${packageName}`);\n }\n\n return packageName;\n}\n"],"names":["getOrPromptForBundleIdentifierAsync","getOrPromptForPackageAsync","debug","require","getRecommendedReverseDomainNameSecondPartAsync","exp","easProjectId","extra","eas","projectId","app","AppQuery","byIdAsync","ownerAccount","name","e","GraphQLError","CombinedError","NO_BUNDLE_ID_MESSAGE","NO_PACKAGE_MESSAGE","projectRoot","getConfig","current","ios","bundleIdentifier","assertValidBundleId","promptForBundleIdWithInitialAsync","getRecommendedBundleIdAsync","memoLog","memoize","Log","log","chalk","learnMore","input","prompt","type","message","validate","validateBundleId","nonInteractiveHelp","warning","getBundleIdWarningAsync","warnAndConfirmAsync","attemptModification","gray","warn","confirmAsync","initial","possibleIdFromAndroid","android","package","getSanitizedBundleIdentifier","undefined","recommendedReverseDomainNameSecondPart","possibleId","slug","getRecommendedPackageNameAsync","possibleIdFromApple","getSanitizedPackage","validatePackage","assertValidPackage","promptForPackageAsync","promptForPackageWithInitialAsync","packageName","validatePackageWithWarning","getPackageNameWarningAsync"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/utils/getOrPromptApplicationId.ts"],"sourcesContent":["import { GraphQLError } from '@0no-co/graphql.web';\nimport { ExpoConfig, getConfig } from '@expo/config';\nimport { CombinedError } from '@urql/core';\nimport chalk from 'chalk';\n\nimport { memoize } from './fn';\nimport { learnMore } from './link';\nimport { attemptModification } from './modifyConfigAsync';\nimport prompt, { confirmAsync } from './prompts';\nimport {\n assertValidBundleId,\n assertValidPackage,\n getBundleIdWarningAsync,\n getPackageNameWarningAsync,\n getSanitizedBundleIdentifier,\n getSanitizedPackage,\n validateBundleId,\n validatePackage,\n validatePackageWithWarning,\n} from './validateApplicationId';\nimport { AppQuery } from '../api/graphql/queries/AppQuery';\nimport { getSettings } from '../api/user/UserSettings';\nimport * as Log from '../log';\n\nconst debug = require('debug')('expo:app-id') as typeof console.log;\n\nconst ANONYMOUS_USERNAME = 'anonymous';\n\nasync function getRecommendedReverseDomainNameSecondPartAsync(\n exp: ExpoConfig\n): Promise<string | null> {\n // Get the cached username.\n const cachedUsername = getSettings().read().auth?.username;\n if (cachedUsername) {\n return cachedUsername;\n }\n const easProjectId = exp.extra?.eas?.projectId;\n if (!easProjectId) {\n return null;\n }\n\n try {\n const app = await AppQuery.byIdAsync(easProjectId);\n return app.ownerAccount.name;\n } catch (e) {\n if (e instanceof GraphQLError || e instanceof CombinedError) {\n return null;\n }\n throw e;\n }\n}\n\nconst NO_BUNDLE_ID_MESSAGE = `Project must have a \\`ios.bundleIdentifier\\` set in the Expo config (app.json or app.config.js).`;\n\nconst NO_PACKAGE_MESSAGE = `Project must have a \\`android.package\\` set in the Expo config (app.json or app.config.js).`;\n\n/**\n * Get the bundle identifier from the Expo config or prompt the user to choose a new bundle identifier.\n * Prompted value will be validated against the App Store and a local regex.\n * If the project Expo config is a static JSON file, the bundle identifier will be updated in the config automatically.\n */\nexport async function getOrPromptForBundleIdentifierAsync(\n projectRoot: string,\n exp: ExpoConfig = getConfig(projectRoot).exp\n): Promise<string> {\n const current = exp.ios?.bundleIdentifier;\n if (current) {\n assertValidBundleId(current);\n return current;\n }\n\n return promptForBundleIdWithInitialAsync(\n projectRoot,\n exp,\n await getRecommendedBundleIdAsync(exp)\n );\n}\n\nconst memoLog = memoize(Log.log);\n\nasync function promptForBundleIdWithInitialAsync(\n projectRoot: string,\n exp: ExpoConfig,\n bundleIdentifier?: string\n): Promise<string> {\n if (!bundleIdentifier) {\n memoLog(\n chalk`\\n{bold 📝 iOS Bundle Identifier} {dim ${learnMore(\n 'https://expo.fyi/bundle-identifier'\n )}}\\n`\n );\n\n // Prompt the user for the bundle ID.\n // Even if the project is using a dynamic config we can still\n // prompt a better error message, recommend a default value, and help the user\n // validate their custom bundle ID upfront.\n const { input } = await prompt(\n {\n type: 'text',\n name: 'input',\n // The Apple helps people know this isn't an EAS feature.\n message: `What would you like your iOS bundle identifier to be?`,\n validate: validateBundleId,\n },\n {\n nonInteractiveHelp: NO_BUNDLE_ID_MESSAGE,\n }\n );\n bundleIdentifier = input as string;\n }\n\n // Warn the user if the bundle ID is already in use.\n const warning = await getBundleIdWarningAsync(bundleIdentifier);\n\n if (warning && !(await warnAndConfirmAsync(warning))) {\n // Cycle the Bundle ID prompt to try again.\n return await promptForBundleIdWithInitialAsync(projectRoot, exp);\n }\n\n // Apply the changes to the config.\n if (\n await attemptModification(\n projectRoot,\n {\n ios: { ...(exp.ios || {}), bundleIdentifier },\n },\n { ios: { bundleIdentifier } }\n )\n ) {\n Log.log(chalk.gray`\\u203A Apple bundle identifier: ${bundleIdentifier}`);\n }\n\n return bundleIdentifier;\n}\n\nasync function warnAndConfirmAsync(warning: string): Promise<boolean> {\n Log.log();\n Log.warn(warning);\n Log.log();\n if (\n !(await confirmAsync({\n message: `Continue?`,\n initial: true,\n }))\n ) {\n return false;\n }\n return true;\n}\n\n// Recommend a bundle identifier based on the account name of the owner of the project and project slug.\nasync function getRecommendedBundleIdAsync(exp: ExpoConfig): Promise<string | undefined> {\n const possibleIdFromAndroid = exp.android?.package\n ? getSanitizedBundleIdentifier(exp.android.package)\n : undefined;\n // Attempt to use the android package name first since it's convenient to have them aligned.\n if (possibleIdFromAndroid && validateBundleId(possibleIdFromAndroid)) {\n return possibleIdFromAndroid;\n } else {\n const recommendedReverseDomainNameSecondPart =\n (await getRecommendedReverseDomainNameSecondPartAsync(exp)) ?? ANONYMOUS_USERNAME;\n const possibleId = getSanitizedBundleIdentifier(\n `com.${recommendedReverseDomainNameSecondPart}.${exp.slug}`\n );\n if (validateBundleId(possibleId)) {\n return possibleId;\n }\n }\n\n return undefined;\n}\n\n// Recommend a package name based on the account name of the owner of the project and project slug.\nasync function getRecommendedPackageNameAsync(exp: ExpoConfig): Promise<string | undefined> {\n const possibleIdFromApple = exp.ios?.bundleIdentifier\n ? getSanitizedPackage(exp.ios.bundleIdentifier)\n : undefined;\n\n // Attempt to use the ios bundle id first since it's convenient to have them aligned.\n if (possibleIdFromApple && validatePackage(possibleIdFromApple)) {\n return possibleIdFromApple;\n } else {\n const recommendedReverseDomainNameSecondPart =\n (await getRecommendedReverseDomainNameSecondPartAsync(exp)) ?? ANONYMOUS_USERNAME;\n\n const possibleId = getSanitizedPackage(\n `com.${recommendedReverseDomainNameSecondPart}.${exp.slug}`\n );\n if (validatePackage(possibleId)) {\n return possibleId;\n } else {\n debug(\n `Recommended package name is invalid: \"${possibleId}\" (owner: ${recommendedReverseDomainNameSecondPart}, slug: ${exp.slug})`\n );\n }\n }\n return undefined;\n}\n\n/**\n * Get the package name from the Expo config or prompt the user to choose a new package name.\n * Prompted value will be validated against the Play Store and a local regex.\n * If the project Expo config is a static JSON file, the package name will be updated in the config automatically.\n */\nexport async function getOrPromptForPackageAsync(\n projectRoot: string,\n exp: ExpoConfig = getConfig(projectRoot).exp\n): Promise<string> {\n const current = exp.android?.package;\n if (current) {\n assertValidPackage(current);\n return current;\n }\n\n return await promptForPackageAsync(projectRoot, exp);\n}\n\nasync function promptForPackageAsync(projectRoot: string, exp: ExpoConfig): Promise<string> {\n return promptForPackageWithInitialAsync(\n projectRoot,\n exp,\n await getRecommendedPackageNameAsync(exp)\n );\n}\n\nasync function promptForPackageWithInitialAsync(\n projectRoot: string,\n exp: ExpoConfig,\n packageName?: string\n): Promise<string> {\n if (!packageName) {\n memoLog(\n chalk`\\n{bold 📝 Android package} {dim ${learnMore('https://expo.fyi/android-package')}}\\n`\n );\n\n // Prompt the user for the android package.\n // Even if the project is using a dynamic config we can still\n // prompt a better error message, recommend a default value, and help the user\n // validate their custom android package upfront.\n const { input } = await prompt(\n {\n type: 'text',\n name: 'input',\n message: `What would you like your Android package name to be?`,\n validate: validatePackageWithWarning,\n },\n {\n nonInteractiveHelp: NO_PACKAGE_MESSAGE,\n }\n );\n packageName = input as string;\n }\n\n // Warn the user if the package name is already in use.\n const warning = await getPackageNameWarningAsync(packageName);\n if (warning && !(await warnAndConfirmAsync(warning))) {\n // Cycle the Package name prompt to try again.\n return promptForPackageWithInitialAsync(projectRoot, exp);\n }\n\n // Apply the changes to the config.\n if (\n await attemptModification(\n projectRoot,\n {\n android: { ...(exp.android || {}), package: packageName },\n },\n {\n android: { package: packageName },\n }\n )\n ) {\n Log.log(chalk.gray`\\u203A Android package name: ${packageName}`);\n }\n\n return packageName;\n}\n"],"names":["getOrPromptForBundleIdentifierAsync","getOrPromptForPackageAsync","debug","require","ANONYMOUS_USERNAME","getRecommendedReverseDomainNameSecondPartAsync","exp","getSettings","cachedUsername","read","auth","username","easProjectId","extra","eas","projectId","app","AppQuery","byIdAsync","ownerAccount","name","e","GraphQLError","CombinedError","NO_BUNDLE_ID_MESSAGE","NO_PACKAGE_MESSAGE","projectRoot","getConfig","current","ios","bundleIdentifier","assertValidBundleId","promptForBundleIdWithInitialAsync","getRecommendedBundleIdAsync","memoLog","memoize","Log","log","chalk","learnMore","input","prompt","type","message","validate","validateBundleId","nonInteractiveHelp","warning","getBundleIdWarningAsync","warnAndConfirmAsync","attemptModification","gray","warn","confirmAsync","initial","possibleIdFromAndroid","android","package","getSanitizedBundleIdentifier","undefined","recommendedReverseDomainNameSecondPart","possibleId","slug","getRecommendedPackageNameAsync","possibleIdFromApple","getSanitizedPackage","validatePackage","assertValidPackage","promptForPackageAsync","promptForPackageWithInitialAsync","packageName","validatePackageWithWarning","getPackageNameWarningAsync"],"mappings":"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"}
@@ -31,7 +31,7 @@ class FetchClient {
31
31
  this.headers = {
32
32
  accept: "application/json",
33
33
  "content-type": "application/json",
34
- "user-agent": `expo-cli/${"1.0.0-canary-20250207-8bc5146"}`,
34
+ "user-agent": `expo-cli/${"1.0.0-canary-20250219-4a5dade"}`,
35
35
  authorization: "Basic " + _nodeBuffer().Buffer.from(`${target}:`).toString("base64")
36
36
  };
37
37
  }
@@ -79,7 +79,7 @@ function createContext() {
79
79
  cpu: summarizeCpuInfo(),
80
80
  app: {
81
81
  name: "expo/cli",
82
- version: "1.0.0-canary-20250207-8bc5146"
82
+ version: "1.0.0-canary-20250219-4a5dade"
83
83
  },
84
84
  ci: _ciInfo().isCI ? {
85
85
  name: _ciInfo().name,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/cli",
3
- "version": "1.0.0-canary-20250207-8bc5146",
3
+ "version": "1.0.0-canary-20250219-4a5dade",
4
4
  "description": "The Expo CLI",
5
5
  "main": "build/bin/cli",
6
6
  "bin": {
@@ -42,17 +42,17 @@
42
42
  "@0no-co/graphql.web": "^1.0.8",
43
43
  "@babel/runtime": "^7.20.0",
44
44
  "@expo/code-signing-certificates": "^0.0.5",
45
- "@expo/config": "11.0.0-canary-20250207-8bc5146",
46
- "@expo/config-plugins": "9.0.16-canary-20250207-8bc5146",
45
+ "@expo/config": "11.0.0-canary-20250219-4a5dade",
46
+ "@expo/config-plugins": "9.0.16-canary-20250219-4a5dade",
47
47
  "@expo/devcert": "^1.1.2",
48
- "@expo/env": "1.0.1-canary-20250207-8bc5146",
49
- "@expo/image-utils": "0.6.5-canary-20250207-8bc5146",
50
- "@expo/json-file": "9.0.2-canary-20250207-8bc5146",
51
- "@expo/metro-config": "0.20.0-canary-20250207-8bc5146",
52
- "@expo/osascript": "2.1.6-canary-20250207-8bc5146",
53
- "@expo/package-manager": "1.8.0-canary-20250207-8bc5146",
54
- "@expo/plist": "0.2.2-canary-20250207-8bc5146",
55
- "@expo/prebuild-config": "8.0.27-canary-20250207-8bc5146",
48
+ "@expo/env": "1.0.1-canary-20250219-4a5dade",
49
+ "@expo/image-utils": "0.6.6-canary-20250219-4a5dade",
50
+ "@expo/json-file": "9.0.3-canary-20250219-4a5dade",
51
+ "@expo/metro-config": "0.20.0-canary-20250219-4a5dade",
52
+ "@expo/osascript": "2.1.7-canary-20250219-4a5dade",
53
+ "@expo/package-manager": "1.8.0-canary-20250219-4a5dade",
54
+ "@expo/plist": "0.2.3-canary-20250219-4a5dade",
55
+ "@expo/prebuild-config": "8.0.28-canary-20250219-4a5dade",
56
56
  "@expo/rudder-sdk-node": "^1.1.1",
57
57
  "@expo/spawn-async": "^1.7.2",
58
58
  "@expo/ws-tunnel": "^1.0.1",
@@ -65,7 +65,6 @@
65
65
  "better-opn": "~3.0.2",
66
66
  "bplist-creator": "0.0.7",
67
67
  "bplist-parser": "^0.3.1",
68
- "cacache": "^18.0.2",
69
68
  "chalk": "^4.0.0",
70
69
  "ci-info": "^3.3.0",
71
70
  "compression": "^1.7.4",
@@ -120,7 +119,7 @@
120
119
  "devDependencies": {
121
120
  "@expo/multipart-body-parser": "^1.0.0",
122
121
  "@expo/ngrok": "4.1.3",
123
- "@expo/server": "0.5.2-canary-20250207-8bc5146",
122
+ "@expo/server": "0.5.2-canary-20250219-4a5dade",
124
123
  "@graphql-codegen/cli": "^2.16.3",
125
124
  "@graphql-codegen/typescript": "^2.8.7",
126
125
  "@graphql-codegen/typescript-operations": "^2.5.12",
@@ -130,7 +129,6 @@
130
129
  "@taskr/esnext": "^1.1.0",
131
130
  "@taskr/watch": "^1.1.0",
132
131
  "@types/accepts": "^1.3.5",
133
- "@types/cacache": "^17.0.2",
134
132
  "@types/connect": "^3.4.33",
135
133
  "@types/cross-spawn": "^6.0.6",
136
134
  "@types/debug": "^4.1.7",
@@ -155,7 +153,7 @@
155
153
  "@types/ws": "^8.5.4",
156
154
  "devtools-protocol": "^0.0.1113120",
157
155
  "expo-atlas": "^0.4.0",
158
- "expo-module-scripts": "4.0.4-canary-20250207-8bc5146",
156
+ "expo-module-scripts": "4.0.5-canary-20250219-4a5dade",
159
157
  "find-process": "^1.4.7",
160
158
  "jest-runner-tsd": "^6.0.0",
161
159
  "klaw-sync": "^6.0.0",
@@ -168,5 +166,5 @@
168
166
  "tree-kill": "^1.2.2",
169
167
  "tsd": "^0.28.1"
170
168
  },
171
- "gitHead": "8bc5146852ccd7033138bac9ef8d3c41ae85a211"
169
+ "gitHead": "4a5daded61d3d8b9d501059039ac74c09c25675b"
172
170
  }