1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.renameNpmPackages = void 0;
|
4 | const schematics_1 = require("@angular-devkit/schematics");
|
5 | const ast_utils_1 = require("../ast-utils");
|
6 | const rename_package_imports_1 = require("./rename-package-imports");
|
7 | const format_files_1 = require("./format-files");
|
8 | const normalizeToDescriptors = (packageJson) => ([packageName, newPackageNameConfig]) => {
|
9 | const isDevDep = !!packageJson.devDependencies &&
|
10 | packageName in packageJson.devDependencies;
|
11 | const inPackageJson = (packageJson.dependencies && packageName in packageJson.dependencies) ||
|
12 | isDevDep;
|
13 | const newPackageName = Array.isArray(newPackageNameConfig)
|
14 | ? newPackageNameConfig[0]
|
15 | : newPackageNameConfig;
|
16 | const version = Array.isArray(newPackageNameConfig) && newPackageNameConfig[1]
|
17 | ? newPackageNameConfig[1]
|
18 | : isDevDep
|
19 | ? packageJson.devDependencies[packageName]
|
20 | : packageJson.dependencies[packageName];
|
21 | return {
|
22 | packageName,
|
23 | newPackageName,
|
24 | version,
|
25 | isDevDep,
|
26 | inPackageJson,
|
27 | };
|
28 | };
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 | function renameNpmPackages(packageRenameMapping) {
|
35 | return (tree, context) => {
|
36 | const pkg = (0, ast_utils_1.readJsonInTree)(tree, 'package.json');
|
37 | const renameDescriptors = Object.entries(packageRenameMapping).map(normalizeToDescriptors(pkg));
|
38 |
|
39 | if (renameDescriptors.filter(({ inPackageJson }) => inPackageJson).length ===
|
40 | 0) {
|
41 | return (0, schematics_1.noop)();
|
42 | }
|
43 | const packageNameMapping = renameDescriptors.reduce((mapping, { packageName, newPackageName }) => {
|
44 | mapping[packageName] = newPackageName;
|
45 | return mapping;
|
46 | }, {});
|
47 | const depAdditions = renameDescriptors.reduce((mapping, { newPackageName, version, isDevDep }) => {
|
48 | if (!isDevDep) {
|
49 | mapping[newPackageName] = version;
|
50 | }
|
51 | return mapping;
|
52 | }, {});
|
53 | const devDepAdditions = renameDescriptors.reduce((mapping, { newPackageName, version, isDevDep }) => {
|
54 | if (isDevDep) {
|
55 | mapping[newPackageName] = version;
|
56 | }
|
57 | return mapping;
|
58 | }, {});
|
59 | return (0, schematics_1.chain)([
|
60 |
|
61 | (0, rename_package_imports_1.renamePackageImports)(packageNameMapping),
|
62 |
|
63 | (0, ast_utils_1.addDepsToPackageJson)(depAdditions, devDepAdditions),
|
64 |
|
65 | (0, ast_utils_1.updateJsonInTree)('package.json', (json) => {
|
66 | renameDescriptors.forEach(({ packageName, isDevDep }) => {
|
67 | if (isDevDep) {
|
68 | delete json.devDependencies[packageName];
|
69 | }
|
70 | else {
|
71 | delete json.dependencies[packageName];
|
72 | }
|
73 | });
|
74 | return json;
|
75 | }),
|
76 | (0, format_files_1.formatFiles)(),
|
77 | ]);
|
78 | };
|
79 | }
|
80 | exports.renameNpmPackages = renameNpmPackages;
|
81 |
|
\ | No newline at end of file |