dpdm 4.0.1 → 4.2.0

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/lib/utils.mjs CHANGED
@@ -9,7 +9,14 @@ import { builtinModules } from 'module';
9
9
  import path from 'path';
10
10
  import { DependencyKind } from './consts';
11
11
  const allBuiltins = new Set(builtinModules);
12
+ function createSkippedImportsRegExp(skipImports) {
13
+ if (skipImports.length === 0) {
14
+ return /$./;
15
+ }
16
+ return new RegExp(`^(?:${skipImports.map((item) => item.join(':')).join('|')})$`);
17
+ }
12
18
  export const defaultOptions = {
19
+ cwd: process.cwd(),
13
20
  context: process.cwd(),
14
21
  extensions: ['', '.ts', '.tsx', '.mjs', '.js', '.jsx', '.json'],
15
22
  js: ['.ts', '.tsx', '.mjs', '.js', '.jsx'],
@@ -22,30 +29,32 @@ export const defaultOptions = {
22
29
  };
23
30
  export function normalizeOptions(options) {
24
31
  const newOptions = Object.assign(Object.assign({}, defaultOptions), options);
32
+ newOptions.cwd = path.resolve(options.cwd || process.cwd());
33
+ newOptions.context = path.resolve(newOptions.cwd, options.context || '.');
25
34
  if (newOptions.extensions.indexOf('') < 0) {
26
35
  newOptions.extensions.unshift('');
27
36
  }
28
- newOptions.context = path.resolve(newOptions.context);
29
37
  if (options.tsconfig === void 0) {
30
38
  try {
31
39
  const tsconfig = path.join(newOptions.context, 'tsconfig.json');
32
40
  const stat = fs.statSync(tsconfig);
33
41
  if (stat.isFile()) {
34
- options.tsconfig = tsconfig;
42
+ newOptions.tsconfig = tsconfig;
35
43
  }
36
44
  }
37
45
  catch (_a) { }
38
46
  }
39
47
  else {
48
+ const tsconfig = path.resolve(newOptions.cwd, options.tsconfig);
40
49
  let stat;
41
50
  try {
42
- stat = fs.statSync(options.tsconfig);
51
+ stat = fs.statSync(tsconfig);
43
52
  }
44
53
  catch (_b) { }
45
54
  if (!stat || !stat.isFile()) {
46
55
  throw new Error(`specified tsconfig "${options.tsconfig}" is not a file`);
47
56
  }
48
- options.tsconfig = path.join(process.cwd(), options.tsconfig);
57
+ newOptions.tsconfig = tsconfig;
49
58
  }
50
59
  return newOptions;
51
60
  }
@@ -102,8 +111,110 @@ export function shortenTree(context, tree) {
102
111
  }
103
112
  return output;
104
113
  }
105
- export function parseCircular(tree, skipDynamicImports = false) {
114
+ function getPackageNameFromRequest(request) {
115
+ if (request.startsWith('.') || path.isAbsolute(request)) {
116
+ return null;
117
+ }
118
+ const parts = request.split('/');
119
+ if (request.startsWith('@')) {
120
+ return parts.length > 1 ? parts.slice(0, 2).join('/') : request;
121
+ }
122
+ return parts[0] || null;
123
+ }
124
+ function getPackageNameFromPath(context, id, cache) {
125
+ if (allBuiltins.has(id)) {
126
+ return id;
127
+ }
128
+ const fullPath = path.isAbsolute(id) ? id : path.resolve(context, id);
129
+ let current = path.extname(fullPath) ? path.dirname(fullPath) : fullPath;
130
+ const root = path.parse(current).root;
131
+ while (true) {
132
+ const cached = cache.get(current);
133
+ if (cached !== void 0) {
134
+ return cached;
135
+ }
136
+ try {
137
+ const pkg = fs.readJSONSync(path.join(current, 'package.json'));
138
+ const name = typeof pkg.name === 'string' && pkg.name
139
+ ? pkg.name
140
+ : path.relative(context, current) || path.basename(current);
141
+ cache.set(current, name);
142
+ return name;
143
+ }
144
+ catch (_a) { }
145
+ if (current === root) {
146
+ cache.set(current, null);
147
+ return null;
148
+ }
149
+ current = path.dirname(current);
150
+ }
151
+ }
152
+ export function getPackageName(context, id) {
153
+ return getPackageNameFromPath(context, id, new Map());
154
+ }
155
+ export function groupDependencyTreeByPackage(tree, context) {
156
+ var _a;
157
+ const packages = {};
158
+ const edges = {};
159
+ const cache = new Map();
160
+ function ensurePackage(id, ignored = false) {
161
+ if (!(id in packages)) {
162
+ packages[id] = ignored ? null : [];
163
+ }
164
+ else if (packages[id] === null && !ignored) {
165
+ packages[id] = [];
166
+ }
167
+ }
168
+ for (const id in tree) {
169
+ const issuerPackage = getPackageNameFromPath(context, id, cache) || id;
170
+ const deps = tree[id];
171
+ ensurePackage(issuerPackage, deps === null);
172
+ if (!deps) {
173
+ continue;
174
+ }
175
+ for (const dep of deps) {
176
+ const dependencyPackage = dep.id
177
+ ? getPackageNameFromPath(context, dep.id, cache)
178
+ : getPackageNameFromRequest(dep.request);
179
+ if (!dependencyPackage || dependencyPackage === issuerPackage) {
180
+ continue;
181
+ }
182
+ ensurePackage(dependencyPackage, dep.id ? tree[dep.id] === null : false);
183
+ const edgeSet = (edges[issuerPackage] =
184
+ edges[issuerPackage] || new Set());
185
+ if (edgeSet.has(dependencyPackage)) {
186
+ continue;
187
+ }
188
+ edgeSet.add(dependencyPackage);
189
+ packages[issuerPackage].push({
190
+ issuer: issuerPackage,
191
+ request: dep.request,
192
+ kind: dep.kind,
193
+ id: dependencyPackage,
194
+ });
195
+ }
196
+ }
197
+ for (const id in packages) {
198
+ (_a = packages[id]) === null || _a === void 0 ? void 0 : _a.sort((a, b) => a.id.localeCompare(b.id));
199
+ }
200
+ return packages;
201
+ }
202
+ export function groupEntriesByPackage(entries, context) {
203
+ const output = [];
204
+ const seen = new Set();
205
+ const cache = new Map();
206
+ for (const entry of entries) {
207
+ const id = getPackageNameFromPath(context, entry, cache) || entry;
208
+ if (!seen.has(id)) {
209
+ output.push(id);
210
+ seen.add(id);
211
+ }
212
+ }
213
+ return output;
214
+ }
215
+ export function parseCircular(tree, skipDynamicImports = false, skipImports = []) {
106
216
  const circulars = [];
217
+ const skippedImports = createSkippedImportsRegExp(skipImports);
107
218
  tree = Object.assign({}, tree);
108
219
  function visit(id, used) {
109
220
  const index = used.indexOf(id);
@@ -117,7 +228,9 @@ export function parseCircular(tree, skipDynamicImports = false) {
117
228
  deps &&
118
229
  deps.forEach((dep) => {
119
230
  if (dep.id &&
120
- (!skipDynamicImports || dep.kind !== DependencyKind.DynamicImport)) {
231
+ (!skipDynamicImports ||
232
+ dep.kind !== DependencyKind.DynamicImport) &&
233
+ !skippedImports.test(`${dep.issuer}:${dep.id}`)) {
121
234
  visit(dep.id, used.slice());
122
235
  }
123
236
  });
package/lib/utils.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/lib/utils.spec.js CHANGED
@@ -47,11 +47,11 @@ describe('util', () => {
47
47
  ]);
48
48
  }));
49
49
  describe('When parsing circular', () => {
50
- function dependencyFactory(id) {
50
+ function dependencyFactory(id, issuer = '', kind = consts_1.DependencyKind.StaticImport) {
51
51
  return {
52
- issuer: '',
52
+ issuer,
53
53
  request: '',
54
- kind: consts_1.DependencyKind.StaticImport,
54
+ kind,
55
55
  id,
56
56
  };
57
57
  }
@@ -183,6 +183,53 @@ describe('util', () => {
183
183
  expect(actual[1]).toMatchObject(['start', 'mid', 'right']);
184
184
  });
185
185
  });
186
+ describe('When skip imports are specified', () => {
187
+ it('Should not skip imports when the skip list is empty', () => {
188
+ const tree = {
189
+ a: [dependencyFactory('b', 'a')],
190
+ b: [dependencyFactory('a', 'b')],
191
+ };
192
+ expect((0, utils_1.parseCircular)(tree, false, [])).toEqual([['a', 'b']]);
193
+ });
194
+ it('Should ignore a matching import edge when parsing circulars', () => {
195
+ const tree = {
196
+ a: [dependencyFactory('b', 'a')],
197
+ b: [dependencyFactory('a', 'b')],
198
+ };
199
+ expect((0, utils_1.parseCircular)(tree, false, [['b', 'a']])).toEqual([]);
200
+ });
201
+ it('Should only ignore the specified import edge', () => {
202
+ const tree = {
203
+ start: [
204
+ dependencyFactory('left', 'start'),
205
+ dependencyFactory('right', 'start'),
206
+ ],
207
+ left: [dependencyFactory('start', 'left')],
208
+ right: [dependencyFactory('start', 'right')],
209
+ };
210
+ const actual = (0, utils_1.parseCircular)(tree, false, [['left', 'start']]);
211
+ expect(actual).toHaveLength(1);
212
+ expect(actual[0]).toMatchObject(['start', 'right']);
213
+ });
214
+ it('Should support regexp patterns for skipped imports', () => {
215
+ const tree = {
216
+ 'src/a.js': [
217
+ dependencyFactory('src/b.js', 'src/a.js'),
218
+ dependencyFactory('src/c.js', 'src/a.js'),
219
+ ],
220
+ 'src/b.js': [dependencyFactory('src/a.js', 'src/b.js')],
221
+ 'src/c.js': [dependencyFactory('src/a.js', 'src/c.js')],
222
+ };
223
+ expect((0, utils_1.parseCircular)(tree, false, [['src/a.js', '.*']])).toEqual([]);
224
+ });
225
+ it('Should not match skipped imports by prefix', () => {
226
+ const tree = {
227
+ a: [dependencyFactory('bc', 'a')],
228
+ bc: [dependencyFactory('a', 'bc')],
229
+ };
230
+ expect((0, utils_1.parseCircular)(tree, false, [['a', 'b']])).toEqual([['a', 'bc']]);
231
+ });
232
+ });
186
233
  });
187
234
  });
188
235
  //# sourceMappingURL=utils.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../src/utils.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../src/utils.spec.ts"],"names":[],"mappings":"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"}
@@ -45,11 +45,11 @@ describe('util', () => {
45
45
  ]);
46
46
  }));
47
47
  describe('When parsing circular', () => {
48
- function dependencyFactory(id) {
48
+ function dependencyFactory(id, issuer = '', kind = DependencyKind.StaticImport) {
49
49
  return {
50
- issuer: '',
50
+ issuer,
51
51
  request: '',
52
- kind: DependencyKind.StaticImport,
52
+ kind,
53
53
  id,
54
54
  };
55
55
  }
@@ -181,6 +181,53 @@ describe('util', () => {
181
181
  expect(actual[1]).toMatchObject(['start', 'mid', 'right']);
182
182
  });
183
183
  });
184
+ describe('When skip imports are specified', () => {
185
+ it('Should not skip imports when the skip list is empty', () => {
186
+ const tree = {
187
+ a: [dependencyFactory('b', 'a')],
188
+ b: [dependencyFactory('a', 'b')],
189
+ };
190
+ expect(parseCircular(tree, false, [])).toEqual([['a', 'b']]);
191
+ });
192
+ it('Should ignore a matching import edge when parsing circulars', () => {
193
+ const tree = {
194
+ a: [dependencyFactory('b', 'a')],
195
+ b: [dependencyFactory('a', 'b')],
196
+ };
197
+ expect(parseCircular(tree, false, [['b', 'a']])).toEqual([]);
198
+ });
199
+ it('Should only ignore the specified import edge', () => {
200
+ const tree = {
201
+ start: [
202
+ dependencyFactory('left', 'start'),
203
+ dependencyFactory('right', 'start'),
204
+ ],
205
+ left: [dependencyFactory('start', 'left')],
206
+ right: [dependencyFactory('start', 'right')],
207
+ };
208
+ const actual = parseCircular(tree, false, [['left', 'start']]);
209
+ expect(actual).toHaveLength(1);
210
+ expect(actual[0]).toMatchObject(['start', 'right']);
211
+ });
212
+ it('Should support regexp patterns for skipped imports', () => {
213
+ const tree = {
214
+ 'src/a.js': [
215
+ dependencyFactory('src/b.js', 'src/a.js'),
216
+ dependencyFactory('src/c.js', 'src/a.js'),
217
+ ],
218
+ 'src/b.js': [dependencyFactory('src/a.js', 'src/b.js')],
219
+ 'src/c.js': [dependencyFactory('src/a.js', 'src/c.js')],
220
+ };
221
+ expect(parseCircular(tree, false, [['src/a.js', '.*']])).toEqual([]);
222
+ });
223
+ it('Should not match skipped imports by prefix', () => {
224
+ const tree = {
225
+ a: [dependencyFactory('bc', 'a')],
226
+ bc: [dependencyFactory('a', 'bc')],
227
+ };
228
+ expect(parseCircular(tree, false, [['a', 'b']])).toEqual([['a', 'bc']]);
229
+ });
230
+ });
184
231
  });
185
232
  });
186
233
  //# sourceMappingURL=utils.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../src/utils.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../src/utils.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dpdm",
3
- "version": "4.0.1",
3
+ "version": "4.2.0",
4
4
  "description": "Analyze circular dependencies in your JavaScript/TypeScript projects.",
5
5
  "keywords": [
6
6
  "circular",
@@ -42,6 +42,7 @@
42
42
  "prepublishOnly": "run-s test build",
43
43
  "start": "npm run clean && npm run build:esm -- --watch",
44
44
  "test": "vitest",
45
+ "typecheck": "tsc --noEmit",
45
46
  "demo": "ts-node -T ./src/bin/dpdm.ts ./example/index.js",
46
47
  "prepare": "husky install"
47
48
  },
package/src/bin/dpdm.ts CHANGED
@@ -14,6 +14,8 @@ import { parseDependencyTree } from '../parser';
14
14
  import { ParseOptions } from '../types';
15
15
  import {
16
16
  defaultOptions,
17
+ groupDependencyTreeByPackage,
18
+ groupEntriesByPackage,
17
19
  isEmpty,
18
20
  parseCircular,
19
21
  parseWarnings,
@@ -22,8 +24,40 @@ import {
22
24
  prettyWarning,
23
25
  simpleResolver,
24
26
  } from '../utils';
27
+ import type { SkippedImport } from '../utils';
25
28
  import { hideBin } from 'yargs/helpers';
26
29
 
30
+ function splitSkipImportValue(value: string): string[] {
31
+ return value.split(',').filter(Boolean);
32
+ }
33
+
34
+ function normalizeCircularId(context: string, id: string) {
35
+ const fullPath = path.isAbsolute(id) ? id : path.resolve(context, id);
36
+ return path.relative(context, fullPath);
37
+ }
38
+
39
+ function resolveFromCwd(cwd: string, target: string): string {
40
+ return path.resolve(cwd, target);
41
+ }
42
+
43
+ function parseSkipImports(
44
+ skipImports: string[],
45
+ context: string,
46
+ ): SkippedImport[] {
47
+ return skipImports.map((item) => {
48
+ const parts = item.split(':');
49
+ if (parts.length !== 2 || !parts[0] || !parts[1]) {
50
+ throw new TypeError(
51
+ `skip import should be in the format ISSUER:DEPENDENCY`,
52
+ );
53
+ }
54
+ return [
55
+ normalizeCircularId(context, parts[0]),
56
+ normalizeCircularId(context, parts[1]),
57
+ ];
58
+ });
59
+ }
60
+
27
61
  async function main() {
28
62
  const y = yargs(hideBin(process.argv));
29
63
  const argv = await y
@@ -42,7 +76,11 @@ async function main() {
42
76
  )
43
77
  .option('context', {
44
78
  type: 'string',
45
- desc: 'the context directory to shorten path, default is current directory',
79
+ desc: 'the context directory to shorten path, default is cwd',
80
+ })
81
+ .option('cwd', {
82
+ type: 'string',
83
+ desc: 'the working directory used to match files and resolve relative paths, default is current directory',
46
84
  })
47
85
  .option('extensions', {
48
86
  alias: 'ext',
@@ -116,6 +154,16 @@ async function main() {
116
154
  choices: ['tree', 'circular'],
117
155
  desc: 'Skip parse import(...) statement.',
118
156
  })
157
+ .option('skip-imports', {
158
+ type: 'string',
159
+ array: true,
160
+ desc: 'Skip import edges from circular checks. Values are regexp ISSUER:DEPENDENCY pairs.',
161
+ })
162
+ .option('group-by-package', {
163
+ type: 'boolean',
164
+ desc: 'print dependencies and circulars grouped by nearest package.json',
165
+ default: false,
166
+ })
119
167
  .alias('h', 'help')
120
168
  .wrap(Math.min(y.terminalWidth(), 100))
121
169
  .parseAsync();
@@ -149,7 +197,14 @@ async function main() {
149
197
  let ended = 0;
150
198
  let current = '';
151
199
 
152
- const context = argv.context || process.cwd();
200
+ const cwd = path.resolve((argv.cwd as string | undefined) || process.cwd());
201
+ const context = path.resolve(cwd, argv.context || '.');
202
+ const skippedImports = parseSkipImports(
203
+ ((argv.skipImports as string[] | undefined) || []).flatMap(
204
+ splitSkipImportValue,
205
+ ),
206
+ context,
207
+ );
153
208
 
154
209
  function onProgress(event: 'start' | 'end', target: string) {
155
210
  switch (event) {
@@ -168,6 +223,7 @@ async function main() {
168
223
  }
169
224
 
170
225
  const options: ParseOptions = {
226
+ cwd,
171
227
  context,
172
228
  extensions: argv.extensions.split(','),
173
229
  js: argv.js.split(','),
@@ -185,38 +241,54 @@ async function main() {
185
241
  throw new Error(`No entry files were matched.`);
186
242
  }
187
243
  o.succeed(`[${ended}/${total}] Analyze done!`);
188
- const entriesDeep = await Promise.all(files.map((g) => G.glob(g)));
244
+ const entriesDeep = await Promise.all(
245
+ files.map((g) => G.glob(g, { cwd })),
246
+ );
189
247
  const entries = await Promise.all(
190
248
  Array<string>()
191
249
  .concat(...entriesDeep)
192
- .map((name) =>
193
- simpleResolver(
194
- options.context!,
195
- path.join(options.context!, name),
196
- options.extensions,
197
- ).then((id) => (id ? path.relative(options.context!, id) : name)),
198
- ),
250
+ .map((name) => {
251
+ const fullName = resolveFromCwd(cwd, name);
252
+ return simpleResolver(cwd, fullName, options.extensions).then(
253
+ (id) => path.relative(context, id || fullName),
254
+ );
255
+ }),
199
256
  );
257
+ const displayedTree = argv.groupByPackage
258
+ ? groupDependencyTreeByPackage(tree, context)
259
+ : tree;
260
+ const displayedEntries = argv.groupByPackage
261
+ ? groupEntriesByPackage(entries, context)
262
+ : entries;
200
263
  const circulars = parseCircular(
201
- tree,
264
+ displayedTree,
202
265
  argv.skipDynamicImports === 'circular',
266
+ skippedImports,
203
267
  );
204
268
  if (argv.output) {
205
269
  await fs.outputJSON(
206
270
  argv.output,
207
- { entries, tree, circulars },
271
+ { entries: displayedEntries, tree: displayedTree, circulars },
208
272
  { spaces: 2 },
209
273
  );
210
274
  }
211
275
  if (argv.tree) {
212
- console.log(chalk.bold('• Dependencies Tree'));
213
- console.log(prettyTree(tree, entries));
276
+ console.log(
277
+ chalk.bold(
278
+ argv.groupByPackage
279
+ ? '• Package Dependencies Tree'
280
+ : '• Dependencies Tree',
281
+ ),
282
+ );
283
+ console.log(prettyTree(displayedTree, displayedEntries));
214
284
  console.log('');
215
285
  }
216
286
  if (argv.circular) {
217
287
  console.log(
218
288
  chalk.bold[circulars.length === 0 ? 'green' : 'red'](
219
- '• Circular Dependencies',
289
+ argv.groupByPackage
290
+ ? '• Package Circular Dependencies'
291
+ : '• Circular Dependencies',
220
292
  ),
221
293
  );
222
294
  if (circulars.length === 0) {
@@ -236,8 +308,10 @@ async function main() {
236
308
  console.log('');
237
309
  }
238
310
  if (argv.detectUnusedFilesFrom) {
239
- const allFiles = await G.glob(argv.detectUnusedFilesFrom);
240
- const shortAllFiles = allFiles.map((v) => path.relative(context, v));
311
+ const allFiles = await G.glob(argv.detectUnusedFilesFrom, { cwd });
312
+ const shortAllFiles = allFiles.map((v) =>
313
+ path.relative(context, resolveFromCwd(cwd, v)),
314
+ );
241
315
  const unusedFiles = shortAllFiles.filter((v) => !(v in tree)).sort();
242
316
  console.log(chalk.bold.cyan('• Unused files'));
243
317
  if (unusedFiles.length === 0) {