@webpieces/dev-config 0.2.76 → 0.2.77

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 (36) hide show
  1. package/architecture/executors/validate-code/executor.d.ts +14 -6
  2. package/architecture/executors/validate-code/executor.js +61 -37
  3. package/architecture/executors/validate-code/executor.js.map +1 -1
  4. package/architecture/executors/validate-code/executor.ts +94 -58
  5. package/architecture/executors/validate-code/schema.json +48 -29
  6. package/architecture/executors/validate-modified-files/executor.d.ts +4 -3
  7. package/architecture/executors/validate-modified-files/executor.js +32 -30
  8. package/architecture/executors/validate-modified-files/executor.js.map +1 -1
  9. package/architecture/executors/validate-modified-files/executor.ts +36 -33
  10. package/architecture/executors/validate-modified-files/schema.json +9 -4
  11. package/architecture/executors/validate-modified-methods/executor.d.ts +7 -6
  12. package/architecture/executors/validate-modified-methods/executor.js +53 -47
  13. package/architecture/executors/validate-modified-methods/executor.js.map +1 -1
  14. package/architecture/executors/validate-modified-methods/executor.ts +57 -51
  15. package/architecture/executors/validate-modified-methods/schema.json +10 -5
  16. package/architecture/executors/validate-new-methods/executor.d.ts +4 -4
  17. package/architecture/executors/validate-new-methods/executor.js +64 -83
  18. package/architecture/executors/validate-new-methods/executor.js.map +1 -1
  19. package/architecture/executors/validate-new-methods/executor.ts +75 -96
  20. package/architecture/executors/validate-new-methods/schema.json +11 -10
  21. package/architecture/executors/validate-no-any-unknown/executor.d.ts +1 -2
  22. package/architecture/executors/validate-no-any-unknown/executor.js +57 -55
  23. package/architecture/executors/validate-no-any-unknown/executor.js.map +1 -1
  24. package/architecture/executors/validate-no-any-unknown/executor.ts +62 -57
  25. package/architecture/executors/validate-no-any-unknown/schema.json +2 -2
  26. package/architecture/executors/validate-no-inline-types/executor.d.ts +1 -2
  27. package/architecture/executors/validate-no-inline-types/executor.js +25 -58
  28. package/architecture/executors/validate-no-inline-types/executor.js.map +1 -1
  29. package/architecture/executors/validate-no-inline-types/executor.ts +26 -59
  30. package/architecture/executors/validate-no-inline-types/schema.json +2 -2
  31. package/architecture/executors/validate-return-types/executor.d.ts +1 -2
  32. package/architecture/executors/validate-return-types/executor.js +25 -58
  33. package/architecture/executors/validate-return-types/executor.js.map +1 -1
  34. package/architecture/executors/validate-return-types/executor.ts +26 -59
  35. package/architecture/executors/validate-return-types/schema.json +2 -2
  36. package/package.json +1 -1
@@ -2,13 +2,21 @@ import { ExecutorContext } from '@nx/devkit';
2
2
  import { ReturnTypeMode } from '../validate-return-types/executor';
3
3
  import { NoInlineTypesMode } from '../validate-no-inline-types/executor';
4
4
  import { NoAnyUnknownMode } from '../validate-no-any-unknown/executor';
5
- export type ValidationMode = 'STRICT' | 'NORMAL' | 'OFF';
5
+ export type MethodMaxLimitMode = 'OFF' | 'NEW_METHODS' | 'NEW_AND_MODIFIED_METHODS' | 'MODIFIED_FILES';
6
+ export type FileMaxLimitMode = 'OFF' | 'MODIFIED_FILES';
7
+ export interface MethodMaxLimitConfig {
8
+ limit?: number;
9
+ mode?: MethodMaxLimitMode;
10
+ disableAllowed?: boolean;
11
+ }
12
+ export interface FileMaxLimitConfig {
13
+ limit?: number;
14
+ mode?: FileMaxLimitMode;
15
+ disableAllowed?: boolean;
16
+ }
6
17
  export interface ValidateCodeOptions {
7
- mode?: ValidationMode;
8
- newMethodsMaxLines?: number;
9
- strictNewMethodMaxLines?: number;
10
- modifiedMethodsMaxLines?: number;
11
- modifiedFilesMaxLines?: number;
18
+ methodMaxLimit?: MethodMaxLimitConfig;
19
+ fileMaxLimit?: FileMaxLimitConfig;
12
20
  requireReturnTypeMode?: ReturnTypeMode;
13
21
  noInlineTypeLiteralsMode?: NoInlineTypesMode;
14
22
  noAnyUnknownMode?: NoAnyUnknownMode;
@@ -8,46 +8,70 @@ const executor_3 = tslib_1.__importDefault(require("../validate-modified-files/e
8
8
  const executor_4 = tslib_1.__importDefault(require("../validate-return-types/executor"));
9
9
  const executor_5 = tslib_1.__importDefault(require("../validate-no-inline-types/executor"));
10
10
  const executor_6 = tslib_1.__importDefault(require("../validate-no-any-unknown/executor"));
11
- async function runExecutor(options, context) {
12
- const mode = options.mode ?? 'NORMAL';
13
- if (mode === 'OFF') {
14
- console.log('\n⏭️ Skipping all code validations (validationMode: OFF)\n');
15
- return { success: true };
16
- }
17
- const returnTypeMode = options.requireReturnTypeMode ?? 'OFF';
18
- const noInlineTypesMode = options.noInlineTypeLiteralsMode ?? 'OFF';
19
- const noAnyUnknownMode = options.noAnyUnknownMode ?? 'OFF';
20
- console.log('\n📏 Running Code Validations\n');
21
- console.log(` Validation mode: ${mode}${mode === 'STRICT' ? ' (disable comments ignored for modified code)' : ''}`);
22
- console.log(` New methods max: ${options.newMethodsMaxLines ?? 30} lines (soft limit)`);
23
- if (options.strictNewMethodMaxLines) {
24
- console.log(` New methods max: ${options.strictNewMethodMaxLines} lines (hard limit, no escape)`);
25
- }
26
- console.log(` Modified methods max: ${options.modifiedMethodsMaxLines ?? 80} lines`);
27
- console.log(` Modified files max: ${options.modifiedFilesMaxLines ?? 900} lines`);
28
- console.log(` Require return types: ${returnTypeMode}`);
29
- console.log(` No inline type literals: ${noInlineTypesMode}`);
30
- console.log(` No any/unknown: ${noAnyUnknownMode}`);
11
+ function parseConfig(options) {
12
+ const methodConfig = options.methodMaxLimit ?? {};
13
+ const fileConfig = options.fileMaxLimit ?? {};
14
+ return {
15
+ methodLimit: methodConfig.limit ?? 80,
16
+ methodMode: methodConfig.mode ?? 'NEW_AND_MODIFIED_METHODS',
17
+ methodDisableAllowed: methodConfig.disableAllowed ?? true,
18
+ fileLimit: fileConfig.limit ?? 900,
19
+ fileMode: fileConfig.mode ?? 'MODIFIED_FILES',
20
+ fileDisableAllowed: fileConfig.disableAllowed ?? true,
21
+ returnTypeMode: options.requireReturnTypeMode ?? 'OFF',
22
+ noInlineTypesMode: options.noInlineTypeLiteralsMode ?? 'OFF',
23
+ noAnyUnknownMode: options.noAnyUnknownMode ?? 'OFF',
24
+ };
25
+ }
26
+ function logConfig(config) {
27
+ console.log('\n\ud83d\udccf Running Code Validations\n');
28
+ console.log(` Method limits: mode=${config.methodMode}, limit=${config.methodLimit}, disableAllowed=${config.methodDisableAllowed}`);
29
+ console.log(` File limits: mode=${config.fileMode}, limit=${config.fileLimit}, disableAllowed=${config.fileDisableAllowed}`);
30
+ console.log(` Require return types: ${config.returnTypeMode}`);
31
+ console.log(` No inline type literals: ${config.noInlineTypesMode}`);
32
+ console.log(` No any/unknown: ${config.noAnyUnknownMode}`);
31
33
  console.log('');
32
- // Run all three validators sequentially to avoid interleaved output
33
- const newMethodsResult = await (0, executor_1.default)({ max: options.newMethodsMaxLines ?? 30, strictMax: options.strictNewMethodMaxLines, mode }, context);
34
- const modifiedMethodsResult = await (0, executor_2.default)({ max: options.modifiedMethodsMaxLines ?? 80, mode }, context);
35
- const modifiedFilesResult = await (0, executor_3.default)({ max: options.modifiedFilesMaxLines ?? 900, mode }, context);
36
- const returnTypesResult = await (0, executor_4.default)({ mode: returnTypeMode }, context);
37
- const noInlineTypesResult = await (0, executor_5.default)({ mode: noInlineTypesMode }, context);
38
- const noAnyUnknownResult = await (0, executor_6.default)({ mode: noAnyUnknownMode }, context);
39
- const allSuccess = newMethodsResult.success &&
40
- modifiedMethodsResult.success &&
41
- modifiedFilesResult.success &&
42
- returnTypesResult.success &&
43
- noInlineTypesResult.success &&
44
- noAnyUnknownResult.success;
45
- if (allSuccess) {
46
- console.log('\n✅ All code validations passed\n');
34
+ }
35
+ function isAllOff(config) {
36
+ return config.methodMode === 'OFF' && config.fileMode === 'OFF' &&
37
+ config.returnTypeMode === 'OFF' && config.noInlineTypesMode === 'OFF' &&
38
+ config.noAnyUnknownMode === 'OFF';
39
+ }
40
+ async function runMethodValidators(config, context) {
41
+ const results = [];
42
+ const runNew = config.methodMode === 'NEW_METHODS' || config.methodMode === 'NEW_AND_MODIFIED_METHODS';
43
+ const runModified = config.methodMode === 'NEW_AND_MODIFIED_METHODS' || config.methodMode === 'MODIFIED_FILES';
44
+ if (runNew) {
45
+ results.push(await (0, executor_1.default)({
46
+ limit: config.methodLimit,
47
+ mode: config.methodMode, disableAllowed: config.methodDisableAllowed,
48
+ }, context));
49
+ }
50
+ if (runModified) {
51
+ results.push(await (0, executor_2.default)({
52
+ limit: config.methodLimit, mode: config.methodMode, disableAllowed: config.methodDisableAllowed,
53
+ }, context));
47
54
  }
48
- else {
49
- console.log('\n❌ Some code validations failed\n');
55
+ return results;
56
+ }
57
+ async function runExecutor(options, context) {
58
+ const config = parseConfig(options);
59
+ if (isAllOff(config)) {
60
+ console.log('\n\u23ed\ufe0f Skipping all code validations (all modes: OFF)\n');
61
+ return { success: true };
50
62
  }
63
+ logConfig(config);
64
+ const methodResults = await runMethodValidators(config, context);
65
+ const fileResult = await (0, executor_3.default)({
66
+ limit: config.fileLimit, mode: config.fileMode, disableAllowed: config.fileDisableAllowed,
67
+ }, context);
68
+ const returnTypesResult = await (0, executor_4.default)({ mode: config.returnTypeMode }, context);
69
+ const noInlineTypesResult = await (0, executor_5.default)({ mode: config.noInlineTypesMode }, context);
70
+ const noAnyUnknownResult = await (0, executor_6.default)({ mode: config.noAnyUnknownMode }, context);
71
+ const allSuccess = methodResults.every((r) => r.success) &&
72
+ fileResult.success && returnTypesResult.success &&
73
+ noInlineTypesResult.success && noAnyUnknownResult.success;
74
+ console.log(allSuccess ? '\n\u2705 All code validations passed\n' : '\n\u274c Some code validations failed\n');
51
75
  return { success: allSuccess };
52
76
  }
53
77
  //# sourceMappingURL=executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../../packages/tooling/dev-config/architecture/executors/validate-code/executor.ts"],"names":[],"mappings":"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","sourcesContent":["import { ExecutorContext } from '@nx/devkit';\nimport runNewMethodsExecutor from '../validate-new-methods/executor';\nimport runModifiedMethodsExecutor from '../validate-modified-methods/executor';\nimport runModifiedFilesExecutor from '../validate-modified-files/executor';\nimport runReturnTypesExecutor, { ReturnTypeMode } from '../validate-return-types/executor';\nimport runNoInlineTypesExecutor, { NoInlineTypesMode } from '../validate-no-inline-types/executor';\nimport runNoAnyUnknownExecutor, { NoAnyUnknownMode } from '../validate-no-any-unknown/executor';\n\nexport type ValidationMode = 'STRICT' | 'NORMAL' | 'OFF';\n\nexport interface ValidateCodeOptions {\n mode?: ValidationMode;\n newMethodsMaxLines?: number;\n strictNewMethodMaxLines?: number;\n modifiedMethodsMaxLines?: number;\n modifiedFilesMaxLines?: number;\n requireReturnTypeMode?: ReturnTypeMode;\n noInlineTypeLiteralsMode?: NoInlineTypesMode;\n noAnyUnknownMode?: NoAnyUnknownMode;\n}\n\nexport interface ExecutorResult {\n success: boolean;\n}\n\nexport default async function runExecutor(\n options: ValidateCodeOptions,\n context: ExecutorContext\n): Promise<ExecutorResult> {\n const mode: ValidationMode = options.mode ?? 'NORMAL';\n\n if (mode === 'OFF') {\n console.log('\\n⏭️ Skipping all code validations (validationMode: OFF)\\n');\n return { success: true };\n }\n\n const returnTypeMode: ReturnTypeMode = options.requireReturnTypeMode ?? 'OFF';\n const noInlineTypesMode: NoInlineTypesMode = options.noInlineTypeLiteralsMode ?? 'OFF';\n const noAnyUnknownMode: NoAnyUnknownMode = options.noAnyUnknownMode ?? 'OFF';\n\n console.log('\\n📏 Running Code Validations\\n');\n console.log(` Validation mode: ${mode}${mode === 'STRICT' ? ' (disable comments ignored for modified code)' : ''}`);\n console.log(` New methods max: ${options.newMethodsMaxLines ?? 30} lines (soft limit)`);\n if (options.strictNewMethodMaxLines) {\n console.log(` New methods max: ${options.strictNewMethodMaxLines} lines (hard limit, no escape)`);\n }\n console.log(` Modified methods max: ${options.modifiedMethodsMaxLines ?? 80} lines`);\n console.log(` Modified files max: ${options.modifiedFilesMaxLines ?? 900} lines`);\n console.log(` Require return types: ${returnTypeMode}`);\n console.log(` No inline type literals: ${noInlineTypesMode}`);\n console.log(` No any/unknown: ${noAnyUnknownMode}`);\n console.log('');\n\n // Run all three validators sequentially to avoid interleaved output\n const newMethodsResult = await runNewMethodsExecutor(\n { max: options.newMethodsMaxLines ?? 30, strictMax: options.strictNewMethodMaxLines, mode },\n context\n );\n\n const modifiedMethodsResult = await runModifiedMethodsExecutor(\n { max: options.modifiedMethodsMaxLines ?? 80, mode },\n context\n );\n\n const modifiedFilesResult = await runModifiedFilesExecutor(\n { max: options.modifiedFilesMaxLines ?? 900, mode },\n context\n );\n\n const returnTypesResult = await runReturnTypesExecutor({ mode: returnTypeMode }, context);\n\n const noInlineTypesResult = await runNoInlineTypesExecutor({ mode: noInlineTypesMode }, context);\n\n const noAnyUnknownResult = await runNoAnyUnknownExecutor({ mode: noAnyUnknownMode }, context);\n\n const allSuccess =\n newMethodsResult.success &&\n modifiedMethodsResult.success &&\n modifiedFilesResult.success &&\n returnTypesResult.success &&\n noInlineTypesResult.success &&\n noAnyUnknownResult.success;\n\n if (allSuccess) {\n console.log('\\n All code validations passed\\n');\n } else {\n console.log('\\n Some code validations failed\\n');\n }\n\n return { success: allSuccess };\n}\n"]}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../../packages/tooling/dev-config/architecture/executors/validate-code/executor.ts"],"names":[],"mappings":"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","sourcesContent":["import { ExecutorContext } from '@nx/devkit';\nimport runNewMethodsExecutor from '../validate-new-methods/executor';\nimport runModifiedMethodsExecutor from '../validate-modified-methods/executor';\nimport runModifiedFilesExecutor from '../validate-modified-files/executor';\nimport runReturnTypesExecutor, { ReturnTypeMode } from '../validate-return-types/executor';\nimport runNoInlineTypesExecutor, { NoInlineTypesMode } from '../validate-no-inline-types/executor';\nimport runNoAnyUnknownExecutor, { NoAnyUnknownMode } from '../validate-no-any-unknown/executor';\n\nexport type MethodMaxLimitMode = 'OFF' | 'NEW_METHODS' | 'NEW_AND_MODIFIED_METHODS' | 'MODIFIED_FILES';\nexport type FileMaxLimitMode = 'OFF' | 'MODIFIED_FILES';\n\nexport interface MethodMaxLimitConfig {\n limit?: number;\n mode?: MethodMaxLimitMode;\n disableAllowed?: boolean;\n}\n\nexport interface FileMaxLimitConfig {\n limit?: number;\n mode?: FileMaxLimitMode;\n disableAllowed?: boolean;\n}\n\nexport interface ValidateCodeOptions {\n methodMaxLimit?: MethodMaxLimitConfig;\n fileMaxLimit?: FileMaxLimitConfig;\n requireReturnTypeMode?: ReturnTypeMode;\n noInlineTypeLiteralsMode?: NoInlineTypesMode;\n noAnyUnknownMode?: NoAnyUnknownMode;\n}\n\nexport interface ExecutorResult {\n success: boolean;\n}\n\ninterface ParsedConfig {\n methodLimit: number;\n methodMode: MethodMaxLimitMode;\n methodDisableAllowed: boolean;\n fileLimit: number;\n fileMode: FileMaxLimitMode;\n fileDisableAllowed: boolean;\n returnTypeMode: ReturnTypeMode;\n noInlineTypesMode: NoInlineTypesMode;\n noAnyUnknownMode: NoAnyUnknownMode;\n}\n\nfunction parseConfig(options: ValidateCodeOptions): ParsedConfig {\n const methodConfig: MethodMaxLimitConfig = options.methodMaxLimit ?? {};\n const fileConfig: FileMaxLimitConfig = options.fileMaxLimit ?? {};\n\n return {\n methodLimit: methodConfig.limit ?? 80,\n methodMode: methodConfig.mode ?? 'NEW_AND_MODIFIED_METHODS',\n methodDisableAllowed: methodConfig.disableAllowed ?? true,\n fileLimit: fileConfig.limit ?? 900,\n fileMode: fileConfig.mode ?? 'MODIFIED_FILES',\n fileDisableAllowed: fileConfig.disableAllowed ?? true,\n returnTypeMode: options.requireReturnTypeMode ?? 'OFF',\n noInlineTypesMode: options.noInlineTypeLiteralsMode ?? 'OFF',\n noAnyUnknownMode: options.noAnyUnknownMode ?? 'OFF',\n };\n}\n\nfunction logConfig(config: ParsedConfig): void {\n console.log('\\n\\ud83d\\udccf Running Code Validations\\n');\n console.log(` Method limits: mode=${config.methodMode}, limit=${config.methodLimit}, disableAllowed=${config.methodDisableAllowed}`);\n console.log(` File limits: mode=${config.fileMode}, limit=${config.fileLimit}, disableAllowed=${config.fileDisableAllowed}`);\n console.log(` Require return types: ${config.returnTypeMode}`);\n console.log(` No inline type literals: ${config.noInlineTypesMode}`);\n console.log(` No any/unknown: ${config.noAnyUnknownMode}`);\n console.log('');\n}\n\nfunction isAllOff(config: ParsedConfig): boolean {\n return config.methodMode === 'OFF' && config.fileMode === 'OFF' &&\n config.returnTypeMode === 'OFF' && config.noInlineTypesMode === 'OFF' &&\n config.noAnyUnknownMode === 'OFF';\n}\n\nasync function runMethodValidators(config: ParsedConfig, context: ExecutorContext): Promise<ExecutorResult[]> {\n const results: ExecutorResult[] = [];\n const runNew = config.methodMode === 'NEW_METHODS' || config.methodMode === 'NEW_AND_MODIFIED_METHODS';\n const runModified = config.methodMode === 'NEW_AND_MODIFIED_METHODS' || config.methodMode === 'MODIFIED_FILES';\n\n if (runNew) {\n results.push(await runNewMethodsExecutor({\n limit: config.methodLimit,\n mode: config.methodMode, disableAllowed: config.methodDisableAllowed,\n }, context));\n }\n if (runModified) {\n results.push(await runModifiedMethodsExecutor({\n limit: config.methodLimit, mode: config.methodMode, disableAllowed: config.methodDisableAllowed,\n }, context));\n }\n return results;\n}\n\nexport default async function runExecutor(\n options: ValidateCodeOptions,\n context: ExecutorContext\n): Promise<ExecutorResult> {\n const config = parseConfig(options);\n\n if (isAllOff(config)) {\n console.log('\\n\\u23ed\\ufe0f Skipping all code validations (all modes: OFF)\\n');\n return { success: true };\n }\n\n logConfig(config);\n\n const methodResults = await runMethodValidators(config, context);\n const fileResult = await runModifiedFilesExecutor({\n limit: config.fileLimit, mode: config.fileMode, disableAllowed: config.fileDisableAllowed,\n }, context);\n const returnTypesResult = await runReturnTypesExecutor({ mode: config.returnTypeMode }, context);\n const noInlineTypesResult = await runNoInlineTypesExecutor({ mode: config.noInlineTypesMode }, context);\n const noAnyUnknownResult = await runNoAnyUnknownExecutor({ mode: config.noAnyUnknownMode }, context);\n\n const allSuccess = methodResults.every((r) => r.success) &&\n fileResult.success && returnTypesResult.success &&\n noInlineTypesResult.success && noAnyUnknownResult.success;\n\n console.log(allSuccess ? '\\n\\u2705 All code validations passed\\n' : '\\n\\u274c Some code validations failed\\n');\n return { success: allSuccess };\n}\n"]}
@@ -6,14 +6,24 @@ import runReturnTypesExecutor, { ReturnTypeMode } from '../validate-return-types
6
6
  import runNoInlineTypesExecutor, { NoInlineTypesMode } from '../validate-no-inline-types/executor';
7
7
  import runNoAnyUnknownExecutor, { NoAnyUnknownMode } from '../validate-no-any-unknown/executor';
8
8
 
9
- export type ValidationMode = 'STRICT' | 'NORMAL' | 'OFF';
9
+ export type MethodMaxLimitMode = 'OFF' | 'NEW_METHODS' | 'NEW_AND_MODIFIED_METHODS' | 'MODIFIED_FILES';
10
+ export type FileMaxLimitMode = 'OFF' | 'MODIFIED_FILES';
11
+
12
+ export interface MethodMaxLimitConfig {
13
+ limit?: number;
14
+ mode?: MethodMaxLimitMode;
15
+ disableAllowed?: boolean;
16
+ }
17
+
18
+ export interface FileMaxLimitConfig {
19
+ limit?: number;
20
+ mode?: FileMaxLimitMode;
21
+ disableAllowed?: boolean;
22
+ }
10
23
 
11
24
  export interface ValidateCodeOptions {
12
- mode?: ValidationMode;
13
- newMethodsMaxLines?: number;
14
- strictNewMethodMaxLines?: number;
15
- modifiedMethodsMaxLines?: number;
16
- modifiedFilesMaxLines?: number;
25
+ methodMaxLimit?: MethodMaxLimitConfig;
26
+ fileMaxLimit?: FileMaxLimitConfig;
17
27
  requireReturnTypeMode?: ReturnTypeMode;
18
28
  noInlineTypeLiteralsMode?: NoInlineTypesMode;
19
29
  noAnyUnknownMode?: NoAnyUnknownMode;
@@ -23,69 +33,95 @@ export interface ExecutorResult {
23
33
  success: boolean;
24
34
  }
25
35
 
26
- export default async function runExecutor(
27
- options: ValidateCodeOptions,
28
- context: ExecutorContext
29
- ): Promise<ExecutorResult> {
30
- const mode: ValidationMode = options.mode ?? 'NORMAL';
31
-
32
- if (mode === 'OFF') {
33
- console.log('\n⏭️ Skipping all code validations (validationMode: OFF)\n');
34
- return { success: true };
35
- }
36
+ interface ParsedConfig {
37
+ methodLimit: number;
38
+ methodMode: MethodMaxLimitMode;
39
+ methodDisableAllowed: boolean;
40
+ fileLimit: number;
41
+ fileMode: FileMaxLimitMode;
42
+ fileDisableAllowed: boolean;
43
+ returnTypeMode: ReturnTypeMode;
44
+ noInlineTypesMode: NoInlineTypesMode;
45
+ noAnyUnknownMode: NoAnyUnknownMode;
46
+ }
36
47
 
37
- const returnTypeMode: ReturnTypeMode = options.requireReturnTypeMode ?? 'OFF';
38
- const noInlineTypesMode: NoInlineTypesMode = options.noInlineTypeLiteralsMode ?? 'OFF';
39
- const noAnyUnknownMode: NoAnyUnknownMode = options.noAnyUnknownMode ?? 'OFF';
48
+ function parseConfig(options: ValidateCodeOptions): ParsedConfig {
49
+ const methodConfig: MethodMaxLimitConfig = options.methodMaxLimit ?? {};
50
+ const fileConfig: FileMaxLimitConfig = options.fileMaxLimit ?? {};
51
+
52
+ return {
53
+ methodLimit: methodConfig.limit ?? 80,
54
+ methodMode: methodConfig.mode ?? 'NEW_AND_MODIFIED_METHODS',
55
+ methodDisableAllowed: methodConfig.disableAllowed ?? true,
56
+ fileLimit: fileConfig.limit ?? 900,
57
+ fileMode: fileConfig.mode ?? 'MODIFIED_FILES',
58
+ fileDisableAllowed: fileConfig.disableAllowed ?? true,
59
+ returnTypeMode: options.requireReturnTypeMode ?? 'OFF',
60
+ noInlineTypesMode: options.noInlineTypeLiteralsMode ?? 'OFF',
61
+ noAnyUnknownMode: options.noAnyUnknownMode ?? 'OFF',
62
+ };
63
+ }
40
64
 
41
- console.log('\n📏 Running Code Validations\n');
42
- console.log(` Validation mode: ${mode}${mode === 'STRICT' ? ' (disable comments ignored for modified code)' : ''}`);
43
- console.log(` New methods max: ${options.newMethodsMaxLines ?? 30} lines (soft limit)`);
44
- if (options.strictNewMethodMaxLines) {
45
- console.log(` New methods max: ${options.strictNewMethodMaxLines} lines (hard limit, no escape)`);
46
- }
47
- console.log(` Modified methods max: ${options.modifiedMethodsMaxLines ?? 80} lines`);
48
- console.log(` Modified files max: ${options.modifiedFilesMaxLines ?? 900} lines`);
49
- console.log(` Require return types: ${returnTypeMode}`);
50
- console.log(` No inline type literals: ${noInlineTypesMode}`);
51
- console.log(` No any/unknown: ${noAnyUnknownMode}`);
65
+ function logConfig(config: ParsedConfig): void {
66
+ console.log('\n\ud83d\udccf Running Code Validations\n');
67
+ console.log(` Method limits: mode=${config.methodMode}, limit=${config.methodLimit}, disableAllowed=${config.methodDisableAllowed}`);
68
+ console.log(` File limits: mode=${config.fileMode}, limit=${config.fileLimit}, disableAllowed=${config.fileDisableAllowed}`);
69
+ console.log(` Require return types: ${config.returnTypeMode}`);
70
+ console.log(` No inline type literals: ${config.noInlineTypesMode}`);
71
+ console.log(` No any/unknown: ${config.noAnyUnknownMode}`);
52
72
  console.log('');
73
+ }
53
74
 
54
- // Run all three validators sequentially to avoid interleaved output
55
- const newMethodsResult = await runNewMethodsExecutor(
56
- { max: options.newMethodsMaxLines ?? 30, strictMax: options.strictNewMethodMaxLines, mode },
57
- context
58
- );
75
+ function isAllOff(config: ParsedConfig): boolean {
76
+ return config.methodMode === 'OFF' && config.fileMode === 'OFF' &&
77
+ config.returnTypeMode === 'OFF' && config.noInlineTypesMode === 'OFF' &&
78
+ config.noAnyUnknownMode === 'OFF';
79
+ }
59
80
 
60
- const modifiedMethodsResult = await runModifiedMethodsExecutor(
61
- { max: options.modifiedMethodsMaxLines ?? 80, mode },
62
- context
63
- );
81
+ async function runMethodValidators(config: ParsedConfig, context: ExecutorContext): Promise<ExecutorResult[]> {
82
+ const results: ExecutorResult[] = [];
83
+ const runNew = config.methodMode === 'NEW_METHODS' || config.methodMode === 'NEW_AND_MODIFIED_METHODS';
84
+ const runModified = config.methodMode === 'NEW_AND_MODIFIED_METHODS' || config.methodMode === 'MODIFIED_FILES';
64
85
 
65
- const modifiedFilesResult = await runModifiedFilesExecutor(
66
- { max: options.modifiedFilesMaxLines ?? 900, mode },
67
- context
68
- );
86
+ if (runNew) {
87
+ results.push(await runNewMethodsExecutor({
88
+ limit: config.methodLimit,
89
+ mode: config.methodMode, disableAllowed: config.methodDisableAllowed,
90
+ }, context));
91
+ }
92
+ if (runModified) {
93
+ results.push(await runModifiedMethodsExecutor({
94
+ limit: config.methodLimit, mode: config.methodMode, disableAllowed: config.methodDisableAllowed,
95
+ }, context));
96
+ }
97
+ return results;
98
+ }
69
99
 
70
- const returnTypesResult = await runReturnTypesExecutor({ mode: returnTypeMode }, context);
100
+ export default async function runExecutor(
101
+ options: ValidateCodeOptions,
102
+ context: ExecutorContext
103
+ ): Promise<ExecutorResult> {
104
+ const config = parseConfig(options);
71
105
 
72
- const noInlineTypesResult = await runNoInlineTypesExecutor({ mode: noInlineTypesMode }, context);
106
+ if (isAllOff(config)) {
107
+ console.log('\n\u23ed\ufe0f Skipping all code validations (all modes: OFF)\n');
108
+ return { success: true };
109
+ }
73
110
 
74
- const noAnyUnknownResult = await runNoAnyUnknownExecutor({ mode: noAnyUnknownMode }, context);
111
+ logConfig(config);
75
112
 
76
- const allSuccess =
77
- newMethodsResult.success &&
78
- modifiedMethodsResult.success &&
79
- modifiedFilesResult.success &&
80
- returnTypesResult.success &&
81
- noInlineTypesResult.success &&
82
- noAnyUnknownResult.success;
113
+ const methodResults = await runMethodValidators(config, context);
114
+ const fileResult = await runModifiedFilesExecutor({
115
+ limit: config.fileLimit, mode: config.fileMode, disableAllowed: config.fileDisableAllowed,
116
+ }, context);
117
+ const returnTypesResult = await runReturnTypesExecutor({ mode: config.returnTypeMode }, context);
118
+ const noInlineTypesResult = await runNoInlineTypesExecutor({ mode: config.noInlineTypesMode }, context);
119
+ const noAnyUnknownResult = await runNoAnyUnknownExecutor({ mode: config.noAnyUnknownMode }, context);
83
120
 
84
- if (allSuccess) {
85
- console.log('\n✅ All code validations passed\n');
86
- } else {
87
- console.log('\n❌ Some code validations failed\n');
88
- }
121
+ const allSuccess = methodResults.every((r) => r.success) &&
122
+ fileResult.success && returnTypesResult.success &&
123
+ noInlineTypesResult.success && noAnyUnknownResult.success;
89
124
 
125
+ console.log(allSuccess ? '\n\u2705 All code validations passed\n' : '\n\u274c Some code validations failed\n');
90
126
  return { success: allSuccess };
91
127
  }
@@ -4,47 +4,66 @@
4
4
  "description": "Combined validation for new methods, modified methods, and file sizes. Configure via targetDefaults in nx.json for runtime options (no cache issues).",
5
5
  "type": "object",
6
6
  "properties": {
7
- "mode": {
8
- "type": "string",
9
- "enum": ["STRICT", "NORMAL", "OFF"],
10
- "description": "OFF: skip all validations. NORMAL: enforce limits, disable comments work. STRICT: enforce limits, no disable comments for modified code.",
11
- "default": "NORMAL"
12
- },
13
- "newMethodsMaxLines": {
14
- "type": "number",
15
- "description": "Soft limit: Maximum lines for NEW methods (can be bypassed with disable comment)",
16
- "default": 30
17
- },
18
- "strictNewMethodMaxLines": {
19
- "type": "number",
20
- "description": "Hard limit: Absolute maximum lines for NEW methods (CANNOT be bypassed). If not set, no hard limit is enforced."
21
- },
22
- "modifiedMethodsMaxLines": {
23
- "type": "number",
24
- "description": "Maximum lines for MODIFIED methods",
25
- "default": 80
7
+ "methodMaxLimit": {
8
+ "type": "object",
9
+ "description": "Configuration for method line limit validation",
10
+ "properties": {
11
+ "limit": {
12
+ "type": "number",
13
+ "description": "Maximum lines allowed for methods",
14
+ "default": 80
15
+ },
16
+ "mode": {
17
+ "type": "string",
18
+ "enum": ["OFF", "NEW_METHODS", "NEW_AND_MODIFIED_METHODS", "MODIFIED_FILES"],
19
+ "description": "OFF: skip validation. NEW_METHODS: only new methods in diff. NEW_AND_MODIFIED_METHODS: new methods + methods with changes. MODIFIED_FILES: all methods in modified files.",
20
+ "default": "NEW_AND_MODIFIED_METHODS"
21
+ },
22
+ "disableAllowed": {
23
+ "type": "boolean",
24
+ "description": "Whether disable comments work. When false, no escape hatch (like old STRICT mode).",
25
+ "default": true
26
+ }
27
+ }
26
28
  },
27
- "modifiedFilesMaxLines": {
28
- "type": "number",
29
- "description": "Maximum lines for MODIFIED files",
30
- "default": 900
29
+ "fileMaxLimit": {
30
+ "type": "object",
31
+ "description": "Configuration for file line limit validation",
32
+ "properties": {
33
+ "limit": {
34
+ "type": "number",
35
+ "description": "Maximum lines for modified files",
36
+ "default": 900
37
+ },
38
+ "mode": {
39
+ "type": "string",
40
+ "enum": ["OFF", "MODIFIED_FILES"],
41
+ "description": "OFF: skip validation. MODIFIED_FILES: all code in modified files.",
42
+ "default": "MODIFIED_FILES"
43
+ },
44
+ "disableAllowed": {
45
+ "type": "boolean",
46
+ "description": "Whether disable comments work. When false, no escape hatch (like old STRICT mode).",
47
+ "default": true
48
+ }
49
+ }
31
50
  },
32
51
  "requireReturnTypeMode": {
33
52
  "type": "string",
34
- "enum": ["OFF", "NEW_METHODS", "MODIFIED_AND_NEW_METHODS", "MODIFIED_FILES", "ALL"],
35
- "description": "OFF: skip return type validation. NEW_METHODS: only new methods in diff. MODIFIED_AND_NEW_METHODS: new methods + methods with changes. MODIFIED_FILES: all methods in modified files. ALL: all methods everywhere.",
53
+ "enum": ["OFF", "NEW_METHODS", "NEW_AND_MODIFIED_METHODS", "MODIFIED_FILES"],
54
+ "description": "OFF: skip return type validation. NEW_METHODS: only new methods in diff. NEW_AND_MODIFIED_METHODS: new methods + methods with changes. MODIFIED_FILES: all methods in modified files.",
36
55
  "default": "OFF"
37
56
  },
38
57
  "noInlineTypeLiteralsMode": {
39
58
  "type": "string",
40
- "enum": ["OFF", "NEW_METHODS", "MODIFIED_AND_NEW_METHODS", "MODIFIED_FILES", "ALL"],
41
- "description": "OFF: skip validation. NEW_METHODS: only new methods. MODIFIED_AND_NEW_METHODS: new + modified methods. MODIFIED_FILES: all in modified files. ALL: everywhere. Disallows inline type literals like { x: number } - use named types instead.",
59
+ "enum": ["OFF", "NEW_METHODS", "NEW_AND_MODIFIED_METHODS", "MODIFIED_FILES"],
60
+ "description": "OFF: skip validation. NEW_METHODS: only new methods. NEW_AND_MODIFIED_METHODS: new + modified methods. MODIFIED_FILES: all in modified files. Disallows inline type literals like { x: number } - use named types instead.",
42
61
  "default": "OFF"
43
62
  },
44
63
  "noAnyUnknownMode": {
45
64
  "type": "string",
46
- "enum": ["OFF", "MODIFIED_CODE", "MODIFIED_FILES", "ALL"],
47
- "description": "OFF: skip validation. MODIFIED_CODE: only changed lines in diff. MODIFIED_FILES: all in modified files. ALL: everywhere. Disallows `any` and `unknown` TypeScript keywords.",
65
+ "enum": ["OFF", "MODIFIED_CODE", "MODIFIED_FILES"],
66
+ "description": "OFF: skip validation. MODIFIED_CODE: only changed lines in diff. MODIFIED_FILES: all in modified files. Disallows `any` and `unknown` TypeScript keywords.",
48
67
  "default": "OFF"
49
68
  }
50
69
  },
@@ -13,10 +13,11 @@
13
13
  * The disable expires after 1 month from the date specified.
14
14
  */
15
15
  import type { ExecutorContext } from '@nx/devkit';
16
- export type ValidationMode = 'STRICT' | 'NORMAL' | 'OFF';
16
+ export type FileMaxLimitMode = 'OFF' | 'MODIFIED_FILES';
17
17
  export interface ValidateModifiedFilesOptions {
18
- max?: number;
19
- mode?: ValidationMode;
18
+ limit?: number;
19
+ mode?: FileMaxLimitMode;
20
+ disableAllowed?: boolean;
20
21
  }
21
22
  export interface ExecutorResult {
22
23
  success: boolean;