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.
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright 2019 acrazing <joking.young@gmail.com>. All rights reserved.
4
+ * @since 2026-05-09 14:35:00
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const tslib_1 = require("tslib");
8
+ const path_1 = tslib_1.__importDefault(require("path"));
9
+ const consts_1 = require("./consts");
10
+ const parser_1 = require("./parser");
11
+ const utils_1 = require("./utils");
12
+ describe('parser', () => {
13
+ const fixture = path_1.default.join(__dirname, '../fixtures/parser/monorepo');
14
+ it('should parse relative entries from a custom cwd', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
15
+ const tree = yield (0, parser_1.parseDependencyTree)('packages/shared/src/index.ts', {
16
+ cwd: fixture,
17
+ });
18
+ expect(tree).toEqual({
19
+ 'packages/shared/src/index.ts': [
20
+ {
21
+ issuer: 'packages/shared/src/index.ts',
22
+ request: './dep',
23
+ kind: consts_1.DependencyKind.StaticExport,
24
+ id: 'packages/shared/src/dep.ts',
25
+ },
26
+ ],
27
+ 'packages/shared/src/dep.ts': [],
28
+ });
29
+ }));
30
+ it('should parse an absolute entry file path', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
31
+ const tree = yield (0, parser_1.parseDependencyTree)(path_1.default.join(fixture, 'packages/shared/src/index.ts'), {
32
+ context: fixture,
33
+ });
34
+ expect(tree).toEqual({
35
+ 'packages/shared/src/index.ts': [
36
+ {
37
+ issuer: 'packages/shared/src/index.ts',
38
+ request: './dep',
39
+ kind: consts_1.DependencyKind.StaticExport,
40
+ id: 'packages/shared/src/dep.ts',
41
+ },
42
+ ],
43
+ 'packages/shared/src/dep.ts': [],
44
+ });
45
+ }));
46
+ it('should resolve aliases from an absolute tsconfig path', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
47
+ const tree = yield (0, parser_1.parseDependencyTree)(path_1.default.join(fixture, 'packages/alias-user/src/index.ts'), {
48
+ context: fixture,
49
+ tsconfig: path_1.default.join(fixture, 'tsconfig.json'),
50
+ });
51
+ expect(tree['packages/alias-user/src/index.ts']).toEqual([
52
+ {
53
+ issuer: 'packages/alias-user/src/index.ts',
54
+ request: '~/dep',
55
+ kind: consts_1.DependencyKind.StaticImport,
56
+ id: 'packages/shared/src/dep.ts',
57
+ },
58
+ ]);
59
+ }));
60
+ it('should group dependencies and circulars by package', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
61
+ const tree = yield (0, parser_1.parseDependencyTree)(['packages/app/src/index.ts', 'packages/ui/src/index.ts'], { cwd: fixture });
62
+ const packageTree = (0, utils_1.groupDependencyTreeByPackage)(tree, fixture);
63
+ expect((0, utils_1.groupEntriesByPackage)([
64
+ 'packages/app/src/index.ts',
65
+ 'packages/ui/src/index.ts',
66
+ 'packages/app/src/local.ts',
67
+ ], fixture)).toEqual(['@repo/app', '@repo/ui']);
68
+ expect(packageTree).toEqual({
69
+ '@repo/app': [
70
+ {
71
+ issuer: '@repo/app',
72
+ request: '../../shared/src',
73
+ kind: consts_1.DependencyKind.StaticImport,
74
+ id: '@repo/shared',
75
+ },
76
+ {
77
+ issuer: '@repo/app',
78
+ request: '../../ui/src',
79
+ kind: consts_1.DependencyKind.StaticImport,
80
+ id: '@repo/ui',
81
+ },
82
+ ],
83
+ '@repo/ui': [
84
+ {
85
+ issuer: '@repo/ui',
86
+ request: '../../shared/src',
87
+ kind: consts_1.DependencyKind.StaticImport,
88
+ id: '@repo/shared',
89
+ },
90
+ ],
91
+ '@repo/shared': [],
92
+ });
93
+ expect((0, utils_1.parseCircular)(packageTree)).toEqual([]);
94
+ }));
95
+ it('should detect package-level circular dependencies', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
96
+ const tree = yield (0, parser_1.parseDependencyTree)(['packages/cycle-a/src/index.ts', 'packages/cycle-b/src/index.ts'], {
97
+ cwd: fixture,
98
+ });
99
+ const packageTree = (0, utils_1.groupDependencyTreeByPackage)(tree, fixture);
100
+ const circulars = (0, utils_1.parseCircular)(packageTree);
101
+ expect(circulars).toHaveLength(1);
102
+ expect(circulars[0].sort()).toEqual(['@repo/cycle-a', '@repo/cycle-b']);
103
+ }));
104
+ });
105
+ //# sourceMappingURL=parser.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.spec.js","sourceRoot":"","sources":["../src/parser.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /*!
2
+ * Copyright 2019 acrazing <joking.young@gmail.com>. All rights reserved.
3
+ * @since 2026-05-09 14:35:00
4
+ */
5
+ import { __awaiter } from "tslib";
6
+ import path from 'path';
7
+ import { DependencyKind } from './consts';
8
+ import { parseDependencyTree } from './parser';
9
+ import { groupDependencyTreeByPackage, groupEntriesByPackage, parseCircular, } from './utils';
10
+ describe('parser', () => {
11
+ const fixture = path.join(__dirname, '../fixtures/parser/monorepo');
12
+ it('should parse relative entries from a custom cwd', () => __awaiter(void 0, void 0, void 0, function* () {
13
+ const tree = yield parseDependencyTree('packages/shared/src/index.ts', {
14
+ cwd: fixture,
15
+ });
16
+ expect(tree).toEqual({
17
+ 'packages/shared/src/index.ts': [
18
+ {
19
+ issuer: 'packages/shared/src/index.ts',
20
+ request: './dep',
21
+ kind: DependencyKind.StaticExport,
22
+ id: 'packages/shared/src/dep.ts',
23
+ },
24
+ ],
25
+ 'packages/shared/src/dep.ts': [],
26
+ });
27
+ }));
28
+ it('should parse an absolute entry file path', () => __awaiter(void 0, void 0, void 0, function* () {
29
+ const tree = yield parseDependencyTree(path.join(fixture, 'packages/shared/src/index.ts'), {
30
+ context: fixture,
31
+ });
32
+ expect(tree).toEqual({
33
+ 'packages/shared/src/index.ts': [
34
+ {
35
+ issuer: 'packages/shared/src/index.ts',
36
+ request: './dep',
37
+ kind: DependencyKind.StaticExport,
38
+ id: 'packages/shared/src/dep.ts',
39
+ },
40
+ ],
41
+ 'packages/shared/src/dep.ts': [],
42
+ });
43
+ }));
44
+ it('should resolve aliases from an absolute tsconfig path', () => __awaiter(void 0, void 0, void 0, function* () {
45
+ const tree = yield parseDependencyTree(path.join(fixture, 'packages/alias-user/src/index.ts'), {
46
+ context: fixture,
47
+ tsconfig: path.join(fixture, 'tsconfig.json'),
48
+ });
49
+ expect(tree['packages/alias-user/src/index.ts']).toEqual([
50
+ {
51
+ issuer: 'packages/alias-user/src/index.ts',
52
+ request: '~/dep',
53
+ kind: DependencyKind.StaticImport,
54
+ id: 'packages/shared/src/dep.ts',
55
+ },
56
+ ]);
57
+ }));
58
+ it('should group dependencies and circulars by package', () => __awaiter(void 0, void 0, void 0, function* () {
59
+ const tree = yield parseDependencyTree(['packages/app/src/index.ts', 'packages/ui/src/index.ts'], { cwd: fixture });
60
+ const packageTree = groupDependencyTreeByPackage(tree, fixture);
61
+ expect(groupEntriesByPackage([
62
+ 'packages/app/src/index.ts',
63
+ 'packages/ui/src/index.ts',
64
+ 'packages/app/src/local.ts',
65
+ ], fixture)).toEqual(['@repo/app', '@repo/ui']);
66
+ expect(packageTree).toEqual({
67
+ '@repo/app': [
68
+ {
69
+ issuer: '@repo/app',
70
+ request: '../../shared/src',
71
+ kind: DependencyKind.StaticImport,
72
+ id: '@repo/shared',
73
+ },
74
+ {
75
+ issuer: '@repo/app',
76
+ request: '../../ui/src',
77
+ kind: DependencyKind.StaticImport,
78
+ id: '@repo/ui',
79
+ },
80
+ ],
81
+ '@repo/ui': [
82
+ {
83
+ issuer: '@repo/ui',
84
+ request: '../../shared/src',
85
+ kind: DependencyKind.StaticImport,
86
+ id: '@repo/shared',
87
+ },
88
+ ],
89
+ '@repo/shared': [],
90
+ });
91
+ expect(parseCircular(packageTree)).toEqual([]);
92
+ }));
93
+ it('should detect package-level circular dependencies', () => __awaiter(void 0, void 0, void 0, function* () {
94
+ const tree = yield parseDependencyTree(['packages/cycle-a/src/index.ts', 'packages/cycle-b/src/index.ts'], {
95
+ cwd: fixture,
96
+ });
97
+ const packageTree = groupDependencyTreeByPackage(tree, fixture);
98
+ const circulars = parseCircular(packageTree);
99
+ expect(circulars).toHaveLength(1);
100
+ expect(circulars[0].sort()).toEqual(['@repo/cycle-a', '@repo/cycle-b']);
101
+ }));
102
+ });
103
+ //# sourceMappingURL=parser.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.spec.js","sourceRoot":"","sources":["../src/parser.spec.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { DependencyKind } from './consts';
6
6
  export interface ParseOptions {
7
+ cwd: string;
7
8
  context: string;
8
9
  extensions: string[];
9
10
  js: string[];
package/lib/utils.d.ts CHANGED
@@ -3,13 +3,17 @@
3
3
  * @since 2019-07-17 18:45:32
4
4
  */
5
5
  import { DependencyTree, ParseOptions } from './types';
6
+ export type SkippedImport = readonly [string, string];
6
7
  export declare const defaultOptions: ParseOptions;
7
8
  export declare function normalizeOptions(options: Partial<ParseOptions>): ParseOptions;
8
9
  export declare function appendSuffix(request: string, extensions: string[]): Promise<string | null>;
9
10
  export type Resolver = (context: string, request: string, extensions: string[]) => Promise<string | null>;
10
11
  export declare const simpleResolver: Resolver;
11
12
  export declare function shortenTree(context: string, tree: DependencyTree): DependencyTree;
12
- export declare function parseCircular(tree: DependencyTree, skipDynamicImports?: boolean): string[][];
13
+ export declare function getPackageName(context: string, id: string): string | null;
14
+ export declare function groupDependencyTreeByPackage(tree: DependencyTree, context: string): DependencyTree;
15
+ export declare function groupEntriesByPackage(entries: string[], context: string): string[];
16
+ export declare function parseCircular(tree: DependencyTree, skipDynamicImports?: boolean, skipImports?: readonly SkippedImport[]): string[][];
13
17
  export declare function parseDependents(tree: DependencyTree): Record<string, string[]>;
14
18
  export declare function parseWarnings(tree: DependencyTree, dependents?: Record<string, string[]>): string[];
15
19
  export declare function prettyTree(tree: DependencyTree, entries: string[], prefix?: string): string;
package/lib/utils.js CHANGED
@@ -8,6 +8,9 @@ exports.simpleResolver = exports.defaultOptions = void 0;
8
8
  exports.normalizeOptions = normalizeOptions;
9
9
  exports.appendSuffix = appendSuffix;
10
10
  exports.shortenTree = shortenTree;
11
+ exports.getPackageName = getPackageName;
12
+ exports.groupDependencyTreeByPackage = groupDependencyTreeByPackage;
13
+ exports.groupEntriesByPackage = groupEntriesByPackage;
11
14
  exports.parseCircular = parseCircular;
12
15
  exports.parseDependents = parseDependents;
13
16
  exports.parseWarnings = parseWarnings;
@@ -22,7 +25,14 @@ const module_1 = require("module");
22
25
  const path_1 = tslib_1.__importDefault(require("path"));
23
26
  const consts_1 = require("./consts");
24
27
  const allBuiltins = new Set(module_1.builtinModules);
28
+ function createSkippedImportsRegExp(skipImports) {
29
+ if (skipImports.length === 0) {
30
+ return /$./;
31
+ }
32
+ return new RegExp(`^(?:${skipImports.map((item) => item.join(':')).join('|')})$`);
33
+ }
25
34
  exports.defaultOptions = {
35
+ cwd: process.cwd(),
26
36
  context: process.cwd(),
27
37
  extensions: ['', '.ts', '.tsx', '.mjs', '.js', '.jsx', '.json'],
28
38
  js: ['.ts', '.tsx', '.mjs', '.js', '.jsx'],
@@ -35,30 +45,32 @@ exports.defaultOptions = {
35
45
  };
36
46
  function normalizeOptions(options) {
37
47
  const newOptions = Object.assign(Object.assign({}, exports.defaultOptions), options);
48
+ newOptions.cwd = path_1.default.resolve(options.cwd || process.cwd());
49
+ newOptions.context = path_1.default.resolve(newOptions.cwd, options.context || '.');
38
50
  if (newOptions.extensions.indexOf('') < 0) {
39
51
  newOptions.extensions.unshift('');
40
52
  }
41
- newOptions.context = path_1.default.resolve(newOptions.context);
42
53
  if (options.tsconfig === void 0) {
43
54
  try {
44
55
  const tsconfig = path_1.default.join(newOptions.context, 'tsconfig.json');
45
56
  const stat = fs_extra_1.default.statSync(tsconfig);
46
57
  if (stat.isFile()) {
47
- options.tsconfig = tsconfig;
58
+ newOptions.tsconfig = tsconfig;
48
59
  }
49
60
  }
50
61
  catch (_a) { }
51
62
  }
52
63
  else {
64
+ const tsconfig = path_1.default.resolve(newOptions.cwd, options.tsconfig);
53
65
  let stat;
54
66
  try {
55
- stat = fs_extra_1.default.statSync(options.tsconfig);
67
+ stat = fs_extra_1.default.statSync(tsconfig);
56
68
  }
57
69
  catch (_b) { }
58
70
  if (!stat || !stat.isFile()) {
59
71
  throw new Error(`specified tsconfig "${options.tsconfig}" is not a file`);
60
72
  }
61
- options.tsconfig = path_1.default.join(process.cwd(), options.tsconfig);
73
+ newOptions.tsconfig = tsconfig;
62
74
  }
63
75
  return newOptions;
64
76
  }
@@ -116,8 +128,110 @@ function shortenTree(context, tree) {
116
128
  }
117
129
  return output;
118
130
  }
119
- function parseCircular(tree, skipDynamicImports = false) {
131
+ function getPackageNameFromRequest(request) {
132
+ if (request.startsWith('.') || path_1.default.isAbsolute(request)) {
133
+ return null;
134
+ }
135
+ const parts = request.split('/');
136
+ if (request.startsWith('@')) {
137
+ return parts.length > 1 ? parts.slice(0, 2).join('/') : request;
138
+ }
139
+ return parts[0] || null;
140
+ }
141
+ function getPackageNameFromPath(context, id, cache) {
142
+ if (allBuiltins.has(id)) {
143
+ return id;
144
+ }
145
+ const fullPath = path_1.default.isAbsolute(id) ? id : path_1.default.resolve(context, id);
146
+ let current = path_1.default.extname(fullPath) ? path_1.default.dirname(fullPath) : fullPath;
147
+ const root = path_1.default.parse(current).root;
148
+ while (true) {
149
+ const cached = cache.get(current);
150
+ if (cached !== void 0) {
151
+ return cached;
152
+ }
153
+ try {
154
+ const pkg = fs_extra_1.default.readJSONSync(path_1.default.join(current, 'package.json'));
155
+ const name = typeof pkg.name === 'string' && pkg.name
156
+ ? pkg.name
157
+ : path_1.default.relative(context, current) || path_1.default.basename(current);
158
+ cache.set(current, name);
159
+ return name;
160
+ }
161
+ catch (_a) { }
162
+ if (current === root) {
163
+ cache.set(current, null);
164
+ return null;
165
+ }
166
+ current = path_1.default.dirname(current);
167
+ }
168
+ }
169
+ function getPackageName(context, id) {
170
+ return getPackageNameFromPath(context, id, new Map());
171
+ }
172
+ function groupDependencyTreeByPackage(tree, context) {
173
+ var _a;
174
+ const packages = {};
175
+ const edges = {};
176
+ const cache = new Map();
177
+ function ensurePackage(id, ignored = false) {
178
+ if (!(id in packages)) {
179
+ packages[id] = ignored ? null : [];
180
+ }
181
+ else if (packages[id] === null && !ignored) {
182
+ packages[id] = [];
183
+ }
184
+ }
185
+ for (const id in tree) {
186
+ const issuerPackage = getPackageNameFromPath(context, id, cache) || id;
187
+ const deps = tree[id];
188
+ ensurePackage(issuerPackage, deps === null);
189
+ if (!deps) {
190
+ continue;
191
+ }
192
+ for (const dep of deps) {
193
+ const dependencyPackage = dep.id
194
+ ? getPackageNameFromPath(context, dep.id, cache)
195
+ : getPackageNameFromRequest(dep.request);
196
+ if (!dependencyPackage || dependencyPackage === issuerPackage) {
197
+ continue;
198
+ }
199
+ ensurePackage(dependencyPackage, dep.id ? tree[dep.id] === null : false);
200
+ const edgeSet = (edges[issuerPackage] =
201
+ edges[issuerPackage] || new Set());
202
+ if (edgeSet.has(dependencyPackage)) {
203
+ continue;
204
+ }
205
+ edgeSet.add(dependencyPackage);
206
+ packages[issuerPackage].push({
207
+ issuer: issuerPackage,
208
+ request: dep.request,
209
+ kind: dep.kind,
210
+ id: dependencyPackage,
211
+ });
212
+ }
213
+ }
214
+ for (const id in packages) {
215
+ (_a = packages[id]) === null || _a === void 0 ? void 0 : _a.sort((a, b) => a.id.localeCompare(b.id));
216
+ }
217
+ return packages;
218
+ }
219
+ function groupEntriesByPackage(entries, context) {
220
+ const output = [];
221
+ const seen = new Set();
222
+ const cache = new Map();
223
+ for (const entry of entries) {
224
+ const id = getPackageNameFromPath(context, entry, cache) || entry;
225
+ if (!seen.has(id)) {
226
+ output.push(id);
227
+ seen.add(id);
228
+ }
229
+ }
230
+ return output;
231
+ }
232
+ function parseCircular(tree, skipDynamicImports = false, skipImports = []) {
120
233
  const circulars = [];
234
+ const skippedImports = createSkippedImportsRegExp(skipImports);
121
235
  tree = Object.assign({}, tree);
122
236
  function visit(id, used) {
123
237
  const index = used.indexOf(id);
@@ -131,7 +245,9 @@ function parseCircular(tree, skipDynamicImports = false) {
131
245
  deps &&
132
246
  deps.forEach((dep) => {
133
247
  if (dep.id &&
134
- (!skipDynamicImports || dep.kind !== consts_1.DependencyKind.DynamicImport)) {
248
+ (!skipDynamicImports ||
249
+ dep.kind !== consts_1.DependencyKind.DynamicImport) &&
250
+ !skippedImports.test(`${dep.issuer}:${dep.id}`)) {
135
251
  visit(dep.id, used.slice());
136
252
  }
137
253
  });
package/lib/utils.js.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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"}