@trebired/code-discipline 3.3.1 → 3.3.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +16 -35
  3. package/dist/checks/index.d.ts.map +1 -1
  4. package/dist/checks/index.js +1 -14
  5. package/dist/checks/index.js.map +1 -1
  6. package/dist/checks/rule-slugs.d.ts.map +1 -1
  7. package/dist/checks/rule-slugs.js +0 -1
  8. package/dist/checks/rule-slugs.js.map +1 -1
  9. package/dist/checks/rules/dry/candidates.d.ts +2 -6
  10. package/dist/checks/rules/dry/candidates.d.ts.map +1 -1
  11. package/dist/checks/rules/dry/candidates.js +173 -126
  12. package/dist/checks/rules/dry/candidates.js.map +1 -1
  13. package/dist/checks/rules/dry/fingerprint.d.ts +1 -0
  14. package/dist/checks/rules/dry/fingerprint.d.ts.map +1 -1
  15. package/dist/checks/rules/dry/fingerprint.js +1 -0
  16. package/dist/checks/rules/dry/fingerprint.js.map +1 -1
  17. package/dist/checks/rules/dry/index.d.ts +1 -2
  18. package/dist/checks/rules/dry/index.d.ts.map +1 -1
  19. package/dist/checks/rules/dry/index.js +3 -12
  20. package/dist/checks/rules/dry/index.js.map +1 -1
  21. package/dist/checks/rules/dry/model.d.ts +7 -34
  22. package/dist/checks/rules/dry/model.d.ts.map +1 -1
  23. package/dist/checks/rules/dry/model.js +1 -11
  24. package/dist/checks/rules/dry/model.js.map +1 -1
  25. package/dist/checks/rules/evasion-guards/functions.d.ts +1 -1
  26. package/dist/checks/rules/evasion-guards/functions.d.ts.map +1 -1
  27. package/dist/checks/rules/evasion-guards/functions.js +3 -25
  28. package/dist/checks/rules/evasion-guards/functions.js.map +1 -1
  29. package/dist/checks/rules/max/function-lines.d.ts.map +1 -1
  30. package/dist/checks/rules/max/function-lines.js +6 -69
  31. package/dist/checks/rules/max/function-lines.js.map +1 -1
  32. package/dist/checks/rules/typescript-functions.d.ts +5 -1
  33. package/dist/checks/rules/typescript-functions.d.ts.map +1 -1
  34. package/dist/checks/rules/typescript-functions.js +26 -1
  35. package/dist/checks/rules/typescript-functions.js.map +1 -1
  36. package/dist/checks/types.d.ts +2 -9
  37. package/dist/checks/types.d.ts.map +1 -1
  38. package/dist/config/normalize/rule-options.d.ts.map +1 -1
  39. package/dist/config/normalize/rule-options.js +1 -28
  40. package/dist/config/normalize/rule-options.js.map +1 -1
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/package.json +1 -1
  44. package/dist/checks/rules/dry/fix.d.ts +0 -5
  45. package/dist/checks/rules/dry/fix.d.ts.map +0 -1
  46. package/dist/checks/rules/dry/fix.js +0 -252
  47. package/dist/checks/rules/dry/fix.js.map +0 -1
  48. package/dist/checks/rules/dry/helpers.d.ts +0 -5
  49. package/dist/checks/rules/dry/helpers.d.ts.map +0 -1
  50. package/dist/checks/rules/dry/helpers.js +0 -99
  51. package/dist/checks/rules/dry/helpers.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to `@trebired/code-discipline` will be documented here.
4
4
 
5
+ ## 3.3.2
6
+
7
+ - Removed `dry.helpers` registration and the helper-based `dry` autofix path; `dry` now scans source functions directly.
8
+ - Changed `dry` duplicate reporting to emit neutral function groups such as `function duplicates in files: ...` instead of selecting a primary file.
9
+ - Added matching function names and high structural similarity as DRY duplicate signals alongside exact normalized structure.
10
+
5
11
  ## 3.3.1
6
12
 
7
13
  - Made `banned-files` fixable; `code-discipline fix banned-files` now deletes matching banned files and reports a `deleted_files` count.
package/README.md CHANGED
@@ -9,7 +9,7 @@ Configurable repository discipline checks and rule-driven fixes for Bun and Node
9
9
  - sync rules such as keeping source imports, `tsconfig.json`, and optional `package.json#imports` aligned
10
10
  - source cleanup rules such as removing comments across supported languages
11
11
  - native acceleration with a TypeScript fallback for large codebases
12
- - DRY enforcement against registered canonical helper functions
12
+ - DRY enforcement through source-tree duplicate function grouping
13
13
 
14
14
  It is not a formatter, linter replacement, or build system.
15
15
 
@@ -31,7 +31,7 @@ code-discipline check
31
31
  code-discipline check save
32
32
  code-discipline check max-function-lines dry
33
33
  code-discipline fix
34
- code-discipline fix banned-files sync-imports dry remove-comments
34
+ code-discipline fix banned-files sync-imports remove-comments
35
35
  code-discipline gate -- bun run dev
36
36
  ```
37
37
 
@@ -160,14 +160,7 @@ export default defineCodeDisciplineConfig({
160
160
  aliasPrefix: "#",
161
161
  },
162
162
  },
163
- dry: {
164
- helpers: [
165
- {
166
- from: "./src/shared/to-text.ts",
167
- exportName: "toText",
168
- },
169
- ],
170
- },
163
+ dry: {},
171
164
  },
172
165
  });
173
166
  ```
@@ -211,7 +204,7 @@ export default defineCodeDisciplineConfig({
211
204
 
212
205
  ```sh
213
206
  code-discipline check max-file-lines max-function-lines
214
- code-discipline fix banned-files sync-imports dry remove-comments
207
+ code-discipline fix banned-files sync-imports remove-comments
215
208
  ```
216
209
 
217
210
  Rules use kebab-case public slugs:
@@ -226,7 +219,7 @@ Rules use kebab-case public slugs:
226
219
  - `dry`
227
220
  - `evasion-guards`
228
221
 
229
- `fix` only accepts fixable rules. Trying to run `code-discipline fix max-function-lines` or `code-discipline fix evasion-guards` fails clearly.
222
+ `fix` only accepts fixable rules. Trying to run `code-discipline fix max-function-lines`, `code-discipline fix dry`, or `code-discipline fix evasion-guards` fails clearly.
230
223
 
231
224
  ## Runtime API
232
225
 
@@ -440,36 +433,24 @@ code-discipline fix remove-comments
440
433
 
441
434
  ### `dry`
442
435
 
443
- Registers canonical helper functions and reports exact normalized duplicates. It also scans the configured source tree for likely duplicate functions even when no helpers are registered.
436
+ Reports duplicate function groups across the configured source tree.
444
437
 
445
- - matching is exact normalized structure, not heuristic similarity
438
+ - exact normalized structure is reported with 100% confidence
439
+ - matching function names are reported with 100% confidence
440
+ - highly similar normalized function structure is reported as a likely duplicate
446
441
  - whitespace, comments, function names, and local identifier names do not matter
447
- - class/object methods are report-only
448
- - autofix only runs when the duplicate can be removed completely and replaced by a canonical import
449
- - source-tree duplicate discovery is check-only; add a canonical helper when you want autofix
450
-
451
- Canonical helpers are registered by module export reference:
442
+ - reports are neutral groups, not "file A duplicates file B"
443
+ - `dry` is check-only
452
444
 
453
445
  ```ts
454
- dry: {
455
- helpers: [
456
- {
457
- from: "./src/shared/to-text.ts",
458
- exportName: "toText",
459
- },
460
- {
461
- from: "./src/shared/normalize.ts",
462
- exportName: "default",
463
- },
464
- ],
465
- }
446
+ dry: {}
466
447
  ```
467
448
 
468
- Supported canonical helper exports:
449
+ Example output:
469
450
 
470
- - exported function declarations
471
- - exported const bindings initialized with function expressions or arrow functions
472
- - default exports of those function shapes
451
+ ```txt
452
+ dry multiple files function duplicates in files: src/one.ts, src/two.ts
453
+ ```
473
454
 
474
455
  ## Lifecycle Hooks
475
456
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EAIxB,MAAM,YAAY,CAAC;AAkSpB,iBAAe,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAQ1G;AAED,iBAAe,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAuBpG;AAED,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EAIxB,MAAM,YAAY,CAAC;AAoRpB,iBAAe,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAQ1G;AAED,iBAAe,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAsBpG;AAED,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -9,7 +9,7 @@ import { fixFolderization } from "./fix-folderization.js";
9
9
  import { runFolderizeCompoundFilesRule } from "./rules/folderize/compound-files.js";
10
10
  import { collectBannedFileViolations, fixBannedFilesRule } from "./rules/banned/files.js";
11
11
  import { collectBannedPatternViolations } from "./rules/banned/patterns.js";
12
- import { collectDryViolations, fixDryRule } from "./rules/dry/index.js";
12
+ import { collectDryViolations } from "./rules/dry/index.js";
13
13
  import { runEvasionGuardsRule } from "./rules/evasion-guards/index.js";
14
14
  import { runMaxFileLinesRule } from "./rules/max/file-lines.js";
15
15
  import { runMaxFunctionLinesRule } from "./rules/max/function-lines.js";
@@ -170,18 +170,6 @@ async function applyFolderizeFix(state, normalized, logger) {
170
170
  state.sourceFiles = await scanSourceFiles(normalized);
171
171
  }
172
172
  }
173
- async function applyDryFix(state, normalized) {
174
- if (!normalized.rules.dry || !shouldRunFixRule("dry", normalized))
175
- return;
176
- const result = await fixDryRule(state.sourceFiles, normalized);
177
- const violations = applyConfiguredSeverity(result.violations, normalized);
178
- state.ruleResults.dry = mapFixRuleResult({ ...result, violations });
179
- state.violations.push(...violations);
180
- state.rewrittenFiles += result.rewritten_files ?? 0;
181
- if ((result.rewritten_files ?? 0) > 0) {
182
- state.sourceFiles = await scanSourceFiles(normalized);
183
- }
184
- }
185
173
  async function applySyncImportsFix(state, normalized) {
186
174
  if (!normalized.rules.syncImports || !shouldRunFixRule("sync-imports", normalized))
187
175
  return;
@@ -254,7 +242,6 @@ async function fixCodeDiscipline(options) {
254
242
  };
255
243
  await applyBannedFilesFix(state, normalized);
256
244
  await applyFolderizeFix(state, normalized, logger);
257
- await applyDryFix(state, normalized);
258
245
  await applySyncImportsFix(state, normalized);
259
246
  await applyRemoveCommentsFix(state, normalized);
260
247
  const result = attachDisciplineResult("fix", createFixResult(state));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rule-slugs.d.ts","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,QAAA,MAAM,cAAc,EAAE,sBAAsB,EAU3C,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,eAAe,EAMxC,CAAC;AAEF,QAAA,MAAM,uBAAuB;;;;;;;;;CASnB,CAAC;AAEX,iBAAS,uBAAuB,CAC9B,KAAK,EAAE,mBAAmB,GAAG,SAAS,EACtC,aAAa,CAAC,EAAE,oBAAoB,GACnC,GAAG,CAAC,sBAAsB,CAAC,CAgB7B;AAED,iBAAS,kBAAkB,CACzB,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACxC,KAAK,EAAE,mBAAmB,GAAG,SAAS,EACtC,aAAa,CAAC,EAAE,oBAAoB,GACnC,sBAAsB,EAAE,GAAG,eAAe,EAAE,GAAG,SAAS,CAgC1D;AAED,iBAAS,aAAa,CACpB,IAAI,EAAE,sBAAsB,EAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACvC,OAAO,CAET;AAED,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,GACd,CAAC"}
1
+ {"version":3,"file":"rule-slugs.d.ts","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,QAAA,MAAM,cAAc,EAAE,sBAAsB,EAU3C,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,eAAe,EAKxC,CAAC;AAEF,QAAA,MAAM,uBAAuB;;;;;;;;;CASnB,CAAC;AAEX,iBAAS,uBAAuB,CAC9B,KAAK,EAAE,mBAAmB,GAAG,SAAS,EACtC,aAAa,CAAC,EAAE,oBAAoB,GACnC,GAAG,CAAC,sBAAsB,CAAC,CAgB7B;AAED,iBAAS,kBAAkB,CACzB,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACxC,KAAK,EAAE,mBAAmB,GAAG,SAAS,EACtC,aAAa,CAAC,EAAE,oBAAoB,GACnC,sBAAsB,EAAE,GAAG,eAAe,EAAE,GAAG,SAAS,CAgC1D;AAED,iBAAS,aAAa,CACpB,IAAI,EAAE,sBAAsB,EAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACvC,OAAO,CAET;AAED,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,GACd,CAAC"}
@@ -15,7 +15,6 @@ const FIXABLE_RULE_SLUGS = [
15
15
  "folderize-compound-files",
16
16
  "sync-imports",
17
17
  "remove-comments",
18
- "dry",
19
18
  ];
20
19
  const RULE_SLUG_BY_CONFIG_KEY = {
21
20
  bannedFiles: "banned-files",
@@ -1 +1 @@
1
- {"version":3,"file":"rule-slugs.js","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rule-slugs.js","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,5 @@
1
- import type { NormalizedCheckCodeDisciplineOptions } from "../../types.js";
2
1
  import type { ScannedSourceFile } from "../../../imports/types.js";
3
2
  import type { CodeDisciplineViolation } from "../../../shared/discipline-types.js";
4
- import type { DryCandidateDescriptor, DryHelperDescriptor } from "./model.js";
5
- declare function createDryViolation(candidate: DryCandidateDescriptor, options: NormalizedCheckCodeDisciplineOptions): CodeDisciplineViolation;
6
- declare function collectDryCandidates(sourceFiles: ScannedSourceFile[], helpers: Map<string, DryHelperDescriptor>, options: NormalizedCheckCodeDisciplineOptions): Promise<DryCandidateDescriptor[]>;
7
- declare function collectDrySourceDuplicateViolations(sourceFiles: ScannedSourceFile[], helpers: Map<string, DryHelperDescriptor>): Promise<CodeDisciplineViolation[]>;
8
- export { collectDryCandidates, collectDrySourceDuplicateViolations, createDryViolation };
3
+ declare function collectDrySourceDuplicateViolations(sourceFiles: ScannedSourceFile[]): Promise<CodeDisciplineViolation[]>;
4
+ export { collectDrySourceDuplicateViolations };
9
5
  //# sourceMappingURL=candidates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/candidates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAQnF,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAgC,MAAM,YAAY,CAAC;AAI5G,iBAAS,kBAAkB,CACzB,SAAS,EAAE,sBAAsB,EACjC,OAAO,EAAE,oCAAoC,GAC5C,uBAAuB,CAazB;AA+HD,iBAAe,oBAAoB,CACjC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACzC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAoBnC;AAED,iBAAe,mCAAmC,CAChD,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GACxC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAuCpC;AAED,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/candidates.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AA6QnF,iBAAe,mCAAmC,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAGvH;AAED,OAAO,EAAE,mCAAmC,EAAE,CAAC"}
@@ -1,43 +1,29 @@
1
1
  import fs from "node:fs/promises";
2
2
  import ts from "typescript";
3
3
  import { parseSource } from "../../../imports/module-specifiers.js";
4
- import { createFunctionFingerprint, resolveClassification, resolveFunctionDisplayName, resolveRemovalRange, resolveStandaloneName, } from "./fingerprint.js";
4
+ import { createFunctionFingerprint, resolveClassification, resolveFunctionDisplayName } from "./fingerprint.js";
5
5
  const MIN_SOURCE_DUPLICATE_CHARACTERS = 300;
6
- function createDryViolation(candidate, options) {
7
- return {
8
- rule: "dry",
9
- fix: true,
10
- filePath: candidate.filePath,
11
- message: `${candidate.localName ?? "anonymous function"} duplicates registered helper ${candidate.helper.helperKey}`,
12
- details: {
13
- fixable: candidate.safeToFix,
14
- helper: candidate.helper.helperKey,
15
- helperFile: candidate.helper.filePath,
16
- reason: candidate.nonFixableReason,
17
- },
18
- };
19
- }
20
- function createDrySourceDuplicateViolation(candidate, canonical) {
21
- const candidateLine = candidate.sourceFile.getLineAndCharacterOfPosition(candidate.nodeStart).line + 1;
22
- const canonicalLine = canonical.sourceFile.getLineAndCharacterOfPosition(canonical.nodeStart).line + 1;
23
- return {
24
- rule: "dry",
25
- fix: false,
26
- filePath: candidate.filePath,
27
- message: `${candidate.localName ?? "anonymous function"} duplicates ${canonical.localName ?? "function"} in ${canonical.filePath}`,
28
- details: {
29
- fixable: false,
30
- reason: "source duplicate requires a canonical helper for autofix",
31
- duplicateOf: {
32
- filePath: canonical.filePath,
33
- line: canonicalLine,
34
- name: canonical.localName,
35
- },
36
- line: candidateLine,
37
- usesOuterScope: candidate.usesOuterScope,
38
- usesRestrictedRuntime: candidate.usesRestrictedRuntime,
39
- },
40
- };
6
+ const MIN_NAME_DUPLICATE_CHARACTERS = 300;
7
+ const SIMILARITY_THRESHOLD = 0.99;
8
+ class DisjointSet {
9
+ constructor(size) {
10
+ this.parents = Array.from({ length: size }, (_, index) => index);
11
+ }
12
+ find(index) {
13
+ const parent = this.parents[index];
14
+ if (parent === index)
15
+ return index;
16
+ const root = this.find(parent);
17
+ this.parents[index] = root;
18
+ return root;
19
+ }
20
+ union(left, right) {
21
+ const leftRoot = this.find(left);
22
+ const rightRoot = this.find(right);
23
+ if (leftRoot === rightRoot)
24
+ return;
25
+ this.parents[rightRoot] = leftRoot;
26
+ }
41
27
  }
42
28
  function isFingerprintableFunction(node) {
43
29
  return (ts.isFunctionDeclaration(node) && Boolean(node.body))
@@ -48,126 +34,187 @@ function isFingerprintableFunction(node) {
48
34
  || (ts.isSetAccessorDeclaration(node) && Boolean(node.body))
49
35
  || (ts.isConstructorDeclaration(node) && Boolean(node.body));
50
36
  }
51
- function buildDrySourceDuplicate(node, sourceFile, file, helpers) {
37
+ function normalizeFunctionName(name) {
38
+ const normalized = name?.trim().toLowerCase();
39
+ return normalized || undefined;
40
+ }
41
+ function isTopLevelFunction(node) {
42
+ if (ts.isFunctionDeclaration(node)) {
43
+ return ts.isSourceFile(node.parent);
44
+ }
45
+ const parent = node.parent;
46
+ if (!parent || !ts.isVariableDeclaration(parent))
47
+ return false;
48
+ const declarationList = parent.parent;
49
+ const statement = declarationList.parent;
50
+ return ts.isVariableDeclarationList(declarationList)
51
+ && ts.isVariableStatement(statement)
52
+ && ts.isSourceFile(statement.parent);
53
+ }
54
+ function buildDryFunctionDescriptor(node, sourceFile, file) {
52
55
  const classification = resolveClassification(node);
53
56
  if (classification === "unsupported")
54
57
  return null;
55
58
  const sourceText = node.getText(sourceFile).replace(/\s+/g, "");
56
- if (sourceText.length < MIN_SOURCE_DUPLICATE_CHARACTERS)
57
- return null;
58
59
  const fingerprintState = createFunctionFingerprint(node, sourceFile);
59
- if (helpers.has(fingerprintState.fingerprint))
60
- return null;
60
+ const localName = resolveFunctionDisplayName(node, sourceFile);
61
61
  return {
62
62
  absolutePath: file.absolutePath,
63
+ characterCount: sourceText.length,
63
64
  classification,
64
65
  fingerprint: fingerprintState.fingerprint,
65
66
  filePath: file.relativeFromProjectRoot,
66
- localName: resolveFunctionDisplayName(node, sourceFile),
67
- nodeStart: node.getStart(sourceFile),
68
- sourceFile,
69
- usesOuterScope: fingerprintState.usesOuterScope,
70
- usesRestrictedRuntime: fingerprintState.usesRestrictedRuntime,
71
- };
72
- }
73
- function resolveNonFixableReason(args) {
74
- if (args.classification === "method")
75
- return "methods are report-only in v1";
76
- if (args.classification !== "standalone")
77
- return "unsupported function shape";
78
- if (!args.removalOk)
79
- return "duplicate declaration cannot be removed safely";
80
- if (args.usesOuterScope)
81
- return "duplicate captures outer scope";
82
- if (args.usesRestrictedRuntime)
83
- return "duplicate depends on this, super, arguments, or new.target";
84
- return undefined;
85
- }
86
- function buildDryCandidate(node, sourceFile, file, helpers) {
87
- const classification = resolveClassification(node);
88
- const localName = resolveStandaloneName(node);
89
- const removal = resolveRemovalRange(node, sourceFile);
90
- const fingerprintState = createFunctionFingerprint(node, sourceFile);
91
- const helper = helpers.get(fingerprintState.fingerprint);
92
- if (!helper)
93
- return null;
94
- const isSelf = helper.absolutePath === file.absolutePath
95
- && helper.nodeStart === node.getStart(sourceFile)
96
- && helper.nodeEnd === node.getEnd();
97
- if (isSelf)
98
- return null;
99
- const safeToFix = classification === "standalone"
100
- && removal.ok
101
- && !fingerprintState.usesOuterScope
102
- && !fingerprintState.usesRestrictedRuntime
103
- && Boolean(localName);
104
- return {
105
- absolutePath: file.absolutePath,
106
- classification,
107
- fingerprint: fingerprintState.fingerprint,
108
- filePath: file.relativeFromProjectRoot,
109
- helper,
110
67
  localName,
111
- nonFixableReason: resolveNonFixableReason({
112
- classification,
113
- removalOk: removal.ok,
114
- usesOuterScope: fingerprintState.usesOuterScope,
115
- usesRestrictedRuntime: fingerprintState.usesRestrictedRuntime,
116
- }),
117
- removalEnd: removal.end,
118
- removalStart: removal.start,
119
- safeToFix,
68
+ normalizedName: normalizeFunctionName(localName),
69
+ nodeStart: node.getStart(sourceFile),
70
+ normalizedText: fingerprintState.fingerprint,
120
71
  sourceFile,
72
+ topLevel: isTopLevelFunction(node),
121
73
  usesOuterScope: fingerprintState.usesOuterScope,
122
74
  usesRestrictedRuntime: fingerprintState.usesRestrictedRuntime,
123
75
  };
124
76
  }
125
- async function collectDryCandidates(sourceFiles, helpers, options) {
126
- const results = [];
77
+ async function collectDryFunctions(sourceFiles) {
78
+ const functions = [];
127
79
  for (const file of sourceFiles) {
128
80
  const text = await fs.readFile(file.absolutePath, "utf8");
129
81
  const sourceFile = parseSource(text, file.absolutePath);
130
82
  const visit = (node) => {
131
83
  if (isFingerprintableFunction(node)) {
132
- const candidate = buildDryCandidate(node, sourceFile, file, helpers);
133
- if (candidate)
134
- results.push(candidate);
84
+ const descriptor = buildDryFunctionDescriptor(node, sourceFile, file);
85
+ if (descriptor)
86
+ functions.push(descriptor);
135
87
  }
136
88
  ts.forEachChild(node, visit);
137
89
  };
138
90
  visit(sourceFile);
139
91
  }
140
- return results;
92
+ return functions.sort((left, right) => left.filePath.localeCompare(right.filePath) || left.nodeStart - right.nodeStart);
141
93
  }
142
- async function collectDrySourceDuplicateViolations(sourceFiles, helpers) {
143
- const byFingerprint = new Map();
144
- for (const file of sourceFiles) {
145
- const text = await fs.readFile(file.absolutePath, "utf8");
146
- const sourceFile = parseSource(text, file.absolutePath);
147
- const visit = (node) => {
148
- if (isFingerprintableFunction(node)) {
149
- const duplicate = buildDrySourceDuplicate(node, sourceFile, file, helpers);
150
- if (duplicate) {
151
- const rows = byFingerprint.get(duplicate.fingerprint) ?? [];
152
- rows.push(duplicate);
153
- byFingerprint.set(duplicate.fingerprint, rows);
154
- }
155
- }
156
- ts.forEachChild(node, visit);
157
- };
158
- visit(sourceFile);
94
+ function getTrigrams(value) {
95
+ const padded = ` ${value} `;
96
+ const trigrams = new Set();
97
+ for (let index = 0; index <= padded.length - 3; index += 1) {
98
+ trigrams.add(padded.slice(index, index + 3));
99
+ }
100
+ return trigrams;
101
+ }
102
+ function jaccardSimilarity(left, right) {
103
+ let intersection = 0;
104
+ for (const entry of left) {
105
+ if (right.has(entry))
106
+ intersection += 1;
107
+ }
108
+ const union = left.size + right.size - intersection;
109
+ return union === 0 ? 1 : intersection / union;
110
+ }
111
+ function shouldCompareSimilarity(left, right) {
112
+ if (left.characterCount < MIN_SOURCE_DUPLICATE_CHARACTERS || right.characterCount < MIN_SOURCE_DUPLICATE_CHARACTERS)
113
+ return false;
114
+ const smaller = Math.min(left.normalizedText.length, right.normalizedText.length);
115
+ const larger = Math.max(left.normalizedText.length, right.normalizedText.length);
116
+ return smaller / larger >= 0.75;
117
+ }
118
+ function resolvePairSignals(left, right) {
119
+ const signals = [];
120
+ if (left.fingerprint === right.fingerprint && left.characterCount >= MIN_SOURCE_DUPLICATE_CHARACTERS && right.characterCount >= MIN_SOURCE_DUPLICATE_CHARACTERS) {
121
+ signals.push({ confidence: 1, signal: "exact-normalized" });
159
122
  }
160
- const violations = [];
161
- for (const rows of byFingerprint.values()) {
162
- if (rows.length < 2)
123
+ if (left.classification === "standalone"
124
+ && right.classification === "standalone"
125
+ && left.topLevel
126
+ && right.topLevel
127
+ && left.characterCount >= MIN_NAME_DUPLICATE_CHARACTERS
128
+ && right.characterCount >= MIN_NAME_DUPLICATE_CHARACTERS
129
+ && left.normalizedName
130
+ && left.normalizedName === right.normalizedName) {
131
+ signals.push({ confidence: 1, signal: "matching-name" });
132
+ }
133
+ if (shouldCompareSimilarity(left, right)) {
134
+ const similarity = jaccardSimilarity(getTrigrams(left.normalizedText), getTrigrams(right.normalizedText));
135
+ if (similarity >= SIMILARITY_THRESHOLD) {
136
+ signals.push({ confidence: similarity, signal: "similar-structure" });
137
+ }
138
+ }
139
+ return signals;
140
+ }
141
+ function collectDuplicateGroups(functions) {
142
+ const disjointSet = new DisjointSet(functions.length);
143
+ const groupSignals = new Map();
144
+ for (let leftIndex = 0; leftIndex < functions.length; leftIndex += 1) {
145
+ for (let rightIndex = leftIndex + 1; rightIndex < functions.length; rightIndex += 1) {
146
+ const signals = resolvePairSignals(functions[leftIndex], functions[rightIndex]);
147
+ if (signals.length === 0)
148
+ continue;
149
+ disjointSet.union(leftIndex, rightIndex);
150
+ const key = `${leftIndex}:${rightIndex}`;
151
+ groupSignals.set(key, {
152
+ confidence: Math.max(...signals.map((signal) => signal.confidence)),
153
+ signals: new Set(signals.map((signal) => signal.signal)),
154
+ });
155
+ }
156
+ }
157
+ const indexesByRoot = new Map();
158
+ for (let index = 0; index < functions.length; index += 1) {
159
+ const root = disjointSet.find(index);
160
+ const indexes = indexesByRoot.get(root) ?? [];
161
+ indexes.push(index);
162
+ indexesByRoot.set(root, indexes);
163
+ }
164
+ const groups = [];
165
+ for (const indexes of indexesByRoot.values()) {
166
+ if (indexes.length < 2)
163
167
  continue;
164
- const [canonical, ...duplicates] = rows.sort((left, right) => (left.filePath.localeCompare(right.filePath)
165
- || left.nodeStart - right.nodeStart));
166
- for (const duplicate of duplicates) {
167
- violations.push(createDrySourceDuplicateViolation(duplicate, canonical));
168
+ let confidence = 0;
169
+ const signals = new Set();
170
+ for (const [key, entry] of groupSignals) {
171
+ const [left, right] = key.split(":").map((value) => Number.parseInt(value, 10));
172
+ if (!indexes.includes(left) || !indexes.includes(right))
173
+ continue;
174
+ confidence = Math.max(confidence, entry.confidence);
175
+ for (const signal of entry.signals)
176
+ signals.add(signal);
168
177
  }
178
+ groups.push({
179
+ confidence,
180
+ functions: indexes.map((index) => functions[index]),
181
+ signals: [...signals].sort(),
182
+ });
169
183
  }
170
- return violations;
184
+ return groups;
185
+ }
186
+ function formatFunctionLocation(descriptor) {
187
+ return descriptor.localName
188
+ ? `${descriptor.filePath}#${descriptor.localName}`
189
+ : descriptor.filePath;
190
+ }
191
+ function createDryGroupViolation(group) {
192
+ const files = [...new Set(group.functions.map((descriptor) => descriptor.filePath))];
193
+ return {
194
+ rule: "dry",
195
+ fix: false,
196
+ filePath: "multiple files",
197
+ message: `function duplicates in files: ${files.join(", ")}`,
198
+ details: {
199
+ confidence: Number(group.confidence.toFixed(3)),
200
+ files,
201
+ fixable: false,
202
+ functions: group.functions.map((descriptor) => ({
203
+ classification: descriptor.classification,
204
+ filePath: descriptor.filePath,
205
+ line: descriptor.sourceFile.getLineAndCharacterOfPosition(descriptor.nodeStart).line + 1,
206
+ name: descriptor.localName,
207
+ topLevel: descriptor.topLevel,
208
+ })),
209
+ locations: group.functions.map(formatFunctionLocation),
210
+ reason: "duplicate function group requires human canonicalization",
211
+ signals: group.signals,
212
+ },
213
+ };
214
+ }
215
+ async function collectDrySourceDuplicateViolations(sourceFiles) {
216
+ const functions = await collectDryFunctions(sourceFiles);
217
+ return collectDuplicateGroups(functions).map(createDryGroupViolation);
171
218
  }
172
- export { collectDryCandidates, collectDrySourceDuplicateViolations, createDryViolation };
219
+ export { collectDrySourceDuplicateViolations };
173
220
  //# sourceMappingURL=candidates.js.map