@trebired/code-discipline 2.1.1 → 2.3.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 +82 -5
- package/dist/checks/fix-folderization.d.ts.map +1 -1
- package/dist/checks/fix-folderization.js +5 -0
- package/dist/checks/fix-folderization.js.map +1 -1
- package/dist/checks/index.d.ts +4 -2
- package/dist/checks/index.d.ts.map +1 -1
- package/dist/checks/index.js +50 -7
- package/dist/checks/index.js.map +1 -1
- package/dist/checks/rule-slugs.d.ts +1 -0
- package/dist/checks/rule-slugs.d.ts.map +1 -1
- package/dist/checks/rule-slugs.js +3 -0
- package/dist/checks/rule-slugs.js.map +1 -1
- package/dist/checks/rules/comment-stripping.d.ts +11 -0
- package/dist/checks/rules/comment-stripping.d.ts.map +1 -0
- package/dist/checks/rules/comment-stripping.js +266 -0
- package/dist/checks/rules/comment-stripping.js.map +1 -0
- package/dist/checks/rules/dry.d.ts.map +1 -1
- package/dist/checks/rules/dry.js +6 -5
- package/dist/checks/rules/dry.js.map +1 -1
- package/dist/checks/rules/folderize-plan.d.ts.map +1 -1
- package/dist/checks/rules/folderize-plan.js +3 -0
- package/dist/checks/rules/folderize-plan.js.map +1 -1
- package/dist/checks/rules/max-function-lines.d.ts.map +1 -1
- package/dist/checks/rules/max-function-lines.js +120 -3
- package/dist/checks/rules/max-function-lines.js.map +1 -1
- package/dist/checks/rules/remove-comments.d.ts +7 -0
- package/dist/checks/rules/remove-comments.d.ts.map +1 -0
- package/dist/checks/rules/remove-comments.js +58 -0
- package/dist/checks/rules/remove-comments.js.map +1 -0
- package/dist/checks/types.d.ts +12 -4
- package/dist/checks/types.d.ts.map +1 -1
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +48 -2
- package/dist/cli/run-cli.js.map +1 -1
- package/dist/config/normalize-check-options.d.ts.map +1 -1
- package/dist/config/normalize-check-options.js +2 -1
- package/dist/config/normalize-check-options.js.map +1 -1
- package/dist/config/normalize-rule-options.d.ts +6 -3
- package/dist/config/normalize-rule-options.d.ts.map +1 -1
- package/dist/config/normalize-rule-options.js +17 -1
- package/dist/config/normalize-rule-options.js.map +1 -1
- package/dist/config/normalize-source-options.d.ts +6 -1
- package/dist/config/normalize-source-options.d.ts.map +1 -1
- package/dist/config/normalize-source-options.js +20 -2
- package/dist/config/normalize-source-options.js.map +1 -1
- package/dist/imports/check-sync-imports.d.ts.map +1 -1
- package/dist/imports/check-sync-imports.js +4 -2
- package/dist/imports/check-sync-imports.js.map +1 -1
- package/dist/imports/module-specifiers.d.ts.map +1 -1
- package/dist/imports/module-specifiers.js +5 -1
- package/dist/imports/module-specifiers.js.map +1 -1
- package/dist/imports/resolve.d.ts +2 -1
- package/dist/imports/resolve.d.ts.map +1 -1
- package/dist/imports/resolve.js.map +1 -1
- package/dist/imports/scan.d.ts.map +1 -1
- package/dist/imports/scan.js +8 -2
- package/dist/imports/scan.js.map +1 -1
- package/dist/imports/sync-imports.d.ts +2 -2
- package/dist/imports/sync-imports.d.ts.map +1 -1
- package/dist/imports/sync-imports.js +8 -2
- package/dist/imports/sync-imports.js.map +1 -1
- package/dist/imports/types.d.ts +10 -2
- package/dist/imports/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +4 -0
- package/dist/run.js.map +1 -1
- package/dist/runtime/gate-command.d.ts +13 -0
- package/dist/runtime/gate-command.d.ts.map +1 -0
- package/dist/runtime/gate-command.js +51 -0
- package/dist/runtime/gate-command.js.map +1 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +1 -1
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/discipline-types.d.ts +1 -1
- package/dist/shared/discipline-types.d.ts.map +1 -1
- package/dist/shared/gitignore.d.ts +3 -0
- package/dist/shared/gitignore.d.ts.map +1 -0
- package/dist/shared/gitignore.js +69 -0
- package/dist/shared/gitignore.js.map +1 -0
- package/dist/shared/languages.d.ts +9 -0
- package/dist/shared/languages.d.ts.map +1 -0
- package/dist/shared/languages.js +39 -0
- package/dist/shared/languages.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/shared/gitignore.ts"],"names":[],"mappings":"AA0CA,iBAAe,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBtG;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { isDirectory, normalizeRelativePath, uniqueStrings } from "./utils.js";
|
|
4
|
+
const GLOB_PATTERN = /[*?[\]{}]/;
|
|
5
|
+
function stripInlineComment(value) {
|
|
6
|
+
let escaped = false;
|
|
7
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
8
|
+
const character = value[index];
|
|
9
|
+
if (escaped) {
|
|
10
|
+
escaped = false;
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
if (character === "\\") {
|
|
14
|
+
escaped = true;
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
if (character === "#") {
|
|
18
|
+
return value.slice(0, index).trimEnd();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
function shouldKeepGitignoreDirectoryPattern(value) {
|
|
24
|
+
if (!value)
|
|
25
|
+
return false;
|
|
26
|
+
if (value.startsWith("!"))
|
|
27
|
+
return false;
|
|
28
|
+
if (GLOB_PATTERN.test(value))
|
|
29
|
+
return false;
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
async function isLikelyDirectoryPattern(projectRoot, value, explicitDirectory) {
|
|
33
|
+
if (explicitDirectory)
|
|
34
|
+
return true;
|
|
35
|
+
const absolutePath = path.resolve(projectRoot, value);
|
|
36
|
+
if (await isDirectory(absolutePath))
|
|
37
|
+
return true;
|
|
38
|
+
const basename = path.posix.basename(value);
|
|
39
|
+
if (basename.startsWith("."))
|
|
40
|
+
return true;
|
|
41
|
+
return !basename.includes(".");
|
|
42
|
+
}
|
|
43
|
+
async function readGitignoreExcludedDirs(projectRoot, gitignorePath) {
|
|
44
|
+
try {
|
|
45
|
+
const text = await fs.readFile(gitignorePath, "utf8");
|
|
46
|
+
const rows = text.split(/\r?\n/);
|
|
47
|
+
const directories = [];
|
|
48
|
+
for (const row of rows) {
|
|
49
|
+
const trimmed = stripInlineComment(row.trim());
|
|
50
|
+
if (!trimmed)
|
|
51
|
+
continue;
|
|
52
|
+
if (!shouldKeepGitignoreDirectoryPattern(trimmed))
|
|
53
|
+
continue;
|
|
54
|
+
const explicitDirectory = trimmed.endsWith("/");
|
|
55
|
+
const normalized = normalizeRelativePath(trimmed.replace(/^!/, "").replace(/^\/+/, "").replace(/\/+$/, ""));
|
|
56
|
+
if (!normalized)
|
|
57
|
+
continue;
|
|
58
|
+
if (!await isLikelyDirectoryPattern(projectRoot, normalized, explicitDirectory))
|
|
59
|
+
continue;
|
|
60
|
+
directories.push(normalized);
|
|
61
|
+
}
|
|
62
|
+
return uniqueStrings(directories);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export { readGitignoreExcludedDirs };
|
|
69
|
+
//# sourceMappingURL=gitignore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/shared/gitignore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare function isTypeScriptFamilyExtension(value: string): boolean;
|
|
2
|
+
declare function isGoExtension(value: string): boolean;
|
|
3
|
+
declare function isRustExtension(value: string): boolean;
|
|
4
|
+
declare function supportsSyncImports(value: string): boolean;
|
|
5
|
+
declare function supportsFolderizationFix(value: string): boolean;
|
|
6
|
+
declare function supportsMaxFunctionLines(value: string): boolean;
|
|
7
|
+
declare function supportsRemoveComments(value: string): boolean;
|
|
8
|
+
export { isGoExtension, isRustExtension, isTypeScriptFamilyExtension, supportsFolderizationFix, supportsMaxFunctionLines, supportsRemoveComments, supportsSyncImports, };
|
|
9
|
+
//# sourceMappingURL=languages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../src/shared/languages.ts"],"names":[],"mappings":"AAoBA,iBAAS,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,iBAAS,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,iBAAS,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,iBAAS,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,OAAO,EACL,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,GACpB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
const TYPESCRIPT_FAMILY_EXTENSIONS = new Set([
|
|
3
|
+
".cjs",
|
|
4
|
+
".cts",
|
|
5
|
+
".js",
|
|
6
|
+
".jsx",
|
|
7
|
+
".mjs",
|
|
8
|
+
".mts",
|
|
9
|
+
".ts",
|
|
10
|
+
".tsx",
|
|
11
|
+
]);
|
|
12
|
+
const GO_FAMILY_EXTENSIONS = new Set([".go"]);
|
|
13
|
+
const RUST_FAMILY_EXTENSIONS = new Set([".rs"]);
|
|
14
|
+
function normalizeExtension(value) {
|
|
15
|
+
return value.startsWith(".") ? value.toLowerCase() : path.extname(value).toLowerCase();
|
|
16
|
+
}
|
|
17
|
+
function isTypeScriptFamilyExtension(value) {
|
|
18
|
+
return TYPESCRIPT_FAMILY_EXTENSIONS.has(normalizeExtension(value));
|
|
19
|
+
}
|
|
20
|
+
function isGoExtension(value) {
|
|
21
|
+
return GO_FAMILY_EXTENSIONS.has(normalizeExtension(value));
|
|
22
|
+
}
|
|
23
|
+
function isRustExtension(value) {
|
|
24
|
+
return RUST_FAMILY_EXTENSIONS.has(normalizeExtension(value));
|
|
25
|
+
}
|
|
26
|
+
function supportsSyncImports(value) {
|
|
27
|
+
return isTypeScriptFamilyExtension(value);
|
|
28
|
+
}
|
|
29
|
+
function supportsFolderizationFix(value) {
|
|
30
|
+
return isTypeScriptFamilyExtension(value);
|
|
31
|
+
}
|
|
32
|
+
function supportsMaxFunctionLines(value) {
|
|
33
|
+
return isTypeScriptFamilyExtension(value) || isGoExtension(value) || isRustExtension(value);
|
|
34
|
+
}
|
|
35
|
+
function supportsRemoveComments(value) {
|
|
36
|
+
return isTypeScriptFamilyExtension(value) || isGoExtension(value) || isRustExtension(value);
|
|
37
|
+
}
|
|
38
|
+
export { isGoExtension, isRustExtension, isTypeScriptFamilyExtension, supportsFolderizationFix, supportsMaxFunctionLines, supportsRemoveComments, supportsSyncImports, };
|
|
39
|
+
//# sourceMappingURL=languages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../src/shared/languages.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEhD,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACzF,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAa;IAChD,OAAO,4BAA4B,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,oBAAoB,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,sBAAsB,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,2BAA2B,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,2BAA2B,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AAED,OAAO,EACL,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,GACpB,CAAC"}
|
package/package.json
CHANGED