workspace-tools 0.22.0 → 0.23.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +46 -1
- package/CHANGELOG.md +26 -2
- package/lib/dependencies/index.d.ts +12 -0
- package/lib/dependencies/index.js +14 -0
- package/lib/{dependencies.d.ts → dependencies/transitiveDeps.d.ts} +1 -7
- package/lib/{dependencies.js → dependencies/transitiveDeps.js} +3 -12
- package/lib/{createDependencyMap.d.ts → graph/createDependencyMap.d.ts} +3 -5
- package/lib/{createDependencyMap.js → graph/createDependencyMap.js} +3 -2
- package/lib/graph/createPackageGraph.d.ts +10 -0
- package/lib/graph/createPackageGraph.js +122 -0
- package/lib/graph/getPackageDependencies.d.ts +6 -0
- package/lib/graph/getPackageDependencies.js +20 -0
- package/lib/graph/index.d.ts +3 -0
- package/lib/graph/index.js +20 -0
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -2
- package/lib/lockfile/index.js +2 -2
- package/package.json +1 -1
- package/lib/graph.d.ts +0 -8
- package/lib/graph.js +0 -61
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,52 @@
|
|
|
2
2
|
"name": "workspace-tools",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "
|
|
5
|
+
"date": "Fri, 15 Jul 2022 05:05:45 GMT",
|
|
6
|
+
"tag": "workspace-tools_v0.23.2",
|
|
7
|
+
"version": "0.23.2",
|
|
8
|
+
"comments": {
|
|
9
|
+
"patch": [
|
|
10
|
+
{
|
|
11
|
+
"author": "ken@gizzar.com",
|
|
12
|
+
"package": "workspace-tools",
|
|
13
|
+
"comment": "fixing the dependent map results",
|
|
14
|
+
"commit": "6dff4d2ba6fe88ab0a0f60c7c62410393e4596ee"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Fri, 15 Jul 2022 03:59:39 GMT",
|
|
21
|
+
"tag": "workspace-tools_v0.23.1",
|
|
22
|
+
"version": "0.23.1",
|
|
23
|
+
"comments": {
|
|
24
|
+
"patch": [
|
|
25
|
+
{
|
|
26
|
+
"author": "ken@gizzar.com",
|
|
27
|
+
"package": "workspace-tools",
|
|
28
|
+
"comment": "fixing the missing getDependentMap API that lage uses",
|
|
29
|
+
"commit": "c37668d313891a5a0acd25f81a8b2476437335e1"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"date": "Thu, 14 Jul 2022 17:22:35 GMT",
|
|
36
|
+
"tag": "workspace-tools_v0.23.0",
|
|
37
|
+
"version": "0.23.0",
|
|
38
|
+
"comments": {
|
|
39
|
+
"minor": [
|
|
40
|
+
{
|
|
41
|
+
"author": "kchau@microsoft.com",
|
|
42
|
+
"package": "workspace-tools",
|
|
43
|
+
"comment": "refactoring and cleaning up the createPackageGraph API to make it not repeat edges",
|
|
44
|
+
"commit": "4cd2ebcdc61bdd3c1bce6d1e09bedd13e739edd5"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"date": "Wed, 13 Jul 2022 20:42:07 GMT",
|
|
6
51
|
"tag": "workspace-tools_v0.22.0",
|
|
7
52
|
"version": "0.22.0",
|
|
8
53
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,36 @@
|
|
|
1
1
|
# Change Log - workspace-tools
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Fri, 15 Jul 2022 05:05:45 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.23.2
|
|
8
|
+
|
|
9
|
+
Fri, 15 Jul 2022 05:05:45 GMT
|
|
10
|
+
|
|
11
|
+
### Patches
|
|
12
|
+
|
|
13
|
+
- fixing the dependent map results (ken@gizzar.com)
|
|
14
|
+
|
|
15
|
+
## 0.23.1
|
|
16
|
+
|
|
17
|
+
Fri, 15 Jul 2022 03:59:39 GMT
|
|
18
|
+
|
|
19
|
+
### Patches
|
|
20
|
+
|
|
21
|
+
- fixing the missing getDependentMap API that lage uses (ken@gizzar.com)
|
|
22
|
+
|
|
23
|
+
## 0.23.0
|
|
24
|
+
|
|
25
|
+
Thu, 14 Jul 2022 17:22:35 GMT
|
|
26
|
+
|
|
27
|
+
### Minor changes
|
|
28
|
+
|
|
29
|
+
- refactoring and cleaning up the createPackageGraph API to make it not repeat edges (kchau@microsoft.com)
|
|
30
|
+
|
|
7
31
|
## 0.22.0
|
|
8
32
|
|
|
9
|
-
Wed, 13 Jul 2022 20:42:
|
|
33
|
+
Wed, 13 Jul 2022 20:42:07 GMT
|
|
10
34
|
|
|
11
35
|
### Minor changes
|
|
12
36
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getTransitiveConsumers, getTransitiveProviders } from "./transitiveDeps";
|
|
2
|
+
import { getPackageDependencies } from "../graph/getPackageDependencies";
|
|
3
|
+
/** @deprecated Do not use */
|
|
4
|
+
export declare const getTransitiveDependencies: typeof getTransitiveProviders;
|
|
5
|
+
/** @deprecated Do not use */
|
|
6
|
+
export { getTransitiveProviders };
|
|
7
|
+
/** @deprecated Do not use */
|
|
8
|
+
export declare const getTransitiveDependents: typeof getTransitiveConsumers;
|
|
9
|
+
/** @deprecated Do not use */
|
|
10
|
+
export { getTransitiveConsumers };
|
|
11
|
+
/** @deprecated Do not use */
|
|
12
|
+
export declare const getInternalDeps: typeof getPackageDependencies;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getInternalDeps = exports.getTransitiveConsumers = exports.getTransitiveDependents = exports.getTransitiveProviders = exports.getTransitiveDependencies = void 0;
|
|
4
|
+
const transitiveDeps_1 = require("./transitiveDeps");
|
|
5
|
+
Object.defineProperty(exports, "getTransitiveConsumers", { enumerable: true, get: function () { return transitiveDeps_1.getTransitiveConsumers; } });
|
|
6
|
+
Object.defineProperty(exports, "getTransitiveProviders", { enumerable: true, get: function () { return transitiveDeps_1.getTransitiveProviders; } });
|
|
7
|
+
const getPackageDependencies_1 = require("../graph/getPackageDependencies");
|
|
8
|
+
// Some deprecated functions below for backwards compatibility
|
|
9
|
+
/** @deprecated Do not use */
|
|
10
|
+
exports.getTransitiveDependencies = transitiveDeps_1.getTransitiveProviders;
|
|
11
|
+
/** @deprecated Do not use */
|
|
12
|
+
exports.getTransitiveDependents = transitiveDeps_1.getTransitiveConsumers;
|
|
13
|
+
/** @deprecated Do not use */
|
|
14
|
+
exports.getInternalDeps = getPackageDependencies_1.getPackageDependencies;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PackageInfos } from "../types/PackageInfo";
|
|
2
2
|
export declare function getDependentMap(packages: PackageInfos): Map<string, Set<string>>;
|
|
3
3
|
/**
|
|
4
4
|
* @deprecated Do not use
|
|
@@ -17,9 +17,3 @@ export declare function getTransitiveConsumers(targets: string[], packages: Pack
|
|
|
17
17
|
* @param packages
|
|
18
18
|
*/
|
|
19
19
|
export declare function getTransitiveProviders(targets: string[], packages: PackageInfos): string[];
|
|
20
|
-
/** @deprecated Do not use */
|
|
21
|
-
export declare const getTransitiveDependencies: typeof getTransitiveProviders;
|
|
22
|
-
/** @deprecated Do not use */
|
|
23
|
-
export declare const getTransitiveDependents: typeof getTransitiveConsumers;
|
|
24
|
-
/** @deprecated Do not use */
|
|
25
|
-
export declare function getInternalDeps(info: PackageInfo, packages: PackageInfos): string[];
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getTransitiveProviders = exports.getTransitiveConsumers = exports.getDependentMap = void 0;
|
|
4
|
+
const getPackageDependencies_1 = require("../graph/getPackageDependencies");
|
|
4
5
|
const graphCache = new Map();
|
|
5
6
|
function memoizedKey(packages, scope = []) {
|
|
6
7
|
return JSON.stringify({ packages, scope });
|
|
@@ -20,7 +21,7 @@ function getPackageGraph(packages, scope = []) {
|
|
|
20
21
|
}
|
|
21
22
|
visited.add(pkg);
|
|
22
23
|
const info = packages[pkg];
|
|
23
|
-
const deps =
|
|
24
|
+
const deps = (0, getPackageDependencies_1.getPackageDependencies)(info, packages);
|
|
24
25
|
if (deps.length > 0) {
|
|
25
26
|
for (const dep of deps) {
|
|
26
27
|
stack.push(dep);
|
|
@@ -99,13 +100,3 @@ function getTransitiveProviders(targets, packages) {
|
|
|
99
100
|
return [...visited].filter((pkg) => !targets.includes(pkg));
|
|
100
101
|
}
|
|
101
102
|
exports.getTransitiveProviders = getTransitiveProviders;
|
|
102
|
-
/** @deprecated Do not use */
|
|
103
|
-
exports.getTransitiveDependencies = getTransitiveProviders;
|
|
104
|
-
/** @deprecated Do not use */
|
|
105
|
-
exports.getTransitiveDependents = getTransitiveConsumers;
|
|
106
|
-
/** @deprecated Do not use */
|
|
107
|
-
function getInternalDeps(info, packages) {
|
|
108
|
-
const deps = Object.keys(Object.assign(Object.assign({}, info.dependencies), info.devDependencies));
|
|
109
|
-
return Object.keys(packages).filter((pkg) => deps.includes(pkg));
|
|
110
|
-
}
|
|
111
|
-
exports.getInternalDeps = getInternalDeps;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PackageDependenciesOptions } from "./getPackageDependencies";
|
|
2
|
+
import { PackageInfos } from "../types/PackageInfo";
|
|
2
3
|
export interface DependencyMap {
|
|
3
4
|
dependencies: Map<string, Set<string>>;
|
|
4
5
|
dependents: Map<string, Set<string>>;
|
|
5
6
|
}
|
|
6
|
-
export declare function createDependencyMap(packages: PackageInfos):
|
|
7
|
-
dependencies: Map<string, Set<string>>;
|
|
8
|
-
dependents: Map<string, Set<string>>;
|
|
9
|
-
};
|
|
7
|
+
export declare function createDependencyMap(packages: PackageInfos, options?: PackageDependenciesOptions): DependencyMap;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createDependencyMap = void 0;
|
|
4
|
+
const getPackageDependencies_1 = require("./getPackageDependencies");
|
|
4
5
|
// @internal
|
|
5
|
-
function createDependencyMap(packages) {
|
|
6
|
+
function createDependencyMap(packages, options = { withDevDependencies: true, withPeerDependencies: false }) {
|
|
6
7
|
const map = {
|
|
7
8
|
dependencies: new Map(),
|
|
8
9
|
dependents: new Map(),
|
|
9
10
|
};
|
|
10
11
|
for (const [pkg, info] of Object.entries(packages)) {
|
|
11
|
-
const deps =
|
|
12
|
+
const deps = (0, getPackageDependencies_1.getPackageDependencies)(info, packages, options);
|
|
12
13
|
for (const dep of deps) {
|
|
13
14
|
if (!map.dependencies.has(pkg)) {
|
|
14
15
|
map.dependencies.set(pkg, new Set());
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PackageInfos } from "../types/PackageInfo";
|
|
2
|
+
import type { PackageGraph } from "../types/PackageGraph";
|
|
3
|
+
export interface PackageGraphFilter {
|
|
4
|
+
namePatterns: string[];
|
|
5
|
+
includeDependencies?: boolean;
|
|
6
|
+
includeDependents?: boolean;
|
|
7
|
+
withDevDependencies?: boolean;
|
|
8
|
+
withPeerDependencies?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function createPackageGraph(packages: PackageInfos, filters?: PackageGraphFilter[] | PackageGraphFilter): PackageGraph;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createPackageGraph = void 0;
|
|
7
|
+
const createDependencyMap_1 = require("./createDependencyMap");
|
|
8
|
+
const multimatch_1 = __importDefault(require("multimatch"));
|
|
9
|
+
function createPackageGraph(packages, filters) {
|
|
10
|
+
/** packageSet is the set of packages being accumulated as the graph is filtered */
|
|
11
|
+
const packageSet = new Set();
|
|
12
|
+
/** edges is the array of package names & its dependency being accumulated as the graph is filtered */
|
|
13
|
+
const edges = [];
|
|
14
|
+
const edgeKeys = new Set();
|
|
15
|
+
let dependencyMapWithPeerDevDeps = undefined;
|
|
16
|
+
let dependencyMapWithPeerDeps = undefined;
|
|
17
|
+
let dependencyMapWithDevDeps = undefined;
|
|
18
|
+
let dependencyMapWithoutPeerDevDeps = undefined;
|
|
19
|
+
/** a visitor for a single filter, */
|
|
20
|
+
function visitorForFilter(filter, pkg, dependencies, dependents) {
|
|
21
|
+
packageSet.add(pkg);
|
|
22
|
+
if (!filter || (filter.includeDependencies && dependencies)) {
|
|
23
|
+
for (const dep of dependencies) {
|
|
24
|
+
const key = edgeKey(pkg, dep);
|
|
25
|
+
if (!edgeKeys.has(key)) {
|
|
26
|
+
edgeKeys.add(key);
|
|
27
|
+
edges.push({ name: pkg, dependency: dep });
|
|
28
|
+
}
|
|
29
|
+
packageSet.add(dep);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!filter || (filter.includeDependents && dependents)) {
|
|
33
|
+
for (const dep of dependents) {
|
|
34
|
+
const key = edgeKey(dep, pkg);
|
|
35
|
+
if (!edgeKeys.has(key)) {
|
|
36
|
+
edgeKeys.add(key);
|
|
37
|
+
edges.push({ name: dep, dependency: pkg });
|
|
38
|
+
}
|
|
39
|
+
packageSet.add(dep);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (filters) {
|
|
44
|
+
if (Array.isArray(filters)) {
|
|
45
|
+
for (const filter of filters) {
|
|
46
|
+
const dependencyMap = getDependencyMapForFilter(packages, filter);
|
|
47
|
+
const visitor = visitorForFilter.bind(undefined, filter);
|
|
48
|
+
visitPackageGraph(packages, dependencyMap, visitor, filter);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const filter = filters;
|
|
53
|
+
const dependencyMap = getDependencyMapForFilter(packages, filter);
|
|
54
|
+
const visitor = visitorForFilter.bind(undefined, filter);
|
|
55
|
+
visitPackageGraph(packages, dependencyMap, visitor, filter);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const visitor = visitorForFilter.bind(undefined, undefined);
|
|
60
|
+
const dependencyMap = getDependencyMapForFilter(packages);
|
|
61
|
+
visitPackageGraph(packages, dependencyMap, visitor);
|
|
62
|
+
}
|
|
63
|
+
return { packages: [...packageSet], dependencies: edges };
|
|
64
|
+
/** calculates a key, for looking up whether an edge is already added */
|
|
65
|
+
function edgeKey(name, dependency) {
|
|
66
|
+
return `${name}->${dependency}`;
|
|
67
|
+
}
|
|
68
|
+
/** gets the dependencyMap for a filter - with or without devDeps */
|
|
69
|
+
function getDependencyMapForFilter(packages, filter) {
|
|
70
|
+
if (!filter) {
|
|
71
|
+
return (0, createDependencyMap_1.createDependencyMap)(packages);
|
|
72
|
+
}
|
|
73
|
+
if (filter.withDevDependencies && filter.withPeerDependencies && !dependencyMapWithPeerDevDeps) {
|
|
74
|
+
dependencyMapWithPeerDevDeps = (0, createDependencyMap_1.createDependencyMap)(packages, { withDevDependencies: true, withPeerDependencies: true });
|
|
75
|
+
}
|
|
76
|
+
else if (filter.withDevDependencies && !filter.withPeerDependencies && !dependencyMapWithDevDeps) {
|
|
77
|
+
dependencyMapWithDevDeps = (0, createDependencyMap_1.createDependencyMap)(packages, { withDevDependencies: true, withPeerDependencies: false });
|
|
78
|
+
}
|
|
79
|
+
else if (!filter.withDevDependencies && filter.withPeerDependencies && !dependencyMapWithPeerDeps) {
|
|
80
|
+
dependencyMapWithPeerDeps = (0, createDependencyMap_1.createDependencyMap)(packages, { withDevDependencies: false, withPeerDependencies: true });
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
dependencyMapWithoutPeerDevDeps = (0, createDependencyMap_1.createDependencyMap)(packages, { withDevDependencies: false, withPeerDependencies: false });
|
|
84
|
+
}
|
|
85
|
+
return ((filter.withDevDependencies && filter.withPeerDependencies) ? dependencyMapWithPeerDevDeps : (filter.withDevDependencies ? dependencyMapWithDevDeps : (filter.withPeerDependencies ? dependencyMapWithPeerDeps : dependencyMapWithoutPeerDevDeps)));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.createPackageGraph = createPackageGraph;
|
|
89
|
+
function visitPackageGraph(packages, dependencyMap, visitor, filter) {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
const visited = new Set();
|
|
92
|
+
const packageNames = Object.keys(packages);
|
|
93
|
+
const stack = filter ? (0, multimatch_1.default)(packageNames, filter.namePatterns) : packageNames;
|
|
94
|
+
while (stack.length > 0) {
|
|
95
|
+
const pkg = stack.pop();
|
|
96
|
+
if (visited.has(pkg)) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const nextPkgs = new Set();
|
|
100
|
+
let dependencies = [];
|
|
101
|
+
let dependents = [];
|
|
102
|
+
if (!filter || filter.includeDependencies) {
|
|
103
|
+
dependencies = [...((_a = dependencyMap.dependencies.get(pkg)) !== null && _a !== void 0 ? _a : [])];
|
|
104
|
+
for (const dep of dependencies) {
|
|
105
|
+
nextPkgs.add(dep);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (!filter || filter.includeDependents) {
|
|
109
|
+
dependents = [...((_b = dependencyMap.dependents.get(pkg)) !== null && _b !== void 0 ? _b : [])];
|
|
110
|
+
for (const dep of dependents) {
|
|
111
|
+
nextPkgs.add(dep);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
visitor(pkg, dependencies, dependents);
|
|
115
|
+
visited.add(pkg);
|
|
116
|
+
if (nextPkgs.size > 0) {
|
|
117
|
+
for (const nextPkg of nextPkgs) {
|
|
118
|
+
stack.push(nextPkg);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PackageInfo, PackageInfos } from "../types/PackageInfo";
|
|
2
|
+
export interface PackageDependenciesOptions {
|
|
3
|
+
withDevDependencies?: boolean;
|
|
4
|
+
withPeerDependencies?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function getPackageDependencies(info: PackageInfo, packages: PackageInfos, options?: PackageDependenciesOptions): string[];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPackageDependencies = void 0;
|
|
4
|
+
function getPackageDependencies(info, packages, options = { withDevDependencies: true }) {
|
|
5
|
+
let deps = [];
|
|
6
|
+
if (options.withDevDependencies && options.withPeerDependencies) {
|
|
7
|
+
deps = Object.keys(Object.assign(Object.assign(Object.assign({}, info.dependencies), info.devDependencies), info.peerDependencies));
|
|
8
|
+
}
|
|
9
|
+
else if (options.withDevDependencies) {
|
|
10
|
+
deps = Object.keys(Object.assign(Object.assign({}, info.dependencies), info.devDependencies));
|
|
11
|
+
}
|
|
12
|
+
else if (options.withPeerDependencies) {
|
|
13
|
+
deps = Object.keys(Object.assign(Object.assign({}, info.dependencies), info.peerDependencies));
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
deps = Object.keys(Object.assign({}, info.dependencies));
|
|
17
|
+
}
|
|
18
|
+
return Object.keys(packages).filter((pkg) => deps.includes(pkg));
|
|
19
|
+
}
|
|
20
|
+
exports.getPackageDependencies = getPackageDependencies;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.getDependentMap = void 0;
|
|
14
|
+
__exportStar(require("./createPackageGraph"), exports);
|
|
15
|
+
const createDependencyMap_1 = require("./createDependencyMap");
|
|
16
|
+
// @deprecated - use createDependencyMap() instead
|
|
17
|
+
function getDependentMap(packages) {
|
|
18
|
+
return (0, createDependencyMap_1.createDependencyMap)(packages).dependents;
|
|
19
|
+
}
|
|
20
|
+
exports.getDependentMap = getDependentMap;
|
package/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from "./dependencies";
|
|
1
|
+
export * from "./dependencies/index";
|
|
2
2
|
export * from "./getPackageInfos";
|
|
3
3
|
export * from "./git";
|
|
4
|
-
export * from "./graph";
|
|
4
|
+
export * from "./graph/index";
|
|
5
5
|
export * from "./lockfile";
|
|
6
6
|
export * from "./paths";
|
|
7
7
|
export * from "./scope";
|
package/lib/index.js
CHANGED
|
@@ -10,10 +10,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./dependencies"), exports);
|
|
13
|
+
__exportStar(require("./dependencies/index"), exports);
|
|
14
14
|
__exportStar(require("./getPackageInfos"), exports);
|
|
15
15
|
__exportStar(require("./git"), exports);
|
|
16
|
-
__exportStar(require("./graph"), exports);
|
|
16
|
+
__exportStar(require("./graph/index"), exports);
|
|
17
17
|
__exportStar(require("./lockfile"), exports);
|
|
18
18
|
__exportStar(require("./paths"), exports);
|
|
19
19
|
__exportStar(require("./scope"), exports);
|
package/lib/lockfile/index.js
CHANGED
|
@@ -42,7 +42,7 @@ async function parseLockFile(packageRoot) {
|
|
|
42
42
|
return memoization[yarnLockPath];
|
|
43
43
|
}
|
|
44
44
|
const parseYarnLock = (await Promise.resolve().then(() => __importStar(require("@yarnpkg/lockfile")))).parse;
|
|
45
|
-
const yarnLock = fs_1.default.readFileSync(yarnLockPath,
|
|
45
|
+
const yarnLock = fs_1.default.readFileSync(yarnLockPath, "utf-8");
|
|
46
46
|
const parsed = parseYarnLock(yarnLock);
|
|
47
47
|
memoization[yarnLockPath] = parsed;
|
|
48
48
|
return parsed;
|
|
@@ -67,7 +67,7 @@ async function parseLockFile(packageRoot) {
|
|
|
67
67
|
}
|
|
68
68
|
let npmLockJson;
|
|
69
69
|
try {
|
|
70
|
-
npmLockJson = fs_1.default.readFileSync(npmLockPath,
|
|
70
|
+
npmLockJson = fs_1.default.readFileSync(npmLockPath, "utf-8");
|
|
71
71
|
}
|
|
72
72
|
catch (_a) {
|
|
73
73
|
throw new Error("Couldn’t parse package-lock.json.");
|
package/package.json
CHANGED
package/lib/graph.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { PackageInfos } from "./types/PackageInfo";
|
|
2
|
-
import type { PackageGraph } from "./types/PackageGraph";
|
|
3
|
-
export interface PackageGraphScope {
|
|
4
|
-
namePatterns?: string[];
|
|
5
|
-
includeDependencies?: boolean;
|
|
6
|
-
includeDependents?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export declare function createPackageGraph(packages: PackageInfos, scope?: PackageGraphScope): PackageGraph;
|
package/lib/graph.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createPackageGraph = void 0;
|
|
7
|
-
const createDependencyMap_1 = require("./createDependencyMap");
|
|
8
|
-
const multimatch_1 = __importDefault(require("multimatch"));
|
|
9
|
-
function createPackageGraph(packages, scope = {}) {
|
|
10
|
-
const dependencyMap = (0, createDependencyMap_1.createDependencyMap)(packages);
|
|
11
|
-
const packageSet = new Set();
|
|
12
|
-
const edges = [];
|
|
13
|
-
const visitor = (pkg, dependencies, dependents) => {
|
|
14
|
-
packageSet.add(pkg);
|
|
15
|
-
if (scope.includeDependencies && dependencies) {
|
|
16
|
-
for (const dep of dependencies) {
|
|
17
|
-
edges.push({ name: pkg, dependency: dep });
|
|
18
|
-
packageSet.add(dep);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
if (scope.includeDependents && dependents) {
|
|
22
|
-
for (const dep of dependents) {
|
|
23
|
-
edges.push({ name: dep, dependency: pkg });
|
|
24
|
-
packageSet.add(dep);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
visitPackageGraph(packages, dependencyMap, visitor, scope);
|
|
29
|
-
return { packages: [...packageSet], dependencies: edges };
|
|
30
|
-
}
|
|
31
|
-
exports.createPackageGraph = createPackageGraph;
|
|
32
|
-
function visitPackageGraph(packages, dependencyMap, visitor, scope) {
|
|
33
|
-
var _a, _b;
|
|
34
|
-
const visited = new Set();
|
|
35
|
-
const packageNames = Object.keys(packages);
|
|
36
|
-
const stack = scope && scope.namePatterns ? (0, multimatch_1.default)(packageNames, scope.namePatterns) : packageNames;
|
|
37
|
-
while (stack.length > 0) {
|
|
38
|
-
const pkg = stack.pop();
|
|
39
|
-
if (visited.has(pkg)) {
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
const nextPkgs = [];
|
|
43
|
-
let dependencies = [];
|
|
44
|
-
let dependents = [];
|
|
45
|
-
if (scope === null || scope === void 0 ? void 0 : scope.includeDependencies) {
|
|
46
|
-
dependencies = [...(_a = dependencyMap.dependencies.get(pkg)) !== null && _a !== void 0 ? _a : []];
|
|
47
|
-
nextPkgs.push(...dependencies);
|
|
48
|
-
}
|
|
49
|
-
if (scope === null || scope === void 0 ? void 0 : scope.includeDependents) {
|
|
50
|
-
dependents = [...(_b = dependencyMap.dependents.get(pkg)) !== null && _b !== void 0 ? _b : []];
|
|
51
|
-
nextPkgs.push(...dependents);
|
|
52
|
-
}
|
|
53
|
-
visitor(pkg, dependencies, dependents);
|
|
54
|
-
visited.add(pkg);
|
|
55
|
-
if (nextPkgs.length > 0) {
|
|
56
|
-
for (const nextPkg of nextPkgs) {
|
|
57
|
-
stack.push(nextPkg);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|