1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | Object.defineProperty(exports, "__esModule", { value: true });
|
10 | exports.getProjectDependencies = exports.findPackageJson = exports.readPackageJson = void 0;
|
11 | const fs = require("fs");
|
12 | const path_1 = require("path");
|
13 | const resolve = require("resolve");
|
14 | function 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 | }
|
22 | async function readPackageJson(packageJsonPath) {
|
23 | try {
|
24 | return JSON.parse((await fs.promises.readFile(packageJsonPath)).toString());
|
25 | }
|
26 | catch {
|
27 | return undefined;
|
28 | }
|
29 | }
|
30 | exports.readPackageJson = readPackageJson;
|
31 | function findPackageJson(workspaceDir, packageName) {
|
32 | try {
|
33 |
|
34 | const packageJsonPath = resolve.sync(`${packageName}/package.json`, { basedir: workspaceDir });
|
35 | return packageJsonPath;
|
36 | }
|
37 | catch {
|
38 | return undefined;
|
39 | }
|
40 | }
|
41 | exports.findPackageJson = findPackageJson;
|
42 | async 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 | }
|
62 | exports.getProjectDependencies = getProjectDependencies;
|