@shopify/cli 3.34.0 → 3.36.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.
Files changed (37) hide show
  1. package/dist/cli/commands/kitchen-sink/async.d.ts +10 -0
  2. package/dist/cli/commands/kitchen-sink/async.js +14 -0
  3. package/dist/cli/commands/kitchen-sink/async.js.map +1 -0
  4. package/dist/cli/commands/kitchen-sink/banners.d.ts +10 -0
  5. package/dist/cli/commands/kitchen-sink/banners.js +14 -0
  6. package/dist/cli/commands/kitchen-sink/banners.js.map +1 -0
  7. package/dist/cli/commands/{kitchen-sink.d.ts → kitchen-sink/index.d.ts} +2 -1
  8. package/dist/cli/commands/kitchen-sink/index.js +20 -0
  9. package/dist/cli/commands/kitchen-sink/index.js.map +1 -0
  10. package/dist/cli/commands/kitchen-sink/prompts.d.ts +10 -0
  11. package/dist/cli/commands/kitchen-sink/prompts.js +14 -0
  12. package/dist/cli/commands/kitchen-sink/prompts.js.map +1 -0
  13. package/dist/cli/commands/upgrade.js +5 -4
  14. package/dist/cli/commands/upgrade.js.map +1 -1
  15. package/dist/cli/commands/version.js +1 -3
  16. package/dist/cli/commands/version.js.map +1 -1
  17. package/dist/cli/services/commands/version.d.ts +1 -5
  18. package/dist/cli/services/commands/version.js +3 -2
  19. package/dist/cli/services/commands/version.js.map +1 -1
  20. package/dist/cli/services/kitchen-sink/async.d.ts +1 -0
  21. package/dist/cli/services/kitchen-sink/async.js +49 -0
  22. package/dist/cli/services/kitchen-sink/async.js.map +1 -0
  23. package/dist/cli/services/kitchen-sink/banners.d.ts +1 -0
  24. package/dist/cli/services/{kitchen-sink.js → kitchen-sink/banners.js} +22 -68
  25. package/dist/cli/services/kitchen-sink/banners.js.map +1 -0
  26. package/dist/cli/services/kitchen-sink/prompts.d.ts +1 -0
  27. package/dist/cli/services/kitchen-sink/prompts.js +90 -0
  28. package/dist/cli/services/kitchen-sink/prompts.js.map +1 -0
  29. package/dist/cli/services/upgrade.js +6 -4
  30. package/dist/cli/services/upgrade.js.map +1 -1
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/oclif.manifest.json +1 -1
  33. package/package.json +9 -5
  34. package/dist/cli/commands/kitchen-sink.js +0 -15
  35. package/dist/cli/commands/kitchen-sink.js.map +0 -1
  36. package/dist/cli/services/kitchen-sink.d.ts +0 -1
  37. package/dist/cli/services/kitchen-sink.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/services/upgrade.ts"],"names":[],"mappings":"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","sourcesContent":["import {error, output, path} from '@shopify/cli-kit'\nimport {\n addNPMDependencies,\n findUpAndReadPackageJson,\n checkForNewVersion,\n DependencyType,\n getPackageManager,\n PackageJson,\n} from '@shopify/cli-kit/node/node-package-manager'\nimport {exec} from '@shopify/cli-kit/node/system'\n\ntype HomebrewPackageName = 'shopify-cli' | 'shopify-cli@3'\n\n// Canonical list of oclif plugins that should be installed globally\nconst globalPlugins = ['@shopify/theme']\n\nexport async function upgrade(directory: string, currentVersion: string): Promise<void> {\n let newestVersion: string | void\n\n const projectDir = await getProjectDir(directory)\n if (projectDir) {\n newestVersion = await upgradeLocalShopify(projectDir, currentVersion)\n } else if (usingPackageManager()) {\n throw new error.Abort(\n output.content`Couldn't find the configuration file for ${output.token.path(\n directory,\n )}, are you in a Shopify project directory?`,\n )\n } else {\n newestVersion = await upgradeGlobalShopify(currentVersion)\n }\n\n if (newestVersion) {\n output.success(`Upgraded Shopify CLI to version ${newestVersion}`)\n }\n}\n\nasync function getProjectDir(directory: string): Promise<string | undefined> {\n const configFile = await path.findUp(['shopify.app.toml', 'hydrogen.config.js', 'hydrogen.config.ts'], {\n cwd: directory,\n type: 'file',\n })\n if (configFile) return path.dirname(configFile)\n}\n\nasync function upgradeLocalShopify(projectDir: string, currentVersion: string): Promise<string | void> {\n const packageJson = (await findUpAndReadPackageJson(projectDir)).content as PackageJson\n const packageJsonDependencies = packageJson.dependencies || {}\n const packageJsonDevDependencies = packageJson.devDependencies || {}\n\n let resolvedVersion: string = {...packageJsonDependencies, ...packageJsonDevDependencies}[await cliDependency()]!\n if (resolvedVersion.slice(0, 1).match(/[\\^~]/)) resolvedVersion = currentVersion\n const newestVersion = await checkForNewVersion(await cliDependency(), resolvedVersion)\n\n if (!newestVersion) {\n outputWontInstallMessage(resolvedVersion)\n return\n }\n\n outputUpgradeMessage(resolvedVersion, newestVersion)\n\n await installJsonDependencies('prod', packageJsonDependencies, projectDir)\n await installJsonDependencies('dev', packageJsonDevDependencies, projectDir)\n return newestVersion\n}\n\nasync function upgradeGlobalShopify(currentVersion: string): Promise<string | void> {\n const newestVersion = await checkForNewVersion(await cliDependency(), currentVersion)\n\n if (!newestVersion) {\n outputWontInstallMessage(currentVersion)\n return\n }\n\n outputUpgradeMessage(currentVersion, newestVersion)\n\n const homebrewPackage = process.env.SHOPIFY_HOMEBREW_FORMULA as HomebrewPackageName | undefined\n try {\n await (homebrewPackage ? upgradeGlobalViaHomebrew(homebrewPackage) : upgradeGlobalViaNpm())\n } catch (err) {\n output.warn('Upgrade failed!')\n throw err\n }\n return newestVersion\n}\n\nasync function upgradeGlobalViaHomebrew(homebrewPackage: HomebrewPackageName): Promise<void> {\n output.info(\n output.content`Homebrew installation detected. Attempting to upgrade via ${output.token.genericShellCommand(\n 'brew upgrade',\n )}...`,\n )\n await exec('brew', ['upgrade', homebrewPackage], {stdio: 'inherit'})\n}\n\nasync function upgradeGlobalViaNpm(): Promise<void> {\n const command = 'npm'\n const args = [\n 'install',\n '-g',\n `${await cliDependency()}@latest`,\n ...globalPlugins.map((plugin) => `${plugin}@latest`),\n ]\n output.info(\n output.content`Attempting to upgrade via ${output.token.genericShellCommand([command, ...args].join(' '))}...`,\n )\n await exec(command, args, {stdio: 'inherit'})\n}\n\nfunction outputWontInstallMessage(currentVersion: string): void {\n output.info(output.content`You're on the latest version, ${output.token.yellow(currentVersion)}, no need to upgrade!`)\n}\n\nfunction outputUpgradeMessage(currentVersion: string, newestVersion: string): void {\n output.info(\n output.content`Upgrading CLI from ${output.token.yellow(currentVersion)} to ${output.token.yellow(\n newestVersion,\n )}...`,\n )\n}\n\nasync function installJsonDependencies(\n depsEnv: DependencyType,\n deps: {[key: string]: string},\n directory: string,\n): Promise<void> {\n const packagesToUpdate = [await cliDependency(), ...(await oclifPlugins())]\n .filter((pkg: string): boolean => {\n const pkgRequirement: string | undefined = deps[pkg]\n return Boolean(pkgRequirement)\n })\n .map((pkg) => {\n return {name: pkg, version: 'latest'}\n })\n\n if (packagesToUpdate.length > 0) {\n await addNPMDependencies(packagesToUpdate, {\n packageManager: await getPackageManager(directory),\n type: depsEnv,\n directory,\n stdout: process.stdout,\n stderr: process.stderr,\n })\n }\n}\n\nasync function cliDependency(): Promise<string> {\n return (await packageJsonContents()).name\n}\n\nasync function oclifPlugins(): Promise<string[]> {\n return (await packageJsonContents())?.oclif?.plugins || []\n}\n\ntype PackageJsonWithName = Omit<PackageJson, 'name'> & {name: string}\nlet _packageJsonContents: PackageJsonWithName | undefined\n\nasync function packageJsonContents(): Promise<PackageJsonWithName> {\n if (!_packageJsonContents) {\n const packageJson = await findUpAndReadPackageJson(path.moduleDirectory(import.meta.url))\n _packageJsonContents = _packageJsonContents || (packageJson.content as PackageJsonWithName)\n }\n return _packageJsonContents\n}\n\nfunction usingPackageManager(): boolean {\n return Boolean(process.env.npm_config_user_agent)\n}\n"]}
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/services/upgrade.ts"],"names":[],"mappings":"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","sourcesContent":["import {error, output} from '@shopify/cli-kit'\nimport {\n addNPMDependencies,\n findUpAndReadPackageJson,\n checkForNewVersion,\n DependencyType,\n getPackageManager,\n PackageJson,\n} from '@shopify/cli-kit/node/node-package-manager'\nimport {exec} from '@shopify/cli-kit/node/system'\nimport {dirname, moduleDirectory} from '@shopify/cli-kit/node/path'\nimport {findPathUp} from '@shopify/cli-kit/node/fs'\n\ntype HomebrewPackageName = 'shopify-cli' | 'shopify-cli@3'\n\n// Canonical list of oclif plugins that should be installed globally\nconst globalPlugins = ['@shopify/theme']\n\nexport async function upgrade(directory: string, currentVersion: string): Promise<void> {\n let newestVersion: string | void\n\n const projectDir = await getProjectDir(directory)\n if (projectDir) {\n newestVersion = await upgradeLocalShopify(projectDir, currentVersion)\n } else if (usingPackageManager()) {\n throw new error.Abort(\n output.content`Couldn't find the configuration file for ${output.token.path(\n directory,\n )}, are you in a Shopify project directory?`,\n )\n } else {\n newestVersion = await upgradeGlobalShopify(currentVersion)\n }\n\n if (newestVersion) {\n output.success(`Upgraded Shopify CLI to version ${newestVersion}`)\n }\n}\n\nasync function getProjectDir(directory: string): Promise<string | undefined> {\n const configFile = await findPathUp(['shopify.app.toml', 'hydrogen.config.js', 'hydrogen.config.ts'], {\n cwd: directory,\n type: 'file',\n })\n if (configFile) return dirname(configFile)\n}\n\nasync function upgradeLocalShopify(projectDir: string, currentVersion: string): Promise<string | void> {\n const packageJson = (await findUpAndReadPackageJson(projectDir)).content\n const packageJsonDependencies = packageJson.dependencies || {}\n const packageJsonDevDependencies = packageJson.devDependencies || {}\n\n let resolvedVersion: string = {...packageJsonDependencies, ...packageJsonDevDependencies}[await cliDependency()]!\n if (resolvedVersion.slice(0, 1).match(/[\\^~]/)) resolvedVersion = currentVersion\n const newestVersion = await checkForNewVersion(await cliDependency(), resolvedVersion)\n\n if (!newestVersion) {\n outputWontInstallMessage(resolvedVersion)\n return\n }\n\n outputUpgradeMessage(resolvedVersion, newestVersion)\n\n await installJsonDependencies('prod', packageJsonDependencies, projectDir)\n await installJsonDependencies('dev', packageJsonDevDependencies, projectDir)\n return newestVersion\n}\n\nasync function upgradeGlobalShopify(currentVersion: string): Promise<string | void> {\n const newestVersion = await checkForNewVersion(await cliDependency(), currentVersion)\n\n if (!newestVersion) {\n outputWontInstallMessage(currentVersion)\n return\n }\n\n outputUpgradeMessage(currentVersion, newestVersion)\n\n const homebrewPackage = process.env.SHOPIFY_HOMEBREW_FORMULA as HomebrewPackageName | undefined\n try {\n await (homebrewPackage ? upgradeGlobalViaHomebrew(homebrewPackage) : upgradeGlobalViaNpm())\n } catch (err) {\n output.warn('Upgrade failed!')\n throw err\n }\n return newestVersion\n}\n\nasync function upgradeGlobalViaHomebrew(homebrewPackage: HomebrewPackageName): Promise<void> {\n output.info(\n output.content`Homebrew installation detected. Attempting to upgrade via ${output.token.genericShellCommand(\n 'brew upgrade',\n )}...`,\n )\n await exec('brew', ['upgrade', homebrewPackage], {stdio: 'inherit'})\n}\n\nasync function upgradeGlobalViaNpm(): Promise<void> {\n const command = 'npm'\n const args = [\n 'install',\n '-g',\n `${await cliDependency()}@latest`,\n ...globalPlugins.map((plugin) => `${plugin}@latest`),\n ]\n output.info(\n output.content`Attempting to upgrade via ${output.token.genericShellCommand([command, ...args].join(' '))}...`,\n )\n await exec(command, args, {stdio: 'inherit'})\n}\n\nfunction outputWontInstallMessage(currentVersion: string): void {\n output.info(output.content`You're on the latest version, ${output.token.yellow(currentVersion)}, no need to upgrade!`)\n}\n\nfunction outputUpgradeMessage(currentVersion: string, newestVersion: string): void {\n output.info(\n output.content`Upgrading CLI from ${output.token.yellow(currentVersion)} to ${output.token.yellow(\n newestVersion,\n )}...`,\n )\n}\n\nasync function installJsonDependencies(\n depsEnv: DependencyType,\n deps: {[key: string]: string},\n directory: string,\n): Promise<void> {\n const packagesToUpdate = [await cliDependency(), ...(await oclifPlugins())]\n .filter((pkg: string): boolean => {\n const pkgRequirement: string | undefined = deps[pkg]\n return Boolean(pkgRequirement)\n })\n .map((pkg) => {\n return {name: pkg, version: 'latest'}\n })\n\n if (packagesToUpdate.length > 0) {\n await addNPMDependencies(packagesToUpdate, {\n packageManager: await getPackageManager(directory),\n type: depsEnv,\n directory,\n stdout: process.stdout,\n stderr: process.stderr,\n })\n }\n}\n\nasync function cliDependency(): Promise<string> {\n return (await packageJsonContents()).name\n}\n\nasync function oclifPlugins(): Promise<string[]> {\n return (await packageJsonContents())?.oclif?.plugins || []\n}\n\ntype PackageJsonWithName = Omit<PackageJson, 'name'> & {name: string}\nlet _packageJsonContents: PackageJsonWithName | undefined\n\nasync function packageJsonContents(): Promise<PackageJsonWithName> {\n if (!_packageJsonContents) {\n const packageJson = await findUpAndReadPackageJson(moduleDirectory(import.meta.url))\n _packageJsonContents = _packageJsonContents || (packageJson.content as PackageJsonWithName)\n }\n return _packageJsonContents\n}\n\nfunction usingPackageManager(): boolean {\n return Boolean(process.env.npm_config_user_agent)\n}\n"]}