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