@trebired/code-discipline 5.0.2 → 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.
- package/CHANGELOG.md +14 -0
- package/README.md +11 -5
- package/dist/checks/fix-folderization.js +2 -2
- package/dist/checks/fix-folderization.js.map +1 -1
- package/dist/checks/format.js +2 -2
- package/dist/checks/format.js.map +1 -1
- package/dist/checks/rule-slugs.d.ts +2 -4
- package/dist/checks/rule-slugs.d.ts.map +1 -1
- package/dist/checks/rule-slugs.js +5 -17
- package/dist/checks/rule-slugs.js.map +1 -1
- package/dist/checks/rules/blank-lines/generic.d.ts +10 -0
- package/dist/checks/rules/blank-lines/generic.d.ts.map +1 -0
- package/dist/checks/rules/blank-lines/generic.js +242 -0
- package/dist/checks/rules/blank-lines/generic.js.map +1 -0
- package/dist/checks/rules/blank-lines/index.d.ts.map +1 -1
- package/dist/checks/rules/blank-lines/index.js +13 -7
- package/dist/checks/rules/blank-lines/index.js.map +1 -1
- package/dist/checks/rules/blank-lines/rewrite.d.ts +2 -1
- package/dist/checks/rules/blank-lines/rewrite.d.ts.map +1 -1
- package/dist/checks/rules/blank-lines/rewrite.js +1 -1
- package/dist/checks/rules/blank-lines/rewrite.js.map +1 -1
- package/dist/checks/rules/comments/ranges.d.ts +2 -1
- package/dist/checks/rules/comments/ranges.d.ts.map +1 -1
- package/dist/checks/rules/comments/ranges.js +1 -1
- package/dist/checks/rules/comments/ranges.js.map +1 -1
- package/dist/checks/rules/dry/candidates.d.ts.map +1 -1
- package/dist/checks/rules/dry/candidates.js +52 -32
- package/dist/checks/rules/dry/candidates.js.map +1 -1
- package/dist/checks/rules/dry/generic.d.ts +5 -0
- package/dist/checks/rules/dry/generic.d.ts.map +1 -0
- package/dist/checks/rules/dry/generic.js +231 -0
- package/dist/checks/rules/dry/generic.js.map +1 -0
- package/dist/checks/rules/dry/matching.d.ts.map +1 -1
- package/dist/checks/rules/dry/matching.js +12 -6
- package/dist/checks/rules/dry/matching.js.map +1 -1
- package/dist/checks/rules/dry/model.d.ts +6 -4
- package/dist/checks/rules/dry/model.d.ts.map +1 -1
- package/dist/checks/rules/dry/model.js +22 -3
- package/dist/checks/rules/dry/model.js.map +1 -1
- package/dist/checks/rules/dry/similarity.d.ts.map +1 -1
- package/dist/checks/rules/dry/similarity.js +2 -0
- package/dist/checks/rules/dry/similarity.js.map +1 -1
- package/dist/checks/rules/max/function-lines.d.ts +10 -1
- package/dist/checks/rules/max/function-lines.d.ts.map +1 -1
- package/dist/checks/rules/max/function-lines.js +1 -1
- package/dist/checks/rules/max/function-lines.js.map +1 -1
- package/dist/checks/rules/max/python.d.ts +7 -2
- package/dist/checks/rules/max/python.d.ts.map +1 -1
- package/dist/checks/rules/max/python.js +1 -1
- package/dist/checks/rules/max/python.js.map +1 -1
- package/dist/checks/rules/max/shell.d.ts +2 -1
- package/dist/checks/rules/max/shell.d.ts.map +1 -1
- package/dist/checks/rules/max/shell.js +1 -1
- package/dist/checks/rules/max/shell.js.map +1 -1
- package/dist/checks/types.d.ts +3 -6
- package/dist/checks/types.d.ts.map +1 -1
- package/dist/config/normalize/check-options.d.ts.map +1 -1
- package/dist/config/normalize/check-options.js +7 -3
- package/dist/config/normalize/check-options.js.map +1 -1
- package/dist/config/normalize/formatter-options.d.ts +1 -1
- package/dist/config/normalize/formatter-options.d.ts.map +1 -1
- package/dist/config/normalize/formatter-options.js +2 -8
- package/dist/config/normalize/formatter-options.js.map +1 -1
- package/dist/formatters/code.js +4 -4
- package/dist/formatters/code.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +14 -2
- package/dist/run.js.map +1 -1
- package/dist/shared/discipline-types.d.ts +2 -3
- package/dist/shared/discipline-types.d.ts.map +1 -1
- package/dist/shared/languages.d.ts +4 -2
- package/dist/shared/languages.d.ts.map +1 -1
- package/dist/shared/languages.js +6 -4
- package/dist/shared/languages.js.map +1 -1
- package/native/darwin-arm64.node +0 -0
- package/native/darwin-x64.node +0 -0
- package/native/linux-arm64-gnu.node +0 -0
- package/native/linux-x64-gnu.node +0 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,20 @@ All notable changes to `@trebired/code-discipline` will be documented here.
|
|
|
4
4
|
|
|
5
5
|
This project follows semantic versioning once published.
|
|
6
6
|
|
|
7
|
+
## 5.1.0
|
|
8
|
+
|
|
9
|
+
- Added formatter wrapping for QML top-level string concatenation expressions so formatting can resolve property lines that combine literals and runtime values.
|
|
10
|
+
- Expanded compact one-line QML blocks as part of `rules.formatting`, including single-statement helper functions and inline statement blocks.
|
|
11
|
+
- Fixed SVG/XML attribute wrapping inside Rust raw string bodies so tag text tails reserve line width and `maxCharactersPerLine` can pass after formatting.
|
|
12
|
+
- Expanded `folderizeCompoundFiles` planning and moves across supported source languages instead of limiting folderization to JavaScript and TypeScript family files.
|
|
13
|
+
- Expanded `dry` duplicate-function checks across Go, Rust, Python, QML, and shell source files with language-aware token fingerprints.
|
|
14
|
+
- Added generic structural blank-line normalization for supported non-TypeScript languages while keeping the TypeScript AST path for JavaScript and TypeScript files.
|
|
15
|
+
|
|
16
|
+
## 5.0.3
|
|
17
|
+
|
|
18
|
+
- Removed the legacy top-level `formatter` compatibility alias; formatting is configured only through `rules.formatting`.
|
|
19
|
+
- Removed formatter-specific public selector exports now that `format` is a rule slug.
|
|
20
|
+
|
|
7
21
|
## 5.0.2
|
|
8
22
|
|
|
9
23
|
- Moved the primary formatting config surface to `rules.formatting: {}` so formatting is enabled like the other rule-backed checks and fixes.
|
package/README.md
CHANGED
|
@@ -138,7 +138,7 @@ Detects flat compound names such as `user_route.ts` and can move them into struc
|
|
|
138
138
|
|
|
139
139
|
The rule config only describes separators now. Whether it mutates is decided by running `code-discipline fix`.
|
|
140
140
|
|
|
141
|
-
Folderization
|
|
141
|
+
Folderization scans and moves supported source files across JavaScript, TypeScript, Go, Rust, Python, QML, shell, SCSS, and CSS. Move-aware import repair is applied for languages whose import syntax is package-supported.
|
|
142
142
|
|
|
143
143
|
#### `imports`
|
|
144
144
|
|
|
@@ -219,9 +219,11 @@ code-discipline fix remove-comments
|
|
|
219
219
|
|
|
220
220
|
#### `structuralBlankLines`
|
|
221
221
|
|
|
222
|
-
Reports
|
|
222
|
+
Reports supported source files where major structural sections aren't visually separated, and normalizes the blank lines between them when you run `code-discipline fix`.
|
|
223
223
|
|
|
224
|
-
|
|
224
|
+
JavaScript and TypeScript use the TypeScript AST: after the file header, between imports and the first non-import statement, between declaration groups (variables, types, functions, classes, enums, namespaces), and between class fields/methods/constructors. Compact groups - consecutive imports, variables, type declarations, re-exports, top-level executable statements, class fields, directive prologues, function overload chains, and getter/setter pairs - allow zero or one blank line and only collapse two or more down to one.
|
|
225
|
+
|
|
226
|
+
Go, Rust, Python, QML, shell, SCSS, and CSS use language-aware structural scanning to normalize blank lines between adjacent top-level declarations, functions, handlers, or rules in the same scope.
|
|
225
227
|
|
|
226
228
|
It never touches statements inside function or method bodies, `if`/loop/`try` bodies, object literals, array elements, interface members, type literal members, enum members, or JSX children - spacing choices inside those remain up to the developer.
|
|
227
229
|
|
|
@@ -239,6 +241,8 @@ code-discipline fix structural-blank-lines
|
|
|
239
241
|
|
|
240
242
|
Reports duplicate function groups across the configured source tree.
|
|
241
243
|
|
|
244
|
+
- JavaScript and TypeScript use AST-aware structural and behavior fingerprints
|
|
245
|
+
- Go, Rust, Python, QML, and shell use language-aware function spans with conservative token fingerprints
|
|
242
246
|
- exact normalized structure is reported with 100% confidence
|
|
243
247
|
- equivalent normalized behavior in simple pure functions is reported with 100% confidence
|
|
244
248
|
- matching function names are reported with 100% confidence
|
|
@@ -499,13 +503,15 @@ Rules use kebab-case public slugs:
|
|
|
499
503
|
|
|
500
504
|
The `format` selector is enabled by `rules.formatting`.
|
|
501
505
|
|
|
506
|
+
The `structural-blank-lines` selector is enabled by `rules.structuralBlankLines` and normalizes blank lines between structural declarations in supported source languages.
|
|
507
|
+
|
|
502
508
|
### Formatting
|
|
503
509
|
|
|
504
|
-
The package-owned Rust formatter is enabled as a rule with `rules.formatting: {}`. Omit `rules.formatting` to leave formatting disabled.
|
|
510
|
+
The package-owned Rust formatter is enabled as a rule with `rules.formatting: {}`. Omit `rules.formatting` to leave formatting disabled.
|
|
505
511
|
|
|
506
512
|
`check format` validates formatting without modifying files, while `fix format` writes formatted files. Running `code-discipline fix` with no selectors runs configured formatting after structural, import, comment, and blank-line fixes, then rechecks `max-characters-per-line` when that rule is configured.
|
|
507
513
|
|
|
508
|
-
The formatter supports JavaScript, TypeScript, Go, Rust, Python, QML, shell files with `.sh`, `.bash`, or `.zsh`, SCSS, and CSS. It normalizes line endings, trailing whitespace, final newline, repeated blank lines, brace-language indentation, indentation-sensitive language whitespace, and safe line wrapping against `rules.maxCharactersPerLine.max`.
|
|
514
|
+
The formatter supports JavaScript, TypeScript, Go, Rust, Python, QML, shell files with `.sh`, `.bash`, or `.zsh`, SCSS, and CSS. It normalizes line endings, trailing whitespace, final newline, repeated blank lines, brace-language indentation, indentation-sensitive language whitespace, compact QML blocks, and safe line wrapping against `rules.maxCharactersPerLine.max`.
|
|
509
515
|
|
|
510
516
|
If `rules.maxCharactersPerLine.max` is configured, the formatter uses that width. Without that rule, formatter line width defaults to `100`.
|
|
511
517
|
|
|
@@ -5,7 +5,7 @@ import { removeEmptyDirectories } from "../shared/directories.js";
|
|
|
5
5
|
import { formatRelativeSpecifier } from "../imports/format.js";
|
|
6
6
|
import { applyTextReplacements, collectModuleSpecifiers } from "../imports/module-specifiers.js";
|
|
7
7
|
import { isRelativeImportSpecifier } from "../imports/resolve.js";
|
|
8
|
-
import {
|
|
8
|
+
import { supportsImports } from "../shared/languages.js";
|
|
9
9
|
import { FileConflictError, FixFailureError, RewriteFailureError } from "../shared/errors.js";
|
|
10
10
|
import { ensureDotExtension, pathExists } from "../shared/utils.js";
|
|
11
11
|
import { createRuleProgress, emitRuleChunk, emitRuleCompleted } from "./progress.js";
|
|
@@ -71,7 +71,7 @@ async function planImportRewritesForFolderizationMoves(sourceFiles, moves, optio
|
|
|
71
71
|
let rewrittenImports = 0;
|
|
72
72
|
for (let index = 0; index < sourceFiles.length; index += 1) {
|
|
73
73
|
const file = sourceFiles[index];
|
|
74
|
-
if (!
|
|
74
|
+
if (!supportsImports(file.extension)) {
|
|
75
75
|
emitRuleChunk(progress, index + 1, 0, { rewrittenFiles, rewrittenImports });
|
|
76
76
|
continue;
|
|
77
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-folderization.js","sourceRoot":"","sources":["../../src/checks/fix-folderization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"fix-folderization.js","sourceRoot":"","sources":["../../src/checks/fix-folderization.ts"],"names":[],"mappings":"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"}
|
package/dist/checks/format.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { runCodeFormatter } from "../formatters/code.js";
|
|
2
2
|
import { shouldRunRule } from "./rule-slugs.js";
|
|
3
3
|
async function collectFormatViolations(options) {
|
|
4
|
-
if (!options.
|
|
4
|
+
if (!options.rules.formatting || !shouldRunRule("format", options.onlyRules))
|
|
5
5
|
return [];
|
|
6
6
|
return (await runCodeFormatter(options, "check")).violations;
|
|
7
7
|
}
|
|
8
8
|
async function applyCodeFormatterFix(options) {
|
|
9
|
-
if (!options.
|
|
9
|
+
if (!options.rules.formatting || !shouldRunRule("format", options.onlyRules))
|
|
10
10
|
return null;
|
|
11
11
|
const result = await runCodeFormatter(options, "fix");
|
|
12
12
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/checks/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAchD,KAAK,UAAU,uBAAuB,CACpC,OAA6C;IAE7C,IAAI,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/checks/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAchD,KAAK,UAAU,uBAAuB,CACpC,OAA6C;IAE7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IACxF,OAAO,CAAC,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAA6C;IAE7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1F,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEtD,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,eAAe;QACtC,cAAc,EAAE,MAAM,CAAC,eAAe;QACtC,cAAc,EAAE,MAAM,CAAC,eAAe;QACtC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE;YACV,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { CodeDisciplineMode, CodeDisciplineCheckSelectorSlug, CodeDisciplineRuleSlug, CodeDisciplineRules, FixableRuleSlug } from "./types.js";
|
|
2
2
|
declare const ALL_RULE_SLUGS: CodeDisciplineRuleSlug[];
|
|
3
3
|
declare const FIXABLE_RULE_SLUGS: FixableRuleSlug[];
|
|
4
|
-
declare const FORMATTER_SLUGS: readonly ["format"];
|
|
5
4
|
declare const RULE_SLUG_BY_CONFIG_KEY: {
|
|
6
5
|
readonly bannedFiles: "banned-files";
|
|
7
6
|
readonly bannedPatterns: "banned-patterns";
|
|
@@ -18,8 +17,7 @@ declare const RULE_SLUG_BY_CONFIG_KEY: {
|
|
|
18
17
|
readonly imports: "imports";
|
|
19
18
|
};
|
|
20
19
|
declare function resolveEnabledRuleSlugs(rules: CodeDisciplineRules | undefined): Set<CodeDisciplineRuleSlug>;
|
|
21
|
-
declare function
|
|
22
|
-
declare function normalizeOnlyRules(mode: CodeDisciplineMode, onlyRules: readonly string[] | undefined, rules: CodeDisciplineRules | undefined, formatter: boolean | undefined): CodeDisciplineCheckSelectorSlug[] | FixableRuleSlug[] | undefined;
|
|
20
|
+
declare function normalizeOnlyRules(mode: CodeDisciplineMode, onlyRules: readonly string[] | undefined, rules: CodeDisciplineRules | undefined): CodeDisciplineCheckSelectorSlug[] | FixableRuleSlug[] | undefined;
|
|
23
21
|
declare function shouldRunRule(rule: CodeDisciplineCheckSelectorSlug, onlyRules: readonly string[] | undefined): boolean;
|
|
24
|
-
export { ALL_RULE_SLUGS, FIXABLE_RULE_SLUGS,
|
|
22
|
+
export { ALL_RULE_SLUGS, FIXABLE_RULE_SLUGS, RULE_SLUG_BY_CONFIG_KEY, normalizeOnlyRules, resolveEnabledRuleSlugs, shouldRunRule, };
|
|
25
23
|
//# sourceMappingURL=rule-slugs.d.ts.map
|
|
@@ -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,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,QAAA,MAAM,cAAc,EAAE,sBAAsB,EAc3C,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,eAAe,EASxC,CAAC;AAEF,QAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"rule-slugs.d.ts","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,QAAA,MAAM,cAAc,EAAE,sBAAsB,EAc3C,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,eAAe,EASxC,CAAC;AAEF,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;CAcnB,CAAC;AAEX,iBAAS,uBAAuB,CAC9B,KAAK,EAAE,mBAAmB,GAAG,SAAS,GACrC,GAAG,CAAC,sBAAsB,CAAC,CAY7B;AAED,iBAAS,kBAAkB,CACzB,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACxC,KAAK,EAAE,mBAAmB,GAAG,SAAS,GACrC,+BAA+B,EAAE,GAAG,eAAe,EAAE,GAAG,SAAS,CAgCnE;AAED,iBAAS,aAAa,CACpB,IAAI,EAAE,+BAA+B,EACrC,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"}
|
|
@@ -24,9 +24,6 @@ const FIXABLE_RULE_SLUGS = [
|
|
|
24
24
|
"structural-blank-lines",
|
|
25
25
|
"format",
|
|
26
26
|
];
|
|
27
|
-
const FORMATTER_SLUGS = [
|
|
28
|
-
"format",
|
|
29
|
-
];
|
|
30
27
|
const RULE_SLUG_BY_CONFIG_KEY = {
|
|
31
28
|
bannedFiles: "banned-files",
|
|
32
29
|
bannedPatterns: "banned-patterns",
|
|
@@ -53,19 +50,11 @@ function resolveEnabledRuleSlugs(rules) {
|
|
|
53
50
|
}
|
|
54
51
|
return enabled;
|
|
55
52
|
}
|
|
56
|
-
function
|
|
57
|
-
const enabled = new Set();
|
|
58
|
-
if (formatter) {
|
|
59
|
-
enabled.add("format");
|
|
60
|
-
}
|
|
61
|
-
return enabled;
|
|
62
|
-
}
|
|
63
|
-
function normalizeOnlyRules(mode, onlyRules, rules, formatter) {
|
|
53
|
+
function normalizeOnlyRules(mode, onlyRules, rules) {
|
|
64
54
|
if (!onlyRules || onlyRules.length === 0)
|
|
65
55
|
return undefined;
|
|
66
|
-
const allowedRules = new Set(mode === "fix" ? FIXABLE_RULE_SLUGS :
|
|
56
|
+
const allowedRules = new Set(mode === "fix" ? FIXABLE_RULE_SLUGS : ALL_RULE_SLUGS);
|
|
67
57
|
const enabledRules = resolveEnabledRuleSlugs(rules);
|
|
68
|
-
const enabledFormatters = resolveEnabledFormatterSlugs(formatter);
|
|
69
58
|
const normalized = [];
|
|
70
59
|
for (const rule of onlyRules) {
|
|
71
60
|
if (!allowedRules.has(rule)) {
|
|
@@ -73,9 +62,8 @@ function normalizeOnlyRules(mode, onlyRules, rules, formatter) {
|
|
|
73
62
|
? `Selected rule is not fixable: ${rule}`
|
|
74
63
|
: `Unknown rule selector: ${rule}`, { mode, rule });
|
|
75
64
|
}
|
|
76
|
-
if (!enabledRules.has(rule)
|
|
77
|
-
|
|
78
|
-
throw new InvalidCodeDisciplineConfigError(`${knownFormatter ? "Selected selector" : "Selected rule"} is not configured: ${rule}`, {
|
|
65
|
+
if (!enabledRules.has(rule)) {
|
|
66
|
+
throw new InvalidCodeDisciplineConfigError(`Selected rule is not configured: ${rule}`, {
|
|
79
67
|
mode,
|
|
80
68
|
rule,
|
|
81
69
|
});
|
|
@@ -91,5 +79,5 @@ function normalizeOnlyRules(mode, onlyRules, rules, formatter) {
|
|
|
91
79
|
function shouldRunRule(rule, onlyRules) {
|
|
92
80
|
return !onlyRules || onlyRules.length === 0 || onlyRules.includes(rule);
|
|
93
81
|
}
|
|
94
|
-
export { ALL_RULE_SLUGS, FIXABLE_RULE_SLUGS,
|
|
82
|
+
export { ALL_RULE_SLUGS, FIXABLE_RULE_SLUGS, RULE_SLUG_BY_CONFIG_KEY, normalizeOnlyRules, resolveEnabledRuleSlugs, shouldRunRule, };
|
|
95
83
|
//# sourceMappingURL=rule-slugs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-slugs.js","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AASjE,MAAM,cAAc,GAA6B;IAC/C,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,sBAAsB;IACtB,gBAAgB;IAChB,yBAAyB;IACzB,oBAAoB;IACpB,0BAA0B;IAC1B,SAAS;IACT,iBAAiB;IACjB,wBAAwB;IACxB,KAAK;IACL,QAAQ;CACT,CAAC;AAEF,MAAM,kBAAkB,GAAsB;IAC5C,cAAc;IACd,gBAAgB;IAChB,yBAAyB;IACzB,0BAA0B;IAC1B,SAAS;IACT,iBAAiB;IACjB,wBAAwB;IACxB,QAAQ;CACT,CAAC;AAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"rule-slugs.js","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ApplyBoundaryEditsResult } from "./rewrite.js";
|
|
2
|
+
type GenericStructuralUnit = {
|
|
3
|
+
endLine: number;
|
|
4
|
+
scopeKey: string;
|
|
5
|
+
startLine: number;
|
|
6
|
+
};
|
|
7
|
+
declare function collectGenericStructuralUnits(text: string, extension: string): GenericStructuralUnit[];
|
|
8
|
+
declare function rewriteGenericStructuralBlankLines(text: string, extension: string): ApplyBoundaryEditsResult;
|
|
9
|
+
export { collectGenericStructuralUnits, rewriteGenericStructuralBlankLines };
|
|
10
|
+
//# sourceMappingURL=generic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/blank-lines/generic.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAsB,KAAK,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGjF,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AA6QF,iBAAS,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAO/F;AAED,iBAAS,kCAAkC,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,wBAAwB,CAKrG;AAED,OAAO,EAAE,6BAA6B,EAAE,kCAAkC,EAAE,CAAC"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { isGoExtension, isPythonExtension, isQmlExtension, isRustExtension, isShellExtension, isStyleExtension, } from "../../../shared/languages.js";
|
|
2
|
+
import { maskQmlCommentsAndStrings } from "../comments/qml.js";
|
|
3
|
+
import { stripCommentsAndStrings } from "../max/strip.js";
|
|
4
|
+
import { measurePythonIndent, updatePythonTripleState, } from "../max/python.js";
|
|
5
|
+
import { stripShellStringsAndComments } from "../max/shell.js";
|
|
6
|
+
import { applyBoundaryEdits } from "./rewrite.js";
|
|
7
|
+
function hasOnlyBlankLinesBetween(lines, previousEndLine, nextStartLine) {
|
|
8
|
+
for (let index = previousEndLine; index < nextStartLine - 1; index += 1) {
|
|
9
|
+
if ((lines[index] ?? "").trim().length > 0)
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
function computeBoundaryEdits(lines, units) {
|
|
15
|
+
const byScope = new Map();
|
|
16
|
+
for (const unit of units) {
|
|
17
|
+
const rows = byScope.get(unit.scopeKey) ?? [];
|
|
18
|
+
rows.push(unit);
|
|
19
|
+
byScope.set(unit.scopeKey, rows);
|
|
20
|
+
}
|
|
21
|
+
const edits = [];
|
|
22
|
+
for (const rows of byScope.values()) {
|
|
23
|
+
const sorted = rows.sort((left, right) => left.startLine - right.startLine);
|
|
24
|
+
for (let index = 1; index < sorted.length; index += 1) {
|
|
25
|
+
const previous = sorted[index - 1];
|
|
26
|
+
const next = sorted[index];
|
|
27
|
+
if (!hasOnlyBlankLinesBetween(lines, previous.endLine, next.startLine))
|
|
28
|
+
continue;
|
|
29
|
+
const gap = next.startLine - previous.endLine - 1;
|
|
30
|
+
if (gap === 1)
|
|
31
|
+
continue;
|
|
32
|
+
edits.push({
|
|
33
|
+
atLine: previous.endLine + 1,
|
|
34
|
+
removeCount: Math.max(0, gap - 1),
|
|
35
|
+
insertCount: Math.max(0, 1 - gap),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return edits;
|
|
40
|
+
}
|
|
41
|
+
function maskRustRawStrings(text) {
|
|
42
|
+
let output = "";
|
|
43
|
+
let index = 0;
|
|
44
|
+
while (index < text.length) {
|
|
45
|
+
if (text[index] !== "r") {
|
|
46
|
+
output += text[index] ?? "";
|
|
47
|
+
index += 1;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
let cursor = index + 1;
|
|
51
|
+
while (text[cursor] === "#")
|
|
52
|
+
cursor += 1;
|
|
53
|
+
if (text[cursor] !== "\"") {
|
|
54
|
+
output += text[index] ?? "";
|
|
55
|
+
index += 1;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const hashes = cursor - index - 1;
|
|
59
|
+
const close = `"${"#".repeat(hashes)}`;
|
|
60
|
+
const contentStart = cursor + 1;
|
|
61
|
+
const closeIndex = text.indexOf(close, contentStart);
|
|
62
|
+
if (closeIndex < 0) {
|
|
63
|
+
output += text[index] ?? "";
|
|
64
|
+
index += 1;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const end = closeIndex + close.length;
|
|
68
|
+
output += text.slice(index, end).replace(/[^\r\n]/gu, " ");
|
|
69
|
+
index = end;
|
|
70
|
+
}
|
|
71
|
+
return output;
|
|
72
|
+
}
|
|
73
|
+
function maskBraceLanguage(text, extension) {
|
|
74
|
+
if (isQmlExtension(extension))
|
|
75
|
+
return maskQmlCommentsAndStrings(text);
|
|
76
|
+
if (isRustExtension(extension))
|
|
77
|
+
return stripCommentsAndStrings(maskRustRawStrings(text));
|
|
78
|
+
return stripCommentsAndStrings(text);
|
|
79
|
+
}
|
|
80
|
+
function countMaskedBraceDelta(line) {
|
|
81
|
+
let delta = 0;
|
|
82
|
+
for (const character of line) {
|
|
83
|
+
if (character === "{")
|
|
84
|
+
delta += 1;
|
|
85
|
+
else if (character === "}")
|
|
86
|
+
delta -= 1;
|
|
87
|
+
}
|
|
88
|
+
return delta;
|
|
89
|
+
}
|
|
90
|
+
function isBraceUnitStart(line, extension) {
|
|
91
|
+
const trimmed = line.trimStart();
|
|
92
|
+
if (!trimmed || trimmed.startsWith("//") || trimmed.startsWith("/*") || trimmed.startsWith("*"))
|
|
93
|
+
return false;
|
|
94
|
+
if (isGoExtension(extension)) {
|
|
95
|
+
return /^(?:func|type\s+[A-Za-z_]\w*\s+(?:struct|interface))\b/u.test(trimmed);
|
|
96
|
+
}
|
|
97
|
+
if (isRustExtension(extension)) {
|
|
98
|
+
return /^(?:(?:pub(?:\([^)]*\))?|async|const|unsafe)\s+)*(?:fn|struct|enum|impl|trait)\b/u.test(trimmed);
|
|
99
|
+
}
|
|
100
|
+
if (isQmlExtension(extension)) {
|
|
101
|
+
return /^(?:async\s+)?function\s+[A-Za-z_$][\w$]*\s*\(/u.test(trimmed)
|
|
102
|
+
|| /^(?:property\s+\w+\s+)?[A-Za-z_$][\w$]*\s*:\s*function\s*\(/u.test(trimmed)
|
|
103
|
+
|| /^on[A-Z][\w$]*\s*:\s*(?:$|\{|function\b|\([^)]*\)\s*=>|[A-Za-z_$][\w$]*\s*=>)/u.test(trimmed);
|
|
104
|
+
}
|
|
105
|
+
if (isStyleExtension(extension)) {
|
|
106
|
+
return trimmed.includes("{") && !trimmed.startsWith("}");
|
|
107
|
+
}
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
function collectBraceStructuralUnits(text, extension) {
|
|
111
|
+
const lines = text.split(/\r?\n/u);
|
|
112
|
+
const maskedLines = maskBraceLanguage(text, extension).split(/\r?\n/u);
|
|
113
|
+
const units = [];
|
|
114
|
+
let depth = 0;
|
|
115
|
+
let pending = null;
|
|
116
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
117
|
+
const maskedLine = maskedLines[index] ?? "";
|
|
118
|
+
const line = lines[index] ?? "";
|
|
119
|
+
const depthBefore = depth;
|
|
120
|
+
if (!pending && isBraceUnitStart(line, extension)) {
|
|
121
|
+
pending = {
|
|
122
|
+
braceDepth: 0,
|
|
123
|
+
scopeKey: `brace:${depthBefore}`,
|
|
124
|
+
seenOpeningBrace: false,
|
|
125
|
+
startLine: index + 1,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (pending && maskedLine.includes("{"))
|
|
129
|
+
pending.seenOpeningBrace = true;
|
|
130
|
+
const delta = countMaskedBraceDelta(maskedLine);
|
|
131
|
+
if (pending)
|
|
132
|
+
pending.braceDepth += delta;
|
|
133
|
+
depth = Math.max(0, depth + delta);
|
|
134
|
+
if (pending?.seenOpeningBrace && pending.braceDepth <= 0) {
|
|
135
|
+
units.push({
|
|
136
|
+
startLine: pending.startLine,
|
|
137
|
+
endLine: index + 1,
|
|
138
|
+
scopeKey: pending.scopeKey,
|
|
139
|
+
});
|
|
140
|
+
pending = null;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return units;
|
|
144
|
+
}
|
|
145
|
+
function closeIndentedUnits(args) {
|
|
146
|
+
while (args.stack.length > 0 && args.currentIndent <= args.stack[args.stack.length - 1].indent) {
|
|
147
|
+
const pending = args.stack.pop();
|
|
148
|
+
args.units.push({
|
|
149
|
+
startLine: pending.startLine,
|
|
150
|
+
endLine: Math.max(pending.startLine, args.endLine),
|
|
151
|
+
scopeKey: pending.scopeKey,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function collectPythonStructuralUnits(text) {
|
|
156
|
+
const units = [];
|
|
157
|
+
const stack = [];
|
|
158
|
+
const lines = text.split(/\r?\n/u);
|
|
159
|
+
const state = { quote: null };
|
|
160
|
+
let lastMeaningfulLine = 0;
|
|
161
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
162
|
+
const line = lines[index] ?? "";
|
|
163
|
+
const insideTripleString = state.quote !== null;
|
|
164
|
+
const match = insideTripleString
|
|
165
|
+
? null
|
|
166
|
+
: /^(\s*)(?:async\s+def|def|class)\s+[A-Za-z_]\w*\b/u.exec(line);
|
|
167
|
+
if (!insideTripleString && line.trim().length > 0 && !line.trimStart().startsWith("#")) {
|
|
168
|
+
const indent = measurePythonIndent(line);
|
|
169
|
+
closeIndentedUnits({
|
|
170
|
+
currentIndent: indent,
|
|
171
|
+
endLine: lastMeaningfulLine,
|
|
172
|
+
stack,
|
|
173
|
+
units,
|
|
174
|
+
});
|
|
175
|
+
lastMeaningfulLine = index + 1;
|
|
176
|
+
}
|
|
177
|
+
if (match) {
|
|
178
|
+
const indent = measurePythonIndent(match[1] ?? "");
|
|
179
|
+
stack.push({
|
|
180
|
+
indent,
|
|
181
|
+
scopeKey: `indent:${indent}`,
|
|
182
|
+
startLine: index + 1,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
updatePythonTripleState(line, state);
|
|
186
|
+
}
|
|
187
|
+
closeIndentedUnits({
|
|
188
|
+
currentIndent: -1,
|
|
189
|
+
endLine: lastMeaningfulLine || lines.length,
|
|
190
|
+
stack,
|
|
191
|
+
units,
|
|
192
|
+
});
|
|
193
|
+
return units;
|
|
194
|
+
}
|
|
195
|
+
function collectShellStructuralUnits(text) {
|
|
196
|
+
const units = [];
|
|
197
|
+
const lines = text.split(/\r?\n/u);
|
|
198
|
+
let pending = null;
|
|
199
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
200
|
+
const maskedLine = stripShellStringsAndComments(lines[index] ?? "");
|
|
201
|
+
if (!pending && /^\s*(?:function\s+)?[A-Za-z_][\w-]*\s*(?:\(\s*\))?\s*\{/u.test(maskedLine)) {
|
|
202
|
+
pending = {
|
|
203
|
+
braceDepth: 0,
|
|
204
|
+
scopeKey: "shell:function",
|
|
205
|
+
seenOpeningBrace: false,
|
|
206
|
+
startLine: index + 1,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
if (pending && maskedLine.includes("{"))
|
|
210
|
+
pending.seenOpeningBrace = true;
|
|
211
|
+
const delta = countMaskedBraceDelta(maskedLine);
|
|
212
|
+
if (pending)
|
|
213
|
+
pending.braceDepth += delta;
|
|
214
|
+
if (pending?.seenOpeningBrace && pending.braceDepth <= 0) {
|
|
215
|
+
units.push({
|
|
216
|
+
startLine: pending.startLine,
|
|
217
|
+
endLine: index + 1,
|
|
218
|
+
scopeKey: pending.scopeKey,
|
|
219
|
+
});
|
|
220
|
+
pending = null;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return units;
|
|
224
|
+
}
|
|
225
|
+
function collectGenericStructuralUnits(text, extension) {
|
|
226
|
+
if (isPythonExtension(extension))
|
|
227
|
+
return collectPythonStructuralUnits(text);
|
|
228
|
+
if (isShellExtension(extension))
|
|
229
|
+
return collectShellStructuralUnits(text);
|
|
230
|
+
if (isGoExtension(extension) || isRustExtension(extension) || isQmlExtension(extension) || isStyleExtension(extension)) {
|
|
231
|
+
return collectBraceStructuralUnits(text, extension);
|
|
232
|
+
}
|
|
233
|
+
return [];
|
|
234
|
+
}
|
|
235
|
+
function rewriteGenericStructuralBlankLines(text, extension) {
|
|
236
|
+
const lines = text.split(/\r?\n/u);
|
|
237
|
+
const units = collectGenericStructuralUnits(text, extension);
|
|
238
|
+
const edits = computeBoundaryEdits(lines, units);
|
|
239
|
+
return applyBoundaryEdits(text, edits);
|
|
240
|
+
}
|
|
241
|
+
export { collectGenericStructuralUnits, rewriteGenericStructuralBlankLines };
|
|
242
|
+
//# sourceMappingURL=generic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../../src/checks/rules/blank-lines/generic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/blank-lines/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/blank-lines/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AA+BvG,iBAAe,qCAAqC,CAClD,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAgCpC;AAED,iBAAe,2BAA2B,CACxC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,2BAA2B,CAAC,CA2CtC;AAED,OAAO,EAAE,qCAAqC,EAAE,2BAA2B,EAAE,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { parseSource } from "../../../imports/module-specifiers.js";
|
|
4
|
-
import { isTypeScriptFamilyExtension } from "../../../shared/languages.js";
|
|
4
|
+
import { isTypeScriptFamilyExtension, supportsStructuralBlankLines } from "../../../shared/languages.js";
|
|
5
5
|
import { createRuleProgress, emitRuleChunk, emitRuleCompleted } from "../../progress.js";
|
|
6
|
+
import { rewriteGenericStructuralBlankLines } from "./generic.js";
|
|
6
7
|
import { rewriteStructuralBlankLines } from "./rewrite.js";
|
|
7
8
|
function createStructuralBlankLinesViolation(args) {
|
|
8
9
|
return {
|
|
@@ -17,6 +18,13 @@ function createStructuralBlankLinesViolation(args) {
|
|
|
17
18
|
},
|
|
18
19
|
};
|
|
19
20
|
}
|
|
21
|
+
function rewriteStructuralBlankLinesForFile(file, sourceText) {
|
|
22
|
+
const extension = path.extname(file.absolutePath).toLowerCase();
|
|
23
|
+
if (isTypeScriptFamilyExtension(extension)) {
|
|
24
|
+
return rewriteStructuralBlankLines(parseSource(sourceText, file.absolutePath), sourceText);
|
|
25
|
+
}
|
|
26
|
+
return rewriteGenericStructuralBlankLines(sourceText, extension);
|
|
27
|
+
}
|
|
20
28
|
async function collectStructuralBlankLinesViolations(sourceFiles, options) {
|
|
21
29
|
const violations = [];
|
|
22
30
|
const progress = createRuleProgress({
|
|
@@ -26,13 +34,12 @@ async function collectStructuralBlankLinesViolations(sourceFiles, options) {
|
|
|
26
34
|
});
|
|
27
35
|
for (let index = 0; index < sourceFiles.length; index += 1) {
|
|
28
36
|
const file = sourceFiles[index];
|
|
29
|
-
if (!
|
|
37
|
+
if (!supportsStructuralBlankLines(file.extension)) {
|
|
30
38
|
emitRuleChunk(progress, index + 1, violations.length);
|
|
31
39
|
continue;
|
|
32
40
|
}
|
|
33
41
|
const sourceText = await fs.readFile(file.absolutePath, "utf8");
|
|
34
|
-
const
|
|
35
|
-
const result = rewriteStructuralBlankLines(sourceFile, sourceText);
|
|
42
|
+
const result = rewriteStructuralBlankLinesForFile(file, sourceText);
|
|
36
43
|
if (result.changed) {
|
|
37
44
|
violations.push(createStructuralBlankLinesViolation({
|
|
38
45
|
filePath: file.relativeFromProjectRoot,
|
|
@@ -58,13 +65,12 @@ async function fixStructuralBlankLinesRule(sourceFiles, options) {
|
|
|
58
65
|
let removedBlankLines = 0;
|
|
59
66
|
for (let index = 0; index < sourceFiles.length; index += 1) {
|
|
60
67
|
const file = sourceFiles[index];
|
|
61
|
-
if (!
|
|
68
|
+
if (!supportsStructuralBlankLines(file.extension)) {
|
|
62
69
|
emitRuleChunk(progress, index + 1, 0, { rewrittenFiles });
|
|
63
70
|
continue;
|
|
64
71
|
}
|
|
65
72
|
const sourceText = await fs.readFile(file.absolutePath, "utf8");
|
|
66
|
-
const
|
|
67
|
-
const result = rewriteStructuralBlankLines(sourceFile, sourceText);
|
|
73
|
+
const result = rewriteStructuralBlankLinesForFile(file, sourceText);
|
|
68
74
|
if (!result.changed) {
|
|
69
75
|
emitRuleChunk(progress, index + 1, 0, { rewrittenFiles });
|
|
70
76
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/checks/rules/blank-lines/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/checks/rules/blank-lines/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@ type ApplyBoundaryEditsResult = {
|
|
|
8
8
|
insertedBlankLines: number;
|
|
9
9
|
removedBlankLines: number;
|
|
10
10
|
};
|
|
11
|
+
declare function applyBoundaryEdits(text: string, edits: BoundaryEdit[]): ApplyBoundaryEditsResult;
|
|
11
12
|
declare function rewriteStructuralBlankLines(sourceFile: ts.SourceFile, fullText: string): ApplyBoundaryEditsResult;
|
|
12
|
-
export { collectBoundaryEdits, rewriteStructuralBlankLines };
|
|
13
|
+
export { applyBoundaryEdits, collectBoundaryEdits, rewriteStructuralBlankLines };
|
|
13
14
|
export type { ApplyBoundaryEditsResult };
|
|
14
15
|
//# sourceMappingURL=rewrite.d.ts.map
|