@rsdk/depdoc.cli 6.0.0-next.44 → 6.0.0-next.46

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/DEPDOC_MODEL.md CHANGED
@@ -6,6 +6,36 @@ This document defines the dependency ownership model for the monorepo. The goal
6
6
  is to make dependency placement deterministic, checkable, and mostly
7
7
  autofixable.
8
8
 
9
+ ## Design Principle: Deterministic, Binary Output
10
+
11
+ `depdoc` exists so a developer does not have to judge severity by hand. In the
12
+ common case, a report must be actionable without reading source or reasoning
13
+ about whether a finding "really" matters.
14
+
15
+ - Every diagnostic is either a **violation** (blocks `check`/`fix`/`doctor`,
16
+ non-zero exit) or a **warning** (printed, does not block). There is no third,
17
+ ambiguous category that leaves the decision to the reader.
18
+ - A check may only become a violation if the engine can derive the expected
19
+ state from facts it already has and the fix is mechanical (apply a rule,
20
+ move a dependency, add a peer, run `fix`). If depdoc cannot compute what
21
+ correct looks like, it must not fail the build over it.
22
+ - Checks must respect ownership boundaries. A failure that cannot be resolved
23
+ by changing anything in this repository — for example, a peer mismatch
24
+ between two external packages with no repo-owned package on either side of
25
+ the edge — is not a dependency-model violation here, even if some
26
+ underlying tool (e.g. `yarn explain peer-requirements`) reports it as an
27
+ error. It gets surfaced (so it is not silently lost) but must not gate
28
+ `doctor`'s exit code.
29
+ - When an external check surfaces something ambiguous, classify it from facts
30
+ depdoc already has (workspace ownership, declared roles, declared entry
31
+ points) instead of asking the developer to decide manually, and instead of
32
+ hard-coding an allowlist of "known-safe" failures that needs upkeep.
33
+ - Prefer deriving a workspace's expectations from what its own manifest
34
+ already declares (`role`, `main`/`types`/`exports`) over introducing new
35
+ manual exception config. `depdoc.yml` overrides exist for cases the model
36
+ truly cannot derive (`V3`), not as a default escape hatch for cases a
37
+ smarter check could resolve on its own.
38
+
9
39
  ## Terms
10
40
 
11
41
  | Term | Meaning |
@@ -147,9 +177,11 @@ guess something that an earlier phase can derive.
147
177
  3. Classify each import as local or external.
148
178
  4. Classify each import as runtime, type-only, test-only, or tooling-only.
149
179
  5. Scan emitted `dist/**/*.d.ts` imports when `dist/` exists.
150
- 6. In `--with-dts` mode, require `dist/` for workspaces with `src/`; without
151
- `--with-dts`, missing `dist/` is allowed so local source-only checks remain
152
- usable before build.
180
+ 6. In `--with-dts` mode, require `dist/` for `library` workspaces with `src/`;
181
+ without `--with-dts`, missing `dist/` is allowed so local source-only
182
+ checks remain usable before build. `service` and `cli` workspaces are never
183
+ required to have `dist/`: they have no public type surface to protect (see
184
+ S2/S3), so there is nothing for the check to guard.
153
185
  7. Mark all dependencies found in emitted `.d.ts` as public type surface.
154
186
  8. Skip generated entry-point roots such as `dist/`, `build/`, `coverage/`, and
155
187
  `node_modules/`.
@@ -250,7 +282,11 @@ Autofix should write manifests from the derived expected graph:
250
282
  5. Run the manifest model checker again, because `.d.ts` leaks can change the
251
283
  expected graph.
252
284
  6. Run package install again if manifests changed.
253
- 7. Assert that package manager peer requirements have no failures.
285
+ 7. Assert that package manager peer requirements have no failures on any edge
286
+ touching a workspace of this repo. A failure between two external packages,
287
+ with no repo-owned package on either side, cannot be fixed by editing this
288
+ repository's manifests; it is reported as a warning with an example
289
+ `packageExtensions` fix instead of failing `doctor`.
254
290
  8. Run the full dependency check task.
255
291
 
256
292
  ## Target Tooling Shape
@@ -442,7 +478,7 @@ focused, because they invoke real tools.
442
478
  | Test | Proves |
443
479
  |---|---|
444
480
  | `yarn-install-clean` | After autofix, `yarn install` has no dependency placement warnings. |
445
- | `yarn-peer-requirements-clean` | `yarn explain peer-requirements` has no failed peer requirements. |
481
+ | `yarn-peer-requirements-clean` | `yarn explain peer-requirements` has no failed peer requirements on any edge touching a workspace; vendor-only failures are warnings, not failures. |
446
482
  | `tsc-library-build` | A library with peer + dev mirror compiles. |
447
483
  | `tsc-dts-leak` | A public `.d.ts` leak is detected when `dist/` exists and changes expected manifests. |
448
484
  | `eslint-extraneous-compatible` | ESLint import/dependency rules do not contradict the model. |
@@ -464,7 +500,7 @@ Repo smoke tests verify that the model works on the real repository:
464
500
  3. Build packages.
465
501
  4. Run `depdoc check --with-dts`.
466
502
  5. Run `yarn install` again if manifests changed.
467
- 6. Assert no failed peer requirements.
503
+ 6. Assert no failed peer requirements on any edge touching a workspace.
468
504
  7. Run repo lint/typecheck/dependency task.
469
505
 
470
506
  This is the final confidence layer. Most edge cases should still be covered by
@@ -1143,6 +1143,31 @@ describe('deriveDependencyModel engine', () => {
1143
1143
  expect(result.violations.some((v) => v.code === 'dist-missing')).toBe(true);
1144
1144
  });
1145
1145
 
1146
+ it.each(['service', 'cli'] as const)(
1147
+ 'does not report missing dist for %s workspaces even when withDts is enabled',
1148
+ (role) => {
1149
+ const root = makeRoot();
1150
+ const ws = makeWorkspace(
1151
+ '@test/app',
1152
+ 'packages/app',
1153
+ role,
1154
+ { name: '@test/app', role },
1155
+ new Map(),
1156
+ new Set(),
1157
+ true,
1158
+ false,
1159
+ );
1160
+ const facts = emptyFacts([root, ws]);
1161
+
1162
+ facts.withDts = true;
1163
+ const result = deriveDependencyModel(facts);
1164
+
1165
+ expect(
1166
+ result.violations.some((v) => v.code === 'dist-missing'),
1167
+ ).toBe(false);
1168
+ },
1169
+ );
1170
+
1146
1171
  it('promotes matching DefinitelyTyped provider for public dts imports', () => {
1147
1172
  const root = makeRoot({
1148
1173
  name: '@test/root',
@@ -0,0 +1,180 @@
1
+ import {
2
+ classifyPeerFailures,
3
+ extractPackageIdent,
4
+ parsePeerFailureLine,
5
+ suggestPackageExtensionsFix,
6
+ } from '../src/lib/peer-requirements';
7
+
8
+ // Real `yarn explain peer-requirements` output (names/hashes as reported),
9
+ // captured from a monorepo using Docusaurus + Algolia search. None of these
10
+ // packages are workspaces of that repo.
11
+ const VENDOR_ONLY_LINES = [
12
+ "p88ede4 → ✘ @algolia/autocomplete-core@npm:1.17.7 doesn't provide @algolia/client-search to @algolia/autocomplete-shared@npm:1.17.7 [b5d26]",
13
+ "p475665 → ✘ @docsearch/react@npm:3.8.2 [cc094] doesn't provide @algolia/client-search to @algolia/autocomplete-preset-algolia@npm:1.17.7 [0023e] and 1 other dependency",
14
+ "pb248be → ✘ @docusaurus/bundler@npm:3.10.1 [58506] doesn't provide react to @docusaurus/types@npm:3.10.1 [933ef] and 1 other dependency",
15
+ "pf041ee → ✘ @docusaurus/plugin-css-cascade-layers@npm:3.10.1 doesn't provide @mdx-js/react to @docusaurus/core@npm:3.10.1 [21a63]",
16
+ "p2163f8 → ✘ @docusaurus/plugin-css-cascade-layers@npm:3.10.1 doesn't provide react to @docusaurus/core@npm:3.10.1 [21a63] and 8 other dependencies",
17
+ ].join('\n');
18
+
19
+ describe('extractPackageIdent', () => {
20
+ it('strips version and locator hash', () => {
21
+ expect(
22
+ extractPackageIdent('@algolia/autocomplete-shared@npm:1.17.7 [b5d26]'),
23
+ ).toBe('@algolia/autocomplete-shared');
24
+ });
25
+
26
+ it('strips version with no locator hash', () => {
27
+ expect(
28
+ extractPackageIdent('@docusaurus/plugin-css-cascade-layers@npm:3.10.1'),
29
+ ).toBe('@docusaurus/plugin-css-cascade-layers');
30
+ });
31
+
32
+ it('strips a trailing "and N other dependency" suffix (singular)', () => {
33
+ expect(
34
+ extractPackageIdent(
35
+ '@docusaurus/types@npm:3.10.1 [933ef] and 1 other dependency',
36
+ ),
37
+ ).toBe('@docusaurus/types');
38
+ });
39
+
40
+ it('strips a trailing "and N other dependencies" suffix (plural)', () => {
41
+ expect(
42
+ extractPackageIdent(
43
+ '@docusaurus/core@npm:3.10.1 [21a63] and 8 other dependencies',
44
+ ),
45
+ ).toBe('@docusaurus/core');
46
+ });
47
+ });
48
+
49
+ describe('parsePeerFailureLine', () => {
50
+ it('extracts provider, peer, and consumer from a failed line', () => {
51
+ const result = parsePeerFailureLine(
52
+ "p88ede4 → ✘ @algolia/autocomplete-core@npm:1.17.7 doesn't provide @algolia/client-search to @algolia/autocomplete-shared@npm:1.17.7 [b5d26]",
53
+ );
54
+
55
+ expect(result).toEqual({
56
+ raw: expect.stringContaining('autocomplete-core'),
57
+ provider: '@algolia/autocomplete-core',
58
+ peer: '@algolia/client-search',
59
+ consumer: '@algolia/autocomplete-shared',
60
+ });
61
+ });
62
+
63
+ it('handles a locator hash on the provider side', () => {
64
+ const result = parsePeerFailureLine(
65
+ "pb248be → ✘ @docusaurus/bundler@npm:3.10.1 [58506] doesn't provide react to @docusaurus/types@npm:3.10.1 [933ef] and 1 other dependency",
66
+ );
67
+
68
+ expect(result.provider).toBe('@docusaurus/bundler');
69
+ expect(result.peer).toBe('react');
70
+ expect(result.consumer).toBe('@docusaurus/types');
71
+ });
72
+
73
+ it('parses the "provides a mismatched version" shape, not just "doesn\'t provide"', () => {
74
+ const result = parsePeerFailureLine(
75
+ "pd75455 → ✘ @mcteam/eslint-config.frontend@workspace:packages/mcteam.eslint-config.frontend provides eslint@npm:10.5.0 [5c646] to @eslint/js@npm:10.0.1 [5c646] and 8 other dependencies",
76
+ );
77
+
78
+ expect(result.provider).toBe('@mcteam/eslint-config.frontend');
79
+ expect(result.peer).toBe('eslint');
80
+ expect(result.consumer).toBe('@eslint/js');
81
+ });
82
+
83
+ it('returns nulls for an unparseable line rather than guessing', () => {
84
+ const result = parsePeerFailureLine('✘ something unexpected happened');
85
+
86
+ expect(result.provider).toBeNull();
87
+ expect(result.consumer).toBeNull();
88
+ });
89
+ });
90
+
91
+ describe('classifyPeerFailures', () => {
92
+ it('treats failures as vendor-only when neither side is a workspace', () => {
93
+ const { vendorFailures, ownershipFailures } = classifyPeerFailures(
94
+ VENDOR_ONLY_LINES,
95
+ new Set(['@mcteam/auth.react', 'niisokb.artifactory.docusaurus']),
96
+ );
97
+
98
+ expect(vendorFailures).toHaveLength(5);
99
+ expect(ownershipFailures).toHaveLength(0);
100
+ });
101
+
102
+ it('treats a failure as blocking when the consumer is a workspace', () => {
103
+ const line =
104
+ "p1 → ✘ some-vendor-pkg@npm:1.0.0 doesn't provide react to @mcteam/auth.react@workspace:packages/mcteam.auth.react";
105
+ const { vendorFailures, ownershipFailures } = classifyPeerFailures(
106
+ line,
107
+ new Set(['@mcteam/auth.react']),
108
+ );
109
+
110
+ expect(vendorFailures).toHaveLength(0);
111
+ expect(ownershipFailures).toHaveLength(1);
112
+ });
113
+
114
+ it('treats a failure as blocking when the provider is a workspace', () => {
115
+ const line =
116
+ "p1 → ✘ @mcteam/auth.react@workspace:packages/mcteam.auth.react doesn't provide react to some-vendor-pkg@npm:1.0.0";
117
+ const { vendorFailures, ownershipFailures } = classifyPeerFailures(
118
+ line,
119
+ new Set(['@mcteam/auth.react']),
120
+ );
121
+
122
+ expect(vendorFailures).toHaveLength(0);
123
+ expect(ownershipFailures).toHaveLength(1);
124
+ });
125
+
126
+ it('treats a workspace-provided version-mismatch as blocking, not vendor-only noise', () => {
127
+ const line =
128
+ "pd75455 → ✘ @mcteam/eslint-config.frontend@workspace:packages/mcteam.eslint-config.frontend provides eslint@npm:10.5.0 [5c646] to @eslint/js@npm:10.0.1 [5c646] and 8 other dependencies";
129
+ const { vendorFailures, ownershipFailures } = classifyPeerFailures(
130
+ line,
131
+ new Set(['@mcteam/eslint-config.frontend']),
132
+ );
133
+
134
+ expect(vendorFailures).toHaveLength(0);
135
+ expect(ownershipFailures).toHaveLength(1);
136
+ });
137
+
138
+ it('treats an unparseable failure line as blocking', () => {
139
+ const { vendorFailures, ownershipFailures } = classifyPeerFailures(
140
+ '✘ garbled output',
141
+ new Set(['@mcteam/auth.react']),
142
+ );
143
+
144
+ expect(vendorFailures).toHaveLength(0);
145
+ expect(ownershipFailures).toHaveLength(1);
146
+ });
147
+
148
+ it('returns no failures when there are no ✘ lines', () => {
149
+ const { vendorFailures, ownershipFailures } = classifyPeerFailures(
150
+ 'p1 → ✓ everything is fine',
151
+ new Set(),
152
+ );
153
+
154
+ expect(vendorFailures).toHaveLength(0);
155
+ expect(ownershipFailures).toHaveLength(0);
156
+ });
157
+ });
158
+
159
+ describe('suggestPackageExtensionsFix', () => {
160
+ it('groups missing peers by provider into a packageExtensions example', () => {
161
+ const { vendorFailures } = classifyPeerFailures(VENDOR_ONLY_LINES, new Set());
162
+ const suggestion = suggestPackageExtensionsFix(vendorFailures);
163
+
164
+ expect(suggestion).toContain('packageExtensions:');
165
+ expect(suggestion).toContain('"@algolia/autocomplete-core@*":');
166
+ expect(suggestion).toContain('"@algolia/client-search": "*"');
167
+ expect(suggestion).toContain('"@docusaurus/plugin-css-cascade-layers@*":');
168
+ expect(suggestion).toContain('"@mdx-js/react": "*"');
169
+ expect(suggestion).toContain('"react": "*"');
170
+ });
171
+
172
+ it('deduplicates repeated peers for the same provider', () => {
173
+ const suggestion = suggestPackageExtensionsFix([
174
+ { raw: '', provider: 'pkg-a', peer: 'peer-x', consumer: 'c' },
175
+ { raw: '', provider: 'pkg-a', peer: 'peer-x', consumer: 'd' },
176
+ ]);
177
+
178
+ expect(suggestion.match(/peer-x/g)).toHaveLength(1);
179
+ });
180
+ });
@@ -16,6 +16,7 @@ const node_fs_1 = require("node:fs");
16
16
  const node_path_1 = __importDefault(require("node:path"));
17
17
  const ansi_1 = require("../ansi");
18
18
  const dependency_model_1 = require("../dependency-model");
19
+ const peer_requirements_1 = require("../lib/peer-requirements");
19
20
  function printUsage() {
20
21
  console.error(`${ansi_1.ansi.bold('Usage:')}
21
22
  ${ansi_1.ansi.cyan('depdoc')} check [--with-dts]
@@ -28,7 +29,7 @@ function spawnStep(label, cmd, cwd) {
28
29
  console.error(`${ansi_1.ansi.dim('$')} ${ansi_1.ansi.cyan(cmd)}`);
29
30
  (0, node_child_process_1.execSync)(cmd, { cwd, stdio: 'inherit' });
30
31
  }
31
- function checkPeerRequirements(cwd) {
32
+ function checkPeerRequirements(cwd, workspaceNames) {
32
33
  const cmd = 'yarn explain peer-requirements';
33
34
  console.error(`\n${ansi_1.ansi.cyan('──')} ${ansi_1.ansi.bold('yarn peer requirements')}`);
34
35
  console.error(`${ansi_1.ansi.dim('$')} ${ansi_1.ansi.cyan(cmd)}`);
@@ -38,6 +39,8 @@ function checkPeerRequirements(cwd) {
38
39
  cwd,
39
40
  encoding: 'utf8',
40
41
  maxBuffer: 32 * 1024 * 1024,
42
+ // Force plain text: parsing must not depend on the caller's terminal.
43
+ env: { ...process.env, FORCE_COLOR: '0', NO_COLOR: '1' },
41
44
  });
42
45
  }
43
46
  catch (error) {
@@ -48,15 +51,21 @@ function checkPeerRequirements(cwd) {
48
51
  process.stderr.write(childError.stderr);
49
52
  return false;
50
53
  }
51
- const failedRequirements = output
52
- .split(/\r?\n/)
53
- .filter((line) => line.includes('✘'));
54
- if (failedRequirements.length === 0) {
54
+ const { vendorFailures, ownershipFailures } = (0, peer_requirements_1.classifyPeerFailures)(output, workspaceNames);
55
+ if (vendorFailures.length === 0 && ownershipFailures.length === 0) {
55
56
  console.error(ansi_1.ansi.green('✓ peer requirements are satisfied'));
56
57
  return true;
57
58
  }
58
- console.error(failedRequirements.join('\n'));
59
- console.error(ansi_1.ansi.red(`${failedRequirements.length} peer requirement(s) failed`));
59
+ if (vendorFailures.length > 0) {
60
+ console.error(ansi_1.ansi.yellow(`${vendorFailures.length} peer requirement warning(s) between third-party packages only — not fixable by editing this repo's manifests:`));
61
+ console.error(vendorFailures.map((f) => f.raw).join('\n'));
62
+ console.error(`\n${ansi_1.ansi.dim('Example fix — add to .yarnrc.yml (adjust names/ranges as needed):')}`);
63
+ console.error(ansi_1.ansi.dim((0, peer_requirements_1.suggestPackageExtensionsFix)(vendorFailures)));
64
+ }
65
+ if (ownershipFailures.length === 0)
66
+ return true;
67
+ console.error(ansi_1.ansi.red(`\n${ownershipFailures.length} peer requirement(s) failed:`));
68
+ console.error(ownershipFailures.map((f) => f.raw).join('\n'));
60
69
  console.error(ansi_1.ansi.dim('Run `yarn explain peer-requirements <hash>` for details.'));
61
70
  return false;
62
71
  }
@@ -139,7 +148,8 @@ function runDoctor() {
139
148
  if (beforeDtsFixSnapshot !== afterDtsFixSnapshot) {
140
149
  spawnStep('yarn install (post-dts-fix)', 'yarn install', rootDir);
141
150
  }
142
- if (!checkPeerRequirements(rootDir))
151
+ const workspaceNames = new Set(afterDtsFix.contexts.map((ctx) => ctx.name));
152
+ if (!checkPeerRequirements(rootDir, workspaceNames))
143
153
  process.exit(1);
144
154
  if (config.doctor?.lintCmd) {
145
155
  spawnStep('lint', config.doctor.lintCmd, rootDir);
@@ -1 +1 @@
1
- {"version":3,"file":"depdoc.js","sourceRoot":"","sources":["../../src/bin/depdoc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"depdoc.js","sourceRoot":"","sources":["../../src/bin/depdoc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Parsing and classification for `yarn explain peer-requirements` output.
3
+ *
4
+ * This lives outside `bin/depdoc.ts` so the parsing/classification logic is
5
+ * unit-testable without spawning Yarn.
6
+ */
7
+ export interface PeerFailure {
8
+ raw: string;
9
+ provider: string | null;
10
+ peer: string;
11
+ consumer: string | null;
12
+ }
13
+ /**
14
+ * Strips a peer-requirement locator token down to a bare package name:
15
+ * `@scope/name@npm:1.2.3 [hash] and 1 other dependency` -> `@scope/name`.
16
+ * Local workspaces use a `@workspace:` reference instead of `@npm:`.
17
+ */
18
+ export declare function extractPackageIdent(token: string): string;
19
+ /**
20
+ * `yarn explain peer-requirements` reports two distinct failure shapes:
21
+ * "X doesn't provide Y to Z" (peer missing entirely) and "X provides Y to Z"
22
+ * (peer present but its version does not satisfy all requests). Both count
23
+ * as a failed requirement; only the reason differs.
24
+ */
25
+ export declare function parsePeerFailureLine(line: string): PeerFailure;
26
+ /**
27
+ * A failure only qualifies as vendor-only when both sides were parsed and
28
+ * neither is a workspace of this repo. Unparseable lines default to
29
+ * ownership-related (blocking) rather than being silently downgraded.
30
+ */
31
+ export declare function isVendorOnly(failure: PeerFailure, workspaceNames: ReadonlySet<string>): boolean;
32
+ export interface ClassifiedPeerFailures {
33
+ vendorFailures: PeerFailure[];
34
+ ownershipFailures: PeerFailure[];
35
+ }
36
+ export declare function classifyPeerFailures(output: string, workspaceNames: ReadonlySet<string>): ClassifiedPeerFailures;
37
+ /**
38
+ * Renders an illustrative `packageExtensions` block for `.yarnrc.yml` showing
39
+ * the shape of the canonical fix (see P3): declare the missing peer as a
40
+ * `dependencies` override on the package that should have provided it.
41
+ */
42
+ export declare function suggestPackageExtensionsFix(failures: readonly PeerFailure[]): string;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * Parsing and classification for `yarn explain peer-requirements` output.
4
+ *
5
+ * This lives outside `bin/depdoc.ts` so the parsing/classification logic is
6
+ * unit-testable without spawning Yarn.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.extractPackageIdent = extractPackageIdent;
10
+ exports.parsePeerFailureLine = parsePeerFailureLine;
11
+ exports.isVendorOnly = isVendorOnly;
12
+ exports.classifyPeerFailures = classifyPeerFailures;
13
+ exports.suggestPackageExtensionsFix = suggestPackageExtensionsFix;
14
+ /**
15
+ * Strips a peer-requirement locator token down to a bare package name:
16
+ * `@scope/name@npm:1.2.3 [hash] and 1 other dependency` -> `@scope/name`.
17
+ * Local workspaces use a `@workspace:` reference instead of `@npm:`.
18
+ */
19
+ function extractPackageIdent(token) {
20
+ const withoutSuffix = token.replace(/\s+and\s+\d+\s+other\s+dependenc(?:y|ies)\s*$/, '');
21
+ const withoutHash = withoutSuffix.replace(/\s*\[[0-9a-f]+\]\s*$/, '');
22
+ const protocolMatch = withoutHash.match(/@(?:npm|workspace|patch|portal|link):/);
23
+ return (protocolMatch
24
+ ? withoutHash.slice(0, protocolMatch.index)
25
+ : withoutHash).trim();
26
+ }
27
+ /**
28
+ * `yarn explain peer-requirements` reports two distinct failure shapes:
29
+ * "X doesn't provide Y to Z" (peer missing entirely) and "X provides Y to Z"
30
+ * (peer present but its version does not satisfy all requests). Both count
31
+ * as a failed requirement; only the reason differs.
32
+ */
33
+ function parsePeerFailureLine(line) {
34
+ // The peer token may carry its own locator hash before " to " -
35
+ // e.g. "provides eslint@npm:10.5.0 [5c646] to ...".
36
+ const match = line.match(/✘\s+(.+?)\s+(?:doesn't provide|provides)\s+(\S+)(?:\s+\[[0-9a-f]+\])?\s+to\s+(.+)$/);
37
+ if (!match)
38
+ return { raw: line, provider: null, peer: '', consumer: null };
39
+ const [, providerToken, peerToken, consumerToken] = match;
40
+ return {
41
+ raw: line,
42
+ provider: extractPackageIdent(providerToken),
43
+ peer: extractPackageIdent(peerToken),
44
+ consumer: extractPackageIdent(consumerToken),
45
+ };
46
+ }
47
+ /**
48
+ * A failure only qualifies as vendor-only when both sides were parsed and
49
+ * neither is a workspace of this repo. Unparseable lines default to
50
+ * ownership-related (blocking) rather than being silently downgraded.
51
+ */
52
+ function isVendorOnly(failure, workspaceNames) {
53
+ return (failure.provider !== null &&
54
+ failure.consumer !== null &&
55
+ !workspaceNames.has(failure.provider) &&
56
+ !workspaceNames.has(failure.consumer));
57
+ }
58
+ function classifyPeerFailures(output, workspaceNames) {
59
+ const failures = output
60
+ .split(/\r?\n/)
61
+ .filter((line) => line.includes('✘'))
62
+ .map(parsePeerFailureLine);
63
+ return {
64
+ vendorFailures: failures.filter((f) => isVendorOnly(f, workspaceNames)),
65
+ ownershipFailures: failures.filter((f) => !isVendorOnly(f, workspaceNames)),
66
+ };
67
+ }
68
+ /**
69
+ * Renders an illustrative `packageExtensions` block for `.yarnrc.yml` showing
70
+ * the shape of the canonical fix (see P3): declare the missing peer as a
71
+ * `dependencies` override on the package that should have provided it.
72
+ */
73
+ function suggestPackageExtensionsFix(failures) {
74
+ const peersByProvider = new Map();
75
+ for (const failure of failures) {
76
+ if (!failure.provider || !failure.peer)
77
+ continue;
78
+ if (!peersByProvider.has(failure.provider)) {
79
+ peersByProvider.set(failure.provider, new Set());
80
+ }
81
+ peersByProvider.get(failure.provider).add(failure.peer);
82
+ }
83
+ const lines = ['packageExtensions:'];
84
+ for (const [provider, peers] of peersByProvider) {
85
+ lines.push(` "${provider}@*":`);
86
+ lines.push(' dependencies:');
87
+ for (const peer of peers) {
88
+ lines.push(` "${peer}": "*"`);
89
+ }
90
+ }
91
+ return lines.join('\n');
92
+ }
93
+ //# sourceMappingURL=peer-requirements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-requirements.js","sourceRoot":"","sources":["../../src/lib/peer-requirements.ts"],"names":[],"mappings":"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"}
@@ -191,7 +191,10 @@ function validateBasicShape(workspaces, expectedByLocation, rules, violations, w
191
191
  message: `no package imports were collected from ${workspace.sourceFileCount} source file(s) despite declared dependencies; check source roots and entrypoints before trusting autofix`,
192
192
  });
193
193
  }
194
- if (workspace.hasSrc && !workspace.hasDist && withDts) {
194
+ if (workspace.role === 'library' &&
195
+ workspace.hasSrc &&
196
+ !workspace.hasDist &&
197
+ withDts) {
195
198
  violations.push({
196
199
  code: 'dist-missing',
197
200
  workspace: getWorkspaceLabel(workspace),
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/model/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/model/diagnostics.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rsdk/depdoc.cli",
3
3
  "role": "cli",
4
- "version": "6.0.0-next.44",
4
+ "version": "6.0.0-next.46",
5
5
  "description": "CLI for monorepo dependency management",
6
6
  "license": "Apache License 2.0",
7
7
  "publishConfig": {
@@ -18,5 +18,5 @@
18
18
  "typescript": "5.7.3",
19
19
  "yaml": "^2.6.1"
20
20
  },
21
- "gitHead": "6cd75fef09ff91a5aa7963717efee5734f9bd6b5"
21
+ "gitHead": "15565c93102217c4866939ea7b646016acdb73d6"
22
22
  }
package/src/bin/depdoc.ts CHANGED
@@ -16,6 +16,10 @@ import {
16
16
  formatDependencyModelResult,
17
17
  runDependencyModel,
18
18
  } from '../dependency-model';
19
+ import {
20
+ classifyPeerFailures,
21
+ suggestPackageExtensionsFix,
22
+ } from '../lib/peer-requirements';
19
23
 
20
24
  function printUsage(): void {
21
25
  console.error(`${ansi.bold('Usage:')}
@@ -31,7 +35,10 @@ function spawnStep(label: string, cmd: string, cwd: string): void {
31
35
  execSync(cmd, { cwd, stdio: 'inherit' });
32
36
  }
33
37
 
34
- function checkPeerRequirements(cwd: string): boolean {
38
+ function checkPeerRequirements(
39
+ cwd: string,
40
+ workspaceNames: ReadonlySet<string>,
41
+ ): boolean {
35
42
  const cmd = 'yarn explain peer-requirements';
36
43
 
37
44
  console.error(`\n${ansi.cyan('──')} ${ansi.bold('yarn peer requirements')}`);
@@ -44,6 +51,8 @@ function checkPeerRequirements(cwd: string): boolean {
44
51
  cwd,
45
52
  encoding: 'utf8',
46
53
  maxBuffer: 32 * 1024 * 1024,
54
+ // Force plain text: parsing must not depend on the caller's terminal.
55
+ env: { ...process.env, FORCE_COLOR: '0', NO_COLOR: '1' },
47
56
  });
48
57
  } catch (error) {
49
58
  const childError = error as { stdout?: string; stderr?: string };
@@ -52,19 +61,35 @@ function checkPeerRequirements(cwd: string): boolean {
52
61
  return false;
53
62
  }
54
63
 
55
- const failedRequirements = output
56
- .split(/\r?\n/)
57
- .filter((line) => line.includes('✘'));
64
+ const { vendorFailures, ownershipFailures } = classifyPeerFailures(
65
+ output,
66
+ workspaceNames,
67
+ );
58
68
 
59
- if (failedRequirements.length === 0) {
69
+ if (vendorFailures.length === 0 && ownershipFailures.length === 0) {
60
70
  console.error(ansi.green('✓ peer requirements are satisfied'));
61
71
  return true;
62
72
  }
63
73
 
64
- console.error(failedRequirements.join('\n'));
74
+ if (vendorFailures.length > 0) {
75
+ console.error(
76
+ ansi.yellow(
77
+ `${vendorFailures.length} peer requirement warning(s) between third-party packages only — not fixable by editing this repo's manifests:`,
78
+ ),
79
+ );
80
+ console.error(vendorFailures.map((f) => f.raw).join('\n'));
81
+ console.error(
82
+ `\n${ansi.dim('Example fix — add to .yarnrc.yml (adjust names/ranges as needed):')}`,
83
+ );
84
+ console.error(ansi.dim(suggestPackageExtensionsFix(vendorFailures)));
85
+ }
86
+
87
+ if (ownershipFailures.length === 0) return true;
88
+
65
89
  console.error(
66
- ansi.red(`${failedRequirements.length} peer requirement(s) failed`),
90
+ ansi.red(`\n${ownershipFailures.length} peer requirement(s) failed:`),
67
91
  );
92
+ console.error(ownershipFailures.map((f) => f.raw).join('\n'));
68
93
  console.error(
69
94
  ansi.dim('Run `yarn explain peer-requirements <hash>` for details.'),
70
95
  );
@@ -190,7 +215,10 @@ function runDoctor(): void {
190
215
  spawnStep('yarn install (post-dts-fix)', 'yarn install', rootDir);
191
216
  }
192
217
 
193
- if (!checkPeerRequirements(rootDir)) process.exit(1);
218
+ const workspaceNames = new Set(
219
+ afterDtsFix.contexts.map((ctx) => ctx.name),
220
+ );
221
+ if (!checkPeerRequirements(rootDir, workspaceNames)) process.exit(1);
194
222
 
195
223
  if (config.doctor?.lintCmd) {
196
224
  spawnStep('lint', config.doctor.lintCmd, rootDir);
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Parsing and classification for `yarn explain peer-requirements` output.
3
+ *
4
+ * This lives outside `bin/depdoc.ts` so the parsing/classification logic is
5
+ * unit-testable without spawning Yarn.
6
+ */
7
+
8
+ export interface PeerFailure {
9
+ raw: string;
10
+ provider: string | null;
11
+ peer: string;
12
+ consumer: string | null;
13
+ }
14
+
15
+ /**
16
+ * Strips a peer-requirement locator token down to a bare package name:
17
+ * `@scope/name@npm:1.2.3 [hash] and 1 other dependency` -> `@scope/name`.
18
+ * Local workspaces use a `@workspace:` reference instead of `@npm:`.
19
+ */
20
+ export function extractPackageIdent(token: string): string {
21
+ const withoutSuffix = token.replace(
22
+ /\s+and\s+\d+\s+other\s+dependenc(?:y|ies)\s*$/,
23
+ '',
24
+ );
25
+ const withoutHash = withoutSuffix.replace(/\s*\[[0-9a-f]+\]\s*$/, '');
26
+ const protocolMatch = withoutHash.match(
27
+ /@(?:npm|workspace|patch|portal|link):/,
28
+ );
29
+
30
+ return (
31
+ protocolMatch
32
+ ? withoutHash.slice(0, protocolMatch.index)
33
+ : withoutHash
34
+ ).trim();
35
+ }
36
+
37
+ /**
38
+ * `yarn explain peer-requirements` reports two distinct failure shapes:
39
+ * "X doesn't provide Y to Z" (peer missing entirely) and "X provides Y to Z"
40
+ * (peer present but its version does not satisfy all requests). Both count
41
+ * as a failed requirement; only the reason differs.
42
+ */
43
+ export function parsePeerFailureLine(line: string): PeerFailure {
44
+ // The peer token may carry its own locator hash before " to " -
45
+ // e.g. "provides eslint@npm:10.5.0 [5c646] to ...".
46
+ const match = line.match(
47
+ /✘\s+(.+?)\s+(?:doesn't provide|provides)\s+(\S+)(?:\s+\[[0-9a-f]+\])?\s+to\s+(.+)$/,
48
+ );
49
+
50
+ if (!match) return { raw: line, provider: null, peer: '', consumer: null };
51
+
52
+ const [, providerToken, peerToken, consumerToken] = match;
53
+
54
+ return {
55
+ raw: line,
56
+ provider: extractPackageIdent(providerToken!),
57
+ peer: extractPackageIdent(peerToken!),
58
+ consumer: extractPackageIdent(consumerToken!),
59
+ };
60
+ }
61
+
62
+ /**
63
+ * A failure only qualifies as vendor-only when both sides were parsed and
64
+ * neither is a workspace of this repo. Unparseable lines default to
65
+ * ownership-related (blocking) rather than being silently downgraded.
66
+ */
67
+ export function isVendorOnly(
68
+ failure: PeerFailure,
69
+ workspaceNames: ReadonlySet<string>,
70
+ ): boolean {
71
+ return (
72
+ failure.provider !== null &&
73
+ failure.consumer !== null &&
74
+ !workspaceNames.has(failure.provider) &&
75
+ !workspaceNames.has(failure.consumer)
76
+ );
77
+ }
78
+
79
+ export interface ClassifiedPeerFailures {
80
+ vendorFailures: PeerFailure[];
81
+ ownershipFailures: PeerFailure[];
82
+ }
83
+
84
+ export function classifyPeerFailures(
85
+ output: string,
86
+ workspaceNames: ReadonlySet<string>,
87
+ ): ClassifiedPeerFailures {
88
+ const failures = output
89
+ .split(/\r?\n/)
90
+ .filter((line) => line.includes('✘'))
91
+ .map(parsePeerFailureLine);
92
+
93
+ return {
94
+ vendorFailures: failures.filter((f) => isVendorOnly(f, workspaceNames)),
95
+ ownershipFailures: failures.filter((f) => !isVendorOnly(f, workspaceNames)),
96
+ };
97
+ }
98
+
99
+ /**
100
+ * Renders an illustrative `packageExtensions` block for `.yarnrc.yml` showing
101
+ * the shape of the canonical fix (see P3): declare the missing peer as a
102
+ * `dependencies` override on the package that should have provided it.
103
+ */
104
+ export function suggestPackageExtensionsFix(
105
+ failures: readonly PeerFailure[],
106
+ ): string {
107
+ const peersByProvider = new Map<string, Set<string>>();
108
+
109
+ for (const failure of failures) {
110
+ if (!failure.provider || !failure.peer) continue;
111
+ if (!peersByProvider.has(failure.provider)) {
112
+ peersByProvider.set(failure.provider, new Set());
113
+ }
114
+ peersByProvider.get(failure.provider)!.add(failure.peer);
115
+ }
116
+
117
+ const lines = ['packageExtensions:'];
118
+
119
+ for (const [provider, peers] of peersByProvider) {
120
+ lines.push(` "${provider}@*":`);
121
+ lines.push(' dependencies:');
122
+ for (const peer of peers) {
123
+ lines.push(` "${peer}": "*"`);
124
+ }
125
+ }
126
+ return lines.join('\n');
127
+ }
@@ -258,7 +258,12 @@ export function validateBasicShape(
258
258
  });
259
259
  }
260
260
 
261
- if (workspace.hasSrc && !workspace.hasDist && withDts) {
261
+ if (
262
+ workspace.role === 'library' &&
263
+ workspace.hasSrc &&
264
+ !workspace.hasDist &&
265
+ withDts
266
+ ) {
262
267
  violations.push({
263
268
  code: 'dist-missing',
264
269
  workspace: getWorkspaceLabel(workspace),