1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.updatePackagesInPackageJson = void 0;
|
4 | const schematics_1 = require("@angular-devkit/schematics");
|
5 | const ast_utils_1 = require("./ast-utils");
|
6 | const fs_1 = require("fs");
|
7 | const version_utils_1 = require("./version-utils");
|
8 | const semver_1 = require("semver");
|
9 | const add_install_task_1 = require("./rules/add-install-task");
|
10 | function updatePackagesInPackageJson(migrationFilePath, versionName, options = { skipInstall: false }) {
|
11 | const migrations = JSON.parse((0, fs_1.readFileSync)(migrationFilePath).toString());
|
12 | const packageJsonUpdates = migrations.packageJsonUpdates[versionName];
|
13 |
|
14 | if (!packageJsonUpdates) {
|
15 | throw new Error(`Cannot find ${versionName} in migrations.json`);
|
16 | }
|
17 | const updatedPackages = packageJsonUpdates.packages;
|
18 | let needsInstall = false;
|
19 | return (0, schematics_1.chain)([
|
20 | (0, ast_utils_1.updateJsonInTree)('package.json', (json) => {
|
21 | Object.keys(updatedPackages).forEach((p) => {
|
22 | |
23 |
|
24 |
|
25 | const cleanUpdatedVersion = (0, version_utils_1.checkAndCleanWithSemver)(p, updatedPackages[p].version);
|
26 | if (json.devDependencies && json.devDependencies[p]) {
|
27 | const cleanDevVersion = (0, version_utils_1.checkAndCleanWithSemver)(p, json.devDependencies[p]);
|
28 | if ((0, semver_1.lt)(cleanDevVersion, cleanUpdatedVersion)) {
|
29 | json.devDependencies[p] = updatedPackages[p].version;
|
30 | needsInstall = true;
|
31 | }
|
32 | }
|
33 | else if (json.dependencies && json.dependencies[p]) {
|
34 | const cleanVersion = (0, version_utils_1.checkAndCleanWithSemver)(p, json.dependencies[p]);
|
35 | if ((0, semver_1.lt)(cleanVersion, cleanUpdatedVersion)) {
|
36 | json.dependencies[p] = updatedPackages[p].version;
|
37 | needsInstall = true;
|
38 | }
|
39 | }
|
40 | else if (updatedPackages[p].alwaysAddToPackageJson) {
|
41 | const cleanVersion = (0, version_utils_1.checkAndCleanWithSemver)(p, json.dependencies[p]);
|
42 | if ((0, semver_1.lt)(cleanVersion, cleanUpdatedVersion)) {
|
43 | if (!json.dependencies)
|
44 | json.dependencies = {};
|
45 | json.dependencies[p] = updatedPackages[p].version;
|
46 | needsInstall = true;
|
47 | }
|
48 | }
|
49 | });
|
50 | return json;
|
51 | }),
|
52 | needsInstall ? (0, add_install_task_1.addInstallTask)(options) : (0, schematics_1.noop)(),
|
53 | ]);
|
54 | }
|
55 | exports.updatePackagesInPackageJson = updatePackagesInPackageJson;
|
56 |
|
\ | No newline at end of file |