1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.createPackageJson = void 0;
|
4 | const devkit_1 = require("@nrwl/devkit");
|
5 | const object_sort_1 = require("nx/src/utils/object-sort");
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | function createPackageJson(projectName, graph, options) {
|
12 | const npmDeps = findAllNpmDeps(projectName, graph);
|
13 |
|
14 | let packageJson = {
|
15 | name: projectName,
|
16 | version: '0.0.1',
|
17 | dependencies: {},
|
18 | devDependencies: {},
|
19 | };
|
20 | try {
|
21 | packageJson = (0, devkit_1.readJsonFile)(`${options.projectRoot}/package.json`);
|
22 | if (!packageJson.dependencies) {
|
23 | packageJson.dependencies = {};
|
24 | }
|
25 | if (!packageJson.devDependencies) {
|
26 | packageJson.devDependencies = {};
|
27 | }
|
28 | }
|
29 | catch (e) { }
|
30 | const rootPackageJson = (0, devkit_1.readJsonFile)(`${options.root}/package.json`);
|
31 | Object.entries(npmDeps).forEach(([packageName, version]) => {
|
32 | var _a;
|
33 | if ((_a = rootPackageJson.devDependencies) === null || _a === void 0 ? void 0 : _a[packageName]) {
|
34 | packageJson.devDependencies[packageName] = version;
|
35 | }
|
36 | else {
|
37 | packageJson.dependencies[packageName] = version;
|
38 | }
|
39 | });
|
40 | packageJson.devDependencies && (packageJson.devDependencies = (0, object_sort_1.sortObjectByKeys)(packageJson.devDependencies));
|
41 | packageJson.dependencies && (packageJson.dependencies = (0, object_sort_1.sortObjectByKeys)(packageJson.dependencies));
|
42 | return packageJson;
|
43 | }
|
44 | exports.createPackageJson = createPackageJson;
|
45 | function findAllNpmDeps(projectName, graph, list = {}, seen = new Set()) {
|
46 | var _a;
|
47 | if (seen.has(projectName)) {
|
48 | return list;
|
49 | }
|
50 | seen.add(projectName);
|
51 | const node = graph.externalNodes[projectName];
|
52 | if (node) {
|
53 | list[node.data.packageName] = node.data.version;
|
54 | recursivelyCollectPeerDependencies(node.name, graph, list);
|
55 | }
|
56 | (_a = graph.dependencies[projectName]) === null || _a === void 0 ? void 0 : _a.forEach((dep) => {
|
57 | findAllNpmDeps(dep.target, graph, list, seen);
|
58 | });
|
59 | return list;
|
60 | }
|
61 | function recursivelyCollectPeerDependencies(projectName, graph, list = {}, seen = new Set()) {
|
62 | const npmPackage = graph.externalNodes[projectName];
|
63 | if (!npmPackage || seen.has(projectName)) {
|
64 | return list;
|
65 | }
|
66 | seen.add(projectName);
|
67 | const packageName = npmPackage.data.packageName;
|
68 | try {
|
69 | const packageJson = require(`${packageName}/package.json`);
|
70 | if (!packageJson.peerDependencies) {
|
71 | return list;
|
72 | }
|
73 | Object.keys(packageJson.peerDependencies)
|
74 | .map((dependencyName) => `npm:${dependencyName}`)
|
75 | .map((dependency) => graph.externalNodes[dependency])
|
76 | .filter(Boolean)
|
77 | .forEach((node) => {
|
78 | list[node.data.packageName] = node.data.version;
|
79 | recursivelyCollectPeerDependencies(node.name, graph, list, seen);
|
80 | });
|
81 | return list;
|
82 | }
|
83 | catch (e) {
|
84 | return list;
|
85 | }
|
86 | }
|
87 |
|
\ | No newline at end of file |