UNPKG

2.09 kBJavaScriptView Raw
1"use strict";
2/**
3 * @license
4 * Copyright Google LLC All Rights Reserved.
5 *
6 * Use of this source code is governed by an MIT-style license that can be
7 * found in the LICENSE file at https://angular.io/license
8 */
9Object.defineProperty(exports, "__esModule", { value: true });
10exports.getProjectDependencies = exports.findPackageJson = exports.readPackageJson = void 0;
11const fs = require("fs");
12const path_1 = require("path");
13const resolve = require("resolve");
14function getAllDependencies(pkg) {
15 return new Set([
16 ...Object.entries(pkg.dependencies || []),
17 ...Object.entries(pkg.devDependencies || []),
18 ...Object.entries(pkg.peerDependencies || []),
19 ...Object.entries(pkg.optionalDependencies || []),
20 ]);
21}
22async function readPackageJson(packageJsonPath) {
23 try {
24 return JSON.parse((await fs.promises.readFile(packageJsonPath)).toString());
25 }
26 catch {
27 return undefined;
28 }
29}
30exports.readPackageJson = readPackageJson;
31function findPackageJson(workspaceDir, packageName) {
32 try {
33 // avoid require.resolve here, see: https://github.com/angular/angular-cli/pull/18610#issuecomment-681980185
34 const packageJsonPath = resolve.sync(`${packageName}/package.json`, { basedir: workspaceDir });
35 return packageJsonPath;
36 }
37 catch {
38 return undefined;
39 }
40}
41exports.findPackageJson = findPackageJson;
42async function getProjectDependencies(dir) {
43 const pkg = await readPackageJson(path_1.join(dir, 'package.json'));
44 if (!pkg) {
45 throw new Error('Could not find package.json');
46 }
47 const results = new Map();
48 for (const [name, version] of getAllDependencies(pkg)) {
49 const packageJsonPath = findPackageJson(dir, name);
50 if (!packageJsonPath) {
51 continue;
52 }
53 results.set(name, {
54 name,
55 version,
56 path: path_1.dirname(packageJsonPath),
57 package: await readPackageJson(packageJsonPath),
58 });
59 }
60 return results;
61}
62exports.getProjectDependencies = getProjectDependencies;