@trebired/code-discipline 5.0.3 → 5.1.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +10 -4
  3. package/dist/checks/fix-folderization.js +2 -2
  4. package/dist/checks/fix-folderization.js.map +1 -1
  5. package/dist/checks/rules/blank-lines/generic.d.ts +10 -0
  6. package/dist/checks/rules/blank-lines/generic.d.ts.map +1 -0
  7. package/dist/checks/rules/blank-lines/generic.js +242 -0
  8. package/dist/checks/rules/blank-lines/generic.js.map +1 -0
  9. package/dist/checks/rules/blank-lines/index.d.ts.map +1 -1
  10. package/dist/checks/rules/blank-lines/index.js +13 -7
  11. package/dist/checks/rules/blank-lines/index.js.map +1 -1
  12. package/dist/checks/rules/blank-lines/rewrite.d.ts +2 -1
  13. package/dist/checks/rules/blank-lines/rewrite.d.ts.map +1 -1
  14. package/dist/checks/rules/blank-lines/rewrite.js +1 -1
  15. package/dist/checks/rules/blank-lines/rewrite.js.map +1 -1
  16. package/dist/checks/rules/comments/ranges.d.ts +2 -1
  17. package/dist/checks/rules/comments/ranges.d.ts.map +1 -1
  18. package/dist/checks/rules/comments/ranges.js +1 -1
  19. package/dist/checks/rules/comments/ranges.js.map +1 -1
  20. package/dist/checks/rules/dry/candidates.d.ts.map +1 -1
  21. package/dist/checks/rules/dry/candidates.js +52 -32
  22. package/dist/checks/rules/dry/candidates.js.map +1 -1
  23. package/dist/checks/rules/dry/generic.d.ts +5 -0
  24. package/dist/checks/rules/dry/generic.d.ts.map +1 -0
  25. package/dist/checks/rules/dry/generic.js +231 -0
  26. package/dist/checks/rules/dry/generic.js.map +1 -0
  27. package/dist/checks/rules/dry/matching.d.ts.map +1 -1
  28. package/dist/checks/rules/dry/matching.js +12 -6
  29. package/dist/checks/rules/dry/matching.js.map +1 -1
  30. package/dist/checks/rules/dry/model.d.ts +6 -4
  31. package/dist/checks/rules/dry/model.d.ts.map +1 -1
  32. package/dist/checks/rules/dry/model.js +22 -3
  33. package/dist/checks/rules/dry/model.js.map +1 -1
  34. package/dist/checks/rules/dry/similarity.d.ts.map +1 -1
  35. package/dist/checks/rules/dry/similarity.js +2 -0
  36. package/dist/checks/rules/dry/similarity.js.map +1 -1
  37. package/dist/checks/rules/max/function-lines.d.ts +10 -1
  38. package/dist/checks/rules/max/function-lines.d.ts.map +1 -1
  39. package/dist/checks/rules/max/function-lines.js +1 -1
  40. package/dist/checks/rules/max/function-lines.js.map +1 -1
  41. package/dist/checks/rules/max/python.d.ts +7 -2
  42. package/dist/checks/rules/max/python.d.ts.map +1 -1
  43. package/dist/checks/rules/max/python.js +1 -1
  44. package/dist/checks/rules/max/python.js.map +1 -1
  45. package/dist/checks/rules/max/shell.d.ts +2 -1
  46. package/dist/checks/rules/max/shell.d.ts.map +1 -1
  47. package/dist/checks/rules/max/shell.js +1 -1
  48. package/dist/checks/rules/max/shell.js.map +1 -1
  49. package/dist/shared/languages.d.ts +4 -2
  50. package/dist/shared/languages.d.ts.map +1 -1
  51. package/dist/shared/languages.js +6 -4
  52. package/dist/shared/languages.js.map +1 -1
  53. package/native/darwin-arm64.node +0 -0
  54. package/native/darwin-x64.node +0 -0
  55. package/native/linux-arm64-gnu.node +0 -0
  56. package/native/linux-x64-gnu.node +0 -0
  57. package/package.json +3 -2
@@ -2,8 +2,11 @@ import fs from "node:fs/promises";
2
2
  import { performance } from "node:perf_hooks";
3
3
  import ts from "typescript";
4
4
  import { parseSource } from "../../../imports/module-specifiers.js";
5
+ import { isTypeScriptFamilyExtension } from "../../../shared/languages.js";
5
6
  import { createFunctionFingerprint, resolveClassification, resolveFunctionDisplayName } from "./fingerprint.js";
7
+ import { collectGenericDryFunctionDescriptors } from "./generic.js";
6
8
  import { collectDuplicateGroups } from "./matching.js";
9
+ import { dryLanguageKey, normalizeDryFunctionName } from "./model.js";
7
10
  const DRY_PARSE_CHUNK_SIZE = 250;
8
11
  function isFingerprintableFunction(node) {
9
12
  return (ts.isFunctionDeclaration(node) && Boolean(node.body))
@@ -14,10 +17,6 @@ function isFingerprintableFunction(node) {
14
17
  || (ts.isSetAccessorDeclaration(node) && Boolean(node.body))
15
18
  || (ts.isConstructorDeclaration(node) && Boolean(node.body));
16
19
  }
17
- function normalizeFunctionName(name) {
18
- const normalized = name?.trim().toLowerCase();
19
- return normalized || undefined;
20
- }
21
20
  function isTopLevelFunction(node) {
22
21
  if (ts.isFunctionDeclaration(node)) {
23
22
  return ts.isSourceFile(node.parent);
@@ -38,6 +37,7 @@ function buildDryFunctionDescriptor(node, sourceFile, file) {
38
37
  const sourceText = node.getText(sourceFile).replace(/\s+/g, "");
39
38
  const fingerprintState = createFunctionFingerprint(node, sourceFile);
40
39
  const localName = resolveFunctionDisplayName(node, sourceFile);
40
+ const nodeStart = node.getStart(sourceFile);
41
41
  return {
42
42
  absolutePath: file.absolutePath,
43
43
  behaviorFingerprint: fingerprintState.behaviorFingerprint,
@@ -45,47 +45,66 @@ function buildDryFunctionDescriptor(node, sourceFile, file) {
45
45
  classification,
46
46
  fingerprint: fingerprintState.fingerprint,
47
47
  filePath: file.relativeFromProjectRoot,
48
+ language: dryLanguageKey(file.extension),
48
49
  localName,
49
- normalizedName: normalizeFunctionName(localName),
50
- nodeStart: node.getStart(sourceFile),
50
+ normalizedName: normalizeDryFunctionName(localName),
51
51
  normalizedText: fingerprintState.fingerprint,
52
- sourceFile,
52
+ order: nodeStart,
53
+ startLine: sourceFile.getLineAndCharacterOfPosition(nodeStart).line + 1,
53
54
  topLevel: isTopLevelFunction(node),
54
55
  usesOuterScope: fingerprintState.usesOuterScope,
55
56
  usesRestrictedRuntime: fingerprintState.usesRestrictedRuntime,
56
57
  };
57
58
  }
59
+ function collectTypeScriptDryFunctions(file, text) {
60
+ const sourceFile = parseSource(text, file.absolutePath);
61
+ const descriptors = [];
62
+ const visit = (node) => {
63
+ if (isFingerprintableFunction(node)) {
64
+ const descriptor = buildDryFunctionDescriptor(node, sourceFile, file);
65
+ if (descriptor)
66
+ descriptors.push(descriptor);
67
+ }
68
+ ts.forEachChild(node, visit);
69
+ };
70
+ visit(sourceFile);
71
+ return descriptors;
72
+ }
73
+ function collectDryFunctionsForFile(file, text) {
74
+ return isTypeScriptFamilyExtension(file.extension)
75
+ ? collectTypeScriptDryFunctions(file, text)
76
+ : collectGenericDryFunctionDescriptors(file, text);
77
+ }
78
+ function emitDryParseChunk(args) {
79
+ if (args.completedItems % DRY_PARSE_CHUNK_SIZE !== 0 && args.completedItems !== args.totalItems)
80
+ return;
81
+ args.observer?.({
82
+ phase: "rule-chunk",
83
+ rule: "dry",
84
+ stage: "parse",
85
+ chunkIndex: Math.ceil(args.completedItems / DRY_PARSE_CHUNK_SIZE),
86
+ completedItems: args.completedItems,
87
+ totalItems: args.totalItems,
88
+ discoveredFunctions: args.discoveredFunctions,
89
+ elapsedMs: performance.now() - args.startedAt,
90
+ });
91
+ }
58
92
  async function collectDryFunctions(sourceFiles, observer) {
59
93
  const startedAt = performance.now();
60
94
  const functions = [];
61
95
  for (let fileIndex = 0; fileIndex < sourceFiles.length; fileIndex += 1) {
62
96
  const file = sourceFiles[fileIndex];
63
97
  const text = await fs.readFile(file.absolutePath, "utf8");
64
- const sourceFile = parseSource(text, file.absolutePath);
65
- const visit = (node) => {
66
- if (isFingerprintableFunction(node)) {
67
- const descriptor = buildDryFunctionDescriptor(node, sourceFile, file);
68
- if (descriptor)
69
- functions.push(descriptor);
70
- }
71
- ts.forEachChild(node, visit);
72
- };
73
- visit(sourceFile);
74
- const completedItems = fileIndex + 1;
75
- if (completedItems % DRY_PARSE_CHUNK_SIZE === 0 || completedItems === sourceFiles.length) {
76
- observer?.({
77
- phase: "rule-chunk",
78
- rule: "dry",
79
- stage: "parse",
80
- chunkIndex: Math.ceil(completedItems / DRY_PARSE_CHUNK_SIZE),
81
- completedItems,
82
- totalItems: sourceFiles.length,
83
- discoveredFunctions: functions.length,
84
- elapsedMs: performance.now() - startedAt,
85
- });
86
- }
98
+ functions.push(...collectDryFunctionsForFile(file, text));
99
+ emitDryParseChunk({
100
+ completedItems: fileIndex + 1,
101
+ discoveredFunctions: functions.length,
102
+ observer,
103
+ startedAt,
104
+ totalItems: sourceFiles.length,
105
+ });
87
106
  }
88
- const sortedFunctions = functions.sort((left, right) => left.filePath.localeCompare(right.filePath) || left.nodeStart - right.nodeStart);
107
+ const sortedFunctions = functions.sort((left, right) => left.filePath.localeCompare(right.filePath) || left.order - right.order);
89
108
  observer?.({
90
109
  phase: "rule-completed",
91
110
  rule: "dry",
@@ -115,7 +134,8 @@ function createDryGroupViolation(group) {
115
134
  functions: group.functions.map((descriptor) => ({
116
135
  classification: descriptor.classification,
117
136
  filePath: descriptor.filePath,
118
- line: descriptor.sourceFile.getLineAndCharacterOfPosition(descriptor.nodeStart).line + 1,
137
+ language: descriptor.language,
138
+ line: descriptor.startLine,
119
139
  name: descriptor.localName,
120
140
  topLevel: descriptor.topLevel,
121
141
  })),
@@ -1 +1 @@
1
- {"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/candidates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/candidates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ScannedSourceFile } from "../../../imports/types.js";
2
+ import type { DryFunctionDescriptor } from "./model.js";
3
+ declare function collectGenericDryFunctionDescriptors(file: ScannedSourceFile, text: string): DryFunctionDescriptor[];
4
+ export { collectGenericDryFunctionDescriptors };
5
+ //# sourceMappingURL=generic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/generic.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAoPxD,iBAAS,oCAAoC,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAG5G;AAED,OAAO,EAAE,oCAAoC,EAAE,CAAC"}
@@ -0,0 +1,231 @@
1
+ import { collectLanguageFunctionDescriptors } from "../max/function-lines.js";
2
+ import { scanRustRawString } from "../comments/ranges.js";
3
+ import { maskCommentsForLineCounting } from "../max/code-lines.js";
4
+ import { stableSerialize } from "../../../shared/utils.js";
5
+ import { dryLanguageKey, normalizeDryFunctionName } from "./model.js";
6
+ const GENERIC_DRY_KEYWORDS = new Set([
7
+ "and",
8
+ "as",
9
+ "async",
10
+ "await",
11
+ "break",
12
+ "case",
13
+ "class",
14
+ "const",
15
+ "continue",
16
+ "def",
17
+ "default",
18
+ "defer",
19
+ "do",
20
+ "done",
21
+ "elif",
22
+ "else",
23
+ "enum",
24
+ "esac",
25
+ "except",
26
+ "false",
27
+ "fi",
28
+ "fn",
29
+ "for",
30
+ "func",
31
+ "function",
32
+ "if",
33
+ "impl",
34
+ "in",
35
+ "interface",
36
+ "let",
37
+ "local",
38
+ "loop",
39
+ "match",
40
+ "mut",
41
+ "nil",
42
+ "none",
43
+ "not",
44
+ "null",
45
+ "or",
46
+ "package",
47
+ "pass",
48
+ "property",
49
+ "pub",
50
+ "range",
51
+ "return",
52
+ "self",
53
+ "struct",
54
+ "then",
55
+ "this",
56
+ "trait",
57
+ "true",
58
+ "try",
59
+ "type",
60
+ "unsafe",
61
+ "var",
62
+ "while",
63
+ "with",
64
+ ]);
65
+ const HEADER_NAME_PREFIXES = new Set(["def", "fn", "func", "function"]);
66
+ const IDENTIFIER_PART_PATTERN = /[$\w]/u;
67
+ const IDENTIFIER_START_PATTERN = /[$A-Za-z_]/u;
68
+ function previousNonWhitespace(text, start) {
69
+ for (let index = start - 1; index >= 0; index -= 1) {
70
+ const character = text[index] ?? "";
71
+ if (!/\s/u.test(character))
72
+ return character;
73
+ }
74
+ return "";
75
+ }
76
+ function nextNonWhitespace(text, start) {
77
+ for (let index = start; index < text.length; index += 1) {
78
+ const character = text[index] ?? "";
79
+ if (!/\s/u.test(character))
80
+ return character;
81
+ }
82
+ return "";
83
+ }
84
+ function scanQuotedLiteral(text, start) {
85
+ const quote = text[start] ?? "";
86
+ if (quote !== "\"" && quote !== "'" && quote !== "`")
87
+ return null;
88
+ const triple = quote !== "`" && text.slice(start, start + 3) === quote.repeat(3);
89
+ if (triple) {
90
+ const closeIndex = text.indexOf(quote.repeat(3), start + 3);
91
+ return closeIndex < 0 ? text.length : closeIndex + 3;
92
+ }
93
+ let escaped = false;
94
+ for (let index = start + 1; index < text.length; index += 1) {
95
+ const character = text[index] ?? "";
96
+ if (escaped)
97
+ escaped = false;
98
+ else if (character === "\\")
99
+ escaped = true;
100
+ else if (character === quote)
101
+ return index + 1;
102
+ }
103
+ return text.length;
104
+ }
105
+ function readIdentifier(text, start) {
106
+ let end = start + 1;
107
+ while (IDENTIFIER_PART_PATTERN.test(text[end] ?? ""))
108
+ end += 1;
109
+ return { end, value: text.slice(start, end) };
110
+ }
111
+ function readNumberEnd(text, start) {
112
+ let end = start + 1;
113
+ while (/[$\w.]/u.test(text[end] ?? ""))
114
+ end += 1;
115
+ return end;
116
+ }
117
+ function canonicalIdentifier(identifier, state) {
118
+ const existing = state.identifiers.get(identifier);
119
+ if (existing)
120
+ return existing;
121
+ const next = `i${state.nextIdentifier}`;
122
+ state.nextIdentifier += 1;
123
+ state.identifiers.set(identifier, next);
124
+ return next;
125
+ }
126
+ function normalizeIdentifierToken(args) {
127
+ const lower = args.identifier.toLowerCase();
128
+ const previousToken = args.state.tokens[args.state.tokens.length - 1] ?? "";
129
+ const previous = previousNonWhitespace(args.text, args.start);
130
+ const next = nextNonWhitespace(args.text, args.end);
131
+ if (GENERIC_DRY_KEYWORDS.has(lower))
132
+ return lower;
133
+ if (HEADER_NAME_PREFIXES.has(previousToken))
134
+ return canonicalIdentifier(args.identifier, args.state);
135
+ if (previous === "." || next === "!" || next === "(")
136
+ return args.identifier;
137
+ return canonicalIdentifier(args.identifier, args.state);
138
+ }
139
+ function normalizeFunctionHeader(source, extension) {
140
+ if (extension === ".go")
141
+ return source.replace(/^(\s*func(?:\s*\([^)]*\))?\s+)[A-Za-z_]\w*/u, "$1__dry_function");
142
+ if (extension === ".py")
143
+ return source.replace(/^(\s*(?:async\s+)?def\s+)[A-Za-z_]\w*/u, "$1__dry_function");
144
+ if (extension === ".qml") {
145
+ return source
146
+ .replace(/(\bfunction\s+)[A-Za-z_$][\w$]*/u, "$1__dry_function")
147
+ .replace(/^(\s*)on[A-Z][\w$]*(\s*:)/u, "$1__dry_handler$2");
148
+ }
149
+ if (extension === ".sh" || extension === ".bash" || extension === ".zsh") {
150
+ return source.replace(/^(\s*(?:function\s+)?)[A-Za-z_][\w-]*(\s*(?:\(\s*\))?\s*\{)/u, "$1__dry_function$2");
151
+ }
152
+ return source.replace(/^(\s*(?:(?:pub(?:\([^)]*\))?|async|const|unsafe)\s+)*fn\s+)[A-Za-z_]\w*/u, "$1__dry_function");
153
+ }
154
+ function tokenizeGenericDryText(text) {
155
+ const state = { identifiers: new Map(), nextIdentifier: 0, tokens: [] };
156
+ let index = 0;
157
+ while (index < text.length) {
158
+ const character = text[index] ?? "";
159
+ const rawStringEnd = scanRustRawString(text, index);
160
+ const quotedEnd = rawStringEnd == null ? scanQuotedLiteral(text, index) : null;
161
+ if (/\s/u.test(character))
162
+ index += 1;
163
+ else if (rawStringEnd != null || quotedEnd != null) {
164
+ const literalEnd = rawStringEnd ?? quotedEnd ?? text.length;
165
+ state.tokens.push(`STR:${text.slice(index, literalEnd)}`);
166
+ index = literalEnd;
167
+ }
168
+ else if (/\d/u.test(character)) {
169
+ const numberEnd = readNumberEnd(text, index);
170
+ state.tokens.push(`NUM:${text.slice(index, numberEnd)}`);
171
+ index = numberEnd;
172
+ }
173
+ else if (IDENTIFIER_START_PATTERN.test(character)) {
174
+ const identifier = readIdentifier(text, index);
175
+ state.tokens.push(normalizeIdentifierToken({
176
+ end: identifier.end,
177
+ identifier: identifier.value,
178
+ start: index,
179
+ state,
180
+ text,
181
+ }));
182
+ index = identifier.end;
183
+ }
184
+ else {
185
+ state.tokens.push(character);
186
+ index += 1;
187
+ }
188
+ }
189
+ return state.tokens;
190
+ }
191
+ function sliceFunctionSource(text, descriptor) {
192
+ return text
193
+ .split(/\r?\n/u)
194
+ .slice(descriptor.startLine - 1, descriptor.endLine)
195
+ .join("\n");
196
+ }
197
+ function createGenericFingerprint(source, extension) {
198
+ const headerNormalized = normalizeFunctionHeader(source, extension);
199
+ const commentMasked = maskCommentsForLineCounting(headerNormalized, extension);
200
+ const tokens = tokenizeGenericDryText(commentMasked);
201
+ const normalized = ["generic-function", tokens];
202
+ return {
203
+ fingerprint: stableSerialize(normalized),
204
+ normalizedText: tokens.join(""),
205
+ };
206
+ }
207
+ function createGenericDryDescriptor(file, text, descriptor) {
208
+ const fingerprint = createGenericFingerprint(sliceFunctionSource(text, descriptor), file.extension);
209
+ return {
210
+ absolutePath: file.absolutePath,
211
+ characterCount: fingerprint.normalizedText.length,
212
+ classification: descriptor.kind === "function" ? "standalone" : "method",
213
+ fingerprint: fingerprint.fingerprint,
214
+ filePath: file.relativeFromProjectRoot,
215
+ language: dryLanguageKey(file.extension),
216
+ localName: descriptor.name,
217
+ normalizedName: normalizeDryFunctionName(descriptor.name),
218
+ normalizedText: fingerprint.normalizedText,
219
+ order: descriptor.startLine,
220
+ startLine: descriptor.startLine,
221
+ topLevel: false,
222
+ usesOuterScope: true,
223
+ usesRestrictedRuntime: false,
224
+ };
225
+ }
226
+ function collectGenericDryFunctionDescriptors(file, text) {
227
+ return collectLanguageFunctionDescriptors(text, file.extension, file.absolutePath)
228
+ .map((descriptor) => createGenericDryDescriptor(file, text, descriptor));
229
+ }
230
+ export { collectGenericDryFunctionDescriptors };
231
+ //# sourceMappingURL=generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/generic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/matching.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAcxD,KAAK,eAAe,GAAG,kBAAkB,GAAG,eAAe,GAAG,qBAAqB,GAAG,mBAAmB,CAAC;AAE1G,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B,CAAC;AA+OF,iBAAS,sBAAsB,CAC7B,SAAS,EAAE,qBAAqB,EAAE,EAClC,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,CAAC,EAAE,sBAAsB,GAChC,cAAc,EAAE,CAkBlB;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/matching.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAcxD,KAAK,eAAe,GAAG,kBAAkB,GAAG,eAAe,GAAG,qBAAqB,GAAG,mBAAmB,CAAC;AAE1G,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B,CAAC;AAsPF,iBAAS,sBAAsB,CAC7B,SAAS,EAAE,qBAAqB,EAAE,EAClC,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,CAAC,EAAE,sBAAsB,GAChC,cAAc,EAAE,CAkBlB;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
@@ -44,6 +44,9 @@ function unionIndexGroup(state, indexes, signal) {
44
44
  unionWithSignal(state, firstIndex, index, signal, 1);
45
45
  }
46
46
  }
47
+ function languageScopedKey(descriptor, value) {
48
+ return `${descriptor.language}:${value}`;
49
+ }
47
50
  function indexExactAndNamedFunctions(functions, options) {
48
51
  const indexesByBehaviorFingerprint = new Map();
49
52
  const indexesByFingerprint = new Map();
@@ -52,18 +55,21 @@ function indexExactAndNamedFunctions(functions, options) {
52
55
  const descriptor = functions[index];
53
56
  if (isWithinDuplicateSizeThreshold(descriptor, options)) {
54
57
  if (descriptor.behaviorFingerprint) {
55
- const indexes = indexesByBehaviorFingerprint.get(descriptor.behaviorFingerprint) ?? [];
58
+ const key = languageScopedKey(descriptor, descriptor.behaviorFingerprint);
59
+ const indexes = indexesByBehaviorFingerprint.get(key) ?? [];
56
60
  indexes.push(index);
57
- indexesByBehaviorFingerprint.set(descriptor.behaviorFingerprint, indexes);
61
+ indexesByBehaviorFingerprint.set(key, indexes);
58
62
  }
59
- const indexes = indexesByFingerprint.get(descriptor.fingerprint) ?? [];
63
+ const key = languageScopedKey(descriptor, descriptor.fingerprint);
64
+ const indexes = indexesByFingerprint.get(key) ?? [];
60
65
  indexes.push(index);
61
- indexesByFingerprint.set(descriptor.fingerprint, indexes);
66
+ indexesByFingerprint.set(key, indexes);
62
67
  }
63
68
  if (shouldIndexNameDuplicate(descriptor, options)) {
64
- const indexes = indexesByName.get(descriptor.normalizedName) ?? [];
69
+ const key = languageScopedKey(descriptor, descriptor.normalizedName);
70
+ const indexes = indexesByName.get(key) ?? [];
65
71
  indexes.push(index);
66
- indexesByName.set(descriptor.normalizedName, indexes);
72
+ indexesByName.set(key, indexes);
67
73
  }
68
74
  }
69
75
  return { indexesByBehaviorFingerprint, indexesByFingerprint, indexesByName };
@@ -1 +1 @@
1
- {"version":3,"file":"matching.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/matching.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matching.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/matching.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import ts from "typescript";
2
1
  import type { ScannedSourceFile } from "../../../imports/types.js";
3
2
  type DryFunctionDescriptor = {
4
3
  absolutePath: string;
@@ -7,16 +6,19 @@ type DryFunctionDescriptor = {
7
6
  classification: "method" | "standalone";
8
7
  fingerprint: string;
9
8
  filePath: string;
9
+ language: string;
10
10
  localName?: string;
11
11
  normalizedName?: string;
12
- nodeStart: number;
13
12
  normalizedText: string;
14
- sourceFile: ts.SourceFile;
13
+ order: number;
14
+ startLine: number;
15
15
  topLevel: boolean;
16
16
  usesOuterScope: boolean;
17
17
  usesRestrictedRuntime: boolean;
18
18
  };
19
19
  declare function filterDrySourceFiles(sourceFiles: ScannedSourceFile[]): ScannedSourceFile[];
20
- export { filterDrySourceFiles };
20
+ declare function dryLanguageKey(extension: string): string;
21
+ declare function normalizeDryFunctionName(name: string | undefined): string | undefined;
22
+ export { dryLanguageKey, filterDrySourceFiles, normalizeDryFunctionName };
21
23
  export type { DryFunctionDescriptor };
22
24
  //# sourceMappingURL=model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,KAAK,qBAAqB,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,QAAQ,GAAG,YAAY,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,iBAAS,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAEnF;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAWvD,KAAK,qBAAqB,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,QAAQ,GAAG,YAAY,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,iBAAS,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAEnF;AAED,iBAAS,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED,iBAAS,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,CAAC;AAC1E,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
@@ -1,6 +1,25 @@
1
- import { isTypeScriptFamilyExtension } from "../../../shared/languages.js";
1
+ import { isGoExtension, isPythonExtension, isQmlExtension, isRustExtension, isShellExtension, isTypeScriptFamilyExtension, supportsDry, } from "../../../shared/languages.js";
2
2
  function filterDrySourceFiles(sourceFiles) {
3
- return sourceFiles.filter((file) => isTypeScriptFamilyExtension(file.extension));
3
+ return sourceFiles.filter((file) => supportsDry(file.extension));
4
4
  }
5
- export { filterDrySourceFiles };
5
+ function dryLanguageKey(extension) {
6
+ if (isTypeScriptFamilyExtension(extension))
7
+ return "typescript";
8
+ if (isGoExtension(extension))
9
+ return "go";
10
+ if (isRustExtension(extension))
11
+ return "rust";
12
+ if (isPythonExtension(extension))
13
+ return "python";
14
+ if (isShellExtension(extension))
15
+ return "shell";
16
+ if (isQmlExtension(extension))
17
+ return "qml";
18
+ return extension;
19
+ }
20
+ function normalizeDryFunctionName(name) {
21
+ const normalized = name?.trim().toLowerCase();
22
+ return normalized || undefined;
23
+ }
24
+ export { dryLanguageKey, filterDrySourceFiles, normalizeDryFunctionName };
6
25
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAmB5D,SAAS,oBAAoB,CAAC,WAAgC;IAC5D,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/model.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,WAAW,GACZ,MAAM,eAAe,CAAC;AAoBvB,SAAS,oBAAoB,CAAC,WAAgC;IAC5D,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB;IACvC,IAAI,2BAA2B,CAAC,SAAS,CAAC;QAAE,OAAO,YAAY,CAAC;IAChE,IAAI,aAAa,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,eAAe,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,gBAAgB,CAAC,SAAS,CAAC;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,cAAc,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAwB;IACxD,MAAM,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,IAAI,SAAS,CAAC;AACjC,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"similarity.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/similarity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAOxD,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,qBAAqB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,6BAA6B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACxB,CAAC;AAkCF,iBAAS,sBAAsB,CAC7B,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,MAAM,EACb,sBAAsB,EAAE,MAAM,GAC7B,gBAAgB,GAAG,IAAI,CAezB;AAED,iBAAS,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CASxE;AAED,iBAAS,uBAAuB,CAC9B,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,qBAAqB,EAC5B,sBAAsB,EAAE,MAAM,GAC7B,OAAO,CAMT;AAED,iBAAS,qBAAqB,IAAI,eAAe,CAMhD;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAe3F;AAyBD,iBAAS,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CASrF;AAED,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,GACxB,CAAC;AACF,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"similarity.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/similarity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAOxD,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,qBAAqB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,6BAA6B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACxB,CAAC;AAkCF,iBAAS,sBAAsB,CAC7B,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,MAAM,EACb,sBAAsB,EAAE,MAAM,GAC7B,gBAAgB,GAAG,IAAI,CAezB;AAED,iBAAS,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CASxE;AAED,iBAAS,uBAAuB,CAC9B,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,qBAAqB,EAC5B,sBAAsB,EAAE,MAAM,GAC7B,OAAO,CAOT;AAED,iBAAS,qBAAqB,IAAI,eAAe,CAMhD;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAe3F;AAyBD,iBAAS,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CASrF;AAED,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,GACxB,CAAC;AACF,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC"}
@@ -51,6 +51,8 @@ function jaccardSimilarity(left, right) {
51
51
  return union === 0 ? 1 : intersection / union;
52
52
  }
53
53
  function shouldCompareSimilarity(left, right, minDuplicateCharacters) {
54
+ if (left.language !== right.language)
55
+ return false;
54
56
  if (left.characterCount < minDuplicateCharacters || right.characterCount < minDuplicateCharacters)
55
57
  return false;
56
58
  const smaller = Math.min(left.normalizedText.length, right.normalizedText.length);
@@ -1 +1 @@
1
- {"version":3,"file":"similarity.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/similarity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"similarity.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/similarity.ts"],"names":[],"mappings":"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"}