node-modules-tools 0.0.13 → 0.1.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.
@@ -108,9 +108,11 @@ async function listPackageDependencies(options) {
108
108
  if (packages.has(node.spec))
109
109
  return node;
110
110
  packages.set(node.spec, node);
111
- for (const dep of Object.values(raw.dependencies || {})) {
112
- const resolvedDep = traverse(dep, level + 1, mode);
113
- node.dependencies.add(resolvedDep.spec);
111
+ if (options.dependenciesFilter?.(node) !== false) {
112
+ for (const dep of Object.values(raw.dependencies || {})) {
113
+ const resolvedDep = traverse(dep, level + 1, mode);
114
+ node.dependencies.add(resolvedDep.spec);
115
+ }
114
116
  }
115
117
  return node;
116
118
  }
package/dist/index.d.mts CHANGED
@@ -77,6 +77,10 @@ interface ListPackageDependenciesOptions extends BaseOptions {
77
77
  * Filter if a package should be included and continue traversing
78
78
  */
79
79
  traverseFilter?: (node: PackageNodeRaw) => boolean;
80
+ /**
81
+ * Filter whether a package's dependencies should be included
82
+ */
83
+ dependenciesFilter?: (node: PackageNodeRaw) => boolean;
80
84
  }
81
85
  interface ListPackageDependenciesRawResult {
82
86
  root: string;
package/dist/index.d.ts CHANGED
@@ -77,6 +77,10 @@ interface ListPackageDependenciesOptions extends BaseOptions {
77
77
  * Filter if a package should be included and continue traversing
78
78
  */
79
79
  traverseFilter?: (node: PackageNodeRaw) => boolean;
80
+ /**
81
+ * Filter whether a package's dependencies should be included
82
+ */
83
+ dependenciesFilter?: (node: PackageNodeRaw) => boolean;
80
84
  }
81
85
  interface ListPackageDependenciesRawResult {
82
86
  root: string;
package/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@ import { detect } from 'package-manager-detector';
3
3
  import fs from 'node:fs/promises';
4
4
  import { join as join$1 } from 'pathe';
5
5
  import { relative, join } from 'node:path';
6
- export { c as constructPackageFilter, a as constructPackageFilters } from './shared/node-modules-tools.BJ7We4bS.mjs';
6
+ export { c as constructPackageFilter, a as constructPackageFilters } from './shared/node-modules-tools.DT_mm7wI.mjs';
7
7
  import 'semver';
8
8
 
9
9
  async function getPackageManager(options) {
@@ -48,6 +48,8 @@ function populateRawResult(input) {
48
48
  for (const dep of node.dependencies) {
49
49
  const level = node.depth + 1;
50
50
  const depNode = result.packages.get(dep);
51
+ if (!depNode)
52
+ continue;
51
53
  if (!node.workspace) {
52
54
  if (node.dev)
53
55
  depNode.dev = true;
@@ -11,7 +11,7 @@ function constructPackageFilter(range) {
11
11
  };
12
12
  }
13
13
  function constructPackageFilters(ranges, mode) {
14
- const filters = ranges.map(constructPackageFilter);
14
+ const filters = ranges.map((x) => typeof x === "string" ? constructPackageFilter(x) : x);
15
15
  return (pkg) => mode === "some" ? filters.some((filter) => filter(pkg)) : filters.every((filter) => filter(pkg));
16
16
  }
17
17
 
package/dist/utils.d.mts CHANGED
@@ -12,6 +12,6 @@ interface PackageNodeLike {
12
12
  * - *eslint* -> Any version that matches the wildcard
13
13
  */
14
14
  declare function constructPackageFilter(range: string): (pkg: PackageNodeLike) => boolean;
15
- declare function constructPackageFilters(ranges: string[], mode: 'some' | 'every'): (pkg: PackageNodeLike) => boolean;
15
+ declare function constructPackageFilters<Node extends PackageNodeLike = PackageNodeLike>(ranges: (string | ((pkg: Node) => boolean))[], mode: 'some' | 'every'): (pkg: Node) => boolean;
16
16
 
17
17
  export { type PackageNodeLike, constructPackageFilter, constructPackageFilters };
package/dist/utils.d.ts CHANGED
@@ -12,6 +12,6 @@ interface PackageNodeLike {
12
12
  * - *eslint* -> Any version that matches the wildcard
13
13
  */
14
14
  declare function constructPackageFilter(range: string): (pkg: PackageNodeLike) => boolean;
15
- declare function constructPackageFilters(ranges: string[], mode: 'some' | 'every'): (pkg: PackageNodeLike) => boolean;
15
+ declare function constructPackageFilters<Node extends PackageNodeLike = PackageNodeLike>(ranges: (string | ((pkg: Node) => boolean))[], mode: 'some' | 'every'): (pkg: Node) => boolean;
16
16
 
17
17
  export { type PackageNodeLike, constructPackageFilter, constructPackageFilters };
package/dist/utils.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export { c as constructPackageFilter, a as constructPackageFilters } from './shared/node-modules-tools.BJ7We4bS.mjs';
1
+ export { c as constructPackageFilter, a as constructPackageFilters } from './shared/node-modules-tools.DT_mm7wI.mjs';
2
2
  import 'semver';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "node-modules-tools",
3
3
  "type": "module",
4
- "version": "0.0.13",
4
+ "version": "0.1.1",
5
5
  "description": "Tools for inspecting node_modules",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -28,7 +28,7 @@
28
28
  "dependencies": {
29
29
  "p-limit": "^6.2.0",
30
30
  "package-manager-detector": "^0.2.9",
31
- "pathe": "^2.0.2",
31
+ "pathe": "^2.0.3",
32
32
  "semver": "^7.7.1",
33
33
  "tinyexec": "^0.3.2"
34
34
  },