UNPKG

@aws-amplify/cli-internal

Version:
111 lines 4.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RootPackageJsonGenerator = void 0; const node_path_1 = __importDefault(require("node:path")); const promises_1 = __importDefault(require("node:fs/promises")); const semver_1 = require("semver"); const amplify_cli_core_1 = require("@aws-amplify/amplify-cli-core"); const GEN2_DEV_DEPENDENCIES = { '@aws-amplify/backend': '^1.18.0', '@aws-amplify/backend-cli': '^1.8.0', '@aws-amplify/backend-data': '^1.6.2', '@types/node': '*', 'aws-cdk': '^2', 'aws-cdk-lib': '^2', 'ci-info': '^4.3.1', constructs: '^10.0.0', esbuild: '^0.27.0', tsx: '^4.20.6', }; function sortKeys(obj) { return Object.keys(obj) .sort() .reduce((sorted, key) => { sorted[key] = obj[key]; return sorted; }, {}); } function maxVersion(existing, incoming) { if (!existing) { return incoming; } const coercedExisting = (0, semver_1.coerce)(existing); const coercedIncoming = (0, semver_1.coerce)(incoming); if (coercedExisting && coercedIncoming) { return (0, semver_1.gt)(coercedIncoming, coercedExisting) ? incoming : existing; } return incoming; } class RootPackageJsonGenerator { constructor(outputDir) { this.dependencies = {}; this.devDependencies = {}; this.outputDir = outputDir; } addDependency(name, version) { this.dependencies[name] = maxVersion(this.dependencies[name], version); } addDevDependency(name, version) { this.devDependencies[name] = maxVersion(this.devDependencies[name], version); } async plan() { const packageJsonPath = node_path_1.default.join(this.outputDir, 'package.json'); return [ { validate: () => undefined, describe: async () => ['Update package.json with Gen2 dependencies'], execute: async () => { var _a, _b; const defaultName = 'amplify-gen2'; let packageJson = { name: defaultName }; try { const existing = amplify_cli_core_1.JSONUtilities.readJson('./package.json'); if (existing) { packageJson = existing; } } catch (e) { if (!(e instanceof Error && e.message.includes('does not exist'))) { throw e; } } const mergedDevDependencies = { ...((_a = packageJson.devDependencies) !== null && _a !== void 0 ? _a : {}), }; for (const [name, version] of Object.entries(this.devDependencies)) { mergedDevDependencies[name] = maxVersion(mergedDevDependencies[name], version); } for (const [name, version] of Object.entries(GEN2_DEV_DEPENDENCIES)) { mergedDevDependencies[name] = maxVersion(mergedDevDependencies[name], version); } const mergedDependencies = { ...((_b = packageJson.dependencies) !== null && _b !== void 0 ? _b : {}), }; for (const [name, version] of Object.entries(this.dependencies)) { mergedDependencies[name] = maxVersion(mergedDependencies[name], version); } for (const name of Object.keys(mergedDependencies)) { delete mergedDevDependencies[name]; } for (const name of Object.keys(mergedDependencies)) { if (name.startsWith('@aws-cdk/') || name === '@aws-amplify/cli-extensibility-helper') { delete mergedDependencies[name]; } } const patched = { ...packageJson, dependencies: sortKeys(mergedDependencies), devDependencies: sortKeys(mergedDevDependencies), }; await promises_1.default.mkdir(node_path_1.default.dirname(packageJsonPath), { recursive: true }); await promises_1.default.writeFile(packageJsonPath, JSON.stringify(patched, null, 2) + '\n', 'utf-8'); }, }, ]; } } exports.RootPackageJsonGenerator = RootPackageJsonGenerator; //# sourceMappingURL=package.json.generator.js.map