workspace-tools 0.21.0 → 0.23.1
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 +54 -1
- package/CHANGELOG.md +30 -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 +16 -0
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -2
- package/lib/lockfile/index.js +2 -2
- package/package.json +5 -3
- package/.github/workflows/pr.yml +0 -29
- package/.github/workflows/release.yml +0 -36
- package/.prettierrc +0 -6
- package/CODE_OF_CONDUCT.md +0 -9
- package/SECURITY.md +0 -41
- package/beachball.config.js +0 -12
- package/docs/.nojekyll +0 -1
- package/docs/assets/highlight.css +0 -22
- package/docs/assets/icons.css +0 -1043
- package/docs/assets/icons.png +0 -0
- package/docs/assets/icons@2x.png +0 -0
- package/docs/assets/main.js +0 -52
- package/docs/assets/search.js +0 -1
- package/docs/assets/style.css +0 -1414
- package/docs/assets/widgets.png +0 -0
- package/docs/assets/widgets@2x.png +0 -0
- package/docs/index.html +0 -42
- package/docs/interfaces/NpmLockFile.html +0 -1
- package/docs/interfaces/NpmSymlinkInfo.html +0 -1
- package/docs/interfaces/NpmWorkspacesInfo.html +0 -1
- package/docs/interfaces/PackageInfo.html +0 -1
- package/docs/interfaces/PackageInfos.html +0 -1
- package/docs/interfaces/PnpmLockFile.html +0 -1
- package/docs/modules.html +0 -70
- package/jest.config.js +0 -11
- package/lib/__tests__/dependencies.test.d.ts +0 -1
- package/lib/__tests__/dependencies.test.js +0 -141
- package/lib/__tests__/getChangedPackages.test.d.ts +0 -1
- package/lib/__tests__/getChangedPackages.test.js +0 -142
- package/lib/__tests__/getDefaultRemote.test.d.ts +0 -1
- package/lib/__tests__/getDefaultRemote.test.js +0 -26
- package/lib/__tests__/getInitDefaultBranch.test.d.ts +0 -1
- package/lib/__tests__/getInitDefaultBranch.test.js +0 -26
- package/lib/__tests__/getPackagesByFiles.test.d.ts +0 -1
- package/lib/__tests__/getPackagesByFiles.test.js +0 -54
- package/lib/__tests__/getScopedPackages.test.d.ts +0 -1
- package/lib/__tests__/getScopedPackages.test.js +0 -74
- package/lib/__tests__/getWorkspaceRoot.test.d.ts +0 -1
- package/lib/__tests__/getWorkspaceRoot.test.js +0 -40
- package/lib/__tests__/getWorkspaces.test.d.ts +0 -1
- package/lib/__tests__/getWorkspaces.test.js +0 -122
- package/lib/__tests__/graph.test.d.ts +0 -1
- package/lib/__tests__/graph.test.js +0 -117
- package/lib/__tests__/lockfile.test.d.ts +0 -1
- package/lib/__tests__/lockfile.test.js +0 -42
- package/lib/__tests__/queryLockFile.test.d.ts +0 -1
- package/lib/__tests__/queryLockFile.test.js +0 -43
- package/lib/graph.d.ts +0 -8
- package/lib/graph.js +0 -61
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,60 @@
|
|
|
2
2
|
"name": "workspace-tools",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "Fri,
|
|
5
|
+
"date": "Fri, 15 Jul 2022 03:59:36 GMT",
|
|
6
|
+
"tag": "workspace-tools_v0.23.1",
|
|
7
|
+
"version": "0.23.1",
|
|
8
|
+
"comments": {
|
|
9
|
+
"patch": [
|
|
10
|
+
{
|
|
11
|
+
"author": "ken@gizzar.com",
|
|
12
|
+
"package": "workspace-tools",
|
|
13
|
+
"comment": "fixing the missing getDependentMap API that lage uses",
|
|
14
|
+
"commit": "c37668d313891a5a0acd25f81a8b2476437335e1"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Thu, 14 Jul 2022 17:22:35 GMT",
|
|
21
|
+
"tag": "workspace-tools_v0.23.0",
|
|
22
|
+
"version": "0.23.0",
|
|
23
|
+
"comments": {
|
|
24
|
+
"minor": [
|
|
25
|
+
{
|
|
26
|
+
"author": "kchau@microsoft.com",
|
|
27
|
+
"package": "workspace-tools",
|
|
28
|
+
"comment": "refactoring and cleaning up the createPackageGraph API to make it not repeat edges",
|
|
29
|
+
"commit": "4cd2ebcdc61bdd3c1bce6d1e09bedd13e739edd5"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"date": "Wed, 13 Jul 2022 20:42:07 GMT",
|
|
36
|
+
"tag": "workspace-tools_v0.22.0",
|
|
37
|
+
"version": "0.22.0",
|
|
38
|
+
"comments": {
|
|
39
|
+
"minor": [
|
|
40
|
+
{
|
|
41
|
+
"author": "elcraig@microsoft.com",
|
|
42
|
+
"package": "workspace-tools",
|
|
43
|
+
"comment": "Update git-url-parse (includes [possible breaking changes](https://github.com/IonicaBizau/git-url-parse/releases/tag/12.0.0))",
|
|
44
|
+
"commit": "beddff28642eecabce2c64fd387bcc922ed7b941"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"patch": [
|
|
48
|
+
{
|
|
49
|
+
"author": "elcraig@microsoft.com",
|
|
50
|
+
"package": "workspace-tools",
|
|
51
|
+
"comment": "Remove unneeded files from published package",
|
|
52
|
+
"commit": "beddff28642eecabce2c64fd387bcc922ed7b941"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"date": "Fri, 01 Jul 2022 14:56:01 GMT",
|
|
6
59
|
"tag": "workspace-tools_v0.21.0",
|
|
7
60
|
"version": "0.21.0",
|
|
8
61
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,40 @@
|
|
|
1
1
|
# Change Log - workspace-tools
|
|
2
2
|
|
|
3
|
-
This log was last generated on Fri,
|
|
3
|
+
This log was last generated on Fri, 15 Jul 2022 03:59:36 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.23.1
|
|
8
|
+
|
|
9
|
+
Fri, 15 Jul 2022 03:59:36 GMT
|
|
10
|
+
|
|
11
|
+
### Patches
|
|
12
|
+
|
|
13
|
+
- fixing the missing getDependentMap API that lage uses (ken@gizzar.com)
|
|
14
|
+
|
|
15
|
+
## 0.23.0
|
|
16
|
+
|
|
17
|
+
Thu, 14 Jul 2022 17:22:35 GMT
|
|
18
|
+
|
|
19
|
+
### Minor changes
|
|
20
|
+
|
|
21
|
+
- refactoring and cleaning up the createPackageGraph API to make it not repeat edges (kchau@microsoft.com)
|
|
22
|
+
|
|
23
|
+
## 0.22.0
|
|
24
|
+
|
|
25
|
+
Wed, 13 Jul 2022 20:42:07 GMT
|
|
26
|
+
|
|
27
|
+
### Minor changes
|
|
28
|
+
|
|
29
|
+
- Update git-url-parse (includes [possible breaking changes](https://github.com/IonicaBizau/git-url-parse/releases/tag/12.0.0)) (elcraig@microsoft.com)
|
|
30
|
+
|
|
31
|
+
### Patches
|
|
32
|
+
|
|
33
|
+
- Remove unneeded files from published package (elcraig@microsoft.com)
|
|
34
|
+
|
|
7
35
|
## 0.21.0
|
|
8
36
|
|
|
9
|
-
Fri, 01 Jul 2022 14:
|
|
37
|
+
Fri, 01 Jul 2022 14:56:01 GMT
|
|
10
38
|
|
|
11
39
|
### Minor changes
|
|
12
40
|
|
|
@@ -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,16 @@
|
|
|
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
|
+
Object.defineProperty(exports, "getDependentMap", { enumerable: true, get: function () { return createDependencyMap_1.createDependencyMap; } });
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "workspace-tools",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
},
|
|
9
9
|
"main": "lib/index.js",
|
|
10
10
|
"types": "lib/index.d.ts",
|
|
11
|
+
"files": [
|
|
12
|
+
"lib/!(__*)"
|
|
13
|
+
],
|
|
11
14
|
"scripts": {
|
|
12
15
|
"build": "tsc",
|
|
13
16
|
"build:docs": "typedoc src/index.ts",
|
|
@@ -21,7 +24,7 @@
|
|
|
21
24
|
"dependencies": {
|
|
22
25
|
"@yarnpkg/lockfile": "^1.1.0",
|
|
23
26
|
"find-up": "^4.1.0",
|
|
24
|
-
"git-url-parse": "^
|
|
27
|
+
"git-url-parse": "^12.0.0",
|
|
25
28
|
"globby": "^11.0.0",
|
|
26
29
|
"jju": "^1.4.0",
|
|
27
30
|
"multimatch": "^4.0.0",
|
|
@@ -29,7 +32,6 @@
|
|
|
29
32
|
},
|
|
30
33
|
"devDependencies": {
|
|
31
34
|
"@types/git-url-parse": "^9.0.0",
|
|
32
|
-
"@types/glob": "^7.1.1",
|
|
33
35
|
"@types/jest": "^25.2.2",
|
|
34
36
|
"@types/jju": "^1.4.1",
|
|
35
37
|
"@types/multimatch": "^4.0.0",
|
package/.github/workflows/pr.yml
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
|
|
2
|
-
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
|
|
3
|
-
|
|
4
|
-
name: PR
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
pull_request:
|
|
8
|
-
branches: [master]
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
build:
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
|
|
14
|
-
strategy:
|
|
15
|
-
matrix:
|
|
16
|
-
node-version: [12.x]
|
|
17
|
-
|
|
18
|
-
steps:
|
|
19
|
-
- uses: actions/checkout@v2
|
|
20
|
-
with:
|
|
21
|
-
fetch-depth: 0
|
|
22
|
-
- name: Use Node.js ${{ matrix.node-version }}
|
|
23
|
-
uses: actions/setup-node@v1
|
|
24
|
-
with:
|
|
25
|
-
node-version: ${{ matrix.node-version }}
|
|
26
|
-
- run: yarn
|
|
27
|
-
- run: yarn checkchange
|
|
28
|
-
- run: yarn build
|
|
29
|
-
- run: yarn test
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
|
|
2
|
-
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
|
|
3
|
-
|
|
4
|
-
name: Release
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
push:
|
|
8
|
-
branches: [master]
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
build:
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
|
|
14
|
-
strategy:
|
|
15
|
-
matrix:
|
|
16
|
-
node-version: [12.x]
|
|
17
|
-
|
|
18
|
-
steps:
|
|
19
|
-
- uses: actions/checkout@v2
|
|
20
|
-
with:
|
|
21
|
-
token: ${{ secrets.repo_pat }}
|
|
22
|
-
fetch-depth: 0
|
|
23
|
-
- name: Use Node.js ${{ matrix.node-version }}
|
|
24
|
-
uses: actions/setup-node@v1
|
|
25
|
-
with:
|
|
26
|
-
node-version: ${{ matrix.node-version }}
|
|
27
|
-
- run: yarn
|
|
28
|
-
- run: yarn checkchange
|
|
29
|
-
- run: yarn build
|
|
30
|
-
- run: yarn test
|
|
31
|
-
- run: |
|
|
32
|
-
git config user.email "kchau@microsoft.com"
|
|
33
|
-
git config user.name "Ken Chau"
|
|
34
|
-
- run: yarn release -y -n $NPM_AUTHTOKEN
|
|
35
|
-
env:
|
|
36
|
-
NPM_AUTHTOKEN: ${{ secrets.npm_authtoken }}
|
package/.prettierrc
DELETED
package/CODE_OF_CONDUCT.md
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# Microsoft Open Source Code of Conduct
|
|
2
|
-
|
|
3
|
-
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
|
4
|
-
|
|
5
|
-
Resources:
|
|
6
|
-
|
|
7
|
-
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
|
|
8
|
-
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
|
|
9
|
-
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
|
package/SECURITY.md
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.5 BLOCK -->
|
|
2
|
-
|
|
3
|
-
## Security
|
|
4
|
-
|
|
5
|
-
Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
|
|
6
|
-
|
|
7
|
-
If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
|
|
8
|
-
|
|
9
|
-
## Reporting Security Issues
|
|
10
|
-
|
|
11
|
-
**Please do not report security vulnerabilities through public GitHub issues.**
|
|
12
|
-
|
|
13
|
-
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
|
|
14
|
-
|
|
15
|
-
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
|
|
16
|
-
|
|
17
|
-
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
|
|
18
|
-
|
|
19
|
-
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
|
|
20
|
-
|
|
21
|
-
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
|
|
22
|
-
* Full paths of source file(s) related to the manifestation of the issue
|
|
23
|
-
* The location of the affected source code (tag/branch/commit or direct URL)
|
|
24
|
-
* Any special configuration required to reproduce the issue
|
|
25
|
-
* Step-by-step instructions to reproduce the issue
|
|
26
|
-
* Proof-of-concept or exploit code (if possible)
|
|
27
|
-
* Impact of the issue, including how an attacker might exploit the issue
|
|
28
|
-
|
|
29
|
-
This information will help us triage your report more quickly.
|
|
30
|
-
|
|
31
|
-
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
|
|
32
|
-
|
|
33
|
-
## Preferred Languages
|
|
34
|
-
|
|
35
|
-
We prefer all communications to be in English.
|
|
36
|
-
|
|
37
|
-
## Policy
|
|
38
|
-
|
|
39
|
-
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
|
|
40
|
-
|
|
41
|
-
<!-- END MICROSOFT SECURITY.MD BLOCK -->
|
package/beachball.config.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
scope: ["!src/__fixtures__/**/*"],
|
|
3
|
-
ignorePatterns: [
|
|
4
|
-
".github/**",
|
|
5
|
-
".prettierrc",
|
|
6
|
-
"jest.config.js",
|
|
7
|
-
"src/__fixtures__/**",
|
|
8
|
-
"src/__tests__/**",
|
|
9
|
-
// This prevents dependabot from being blocked by change file requirements for lock file-only changes
|
|
10
|
-
"yarn.lock",
|
|
11
|
-
],
|
|
12
|
-
};
|
package/docs/.nojekyll
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--light-code-background: #F5F5F5;
|
|
3
|
-
--dark-code-background: #1E1E1E;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
@media (prefers-color-scheme: light) { :root {
|
|
7
|
-
--code-background: var(--light-code-background);
|
|
8
|
-
} }
|
|
9
|
-
|
|
10
|
-
@media (prefers-color-scheme: dark) { :root {
|
|
11
|
-
--code-background: var(--dark-code-background);
|
|
12
|
-
} }
|
|
13
|
-
|
|
14
|
-
body.light {
|
|
15
|
-
--code-background: var(--light-code-background);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
body.dark {
|
|
19
|
-
--code-background: var(--dark-code-background);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
pre, code { background: var(--code-background); }
|