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 CHANGED
@@ -2,7 +2,52 @@
2
2
  "name": "workspace-tools",
3
3
  "entries": [
4
4
  {
5
- "date": "Wed, 13 Jul 2022 20:42:04 GMT",
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 Wed, 13 Jul 2022 20:42:04 GMT and should not be manually modified.
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:04 GMT
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 { PackageInfo, PackageInfos } from "./types/PackageInfo";
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.getInternalDeps = exports.getTransitiveDependents = exports.getTransitiveDependencies = exports.getTransitiveProviders = exports.getTransitiveConsumers = exports.getDependentMap = void 0;
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 = getInternalDeps(info, packages);
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 { PackageInfos } from "./types/PackageInfo";
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 = Object.keys(Object.assign(Object.assign({}, info.dependencies), info.devDependencies));
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,3 @@
1
+ export * from "./createPackageGraph";
2
+ import { PackageInfos } from "../types/PackageInfo";
3
+ export declare function getDependentMap(packages: PackageInfos): Map<string, Set<string>>;
@@ -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);
@@ -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, 'utf-8');
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, 'utf-8');
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.22.0",
3
+ "version": "0.23.2",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
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
- }