@expo/cli 0.14.0 → 0.16.0
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 +13 -5
- package/build/bin/cli.map +1 -1
- package/build/src/api/getVersions.js.map +1 -1
- package/build/src/api/rest/cache/response.js.map +1 -1
- package/build/src/api/rest/client.js +2 -2
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/user/actions.js +1 -1
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/customize/typescript.js +3 -1
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +5 -3
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +92 -18
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +3 -3
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +97 -0
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -0
- package/build/src/export/exportApp.js +106 -130
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +93 -38
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +1 -1
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportHermes.js +0 -90
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +165 -101
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +13 -5
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/fork-bundleAsync.js +84 -57
- package/build/src/export/fork-bundleAsync.js.map +1 -1
- package/build/src/export/index.js +9 -7
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +101 -0
- package/build/src/export/metroAssetLocalPath.js.map +1 -0
- package/build/src/export/persistMetroAssets.js +115 -31
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +7 -0
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +1 -1
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +168 -43
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +1 -1
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/writeContents.js +8 -106
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/install/applyPlugins.js +52 -0
- package/build/src/install/applyPlugins.js.map +1 -0
- package/build/src/install/checkPackages.js +2 -2
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +84 -0
- package/build/src/install/fixPackages.js.map +1 -0
- package/build/src/install/installAsync.js +50 -60
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +79 -0
- package/build/src/install/installExpoPackage.js.map +1 -0
- package/build/src/prebuild/clearNativeFolder.js +1 -1
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +3 -3
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +21 -30
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +45 -16
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +2 -2
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +6 -6
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +49 -36
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +2 -2
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/run/hints.js +4 -0
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +101 -0
- package/build/src/run/index.js.map +1 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +2 -2
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +22 -7
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +66 -0
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +22 -33
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +54 -19
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +14 -10
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +6 -1
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +63 -0
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -0
- package/build/src/start/server/getStaticRenderFunctions.js +25 -23
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +76 -69
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +6 -2
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +18 -1
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/bundleApiRoutes.js +5 -3
- package/build/src/start/server/metro/bundleApiRoutes.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +80 -46
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +152 -0
- package/build/src/start/server/metro/createJResolver.js.map +1 -0
- package/build/src/start/server/metro/createServerRouteMiddleware.js +15 -2
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/{inspector-proxy/device.js → debugging/InspectorDevice.js} +10 -38
- package/build/src/start/server/metro/debugging/InspectorDevice.js.map +1 -0
- package/build/src/start/server/metro/debugging/InspectorProxy.js +116 -0
- package/build/src/start/server/metro/debugging/InspectorProxy.js.map +1 -0
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +45 -0
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -0
- package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/NetworkResponse.js +3 -4
- package/build/src/start/server/metro/debugging/inspectorHandlers/NetworkResponse.js.map +1 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js.map +1 -0
- package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerGetPossibleBreakpoints.js +5 -6
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
- package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerScriptParsed.js +3 -2
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map +1 -0
- package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeDebuggerSetBreakpointByUrl.js +3 -2
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js +24 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
- package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/VscodeRuntimeGetProperties.js +5 -4
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map +1 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/types.js.map +1 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js +20 -0
- package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js.map +1 -0
- package/build/src/start/server/metro/externals.js +25 -3
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +40 -15
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +3 -2
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/router.js +5 -6
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +17 -27
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +59 -0
- package/build/src/start/server/metro/serializeHtml.js.map +1 -0
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +1 -2
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +237 -214
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +114 -40
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +61 -0
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js +2 -2
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +22 -66
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +23 -2
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js +30 -26
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js +7 -7
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +5 -2
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +3 -2
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +8 -7
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +176 -0
- package/build/src/start/server/middleware/metroOptions.js.map +1 -0
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +1 -1
- package/build/src/start/server/type-generation/__typetests__/route.test.js +11 -3
- package/build/src/start/server/type-generation/__typetests__/route.test.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +6 -4
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/utils/analytics/getMetroDebugProperties.js +1 -2
- package/build/src/utils/analytics/getMetroDebugProperties.js.map +1 -1
- package/build/src/utils/analytics/getMetroProperties.js +1 -2
- package/build/src/utils/analytics/getMetroProperties.js.map +1 -1
- package/build/src/utils/analytics/rudderstackClient.js +2 -2
- package/build/src/utils/args.js +4 -2
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/cocoapods.js +1 -1
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +11 -1
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/dir.js +18 -8
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/env.js +10 -1
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +2 -4
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/prompts.js +1 -28
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +3 -11
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +22 -12
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/package.json +19 -18
- package/static/shims/react-native-web/dist/cjs/exports/AppRegistry/AppContainer.js +13 -0
- package/static/shims/react-native-web/dist/exports/AppRegistry/AppContainer.js +12 -0
- package/static/template/index.html +14 -95
- package/build/src/export/printBundleSizes.js +0 -101
- package/build/src/export/printBundleSizes.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/device.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/NetworkResponse.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/PageReload.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerScriptParsed.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerSetBreakpointByUrl.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeGetProperties.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/handlers/types.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/index.js +0 -27
- package/build/src/start/server/metro/inspector-proxy/index.js.map +0 -1
- package/build/src/start/server/metro/inspector-proxy/proxy.js +0 -169
- package/build/src/start/server/metro/inspector-proxy/proxy.js.map +0 -1
- package/build/src/start/server/metro/resolveFromProject.js +0 -90
- package/build/src/start/server/metro/resolveFromProject.js.map +0 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +0 -64
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +0 -1
- /package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/PageReload.js +0 -0
- /package/build/src/start/server/metro/{inspector-proxy/handlers → debugging/inspectorHandlers}/types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/prebuild/updateFromTemplate.ts"],"sourcesContent":["import { ExpoConfig, PackageJSONConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\nimport chalk from 'chalk';\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/prebuild/updateFromTemplate.ts"],"sourcesContent":["import { ExpoConfig, PackageJSONConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\nimport chalk from 'chalk';\n\nimport { copyTemplateFiles, createCopyFilesSuccessMessage } from './copyTemplateFiles';\nimport { cloneTemplateAsync } from './resolveTemplate';\nimport { DependenciesModificationResults, updatePackageJSONAsync } from './updatePackageJson';\nimport { validateTemplatePlatforms } from './validateTemplatePlatforms';\nimport * as Log from '../log';\nimport { AbortCommandError, SilentError } from '../utils/errors';\nimport { logNewSection } from '../utils/ora';\nimport { profile } from '../utils/profile';\n\n/**\n * Creates local native files from an input template file path.\n *\n * @return `true` if the project is prebuilding, and `false` if it's syncing.\n */\nexport async function updateFromTemplateAsync(\n projectRoot: string,\n {\n exp,\n pkg,\n template,\n templateDirectory,\n platforms,\n skipDependencyUpdate,\n }: {\n /** Expo Config */\n exp: ExpoConfig;\n /** package.json as JSON */\n pkg: PackageJSONConfig;\n /** Template reference ID. */\n template?: string;\n /** Directory to write the template to before copying into the project. */\n templateDirectory?: string;\n /** List of platforms to clone. */\n platforms: ModPlatform[];\n /** List of dependencies to skip updating. */\n skipDependencyUpdate?: string[];\n }\n): Promise<\n {\n /** Indicates if new files were created in the project. */\n hasNewProjectFiles: boolean;\n /** Indicates that the project needs to run `pod install` */\n needsPodInstall: boolean;\n } & DependenciesModificationResults\n> {\n if (!templateDirectory) {\n const temporary = await import('tempy');\n templateDirectory = temporary.directory();\n }\n\n const copiedPaths = await profile(cloneTemplateAndCopyToProjectAsync)({\n projectRoot,\n template,\n templateDirectory,\n exp,\n platforms,\n });\n\n const depsResults = await profile(updatePackageJSONAsync)(projectRoot, {\n templateDirectory,\n pkg,\n skipDependencyUpdate,\n });\n\n return {\n hasNewProjectFiles: !!copiedPaths.length,\n // If the iOS folder changes or new packages are added, we should rerun pod install.\n needsPodInstall: copiedPaths.includes('ios') || !!depsResults.changedDependencies.length,\n ...depsResults,\n };\n}\n\n/**\n * Extract the template and copy the ios and android directories over to the project directory.\n *\n * @return `true` if any project files were created.\n */\nasync function cloneTemplateAndCopyToProjectAsync({\n projectRoot,\n templateDirectory,\n template,\n exp,\n platforms: unknownPlatforms,\n}: {\n projectRoot: string;\n templateDirectory: string;\n template?: string;\n exp: Pick<ExpoConfig, 'name' | 'sdkVersion'>;\n platforms: ModPlatform[];\n}): Promise<string[]> {\n const platformDirectories = unknownPlatforms\n .map((platform) => `./${platform}`)\n .reverse()\n .join(' and ');\n\n const pluralized = unknownPlatforms.length > 1 ? 'directories' : 'directory';\n const ora = logNewSection(`Creating native ${pluralized} (${platformDirectories})`);\n\n try {\n await cloneTemplateAsync({ templateDirectory, template, exp, ora });\n\n const platforms = validateTemplatePlatforms({\n templateDirectory,\n platforms: unknownPlatforms,\n });\n\n const results = copyTemplateFiles(projectRoot, {\n templateDirectory,\n platforms,\n });\n\n ora.succeed(createCopyFilesSuccessMessage(platforms, results));\n\n return results.copiedPaths;\n } catch (e: any) {\n if (!(e instanceof AbortCommandError)) {\n Log.error(e.message);\n }\n ora.fail(`Failed to create the native ${pluralized}`);\n Log.log(\n chalk.yellow(\n chalk`You may want to delete the {bold ./ios} and/or {bold ./android} directories before trying again.`\n )\n );\n throw new SilentError(e);\n }\n}\n"],"names":["updateFromTemplateAsync","Log","projectRoot","exp","pkg","template","templateDirectory","platforms","skipDependencyUpdate","temporary","directory","copiedPaths","profile","cloneTemplateAndCopyToProjectAsync","depsResults","updatePackageJSONAsync","hasNewProjectFiles","length","needsPodInstall","includes","changedDependencies","unknownPlatforms","platformDirectories","map","platform","reverse","join","pluralized","ora","logNewSection","cloneTemplateAsync","validateTemplatePlatforms","results","copyTemplateFiles","succeed","createCopyFilesSuccessMessage","e","AbortCommandError","error","message","fail","log","chalk","yellow","SilentError"],"mappings":"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"}
|
|
@@ -42,25 +42,28 @@ function _interopRequireWildcard(obj) {
|
|
|
42
42
|
return newObj;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
async function updatePackageJSONAsync(projectRoot, { templateDirectory , pkg , skipDependencyUpdate }) {
|
|
46
|
-
const updatingPackageJsonStep = (0, _ora).logNewSection("Updating
|
|
47
|
-
const templatePkg = (0, _config).getPackageJson(templateDirectory);
|
|
45
|
+
async function updatePackageJSONAsync(projectRoot, { templateDirectory , templatePkg =(0, _config).getPackageJson(templateDirectory) , pkg , skipDependencyUpdate }) {
|
|
46
|
+
const updatingPackageJsonStep = (0, _ora).logNewSection("Updating package.json");
|
|
48
47
|
const results = modifyPackageJson(projectRoot, {
|
|
49
48
|
templatePkg,
|
|
50
49
|
pkg,
|
|
51
50
|
skipDependencyUpdate
|
|
52
51
|
});
|
|
53
|
-
|
|
54
|
-
// This
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
const hasChanges = results.changedDependencies.length || results.scriptsChanged;
|
|
53
|
+
// NOTE: This is effectively bundler caching and subject to breakage if the inputs don't match the mutations.
|
|
54
|
+
if (hasChanges) {
|
|
55
|
+
await _fs.default.promises.writeFile(_path.default.resolve(projectRoot, "package.json"), // Add new line to match the format of running yarn.
|
|
56
|
+
// This prevents the `package.json` from changing when running `prebuild --no-install` multiple times.
|
|
57
|
+
JSON.stringify(pkg, null, 2) + "\n");
|
|
58
|
+
}
|
|
59
|
+
updatingPackageJsonStep.succeed("Updated package.json" + (hasChanges ? "" : _chalk.default.dim(` | no changes`)));
|
|
57
60
|
return results;
|
|
58
61
|
}
|
|
59
62
|
/**
|
|
60
63
|
* Make required modifications to the `package.json` file as a JSON object.
|
|
61
64
|
*
|
|
62
65
|
* 1. Update `package.json` `scripts`.
|
|
63
|
-
* 2. Update `package.json` `dependencies`
|
|
66
|
+
* 2. Update `package.json` `dependencies` (not `devDependencies`).
|
|
64
67
|
* 3. Update `package.json` `main`.
|
|
65
68
|
*
|
|
66
69
|
* @param projectRoot The root directory of the project.
|
|
@@ -69,33 +72,43 @@ async function updatePackageJSONAsync(projectRoot, { templateDirectory , pkg , s
|
|
|
69
72
|
* @param props.skipDependencyUpdate Array of dependencies to skip updating.
|
|
70
73
|
* @returns
|
|
71
74
|
*/ function modifyPackageJson(projectRoot, { templatePkg , pkg , skipDependencyUpdate }) {
|
|
72
|
-
updatePkgScripts({
|
|
75
|
+
const scriptsChanged = updatePkgScripts({
|
|
73
76
|
pkg
|
|
74
77
|
});
|
|
75
78
|
// TODO: Move to `npx expo-doctor`
|
|
76
|
-
return
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
return {
|
|
80
|
+
scriptsChanged,
|
|
81
|
+
...updatePkgDependencies(projectRoot, {
|
|
82
|
+
pkg,
|
|
83
|
+
templatePkg,
|
|
84
|
+
skipDependencyUpdate
|
|
85
|
+
})
|
|
86
|
+
};
|
|
81
87
|
}
|
|
82
88
|
function updatePkgDependencies(projectRoot, { pkg: pkg1 , templatePkg , skipDependencyUpdate =[] }) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
const { dependencies } = templatePkg;
|
|
90
|
+
// The default values come from the bare-minimum template's package.json.
|
|
91
|
+
// Users can change this by using different templates with the `--template` flag.
|
|
92
|
+
// The main reason for allowing the changing of dependencies would be to include
|
|
93
|
+
// dependencies that are required for the native project to build. For example,
|
|
94
|
+
// it does not need to include dependencies that are used in the JS-code only.
|
|
87
95
|
const defaultDependencies = createDependenciesMap(dependencies);
|
|
88
|
-
|
|
96
|
+
// NOTE: This is a hack to ensure this doesn't trigger an extraneous change in the `package.json`
|
|
97
|
+
// it isn't required for anything in the `ios` and `android` folders.
|
|
98
|
+
delete defaultDependencies["expo-status-bar"];
|
|
99
|
+
// NOTE: Expo splash screen is installed by default in the template but the config plugin also lives in prebuild-config
|
|
100
|
+
// so we can delete it to prevent an extraneous change in the `package.json`.
|
|
101
|
+
delete defaultDependencies["expo-splash-screen"];
|
|
89
102
|
const combinedDependencies = createDependenciesMap({
|
|
90
103
|
...defaultDependencies,
|
|
91
104
|
...pkg1.dependencies
|
|
92
105
|
});
|
|
93
106
|
// These dependencies are only added, not overwritten from the project
|
|
94
107
|
const requiredDependencies = [
|
|
108
|
+
// TODO: This is no longer required because it's this same package.
|
|
95
109
|
"expo",
|
|
96
|
-
|
|
97
|
-
"react",
|
|
98
|
-
"react-native"
|
|
110
|
+
// TODO: Drop this somehow.
|
|
111
|
+
"react-native",
|
|
99
112
|
].filter((depKey)=>!!defaultDependencies[depKey]
|
|
100
113
|
);
|
|
101
114
|
const symlinkedPackages = [];
|
|
@@ -132,29 +145,25 @@ function updatePkgDependencies(projectRoot, { pkg: pkg1 , templatePkg , skipDepe
|
|
|
132
145
|
Log.warn(`\u203A Using current versions instead of recommended ${nonRecommendedPackages.map((pkg)=>_chalk.default.bold(pkg)
|
|
133
146
|
).join(", ")}.`);
|
|
134
147
|
}
|
|
135
|
-
const combinedDevDependencies = createDependenciesMap({
|
|
136
|
-
...defaultDevDependencies,
|
|
137
|
-
...pkg1.devDependencies
|
|
138
|
-
});
|
|
139
148
|
// Only change the dependencies if the normalized hash changes, this helps to reduce meaningless changes.
|
|
140
149
|
const hasNewDependencies = hashForDependencyMap(pkg1.dependencies) !== hashForDependencyMap(combinedDependencies);
|
|
141
|
-
const hasNewDevDependencies = hashForDependencyMap(pkg1.devDependencies) !== hashForDependencyMap(combinedDevDependencies);
|
|
142
150
|
// Save the dependencies
|
|
151
|
+
let changedDependencies = [];
|
|
143
152
|
if (hasNewDependencies) {
|
|
144
153
|
var _dependencies;
|
|
154
|
+
changedDependencies = diffKeys(combinedDependencies, (_dependencies = pkg1.dependencies) != null ? _dependencies : {}).sort();
|
|
155
|
+
var _dependencies1;
|
|
145
156
|
// Use Object.assign to preserve the original order of dependencies, this makes it easier to see what changed in the git diff.
|
|
146
|
-
pkg1.dependencies = Object.assign((
|
|
147
|
-
}
|
|
148
|
-
if (hasNewDevDependencies) {
|
|
149
|
-
var _devDependencies;
|
|
150
|
-
// Same as with dependencies
|
|
151
|
-
pkg1.devDependencies = Object.assign((_devDependencies = pkg1.devDependencies) != null ? _devDependencies : {}, combinedDevDependencies);
|
|
157
|
+
pkg1.dependencies = Object.assign((_dependencies1 = pkg1.dependencies) != null ? _dependencies1 : {}, combinedDependencies);
|
|
152
158
|
}
|
|
153
159
|
return {
|
|
154
|
-
|
|
155
|
-
hasNewDevDependencies
|
|
160
|
+
changedDependencies
|
|
156
161
|
};
|
|
157
162
|
}
|
|
163
|
+
function diffKeys(a, b) {
|
|
164
|
+
return Object.keys(a).filter((key)=>a[key] !== b[key]
|
|
165
|
+
);
|
|
166
|
+
}
|
|
158
167
|
function createDependenciesMap(dependencies) {
|
|
159
168
|
if (typeof dependencies !== "object") {
|
|
160
169
|
throw new Error(`Dependency map is invalid, expected object but got ${typeof dependencies}`);
|
|
@@ -174,18 +183,22 @@ function createDependenciesMap(dependencies) {
|
|
|
174
183
|
}
|
|
175
184
|
/**
|
|
176
185
|
* Update package.json scripts - `npm start` should default to `expo
|
|
177
|
-
* start --dev-client` rather than `expo start` after
|
|
186
|
+
* start --dev-client` rather than `expo start` after prebuilding, for example.
|
|
178
187
|
*/ function updatePkgScripts({ pkg }) {
|
|
179
188
|
var ref, ref1;
|
|
189
|
+
let hasChanged = false;
|
|
180
190
|
if (!pkg.scripts) {
|
|
181
191
|
pkg.scripts = {};
|
|
182
192
|
}
|
|
183
193
|
if (!((ref = pkg.scripts.android) == null ? void 0 : ref.includes("run"))) {
|
|
184
194
|
pkg.scripts.android = "expo run:android";
|
|
195
|
+
hasChanged = true;
|
|
185
196
|
}
|
|
186
197
|
if (!((ref1 = pkg.scripts.ios) == null ? void 0 : ref1.includes("run"))) {
|
|
187
198
|
pkg.scripts.ios = "expo run:ios";
|
|
199
|
+
hasChanged = true;
|
|
188
200
|
}
|
|
201
|
+
return hasChanged;
|
|
189
202
|
}
|
|
190
203
|
function normalizeDependencyMap(deps) {
|
|
191
204
|
return Object.keys(deps).map((dependency)=>`${dependency}@${deps[dependency]}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/prebuild/updatePackageJson.ts"],"sourcesContent":["import { getPackageJson, PackageJSONConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport crypto from 'crypto';\nimport fs from 'fs';\nimport path from 'path';\nimport { intersects as semverIntersects, Range as SemverRange } from 'semver';\n\nimport * as Log from '../log';\nimport { isModuleSymlinked } from '../utils/isModuleSymlinked';\nimport { logNewSection } from '../utils/ora';\n\nexport type DependenciesMap = { [key: string]: string | number };\n\nexport type DependenciesModificationResults = {\n /** Indicates that new values were added to the `dependencies` object in the `package.json`. */\n hasNewDependencies: boolean;\n /** Indicates that new values were added to the `devDependencies` object in the `package.json`. */\n hasNewDevDependencies: boolean;\n};\n\n/** Modifies the `package.json` with `modifyPackageJson` and format/displays the results. */\nexport async function updatePackageJSONAsync(\n projectRoot: string,\n {\n templateDirectory,\n pkg,\n skipDependencyUpdate,\n }: {\n templateDirectory: string;\n pkg: PackageJSONConfig;\n skipDependencyUpdate?: string[];\n }\n): Promise<DependenciesModificationResults> {\n const updatingPackageJsonStep = logNewSection(\n 'Updating your package.json scripts, dependencies, and main file'\n );\n\n const templatePkg = getPackageJson(templateDirectory);\n\n const results = modifyPackageJson(projectRoot, {\n templatePkg,\n pkg,\n skipDependencyUpdate,\n });\n\n await fs.promises.writeFile(\n path.resolve(projectRoot, 'package.json'),\n // Add new line to match the format of running yarn.\n // This prevents the `package.json` from changing when running `prebuild --no-install` multiple times.\n JSON.stringify(pkg, null, 2) + '\\n'\n );\n\n updatingPackageJsonStep.succeed(\n 'Updated package.json and added index.js entry point for iOS and Android'\n );\n\n return results;\n}\n\n/**\n * Make required modifications to the `package.json` file as a JSON object.\n *\n * 1. Update `package.json` `scripts`.\n * 2. Update `package.json` `dependencies` and `devDependencies`.\n * 3. Update `package.json` `main`.\n *\n * @param projectRoot The root directory of the project.\n * @param props.templatePkg Template project package.json as JSON.\n * @param props.pkg Current package.json as JSON.\n * @param props.skipDependencyUpdate Array of dependencies to skip updating.\n * @returns\n */\nfunction modifyPackageJson(\n projectRoot: string,\n {\n templatePkg,\n pkg,\n skipDependencyUpdate,\n }: {\n templatePkg: PackageJSONConfig;\n pkg: PackageJSONConfig;\n skipDependencyUpdate?: string[];\n }\n) {\n updatePkgScripts({ pkg });\n\n // TODO: Move to `npx expo-doctor`\n return updatePkgDependencies(projectRoot, {\n pkg,\n templatePkg,\n skipDependencyUpdate,\n });\n}\n\n/**\n * Update package.json dependencies by combining the dependencies in the project we are ejecting\n * with the dependencies in the template project. Does the same for devDependencies.\n *\n * - The template may have some dependencies beyond react/react-native/react-native-unimodules,\n * for example RNGH and Reanimated. We should prefer the version that is already being used\n * in the project for those, but swap the react/react-native/react-native-unimodules versions\n * with the ones in the template.\n * - The same applies to expo-updates -- since some native project configuration may depend on the\n * version, we should always use the version of expo-updates in the template.\n *\n * > Exposed for testing.\n */\nexport function updatePkgDependencies(\n projectRoot: string,\n {\n pkg,\n templatePkg,\n skipDependencyUpdate = [],\n }: {\n pkg: PackageJSONConfig;\n templatePkg: PackageJSONConfig;\n /** @deprecated Required packages are not overwritten, only added when missing */\n skipDependencyUpdate?: string[];\n }\n): DependenciesModificationResults {\n if (!pkg.devDependencies) {\n pkg.devDependencies = {};\n }\n const { dependencies, devDependencies } = templatePkg;\n const defaultDependencies = createDependenciesMap(dependencies);\n const defaultDevDependencies = createDependenciesMap(devDependencies);\n\n const combinedDependencies: DependenciesMap = createDependenciesMap({\n ...defaultDependencies,\n ...pkg.dependencies,\n });\n\n // These dependencies are only added, not overwritten from the project\n const requiredDependencies = ['expo', 'expo-splash-screen', 'react', 'react-native'].filter(\n (depKey) => !!defaultDependencies[depKey]\n );\n\n const symlinkedPackages: string[] = [];\n const nonRecommendedPackages: string[] = [];\n\n for (const dependenciesKey of requiredDependencies) {\n // If the local package.json defined the dependency that we want to overwrite...\n if (pkg.dependencies?.[dependenciesKey]) {\n // Then ensure it isn't symlinked (i.e. the user has a custom version in their yarn workspace).\n if (isModuleSymlinked(projectRoot, { moduleId: dependenciesKey, isSilent: true })) {\n // If the package is in the project's package.json and it's symlinked, then skip overwriting it.\n symlinkedPackages.push(dependenciesKey);\n continue;\n }\n\n // Do not modify manually skipped dependencies\n if (skipDependencyUpdate.includes(dependenciesKey)) {\n continue;\n }\n\n // Warn users for outdated dependencies when prebuilding\n const hasRecommendedVersion = versionRangesIntersect(\n pkg.dependencies[dependenciesKey],\n String(defaultDependencies[dependenciesKey])\n );\n if (!hasRecommendedVersion) {\n nonRecommendedPackages.push(`${dependenciesKey}@${defaultDependencies[dependenciesKey]}`);\n }\n }\n }\n\n if (symlinkedPackages.length) {\n Log.log(\n `\\u203A Using symlinked ${symlinkedPackages\n .map((pkg) => chalk.bold(pkg))\n .join(', ')} instead of recommended version(s).`\n );\n }\n\n if (nonRecommendedPackages.length) {\n Log.warn(\n `\\u203A Using current versions instead of recommended ${nonRecommendedPackages\n .map((pkg) => chalk.bold(pkg))\n .join(', ')}.`\n );\n }\n\n const combinedDevDependencies: DependenciesMap = createDependenciesMap({\n ...defaultDevDependencies,\n ...pkg.devDependencies,\n });\n\n // Only change the dependencies if the normalized hash changes, this helps to reduce meaningless changes.\n const hasNewDependencies =\n hashForDependencyMap(pkg.dependencies) !== hashForDependencyMap(combinedDependencies);\n const hasNewDevDependencies =\n hashForDependencyMap(pkg.devDependencies) !== hashForDependencyMap(combinedDevDependencies);\n // Save the dependencies\n if (hasNewDependencies) {\n // Use Object.assign to preserve the original order of dependencies, this makes it easier to see what changed in the git diff.\n pkg.dependencies = Object.assign(pkg.dependencies ?? {}, combinedDependencies);\n }\n if (hasNewDevDependencies) {\n // Same as with dependencies\n pkg.devDependencies = Object.assign(pkg.devDependencies ?? {}, combinedDevDependencies);\n }\n\n return {\n hasNewDependencies,\n hasNewDevDependencies,\n };\n}\n\n/**\n * Create an object of type DependenciesMap a dependencies object or throw if not valid.\n *\n * @param dependencies - ideally an object of type {[key]: string} - if not then this will error.\n */\nexport function createDependenciesMap(dependencies: any): DependenciesMap {\n if (typeof dependencies !== 'object') {\n throw new Error(`Dependency map is invalid, expected object but got ${typeof dependencies}`);\n } else if (!dependencies) {\n return {};\n }\n\n const outputMap: DependenciesMap = {};\n\n for (const key of Object.keys(dependencies)) {\n const value = dependencies[key];\n if (typeof value === 'string') {\n outputMap[key] = value;\n } else {\n throw new Error(\n `Dependency for key \\`${key}\\` should be a \\`string\\`, instead got: \\`{ ${key}: ${JSON.stringify(\n value\n )} }\\``\n );\n }\n }\n return outputMap;\n}\n\n/**\n * Update package.json scripts - `npm start` should default to `expo\n * start --dev-client` rather than `expo start` after ejecting, for example.\n */\nfunction updatePkgScripts({ pkg }: { pkg: PackageJSONConfig }) {\n if (!pkg.scripts) {\n pkg.scripts = {};\n }\n if (!pkg.scripts.android?.includes('run')) {\n pkg.scripts.android = 'expo run:android';\n }\n if (!pkg.scripts.ios?.includes('run')) {\n pkg.scripts.ios = 'expo run:ios';\n }\n}\n\nfunction normalizeDependencyMap(deps: DependenciesMap): string[] {\n return Object.keys(deps)\n .map((dependency) => `${dependency}@${deps[dependency]}`)\n .sort();\n}\n\nexport function hashForDependencyMap(deps: DependenciesMap = {}): string {\n const depsList = normalizeDependencyMap(deps);\n const depsString = depsList.join('\\n');\n return createFileHash(depsString);\n}\n\nexport function createFileHash(contents: string): string {\n // this doesn't need to be secure, the shorter the better.\n return crypto.createHash('sha1').update(contents).digest('hex');\n}\n\n/**\n * Determine if two semver ranges are overlapping or intersecting.\n * This is a safe version of `semver.intersects` that does not throw.\n */\nfunction versionRangesIntersect(rangeA: string | SemverRange, rangeB: string | SemverRange) {\n try {\n return semverIntersects(rangeA, rangeB);\n } catch {\n return false;\n }\n}\n"],"names":["updatePackageJSONAsync","updatePkgDependencies","createDependenciesMap","hashForDependencyMap","createFileHash","Log","projectRoot","templateDirectory","pkg","skipDependencyUpdate","updatingPackageJsonStep","logNewSection","templatePkg","getPackageJson","results","modifyPackageJson","fs","promises","writeFile","path","resolve","JSON","stringify","succeed","updatePkgScripts","devDependencies","dependencies","defaultDependencies","defaultDevDependencies","combinedDependencies","requiredDependencies","filter","depKey","symlinkedPackages","nonRecommendedPackages","dependenciesKey","isModuleSymlinked","moduleId","isSilent","push","includes","hasRecommendedVersion","versionRangesIntersect","String","length","log","map","chalk","bold","join","warn","combinedDevDependencies","hasNewDependencies","hasNewDevDependencies","Object","assign","Error","outputMap","key","keys","value","scripts","android","ios","normalizeDependencyMap","deps","dependency","sort","depsList","depsString","contents","crypto","createHash","update","digest","rangeA","rangeB","semverIntersects"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/prebuild/updatePackageJson.ts"],"sourcesContent":["import { getPackageJson, PackageJSONConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport crypto from 'crypto';\nimport fs from 'fs';\nimport path from 'path';\nimport { intersects as semverIntersects, Range as SemverRange } from 'semver';\n\nimport * as Log from '../log';\nimport { isModuleSymlinked } from '../utils/isModuleSymlinked';\nimport { logNewSection } from '../utils/ora';\n\nexport type DependenciesMap = { [key: string]: string | number };\n\nexport type DependenciesModificationResults = {\n /** A list of new values were added to the `dependencies` object in the `package.json`. */\n changedDependencies: string[];\n};\n\n/** Modifies the `package.json` with `modifyPackageJson` and format/displays the results. */\nexport async function updatePackageJSONAsync(\n projectRoot: string,\n {\n templateDirectory,\n templatePkg = getPackageJson(templateDirectory),\n pkg,\n skipDependencyUpdate,\n }: {\n templateDirectory: string;\n templatePkg?: PackageJSONConfig;\n pkg: PackageJSONConfig;\n skipDependencyUpdate?: string[];\n }\n): Promise<DependenciesModificationResults> {\n const updatingPackageJsonStep = logNewSection('Updating package.json');\n\n const results = modifyPackageJson(projectRoot, {\n templatePkg,\n pkg,\n skipDependencyUpdate,\n });\n\n const hasChanges = results.changedDependencies.length || results.scriptsChanged;\n\n // NOTE: This is effectively bundler caching and subject to breakage if the inputs don't match the mutations.\n if (hasChanges) {\n await fs.promises.writeFile(\n path.resolve(projectRoot, 'package.json'),\n // Add new line to match the format of running yarn.\n // This prevents the `package.json` from changing when running `prebuild --no-install` multiple times.\n JSON.stringify(pkg, null, 2) + '\\n'\n );\n }\n\n updatingPackageJsonStep.succeed(\n 'Updated package.json' + (hasChanges ? '' : chalk.dim(` | no changes`))\n );\n\n return results;\n}\n\n/**\n * Make required modifications to the `package.json` file as a JSON object.\n *\n * 1. Update `package.json` `scripts`.\n * 2. Update `package.json` `dependencies` (not `devDependencies`).\n * 3. Update `package.json` `main`.\n *\n * @param projectRoot The root directory of the project.\n * @param props.templatePkg Template project package.json as JSON.\n * @param props.pkg Current package.json as JSON.\n * @param props.skipDependencyUpdate Array of dependencies to skip updating.\n * @returns\n */\nfunction modifyPackageJson(\n projectRoot: string,\n {\n templatePkg,\n pkg,\n skipDependencyUpdate,\n }: {\n templatePkg: PackageJSONConfig;\n pkg: PackageJSONConfig;\n /** @deprecated Required packages are not overwritten, only added when missing */\n skipDependencyUpdate?: string[];\n }\n) {\n const scriptsChanged = updatePkgScripts({ pkg });\n\n // TODO: Move to `npx expo-doctor`\n return {\n scriptsChanged,\n ...updatePkgDependencies(projectRoot, {\n pkg,\n templatePkg,\n skipDependencyUpdate,\n }),\n };\n}\n\n/**\n * Update `package.json` dependencies by combining the `dependencies` in the\n * project we are creating with the dependencies in the template project.\n *\n * > Exposed for testing.\n */\nexport function updatePkgDependencies(\n projectRoot: string,\n {\n pkg,\n templatePkg,\n skipDependencyUpdate = [],\n }: {\n pkg: PackageJSONConfig;\n templatePkg: PackageJSONConfig;\n /** @deprecated Required packages are not overwritten, only added when missing */\n skipDependencyUpdate?: string[];\n }\n): DependenciesModificationResults {\n const { dependencies } = templatePkg;\n // The default values come from the bare-minimum template's package.json.\n // Users can change this by using different templates with the `--template` flag.\n // The main reason for allowing the changing of dependencies would be to include\n // dependencies that are required for the native project to build. For example,\n // it does not need to include dependencies that are used in the JS-code only.\n const defaultDependencies = createDependenciesMap(dependencies);\n\n // NOTE: This is a hack to ensure this doesn't trigger an extraneous change in the `package.json`\n // it isn't required for anything in the `ios` and `android` folders.\n delete defaultDependencies['expo-status-bar'];\n // NOTE: Expo splash screen is installed by default in the template but the config plugin also lives in prebuild-config\n // so we can delete it to prevent an extraneous change in the `package.json`.\n delete defaultDependencies['expo-splash-screen'];\n\n const combinedDependencies: DependenciesMap = createDependenciesMap({\n ...defaultDependencies,\n ...pkg.dependencies,\n });\n\n // These dependencies are only added, not overwritten from the project\n const requiredDependencies = [\n // TODO: This is no longer required because it's this same package.\n 'expo',\n // TODO: Drop this somehow.\n 'react-native',\n ].filter((depKey) => !!defaultDependencies[depKey]);\n\n const symlinkedPackages: string[] = [];\n const nonRecommendedPackages: string[] = [];\n\n for (const dependenciesKey of requiredDependencies) {\n // If the local package.json defined the dependency that we want to overwrite...\n if (pkg.dependencies?.[dependenciesKey]) {\n // Then ensure it isn't symlinked (i.e. the user has a custom version in their yarn workspace).\n if (isModuleSymlinked(projectRoot, { moduleId: dependenciesKey, isSilent: true })) {\n // If the package is in the project's package.json and it's symlinked, then skip overwriting it.\n symlinkedPackages.push(dependenciesKey);\n continue;\n }\n\n // Do not modify manually skipped dependencies\n if (skipDependencyUpdate.includes(dependenciesKey)) {\n continue;\n }\n\n // Warn users for outdated dependencies when prebuilding\n const hasRecommendedVersion = versionRangesIntersect(\n pkg.dependencies[dependenciesKey],\n String(defaultDependencies[dependenciesKey])\n );\n if (!hasRecommendedVersion) {\n nonRecommendedPackages.push(`${dependenciesKey}@${defaultDependencies[dependenciesKey]}`);\n }\n }\n }\n\n if (symlinkedPackages.length) {\n Log.log(\n `\\u203A Using symlinked ${symlinkedPackages\n .map((pkg) => chalk.bold(pkg))\n .join(', ')} instead of recommended version(s).`\n );\n }\n\n if (nonRecommendedPackages.length) {\n Log.warn(\n `\\u203A Using current versions instead of recommended ${nonRecommendedPackages\n .map((pkg) => chalk.bold(pkg))\n .join(', ')}.`\n );\n }\n\n // Only change the dependencies if the normalized hash changes, this helps to reduce meaningless changes.\n const hasNewDependencies =\n hashForDependencyMap(pkg.dependencies) !== hashForDependencyMap(combinedDependencies);\n // Save the dependencies\n let changedDependencies: string[] = [];\n if (hasNewDependencies) {\n changedDependencies = diffKeys(combinedDependencies, pkg.dependencies ?? {}).sort();\n // Use Object.assign to preserve the original order of dependencies, this makes it easier to see what changed in the git diff.\n pkg.dependencies = Object.assign(pkg.dependencies ?? {}, combinedDependencies);\n }\n\n return {\n changedDependencies,\n };\n}\n\nfunction diffKeys(a: Record<string, any>, b: Record<string, any>): string[] {\n return Object.keys(a).filter((key) => a[key] !== b[key]);\n}\n\n/**\n * Create an object of type DependenciesMap a dependencies object or throw if not valid.\n *\n * @param dependencies - ideally an object of type {[key]: string} - if not then this will error.\n */\nexport function createDependenciesMap(dependencies: any): DependenciesMap {\n if (typeof dependencies !== 'object') {\n throw new Error(`Dependency map is invalid, expected object but got ${typeof dependencies}`);\n } else if (!dependencies) {\n return {};\n }\n\n const outputMap: DependenciesMap = {};\n\n for (const key of Object.keys(dependencies)) {\n const value = dependencies[key];\n if (typeof value === 'string') {\n outputMap[key] = value;\n } else {\n throw new Error(\n `Dependency for key \\`${key}\\` should be a \\`string\\`, instead got: \\`{ ${key}: ${JSON.stringify(\n value\n )} }\\``\n );\n }\n }\n return outputMap;\n}\n\n/**\n * Update package.json scripts - `npm start` should default to `expo\n * start --dev-client` rather than `expo start` after prebuilding, for example.\n */\nfunction updatePkgScripts({ pkg }: { pkg: PackageJSONConfig }) {\n let hasChanged = false;\n if (!pkg.scripts) {\n pkg.scripts = {};\n }\n if (!pkg.scripts.android?.includes('run')) {\n pkg.scripts.android = 'expo run:android';\n hasChanged = true;\n }\n if (!pkg.scripts.ios?.includes('run')) {\n pkg.scripts.ios = 'expo run:ios';\n hasChanged = true;\n }\n return hasChanged;\n}\n\nfunction normalizeDependencyMap(deps: DependenciesMap): string[] {\n return Object.keys(deps)\n .map((dependency) => `${dependency}@${deps[dependency]}`)\n .sort();\n}\n\nexport function hashForDependencyMap(deps: DependenciesMap = {}): string {\n const depsList = normalizeDependencyMap(deps);\n const depsString = depsList.join('\\n');\n return createFileHash(depsString);\n}\n\nexport function createFileHash(contents: string): string {\n // this doesn't need to be secure, the shorter the better.\n return crypto.createHash('sha1').update(contents).digest('hex');\n}\n\n/**\n * Determine if two semver ranges are overlapping or intersecting.\n * This is a safe version of `semver.intersects` that does not throw.\n */\nfunction versionRangesIntersect(rangeA: string | SemverRange, rangeB: string | SemverRange) {\n try {\n return semverIntersects(rangeA, rangeB);\n } catch {\n return false;\n }\n}\n"],"names":["updatePackageJSONAsync","updatePkgDependencies","createDependenciesMap","hashForDependencyMap","createFileHash","Log","projectRoot","templateDirectory","templatePkg","getPackageJson","pkg","skipDependencyUpdate","updatingPackageJsonStep","logNewSection","results","modifyPackageJson","hasChanges","changedDependencies","length","scriptsChanged","fs","promises","writeFile","path","resolve","JSON","stringify","succeed","chalk","dim","updatePkgScripts","dependencies","defaultDependencies","combinedDependencies","requiredDependencies","filter","depKey","symlinkedPackages","nonRecommendedPackages","dependenciesKey","isModuleSymlinked","moduleId","isSilent","push","includes","hasRecommendedVersion","versionRangesIntersect","String","log","map","bold","join","warn","hasNewDependencies","diffKeys","sort","Object","assign","a","b","keys","key","Error","outputMap","value","hasChanged","scripts","android","ios","normalizeDependencyMap","deps","dependency","depsList","depsString","contents","crypto","createHash","update","digest","rangeA","rangeB","semverIntersects"],"mappings":"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"}
|
|
@@ -33,10 +33,10 @@ function _interopRequireWildcard(obj) {
|
|
|
33
33
|
return newObj;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
|
|
36
|
+
function validateTemplatePlatforms({ templateDirectory , platforms }) {
|
|
37
37
|
const existingPlatforms = [];
|
|
38
38
|
for (const platform of platforms){
|
|
39
|
-
if (
|
|
39
|
+
if ((0, _dir).directoryExistsSync(_path.default.join(templateDirectory, platform))) {
|
|
40
40
|
existingPlatforms.push(platform);
|
|
41
41
|
} else {
|
|
42
42
|
Log.warn(_chalk.default`⚠️ Skipping platform ${platform}. Use a template that contains native files for ${platform} (./${platform}).`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/prebuild/validateTemplatePlatforms.ts"],"sourcesContent":["import { ModPlatform } from '@expo/config-plugins';\nimport chalk from 'chalk';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/prebuild/validateTemplatePlatforms.ts"],"sourcesContent":["import { ModPlatform } from '@expo/config-plugins';\nimport chalk from 'chalk';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { directoryExistsSync } from '../utils/dir';\n\nexport function validateTemplatePlatforms({\n templateDirectory,\n platforms,\n}: {\n templateDirectory: string;\n platforms: ModPlatform[];\n}) {\n const existingPlatforms: ModPlatform[] = [];\n\n for (const platform of platforms) {\n if (directoryExistsSync(path.join(templateDirectory, platform))) {\n existingPlatforms.push(platform);\n } else {\n Log.warn(\n chalk`⚠️ Skipping platform ${platform}. Use a template that contains native files for ${platform} (./${platform}).`\n );\n }\n }\n\n return existingPlatforms;\n}\n"],"names":["validateTemplatePlatforms","Log","templateDirectory","platforms","existingPlatforms","platform","directoryExistsSync","path","join","push","warn","chalk"],"mappings":"AAAA;;;;QAOgBA,yBAAyB,GAAzBA,yBAAyB;AANvB,IAAA,MAAO,kCAAP,OAAO,EAAA;AACR,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEXC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACqB,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3C,SAASD,yBAAyB,CAAC,EACxCE,iBAAiB,CAAA,EACjBC,SAAS,CAAA,EAIV,EAAE;IACD,MAAMC,iBAAiB,GAAkB,EAAE,AAAC;IAE5C,KAAK,MAAMC,QAAQ,IAAIF,SAAS,CAAE;QAChC,IAAIG,CAAAA,GAAAA,IAAmB,AAAwC,CAAA,oBAAxC,CAACC,KAAI,QAAA,CAACC,IAAI,CAACN,iBAAiB,EAAEG,QAAQ,CAAC,CAAC,EAAE;YAC/DD,iBAAiB,CAACK,IAAI,CAACJ,QAAQ,CAAC,CAAC;SAClC,MAAM;YACLJ,GAAG,CAACS,IAAI,CACNC,MAAK,QAAA,CAAC,0BAAsB,EAAEN,QAAQ,CAAC,gDAAgD,EAAEA,QAAQ,CAAC,IAAI,EAAEA,QAAQ,CAAC,EAAE,CAAC,CACrH,CAAC;SACH;KACF;IAED,OAAOD,iBAAiB,CAAC;CAC1B"}
|
package/build/src/run/hints.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
5
|
exports.logDeviceArgument = logDeviceArgument;
|
|
6
|
+
exports.logPlatformRunCommand = logPlatformRunCommand;
|
|
6
7
|
exports.logProjectLogsLocation = logProjectLogsLocation;
|
|
7
8
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
8
9
|
var _log = require("../log");
|
|
@@ -15,6 +16,9 @@ function _interopRequireDefault(obj) {
|
|
|
15
16
|
function logDeviceArgument(id) {
|
|
16
17
|
_log.Log.log(_chalk.default.dim`› Using --device ${id}`);
|
|
17
18
|
}
|
|
19
|
+
function logPlatformRunCommand(platform, argv = []) {
|
|
20
|
+
_log.Log.log(_chalk.default.dim(`› Using expo run:${platform} ${argv.join(" ")}`));
|
|
21
|
+
}
|
|
18
22
|
function logProjectLogsLocation() {
|
|
19
23
|
_log.Log.log(_chalk.default`\n› Logs for your project will appear below.${(0, _interactive).isInteractive() ? _chalk.default.dim(` Press Ctrl+C to exit.`) : ""}`);
|
|
20
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/run/hints.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { Log } from '../log';\nimport { isInteractive } from '../utils/interactive';\n\n/** Log the device argument to use for the next run: `Using --device foobar` */\nexport function logDeviceArgument(id: string) {\n Log.log(chalk.dim`› Using --device ${id}`);\n}\n\nexport function logProjectLogsLocation() {\n Log.log(\n chalk`\\n› Logs for your project will appear below.${\n isInteractive() ? chalk.dim(` Press Ctrl+C to exit.`) : ''\n }`\n );\n}\n"],"names":["logDeviceArgument","logProjectLogsLocation","id","Log","log","chalk","dim","isInteractive"],"mappings":"AAAA;;;;QAMgBA,iBAAiB,GAAjBA,iBAAiB;QAIjBC,sBAAsB,GAAtBA,sBAAsB;
|
|
1
|
+
{"version":3,"sources":["../../../src/run/hints.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { Log } from '../log';\nimport { isInteractive } from '../utils/interactive';\n\n/** Log the device argument to use for the next run: `Using --device foobar` */\nexport function logDeviceArgument(id: string) {\n Log.log(chalk.dim`› Using --device ${id}`);\n}\n\nexport function logPlatformRunCommand(platform: string, argv: string[] = []) {\n Log.log(chalk.dim(`› Using expo run:${platform} ${argv.join(' ')}`));\n}\n\nexport function logProjectLogsLocation() {\n Log.log(\n chalk`\\n› Logs for your project will appear below.${\n isInteractive() ? chalk.dim(` Press Ctrl+C to exit.`) : ''\n }`\n );\n}\n"],"names":["logDeviceArgument","logPlatformRunCommand","logProjectLogsLocation","id","Log","log","chalk","dim","platform","argv","join","isInteractive"],"mappings":"AAAA;;;;QAMgBA,iBAAiB,GAAjBA,iBAAiB;QAIjBC,qBAAqB,GAArBA,qBAAqB;QAIrBC,sBAAsB,GAAtBA,sBAAsB;AAdpB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEL,IAAA,IAAQ,WAAR,QAAQ,CAAA;AACE,IAAA,YAAsB,WAAtB,sBAAsB,CAAA;;;;;;AAG7C,SAASF,iBAAiB,CAACG,EAAU,EAAE;IAC5CC,IAAG,IAAA,CAACC,GAAG,CAACC,MAAK,QAAA,CAACC,GAAG,CAAC,mBAAmB,EAAEJ,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9C;AAEM,SAASF,qBAAqB,CAACO,QAAgB,EAAEC,IAAc,GAAG,EAAE,EAAE;IAC3EL,IAAG,IAAA,CAACC,GAAG,CAACC,MAAK,QAAA,CAACC,GAAG,CAAC,CAAC,mBAAmB,EAAEC,QAAQ,CAAC,CAAC,EAAEC,IAAI,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACxE;AAEM,SAASR,sBAAsB,GAAG;IACvCE,IAAG,IAAA,CAACC,GAAG,CACLC,MAAK,QAAA,CAAC,8CAA4C,EAChDK,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,GAAGL,MAAK,QAAA,CAACC,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAE,CAC3D,CAAC,CACH,CAAC;CACH"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.expoRun = void 0;
|
|
7
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
8
|
+
var _hints = require("./hints");
|
|
9
|
+
var _args = require("../utils/args");
|
|
10
|
+
var _errors = require("../utils/errors");
|
|
11
|
+
function _interopRequireDefault(obj) {
|
|
12
|
+
return obj && obj.__esModule ? obj : {
|
|
13
|
+
default: obj
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function _interopRequireWildcard(obj) {
|
|
17
|
+
if (obj && obj.__esModule) {
|
|
18
|
+
return obj;
|
|
19
|
+
} else {
|
|
20
|
+
var newObj = {};
|
|
21
|
+
if (obj != null) {
|
|
22
|
+
for(var key in obj){
|
|
23
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
24
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
25
|
+
if (desc.get || desc.set) {
|
|
26
|
+
Object.defineProperty(newObj, key, desc);
|
|
27
|
+
} else {
|
|
28
|
+
newObj[key] = obj[key];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
newObj.default = obj;
|
|
34
|
+
return newObj;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const expoRun = async (argv)=>{
|
|
38
|
+
const args = (0, _args).assertWithOptionsArgs({
|
|
39
|
+
// Types
|
|
40
|
+
"--help": Boolean,
|
|
41
|
+
// Aliases
|
|
42
|
+
"-h": "--help"
|
|
43
|
+
}, {
|
|
44
|
+
argv,
|
|
45
|
+
// Allow additional flags for both android and ios commands
|
|
46
|
+
permissive: true
|
|
47
|
+
});
|
|
48
|
+
try {
|
|
49
|
+
var __;
|
|
50
|
+
let [platform] = (__ = args._) != null ? __ : [];
|
|
51
|
+
// Workaround, filter `--flag` as platform
|
|
52
|
+
if (platform == null ? void 0 : platform.startsWith("-")) {
|
|
53
|
+
platform = "";
|
|
54
|
+
}
|
|
55
|
+
// Remove the platform from raw arguments, when provided
|
|
56
|
+
const argsWithoutPlatform = !platform ? argv : argv == null ? void 0 : argv.splice(1);
|
|
57
|
+
// Do not capture `--help` when platform is provided
|
|
58
|
+
if (!platform && args["--help"]) {
|
|
59
|
+
(0, _args).printHelp("Run the native app locally", `npx expo run <android|ios>`, _chalk.default`{dim $} npx expo run <android|ios> --help Output usage information`);
|
|
60
|
+
}
|
|
61
|
+
if (!platform) {
|
|
62
|
+
const { selectAsync } = await Promise.resolve().then(function() {
|
|
63
|
+
return _interopRequireWildcard(require("../utils/prompts.js"));
|
|
64
|
+
});
|
|
65
|
+
platform = await selectAsync("Select the platform to run", [
|
|
66
|
+
{
|
|
67
|
+
title: "Android",
|
|
68
|
+
value: "android"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
title: "iOS",
|
|
72
|
+
value: "ios"
|
|
73
|
+
},
|
|
74
|
+
]);
|
|
75
|
+
}
|
|
76
|
+
(0, _hints).logPlatformRunCommand(platform, argsWithoutPlatform);
|
|
77
|
+
switch(platform){
|
|
78
|
+
case "android":
|
|
79
|
+
{
|
|
80
|
+
const { expoRunAndroid } = await Promise.resolve().then(function() {
|
|
81
|
+
return _interopRequireWildcard(require("./android/index.js"));
|
|
82
|
+
});
|
|
83
|
+
return expoRunAndroid(argsWithoutPlatform);
|
|
84
|
+
}
|
|
85
|
+
case "ios":
|
|
86
|
+
{
|
|
87
|
+
const { expoRunIos } = await Promise.resolve().then(function() {
|
|
88
|
+
return _interopRequireWildcard(require("./ios/index.js"));
|
|
89
|
+
});
|
|
90
|
+
return expoRunIos(argsWithoutPlatform);
|
|
91
|
+
}
|
|
92
|
+
default:
|
|
93
|
+
throw new _errors.CommandError("UNSUPPORTED_PLATFORM", `Unsupported platform: ${platform}`);
|
|
94
|
+
}
|
|
95
|
+
} catch (error) {
|
|
96
|
+
(0, _errors).logCmdError(error);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
exports.expoRun = expoRun;
|
|
100
|
+
|
|
101
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/run/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { logPlatformRunCommand } from './hints';\nimport { Command } from '../../bin/cli';\nimport { assertWithOptionsArgs, printHelp } from '../utils/args';\nimport { CommandError, logCmdError } from '../utils/errors';\n\nexport const expoRun: Command = async (argv) => {\n const args = assertWithOptionsArgs(\n {\n // Types\n '--help': Boolean,\n // Aliases\n '-h': '--help',\n },\n {\n argv,\n // Allow additional flags for both android and ios commands\n permissive: true,\n }\n );\n\n try {\n let [platform] = args._ ?? [];\n\n // Workaround, filter `--flag` as platform\n if (platform?.startsWith('-')) {\n platform = '';\n }\n\n // Remove the platform from raw arguments, when provided\n const argsWithoutPlatform = !platform ? argv : argv?.splice(1);\n\n // Do not capture `--help` when platform is provided\n if (!platform && args['--help']) {\n printHelp(\n 'Run the native app locally',\n `npx expo run <android|ios>`,\n chalk`{dim $} npx expo run <android|ios> --help Output usage information`\n );\n }\n\n if (!platform) {\n const { selectAsync } = await import('../utils/prompts.js');\n platform = await selectAsync('Select the platform to run', [\n { title: 'Android', value: 'android' },\n { title: 'iOS', value: 'ios' },\n ]);\n }\n\n logPlatformRunCommand(platform, argsWithoutPlatform);\n\n switch (platform) {\n case 'android': {\n const { expoRunAndroid } = await import('./android/index.js');\n return expoRunAndroid(argsWithoutPlatform);\n }\n\n case 'ios': {\n const { expoRunIos } = await import('./ios/index.js');\n return expoRunIos(argsWithoutPlatform);\n }\n\n default:\n throw new CommandError('UNSUPPORTED_PLATFORM', `Unsupported platform: ${platform}`);\n }\n } catch (error: any) {\n logCmdError(error);\n }\n};\n"],"names":["expoRun","argv","args","assertWithOptionsArgs","Boolean","permissive","platform","_","startsWith","argsWithoutPlatform","splice","printHelp","chalk","selectAsync","title","value","logPlatformRunCommand","expoRunAndroid","expoRunIos","CommandError","error","logCmdError"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEa,IAAA,MAAS,WAAT,SAAS,CAAA;AAEE,IAAA,KAAe,WAAf,eAAe,CAAA;AACtB,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEpD,MAAMA,OAAO,GAAY,OAAOC,IAAI,GAAK;IAC9C,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAqB,AAYjC,CAAA,sBAZiC,CAChC;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,UAAU;QACV,IAAI,EAAE,QAAQ;KACf,EACD;QACEH,IAAI;QACJ,2DAA2D;QAC3DI,UAAU,EAAE,IAAI;KACjB,CACF,AAAC;IAEF,IAAI;YACeH,EAAM;QAAvB,IAAI,CAACI,QAAQ,CAAC,GAAGJ,CAAAA,EAAM,GAANA,IAAI,CAACK,CAAC,YAANL,EAAM,GAAI,EAAE,AAAC;QAE9B,0CAA0C;QAC1C,IAAII,QAAQ,QAAY,GAApBA,KAAAA,CAAoB,GAApBA,QAAQ,CAAEE,UAAU,CAAC,GAAG,CAAC,EAAE;YAC7BF,QAAQ,GAAG,EAAE,CAAC;SACf;QAED,wDAAwD;QACxD,MAAMG,mBAAmB,GAAG,CAACH,QAAQ,GAAGL,IAAI,GAAGA,IAAI,QAAQ,GAAZA,KAAAA,CAAY,GAAZA,IAAI,CAAES,MAAM,CAAC,CAAC,CAAC,AAAC;QAE/D,oDAAoD;QACpD,IAAI,CAACJ,QAAQ,IAAIJ,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC/BS,CAAAA,GAAAA,KAAS,AAIR,CAAA,UAJQ,CACP,4BAA4B,EAC5B,CAAC,0BAA0B,CAAC,EAC5BC,MAAK,QAAA,CAAC,mEAAmE,CAAC,CAC3E,CAAC;SACH;QAED,IAAI,CAACN,QAAQ,EAAE;YACb,MAAM,EAAEO,WAAW,CAAA,EAAE,GAAG,MAAM;uDAAO,qBAAqB;cAAC,AAAC;YAC5DP,QAAQ,GAAG,MAAMO,WAAW,CAAC,4BAA4B,EAAE;gBACzD;oBAAEC,KAAK,EAAE,SAAS;oBAAEC,KAAK,EAAE,SAAS;iBAAE;gBACtC;oBAAED,KAAK,EAAE,KAAK;oBAAEC,KAAK,EAAE,KAAK;iBAAE;aAC/B,CAAC,CAAC;SACJ;QAEDC,CAAAA,GAAAA,MAAqB,AAA+B,CAAA,sBAA/B,CAACV,QAAQ,EAAEG,mBAAmB,CAAC,CAAC;QAErD,OAAQH,QAAQ;YACd,KAAK,SAAS;gBAAE;oBACd,MAAM,EAAEW,cAAc,CAAA,EAAE,GAAG,MAAM;+DAAO,oBAAoB;sBAAC,AAAC;oBAC9D,OAAOA,cAAc,CAACR,mBAAmB,CAAC,CAAC;iBAC5C;YAED,KAAK,KAAK;gBAAE;oBACV,MAAM,EAAES,UAAU,CAAA,EAAE,GAAG,MAAM;+DAAO,gBAAgB;sBAAC,AAAC;oBACtD,OAAOA,UAAU,CAACT,mBAAmB,CAAC,CAAC;iBACxC;YAED;gBACE,MAAM,IAAIU,OAAY,aAAA,CAAC,sBAAsB,EAAE,CAAC,sBAAsB,EAAEb,QAAQ,CAAC,CAAC,CAAC,CAAC;SACvF;KACF,CAAC,OAAOc,KAAK,EAAO;QACnBC,CAAAA,GAAAA,OAAW,AAAO,CAAA,YAAP,CAACD,KAAK,CAAC,CAAC;KACpB;CACF,AAAC;QA9DWpB,OAAO,GAAPA,OAAO"}
|
|
@@ -37,8 +37,8 @@ function _interopRequireWildcard(obj) {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
const debug = require("debug")("expo:doctor:dependencies:bundledNativeModules");
|
|
40
|
-
async function getVersionedNativeModulesAsync(projectRoot, sdkVersion) {
|
|
41
|
-
if (sdkVersion !== "UNVERSIONED" && !_env.env.EXPO_OFFLINE) {
|
|
40
|
+
async function getVersionedNativeModulesAsync(projectRoot, sdkVersion, options = {}) {
|
|
41
|
+
if (sdkVersion !== "UNVERSIONED" && !_env.env.EXPO_OFFLINE && !options.skipRemoteVersions) {
|
|
42
42
|
try {
|
|
43
43
|
debug("Fetching bundled native modules from the server...");
|
|
44
44
|
return await (0, _getNativeModuleVersions).getNativeModuleVersionsAsync(sdkVersion);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/doctor/dependencies/bundledNativeModules.ts"],"sourcesContent":["import JsonFile from '@expo/json-file';\nimport chalk from 'chalk';\nimport resolveFrom from 'resolve-from';\n\nimport { getNativeModuleVersionsAsync } from '../../../api/getNativeModuleVersions';\nimport * as Log from '../../../log';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\n\nconst debug = require('debug')(\n 'expo:doctor:dependencies:bundledNativeModules'\n) as typeof console.log;\n\nexport type BundledNativeModules = Record<string, string>;\n\n/**\n * Gets the bundledNativeModules.json for a given SDK version:\n * - Tries to fetch the data from the /sdks/:sdkVersion/native-modules API endpoint.\n * - If the data is missing on the server (it can happen for SDKs that are yet fully released)\n * or there's a downtime, reads the local .json file from the \"expo\" package.\n * - For UNVERSIONED, returns the local .json file contents.\n */\nexport async function getVersionedNativeModulesAsync(\n projectRoot: string,\n sdkVersion: string\n): Promise<BundledNativeModules> {\n if (sdkVersion !== 'UNVERSIONED' && !env.EXPO_OFFLINE) {\n try {\n debug('Fetching bundled native modules from the server...');\n return await getNativeModuleVersionsAsync(sdkVersion);\n } catch (error: any) {\n if (error instanceof CommandError && (error.code === 'OFFLINE' || error.code === 'API')) {\n Log.warn(\n chalk`Unable to reach well-known versions endpoint. Using local dependency map {bold expo/bundledNativeModules.json} for version validation`\n );\n } else {\n throw error;\n }\n }\n }\n\n debug('Fetching bundled native modules from the local JSON file...');\n return await getBundledNativeModulesAsync(projectRoot);\n}\n\n/**\n * Get the legacy static `bundledNativeModules.json` file\n * that's shipped with the version of `expo` that the project has installed.\n */\nasync function getBundledNativeModulesAsync(projectRoot: string): Promise<BundledNativeModules> {\n // TODO: Revisit now that this code is in the `expo` package.\n const bundledNativeModulesPath = resolveFrom.silent(\n projectRoot,\n 'expo/bundledNativeModules.json'\n );\n if (!bundledNativeModulesPath) {\n Log.log();\n throw new CommandError(\n chalk`The dependency map {bold expo/bundledNativeModules.json} cannot be found, please ensure you have the package \"{bold expo}\" installed in your project.`\n );\n }\n return await JsonFile.readAsync<BundledNativeModules>(bundledNativeModulesPath);\n}\n"],"names":["getVersionedNativeModulesAsync","Log","debug","require","projectRoot","sdkVersion","env","EXPO_OFFLINE","getNativeModuleVersionsAsync","error","CommandError","code","warn","chalk","getBundledNativeModulesAsync","bundledNativeModulesPath","resolveFrom","silent","log","JsonFile","readAsync"],"mappings":"AAAA;;;;QAsBsBA,8BAA8B,GAA9BA,8BAA8B;AAtB/B,IAAA,SAAiB,kCAAjB,iBAAiB,EAAA;AACpB,IAAA,MAAO,kCAAP,OAAO,EAAA;AACD,IAAA,YAAc,kCAAd,cAAc,EAAA;AAEO,IAAA,wBAAsC,WAAtC,sCAAsC,CAAA;AACvEC,IAAAA,GAAG,mCAAM,cAAc,EAApB;AACK,IAAA,IAAoB,WAApB,oBAAoB,CAAA;AACX,IAAA,OAAuB,WAAvB,uBAAuB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEpD,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAC5B,+CAA+C,CAChD,AAAsB,AAAC;AAWjB,eAAeH,8BAA8B,CAClDI,WAAmB,EACnBC,UAAkB,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/doctor/dependencies/bundledNativeModules.ts"],"sourcesContent":["import JsonFile from '@expo/json-file';\nimport chalk from 'chalk';\nimport resolveFrom from 'resolve-from';\n\nimport { getNativeModuleVersionsAsync } from '../../../api/getNativeModuleVersions';\nimport * as Log from '../../../log';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\n\nconst debug = require('debug')(\n 'expo:doctor:dependencies:bundledNativeModules'\n) as typeof console.log;\n\nexport type BundledNativeModules = Record<string, string>;\n\n/**\n * Gets the bundledNativeModules.json for a given SDK version:\n * - Tries to fetch the data from the /sdks/:sdkVersion/native-modules API endpoint.\n * - If the data is missing on the server (it can happen for SDKs that are yet fully released)\n * or there's a downtime, reads the local .json file from the \"expo\" package.\n * - For UNVERSIONED, returns the local .json file contents.\n */\nexport async function getVersionedNativeModulesAsync(\n projectRoot: string,\n sdkVersion: string,\n options: {\n skipRemoteVersions?: boolean;\n } = {}\n): Promise<BundledNativeModules> {\n if (sdkVersion !== 'UNVERSIONED' && !env.EXPO_OFFLINE && !options.skipRemoteVersions) {\n try {\n debug('Fetching bundled native modules from the server...');\n return await getNativeModuleVersionsAsync(sdkVersion);\n } catch (error: any) {\n if (error instanceof CommandError && (error.code === 'OFFLINE' || error.code === 'API')) {\n Log.warn(\n chalk`Unable to reach well-known versions endpoint. Using local dependency map {bold expo/bundledNativeModules.json} for version validation`\n );\n } else {\n throw error;\n }\n }\n }\n\n debug('Fetching bundled native modules from the local JSON file...');\n return await getBundledNativeModulesAsync(projectRoot);\n}\n\n/**\n * Get the legacy static `bundledNativeModules.json` file\n * that's shipped with the version of `expo` that the project has installed.\n */\nasync function getBundledNativeModulesAsync(projectRoot: string): Promise<BundledNativeModules> {\n // TODO: Revisit now that this code is in the `expo` package.\n const bundledNativeModulesPath = resolveFrom.silent(\n projectRoot,\n 'expo/bundledNativeModules.json'\n );\n if (!bundledNativeModulesPath) {\n Log.log();\n throw new CommandError(\n chalk`The dependency map {bold expo/bundledNativeModules.json} cannot be found, please ensure you have the package \"{bold expo}\" installed in your project.`\n );\n }\n return await JsonFile.readAsync<BundledNativeModules>(bundledNativeModulesPath);\n}\n"],"names":["getVersionedNativeModulesAsync","Log","debug","require","projectRoot","sdkVersion","options","env","EXPO_OFFLINE","skipRemoteVersions","getNativeModuleVersionsAsync","error","CommandError","code","warn","chalk","getBundledNativeModulesAsync","bundledNativeModulesPath","resolveFrom","silent","log","JsonFile","readAsync"],"mappings":"AAAA;;;;QAsBsBA,8BAA8B,GAA9BA,8BAA8B;AAtB/B,IAAA,SAAiB,kCAAjB,iBAAiB,EAAA;AACpB,IAAA,MAAO,kCAAP,OAAO,EAAA;AACD,IAAA,YAAc,kCAAd,cAAc,EAAA;AAEO,IAAA,wBAAsC,WAAtC,sCAAsC,CAAA;AACvEC,IAAAA,GAAG,mCAAM,cAAc,EAApB;AACK,IAAA,IAAoB,WAApB,oBAAoB,CAAA;AACX,IAAA,OAAuB,WAAvB,uBAAuB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEpD,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAC5B,+CAA+C,CAChD,AAAsB,AAAC;AAWjB,eAAeH,8BAA8B,CAClDI,WAAmB,EACnBC,UAAkB,EAClBC,OAEC,GAAG,EAAE,EACyB;IAC/B,IAAID,UAAU,KAAK,aAAa,IAAI,CAACE,IAAG,IAAA,CAACC,YAAY,IAAI,CAACF,OAAO,CAACG,kBAAkB,EAAE;QACpF,IAAI;YACFP,KAAK,CAAC,oDAAoD,CAAC,CAAC;YAC5D,OAAO,MAAMQ,CAAAA,GAAAA,wBAA4B,AAAY,CAAA,6BAAZ,CAACL,UAAU,CAAC,CAAC;SACvD,CAAC,OAAOM,KAAK,EAAO;YACnB,IAAIA,KAAK,YAAYC,OAAY,aAAA,IAAI,CAACD,KAAK,CAACE,IAAI,KAAK,SAAS,IAAIF,KAAK,CAACE,IAAI,KAAK,KAAK,CAAC,EAAE;gBACvFZ,GAAG,CAACa,IAAI,CACNC,MAAK,QAAA,CAAC,qIAAqI,CAAC,CAC7I,CAAC;aACH,MAAM;gBACL,MAAMJ,KAAK,CAAC;aACb;SACF;KACF;IAEDT,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACrE,OAAO,MAAMc,4BAA4B,CAACZ,WAAW,CAAC,CAAC;CACxD;AAED;;;GAGG,CACH,eAAeY,4BAA4B,CAACZ,WAAmB,EAAiC;IAC9F,6DAA6D;IAC7D,MAAMa,wBAAwB,GAAGC,YAAW,QAAA,CAACC,MAAM,CACjDf,WAAW,EACX,gCAAgC,CACjC,AAAC;IACF,IAAI,CAACa,wBAAwB,EAAE;QAC7BhB,GAAG,CAACmB,GAAG,EAAE,CAAC;QACV,MAAM,IAAIR,OAAY,aAAA,CACpBG,MAAK,QAAA,CAAC,qJAAqJ,CAAC,CAC7J,CAAC;KACH;IACD,OAAO,MAAMM,SAAQ,QAAA,CAACC,SAAS,CAAuBL,wBAAwB,CAAC,CAAC;CACjF"}
|
|
@@ -8,6 +8,7 @@ exports.getVersionedPackagesAsync = getVersionedPackagesAsync;
|
|
|
8
8
|
exports.getOperationLog = getOperationLog;
|
|
9
9
|
var _npmPackageArg = _interopRequireDefault(require("npm-package-arg"));
|
|
10
10
|
var _bundledNativeModules = require("./bundledNativeModules");
|
|
11
|
+
var _resolvePackages = require("./resolvePackages");
|
|
11
12
|
var _getVersions = require("../../../api/getVersions");
|
|
12
13
|
var _log = require("../../../log");
|
|
13
14
|
var _env = require("../../../utils/env");
|
|
@@ -22,23 +23,33 @@ const debug = require("debug")("expo:doctor:dependencies:getVersionedPackages");
|
|
|
22
23
|
if (!version) {
|
|
23
24
|
return {};
|
|
24
25
|
}
|
|
25
|
-
const { relatedPackages , facebookReactVersion , facebookReactNativeVersion } = version;
|
|
26
|
+
const { relatedPackages , facebookReactVersion , facebookReactNativeVersion , expoVersion } = version;
|
|
26
27
|
const reactVersion = facebookReactVersion ? {
|
|
27
28
|
react: facebookReactVersion,
|
|
28
29
|
"react-dom": facebookReactVersion
|
|
29
30
|
} : undefined;
|
|
31
|
+
const expoVersionIfAvailable = expoVersion ? {
|
|
32
|
+
expo: expoVersion
|
|
33
|
+
} : undefined;
|
|
30
34
|
return {
|
|
31
35
|
...relatedPackages,
|
|
32
36
|
...reactVersion,
|
|
37
|
+
...expoVersionIfAvailable,
|
|
33
38
|
"react-native": facebookReactNativeVersion
|
|
34
39
|
};
|
|
35
40
|
}
|
|
36
41
|
async function getCombinedKnownVersionsAsync({ projectRoot , sdkVersion , skipCache }) {
|
|
37
|
-
const
|
|
38
|
-
|
|
42
|
+
const skipRemoteVersions = await (0, _resolvePackages).hasExpoCanaryAsync(projectRoot);
|
|
43
|
+
if (skipRemoteVersions) {
|
|
44
|
+
_log.Log.warn("Dependency validation might be unreliable when using canary SDK versions");
|
|
45
|
+
}
|
|
46
|
+
const bundledNativeModules = sdkVersion ? await (0, _bundledNativeModules).getVersionedNativeModulesAsync(projectRoot, sdkVersion, {
|
|
47
|
+
skipRemoteVersions
|
|
48
|
+
}) : {};
|
|
49
|
+
const versionsForSdk = !skipRemoteVersions ? await getRemoteVersionsForSdkAsync({
|
|
39
50
|
sdkVersion,
|
|
40
51
|
skipCache
|
|
41
|
-
});
|
|
52
|
+
}) : {};
|
|
42
53
|
return {
|
|
43
54
|
...bundledNativeModules,
|
|
44
55
|
// Prefer the remote versions over the bundled versions, this enables us to push
|
|
@@ -82,7 +93,7 @@ async function getVersionedPackagesAsync(projectRoot, { packages , sdkVersion ,
|
|
|
82
93
|
let othersCount = 0;
|
|
83
94
|
const excludedNativeModules = [];
|
|
84
95
|
const versionedPackages = packages.map((arg)=>{
|
|
85
|
-
const { name , type , raw } = (0, _npmPackageArg).default(arg);
|
|
96
|
+
const { name , type , raw , rawSpec } = (0, _npmPackageArg).default(arg);
|
|
86
97
|
if ([
|
|
87
98
|
"tag",
|
|
88
99
|
"version",
|
|
@@ -91,11 +102,15 @@ async function getVersionedPackagesAsync(projectRoot, { packages , sdkVersion ,
|
|
|
91
102
|
var ref, ref1, ref2;
|
|
92
103
|
// Unimodule packages from npm registry are modified to use the bundled version.
|
|
93
104
|
// Some packages have the recommended version listed in https://exp.host/--/api/v2/versions.
|
|
94
|
-
|
|
105
|
+
const isExcludedFromValidation = pkg == null ? void 0 : (ref = pkg.expo) == null ? void 0 : (ref1 = ref.install) == null ? void 0 : (ref2 = ref1.exclude) == null ? void 0 : ref2.includes(name);
|
|
106
|
+
const hasSpecifiedExactVersion = rawSpec !== "";
|
|
107
|
+
if (isExcludedFromValidation || hasSpecifiedExactVersion) {
|
|
95
108
|
othersCount++;
|
|
96
109
|
excludedNativeModules.push({
|
|
97
110
|
name,
|
|
98
|
-
bundledNativeVersion: versionsForSdk[name]
|
|
111
|
+
bundledNativeVersion: versionsForSdk[name],
|
|
112
|
+
isExcludedFromValidation,
|
|
113
|
+
specifiedVersion: rawSpec
|
|
99
114
|
});
|
|
100
115
|
return raw;
|
|
101
116
|
}
|