@opensip-cli/checks-universal 0.1.10 → 0.1.11
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/README.md +4 -2
- package/dist/__tests__/all-checks-execute.test.d.ts.map +1 -1
- package/dist/__tests__/all-checks-execute.test.js +0 -1
- package/dist/__tests__/all-checks-execute.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-10.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-10.test.js +0 -1
- package/dist/__tests__/behavior-fixtures-10.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-11.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-11.test.js +0 -1
- package/dist/__tests__/behavior-fixtures-11.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-12.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-12.test.js +0 -1
- package/dist/__tests__/behavior-fixtures-12.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-2.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-2.test.js +0 -1
- package/dist/__tests__/behavior-fixtures-2.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-3.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-3.test.js +0 -1
- package/dist/__tests__/behavior-fixtures-3.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-4.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-4.test.js +0 -1
- package/dist/__tests__/behavior-fixtures-4.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-5.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-5.test.js +0 -1
- package/dist/__tests__/behavior-fixtures-5.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-6.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-6.test.js +0 -1
- package/dist/__tests__/behavior-fixtures-6.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-7.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-7.test.js +0 -1
- package/dist/__tests__/behavior-fixtures-7.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-8.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-8.test.js +2 -3
- package/dist/__tests__/behavior-fixtures-8.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures-9.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures-9.test.js +0 -1
- package/dist/__tests__/behavior-fixtures-9.test.js.map +1 -1
- package/dist/__tests__/behavior-fixtures.test.d.ts.map +1 -1
- package/dist/__tests__/behavior-fixtures.test.js +10 -9
- package/dist/__tests__/behavior-fixtures.test.js.map +1 -1
- package/dist/__tests__/file-length-limit.test.js +12 -1
- package/dist/__tests__/file-length-limit.test.js.map +1 -1
- package/dist/checks/architecture/__tests__/tool-identity-single-source.test.d.ts +2 -0
- package/dist/checks/architecture/__tests__/tool-identity-single-source.test.d.ts.map +1 -0
- package/dist/checks/architecture/__tests__/tool-identity-single-source.test.js +61 -0
- package/dist/checks/architecture/__tests__/tool-identity-single-source.test.js.map +1 -0
- package/dist/checks/architecture/docker-best-practices-analyze.d.ts +7 -0
- package/dist/checks/architecture/docker-best-practices-analyze.d.ts.map +1 -0
- package/dist/checks/architecture/docker-best-practices-analyze.js +301 -0
- package/dist/checks/architecture/docker-best-practices-analyze.js.map +1 -0
- package/dist/checks/architecture/docker-best-practices-patterns.d.ts +50 -0
- package/dist/checks/architecture/docker-best-practices-patterns.d.ts.map +1 -0
- package/dist/checks/architecture/docker-best-practices-patterns.js +51 -0
- package/dist/checks/architecture/docker-best-practices-patterns.js.map +1 -0
- package/dist/checks/architecture/docker-best-practices.d.ts.map +1 -1
- package/dist/checks/architecture/docker-best-practices.js +1 -367
- package/dist/checks/architecture/docker-best-practices.js.map +1 -1
- package/dist/checks/architecture/docker-ignore-validation.d.ts.map +1 -1
- package/dist/checks/architecture/docker-ignore-validation.js +0 -1
- package/dist/checks/architecture/docker-ignore-validation.js.map +1 -1
- package/dist/checks/architecture/docker-version-sync.d.ts.map +1 -1
- package/dist/checks/architecture/docker-version-sync.js +0 -1
- package/dist/checks/architecture/docker-version-sync.js.map +1 -1
- package/dist/checks/architecture/heavy-import-detection.d.ts.map +1 -1
- package/dist/checks/architecture/heavy-import-detection.js +1 -0
- package/dist/checks/architecture/heavy-import-detection.js.map +1 -1
- package/dist/checks/architecture/index.d.ts +1 -0
- package/dist/checks/architecture/index.d.ts.map +1 -1
- package/dist/checks/architecture/index.js +1 -0
- package/dist/checks/architecture/index.js.map +1 -1
- package/dist/checks/architecture/modules/empty-package-detection.d.ts.map +1 -1
- package/dist/checks/architecture/modules/empty-package-detection.js +0 -1
- package/dist/checks/architecture/modules/empty-package-detection.js.map +1 -1
- package/dist/checks/architecture/modules/interface-implementation-consistency-constants.d.ts +16 -0
- package/dist/checks/architecture/modules/interface-implementation-consistency-constants.d.ts.map +1 -0
- package/dist/checks/architecture/modules/interface-implementation-consistency-constants.js +182 -0
- package/dist/checks/architecture/modules/interface-implementation-consistency-constants.js.map +1 -0
- package/dist/checks/architecture/modules/interface-implementation-consistency-parse.d.ts +23 -0
- package/dist/checks/architecture/modules/interface-implementation-consistency-parse.d.ts.map +1 -0
- package/dist/checks/architecture/modules/interface-implementation-consistency-parse.js +235 -0
- package/dist/checks/architecture/modules/interface-implementation-consistency-parse.js.map +1 -0
- package/dist/checks/architecture/modules/interface-implementation-consistency.d.ts.map +1 -1
- package/dist/checks/architecture/modules/interface-implementation-consistency.js +4 -462
- package/dist/checks/architecture/modules/interface-implementation-consistency.js.map +1 -1
- package/dist/checks/architecture/node-version-consistency.d.ts.map +1 -1
- package/dist/checks/architecture/node-version-consistency.js +0 -2
- package/dist/checks/architecture/node-version-consistency.js.map +1 -1
- package/dist/checks/architecture/stale-build-artifacts.d.ts.map +1 -1
- package/dist/checks/architecture/stale-build-artifacts.js +0 -1
- package/dist/checks/architecture/stale-build-artifacts.js.map +1 -1
- package/dist/checks/architecture/tool-has-manifest.d.ts.map +1 -1
- package/dist/checks/architecture/tool-has-manifest.js +0 -1
- package/dist/checks/architecture/tool-has-manifest.js.map +1 -1
- package/dist/checks/architecture/tool-identity-single-source.d.ts +23 -0
- package/dist/checks/architecture/tool-identity-single-source.d.ts.map +1 -0
- package/dist/checks/architecture/tool-identity-single-source.js +126 -0
- package/dist/checks/architecture/tool-identity-single-source.js.map +1 -0
- package/dist/checks/documentation/_public-api-graph.d.ts +3 -26
- package/dist/checks/documentation/_public-api-graph.d.ts.map +1 -1
- package/dist/checks/documentation/_public-api-graph.js +3 -300
- package/dist/checks/documentation/_public-api-graph.js.map +1 -1
- package/dist/checks/documentation/directive-audit.d.ts.map +1 -1
- package/dist/checks/documentation/directive-audit.js +0 -1
- package/dist/checks/documentation/directive-audit.js.map +1 -1
- package/dist/checks/file-length-limit.d.ts +7 -0
- package/dist/checks/file-length-limit.d.ts.map +1 -1
- package/dist/checks/file-length-limit.js +14 -2
- package/dist/checks/file-length-limit.js.map +1 -1
- package/dist/checks/quality/code-structure/dead-code.d.ts.map +1 -1
- package/dist/checks/quality/code-structure/dead-code.js +0 -1
- package/dist/checks/quality/code-structure/dead-code.js.map +1 -1
- package/dist/checks/quality/dependency-version-consistency.d.ts.map +1 -1
- package/dist/checks/quality/dependency-version-consistency.js +0 -2
- package/dist/checks/quality/dependency-version-consistency.js.map +1 -1
- package/dist/checks/quality/frontend/navigation-typing.d.ts.map +1 -1
- package/dist/checks/quality/frontend/navigation-typing.js +0 -1
- package/dist/checks/quality/frontend/navigation-typing.js.map +1 -1
- package/dist/checks/quality/index.d.ts +1 -0
- package/dist/checks/quality/index.d.ts.map +1 -1
- package/dist/checks/quality/index.js +1 -0
- package/dist/checks/quality/index.js.map +1 -1
- package/dist/checks/quality/linting/eslint-justifications.d.ts.map +1 -1
- package/dist/checks/quality/linting/eslint-justifications.js +0 -1
- package/dist/checks/quality/linting/eslint-justifications.js.map +1 -1
- package/dist/checks/quality/no-raw-regex-on-code.d.ts.map +1 -1
- package/dist/checks/quality/no-raw-regex-on-code.js +2 -3
- package/dist/checks/quality/no-raw-regex-on-code.js.map +1 -1
- package/dist/checks/quality/patterns/__tests__/performance-anti-patterns-fp.test.d.ts +5 -0
- package/dist/checks/quality/patterns/__tests__/performance-anti-patterns-fp.test.d.ts.map +1 -0
- package/dist/checks/quality/patterns/__tests__/performance-anti-patterns-fp.test.js +66 -0
- package/dist/checks/quality/patterns/__tests__/performance-anti-patterns-fp.test.js.map +1 -0
- package/dist/checks/quality/patterns/performance-anti-patterns.d.ts +3 -0
- package/dist/checks/quality/patterns/performance-anti-patterns.d.ts.map +1 -1
- package/dist/checks/quality/patterns/performance-anti-patterns.js +47 -30
- package/dist/checks/quality/patterns/performance-anti-patterns.js.map +1 -1
- package/dist/checks/quality/yagni-ignore-hygiene.d.ts +10 -0
- package/dist/checks/quality/yagni-ignore-hygiene.d.ts.map +1 -0
- package/dist/checks/quality/yagni-ignore-hygiene.js +87 -0
- package/dist/checks/quality/yagni-ignore-hygiene.js.map +1 -0
- package/dist/checks/quality/yagni-ignore-hygiene.test.d.ts +5 -0
- package/dist/checks/quality/yagni-ignore-hygiene.test.d.ts.map +1 -0
- package/dist/checks/quality/yagni-ignore-hygiene.test.js +37 -0
- package/dist/checks/quality/yagni-ignore-hygiene.test.js.map +1 -0
- package/dist/checks/resilience/batch-operation-limits.d.ts +13 -0
- package/dist/checks/resilience/batch-operation-limits.d.ts.map +1 -0
- package/dist/checks/resilience/batch-operation-limits.js +160 -0
- package/dist/checks/resilience/batch-operation-limits.js.map +1 -0
- package/dist/checks/resilience/batch-operations.d.ts +2 -21
- package/dist/checks/resilience/batch-operations.d.ts.map +1 -1
- package/dist/checks/resilience/batch-operations.js +2 -420
- package/dist/checks/resilience/batch-operations.js.map +1 -1
- package/dist/checks/resilience/dangerous-config-defaults.d.ts.map +1 -1
- package/dist/checks/resilience/dangerous-config-defaults.js +0 -1
- package/dist/checks/resilience/dangerous-config-defaults.js.map +1 -1
- package/dist/checks/resilience/exit-code-correctness.d.ts.map +1 -1
- package/dist/checks/resilience/exit-code-correctness.js +0 -1
- package/dist/checks/resilience/exit-code-correctness.js.map +1 -1
- package/dist/checks/resilience/no-process-exit-in-finally.d.ts.map +1 -1
- package/dist/checks/resilience/no-process-exit-in-finally.js +0 -1
- package/dist/checks/resilience/no-process-exit-in-finally.js.map +1 -1
- package/dist/checks/resilience/readline-cleanup.d.ts.map +1 -1
- package/dist/checks/resilience/readline-cleanup.js +0 -1
- package/dist/checks/resilience/readline-cleanup.js.map +1 -1
- package/dist/checks/resilience/reentrancy-guard.d.ts.map +1 -1
- package/dist/checks/resilience/reentrancy-guard.js +0 -1
- package/dist/checks/resilience/reentrancy-guard.js.map +1 -1
- package/dist/checks/resilience/service-patterns.d.ts.map +1 -1
- package/dist/checks/resilience/service-patterns.js +0 -1
- package/dist/checks/resilience/service-patterns.js.map +1 -1
- package/dist/checks/resilience/unbounded-memory.d.ts +13 -0
- package/dist/checks/resilience/unbounded-memory.d.ts.map +1 -0
- package/dist/checks/resilience/unbounded-memory.js +229 -0
- package/dist/checks/resilience/unbounded-memory.js.map +1 -0
- package/dist/checks/security/csp-headers.d.ts.map +1 -1
- package/dist/checks/security/csp-headers.js +0 -1
- package/dist/checks/security/csp-headers.js.map +1 -1
- package/dist/checks/security/hasura-production-config.d.ts.map +1 -1
- package/dist/checks/security/hasura-production-config.js +0 -1
- package/dist/checks/security/hasura-production-config.js.map +1 -1
- package/dist/checks/security/jwt-validation.d.ts.map +1 -1
- package/dist/checks/security/jwt-validation.js +0 -2
- package/dist/checks/security/jwt-validation.js.map +1 -1
- package/dist/checks/security/package-supply-chain-policy.d.ts.map +1 -1
- package/dist/checks/security/package-supply-chain-policy.js +9 -15
- package/dist/checks/security/package-supply-chain-policy.js.map +1 -1
- package/dist/checks/security/semgrep-scan.d.ts.map +1 -1
- package/dist/checks/security/semgrep-scan.js +0 -1
- package/dist/checks/security/semgrep-scan.js.map +1 -1
- package/dist/checks/security/use-centralized-crypto.d.ts.map +1 -1
- package/dist/checks/security/use-centralized-crypto.js +2 -3
- package/dist/checks/security/use-centralized-crypto.js.map +1 -1
- package/dist/checks/testing/test-convention-consistency.d.ts.map +1 -1
- package/dist/checks/testing/test-convention-consistency.js +0 -1
- package/dist/checks/testing/test-convention-consistency.js.map +1 -1
- package/dist/checks/testing/test-file-pairing.js +3 -6
- package/dist/checks/testing/test-file-pairing.js.map +1 -1
- package/dist/display/architecture.d.ts.map +1 -1
- package/dist/display/architecture.js +1 -0
- package/dist/display/architecture.js.map +1 -1
- package/dist/display/quality.d.ts.map +1 -1
- package/dist/display/quality.js +1 -0
- package/dist/display/quality.js.map +1 -1
- package/dist/display/types.d.ts.map +1 -1
- package/dist/display/types.js +0 -1
- package/dist/display/types.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,468 +1,12 @@
|
|
|
1
|
-
// @fitness-ignore-file file-length-limit -- Fitness check with TypeScript AST traversal and interface consistency analysis
|
|
2
|
-
// @fitness-ignore-file toctou-race-condition -- TOCTOU acceptable in this non-concurrent context
|
|
3
1
|
// @fitness-ignore-file interface-implementation-consistency -- Fitness check definition file; references interface patterns for detection, not actual implementations
|
|
4
|
-
// @fitness-ignore-file performance-anti-patterns -- sequential file reading and bounded violation loops; not hot paths
|
|
5
2
|
/**
|
|
6
3
|
* @fileoverview Interface Implementation Consistency check
|
|
7
4
|
*/
|
|
8
5
|
import { defineCheck } from '@opensip-cli/fitness';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
// Note: the interface header may span multiple lines (a generic-parameter
|
|
12
|
-
// declaration on one line, `extends OtherIface<TParam> {` on the next). The
|
|
13
|
-
// regex matches the first line; the parser scans forward for an `extends`
|
|
14
|
-
// clause until it finds `{`. See `tryStartInterface` / `parseInterfaces`.
|
|
15
|
-
//
|
|
16
|
-
// The `extends` capture uses a greedy character class that includes `<>`
|
|
17
|
-
// so generic type arguments (e.g. `extends IFoo<TParam>`) are captured
|
|
18
|
-
// alongside the bare name. `parseTypeList` / `stripGenerics` handle the
|
|
19
|
-
// downstream normalisation.
|
|
20
|
-
const INTERFACE_PATTERN = /^(?:export\s+)?interface\s+(\w+)(?:<[^>]{1,200}>)?(?:\s+extends\s+([\w,\s<>]+))?/;
|
|
21
|
-
// Standalone `extends` clause continuation for multi-line interface headers
|
|
22
|
-
// — captures the type list (which may include generics like
|
|
23
|
-
// `IFoo<TParam>, IBar`).
|
|
24
|
-
// eslint-disable-next-line sonarjs/slow-regex -- anchored line match with bounded prefix; `[\w,\s<>]+?` is followed by `\s*\{?\s*$` and exhausts on bounded input
|
|
25
|
-
const INTERFACE_EXTENDS_CONTINUATION = /^\s{0,40}extends\s+([\w,\s<>]+?)\s*\{?\s*$/;
|
|
26
|
-
const CLASS_PATTERN =
|
|
27
|
-
// eslint-disable-next-line sonarjs/regex-complexity -- single regex captures class name + optional extends + optional implements; splitting requires multiple anchored matches
|
|
28
|
-
/^(?:export\s+)?class\s+(\w+)(?:\s+extends\s+\w+(?:<[^>]{1,200}>)?)?(?:\s+implements\s+([\w,\s<>]+))?/;
|
|
29
|
-
const METHOD_IN_INTERFACE_PATTERN = /^\s{0,20}(\w+)\??\s{0,5}\(/;
|
|
30
|
-
const METHOD_IN_CLASS_PATTERN = /^\s{0,20}(?:(?:public|private|protected)\s+)?(?:async\s+)?(?:static\s+)?(\w+)\s{0,5}\(/;
|
|
31
|
-
// Detects the `static` modifier on a class method declaration (after any
|
|
32
|
-
// visibility modifier and before the method name). Interfaces cannot declare
|
|
33
|
-
// statics, so `static fromX()` factories must be skipped — comparing them
|
|
34
|
-
// against an interface's instance methods is always a false positive.
|
|
35
|
-
const STATIC_MODIFIER_PATTERN = /^\s{0,20}(?:(?:public|private|protected)\s+)?(?:async\s+)?static\s+\w+\s{0,5}\(/;
|
|
36
|
-
// Pre-compiled patterns for isMethodDefinition
|
|
37
|
-
const VISIBILITY_MODIFIER_PATTERN = /^(?:public|protected)\s/;
|
|
38
|
-
const ASYNC_STATIC_METHOD_PATTERN = /^(?:async|static)\s{1,5}[a-zA-Z_]\w{0,99}\s{0,5}\(/;
|
|
39
|
-
const TYPE_ANNOTATION_PATTERN = /\):\s{0,5}[a-zA-Z]/;
|
|
40
|
-
const METHOD_BODY_PATTERN = /\)\s{0,5}\{/;
|
|
41
|
-
const CLASS_LEVEL_METHOD_PATTERN = /^[a-zA-Z_]\w{0,99}\s{0,5}\(/;
|
|
42
|
-
const JS_KEYWORDS = new Set([
|
|
43
|
-
'if',
|
|
44
|
-
'else',
|
|
45
|
-
'while',
|
|
46
|
-
'for',
|
|
47
|
-
'do',
|
|
48
|
-
'switch',
|
|
49
|
-
'case',
|
|
50
|
-
'break',
|
|
51
|
-
'continue',
|
|
52
|
-
'return',
|
|
53
|
-
'throw',
|
|
54
|
-
'try',
|
|
55
|
-
'catch',
|
|
56
|
-
'finally',
|
|
57
|
-
'new',
|
|
58
|
-
'delete',
|
|
59
|
-
'typeof',
|
|
60
|
-
'instanceof',
|
|
61
|
-
'void',
|
|
62
|
-
'in',
|
|
63
|
-
'of',
|
|
64
|
-
'function',
|
|
65
|
-
'class',
|
|
66
|
-
'extends',
|
|
67
|
-
'super',
|
|
68
|
-
'this',
|
|
69
|
-
'import',
|
|
70
|
-
'export',
|
|
71
|
-
'default',
|
|
72
|
-
'const',
|
|
73
|
-
'let',
|
|
74
|
-
'var',
|
|
75
|
-
'await',
|
|
76
|
-
'yield',
|
|
77
|
-
'static',
|
|
78
|
-
'get',
|
|
79
|
-
'set',
|
|
80
|
-
'async',
|
|
81
|
-
]);
|
|
82
|
-
const ALLOWED_EXTRA_METHODS = new Set([
|
|
83
|
-
'dispose',
|
|
84
|
-
'destroy',
|
|
85
|
-
'cleanup',
|
|
86
|
-
'close',
|
|
87
|
-
'shutdown',
|
|
88
|
-
'terminate',
|
|
89
|
-
'initialize',
|
|
90
|
-
'init',
|
|
91
|
-
'setup',
|
|
92
|
-
'configure',
|
|
93
|
-
'start',
|
|
94
|
-
'stop',
|
|
95
|
-
'toJSON',
|
|
96
|
-
'toString',
|
|
97
|
-
'valueOf',
|
|
98
|
-
'clone',
|
|
99
|
-
'copy',
|
|
100
|
-
'getStatus',
|
|
101
|
-
'getStats',
|
|
102
|
-
'getHealthStatus',
|
|
103
|
-
'getMetrics',
|
|
104
|
-
'getSuccessRate',
|
|
105
|
-
'subscribe',
|
|
106
|
-
'unsubscribe',
|
|
107
|
-
'publish',
|
|
108
|
-
'emit',
|
|
109
|
-
'on',
|
|
110
|
-
'off',
|
|
111
|
-
'once',
|
|
112
|
-
'listeners',
|
|
113
|
-
'recordMetric',
|
|
114
|
-
'recordMetrics',
|
|
115
|
-
'flush',
|
|
116
|
-
'recordActivity',
|
|
117
|
-
'exists',
|
|
118
|
-
'validate',
|
|
119
|
-
'isValid',
|
|
120
|
-
'isExpired',
|
|
121
|
-
'isEnabled',
|
|
122
|
-
'validateRecipient',
|
|
123
|
-
'send',
|
|
124
|
-
'receive',
|
|
125
|
-
'healthCheck',
|
|
126
|
-
'isHealthy',
|
|
127
|
-
'getDeliveryStatus',
|
|
128
|
-
'trace',
|
|
129
|
-
'debug',
|
|
130
|
-
'info',
|
|
131
|
-
'warn',
|
|
132
|
-
'error',
|
|
133
|
-
'fatal',
|
|
134
|
-
'log',
|
|
135
|
-
'authenticate',
|
|
136
|
-
'refresh',
|
|
137
|
-
'revoke',
|
|
138
|
-
'invalidate',
|
|
139
|
-
'invalidateAll',
|
|
140
|
-
'clearCache',
|
|
141
|
-
'warmCache',
|
|
142
|
-
'getCacheStats',
|
|
143
|
-
'getCacheStatistics',
|
|
144
|
-
'getConfig',
|
|
145
|
-
'clear',
|
|
146
|
-
'reset',
|
|
147
|
-
'resetMetrics',
|
|
148
|
-
'getInstance',
|
|
149
|
-
'isInitialized',
|
|
150
|
-
'getInitializationState',
|
|
151
|
-
'getName',
|
|
152
|
-
'getLogLevel',
|
|
153
|
-
'hasTarget',
|
|
154
|
-
'getFilePath',
|
|
155
|
-
'getLogGroupName',
|
|
156
|
-
'listDomains',
|
|
157
|
-
'listPolicies',
|
|
158
|
-
'isRegistered',
|
|
159
|
-
'create',
|
|
160
|
-
'createWithStoreConfig',
|
|
161
|
-
'createStore',
|
|
162
|
-
'createAlgorithmStrategy',
|
|
163
|
-
'createStoreStrategy',
|
|
164
|
-
'createValidationStrategy',
|
|
165
|
-
'getProviderInstance',
|
|
166
|
-
'add',
|
|
167
|
-
'remove',
|
|
168
|
-
'getChildren',
|
|
169
|
-
'getComponentInfo',
|
|
170
|
-
'getMostUsedFallback',
|
|
171
|
-
'hasHealthCheck',
|
|
172
|
-
'hasFallback',
|
|
173
|
-
'isSensitiveField',
|
|
174
|
-
'recommendStrategy',
|
|
175
|
-
'supportsTimestamp',
|
|
176
|
-
'getConnectionStatus',
|
|
177
|
-
'updateConnectionStatus',
|
|
178
|
-
'getPermissions',
|
|
179
|
-
'addPermission',
|
|
180
|
-
'removePermission',
|
|
181
|
-
'getHealthCheckError',
|
|
182
|
-
'getAllEvents',
|
|
183
|
-
'archiveEvents',
|
|
184
|
-
'listObjects',
|
|
185
|
-
'setProvider',
|
|
186
|
-
'setSecret',
|
|
187
|
-
'deleteSecret',
|
|
188
|
-
'getAllSessions',
|
|
189
|
-
'createSession',
|
|
190
|
-
'query',
|
|
191
|
-
'getEventCount',
|
|
192
|
-
'size',
|
|
193
|
-
'createInvalidation',
|
|
194
|
-
'getInvalidation',
|
|
195
|
-
'waitForInvalidation',
|
|
196
|
-
'createRateLimiter',
|
|
197
|
-
'fromConfig',
|
|
198
|
-
'createCacheKey',
|
|
199
|
-
'toEnvVarName',
|
|
200
|
-
]);
|
|
201
|
-
/**
|
|
202
|
-
* Strips generic type-parameter clauses from a type reference. Handles
|
|
203
|
-
* nested generics (`Foo<Bar<Baz>>`) by repeatedly removing innermost
|
|
204
|
-
* `<...>` until idempotent. Used both for resolving interface lookups
|
|
205
|
-
* (`IFoo<T>` -> `IFoo`) and for the `extends` / `implements` clause text
|
|
206
|
-
* which may carry generic args.
|
|
207
|
-
*/
|
|
208
|
-
function stripGenerics(typeRef) {
|
|
209
|
-
let prev = typeRef;
|
|
210
|
-
for (;;) {
|
|
211
|
-
const next = prev.replaceAll(/<[^<>]*>/g, '');
|
|
212
|
-
if (next === prev)
|
|
213
|
-
return next.trim();
|
|
214
|
-
prev = next;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
function countBraces(line) {
|
|
218
|
-
let open = 0;
|
|
219
|
-
let close = 0;
|
|
220
|
-
for (const char of line) {
|
|
221
|
-
if (char === '{')
|
|
222
|
-
open++;
|
|
223
|
-
if (char === '}')
|
|
224
|
-
close++;
|
|
225
|
-
}
|
|
226
|
-
return { open, close };
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Splits a comma-separated type list at angle-bracket depth 0 only. Naive
|
|
230
|
-
* `.split(',')` would shred multi-arg generics like
|
|
231
|
-
* `TypedPipelineStep<Input, Output>` into `TypedPipelineStep<Input` and
|
|
232
|
-
* `Output>` — both garbage.
|
|
233
|
-
*/
|
|
234
|
-
function splitTopLevel(raw) {
|
|
235
|
-
const segments = [];
|
|
236
|
-
let depth = 0;
|
|
237
|
-
let buf = '';
|
|
238
|
-
for (const ch of raw) {
|
|
239
|
-
if (ch === '<')
|
|
240
|
-
depth++;
|
|
241
|
-
else if (ch === '>')
|
|
242
|
-
depth = Math.max(0, depth - 1);
|
|
243
|
-
if (ch === ',' && depth === 0) {
|
|
244
|
-
segments.push(buf);
|
|
245
|
-
buf = '';
|
|
246
|
-
continue;
|
|
247
|
-
}
|
|
248
|
-
buf += ch;
|
|
249
|
-
}
|
|
250
|
-
if (buf.length > 0)
|
|
251
|
-
segments.push(buf);
|
|
252
|
-
return segments;
|
|
253
|
-
}
|
|
254
|
-
function parseTypeList(raw) {
|
|
255
|
-
return splitTopLevel(raw)
|
|
256
|
-
.map((segment) => stripGenerics(segment.trim()))
|
|
257
|
-
.filter(Boolean);
|
|
258
|
-
}
|
|
259
|
-
function tryStartInterface(line, lineIndex) {
|
|
260
|
-
const match = INTERFACE_PATTERN.exec(line);
|
|
261
|
-
if (!match?.[1])
|
|
262
|
-
return null;
|
|
263
|
-
return {
|
|
264
|
-
name: match[1],
|
|
265
|
-
extends: parseTypeList(match[2] ?? ''),
|
|
266
|
-
startLine: lineIndex + 1,
|
|
267
|
-
methods: [],
|
|
268
|
-
braces: 0,
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
function extractInterfaceMethod(line) {
|
|
272
|
-
const methodMatch = METHOD_IN_INTERFACE_PATTERN.exec(line);
|
|
273
|
-
if (!methodMatch?.[1])
|
|
274
|
-
return null;
|
|
275
|
-
/* v8 ignore next 2 -- defensive: rare edge cases for keyword names and inline comments in interfaces */
|
|
276
|
-
if (JS_KEYWORDS.has(methodMatch[1]))
|
|
277
|
-
return null;
|
|
278
|
-
if (line.includes('//'))
|
|
279
|
-
return null;
|
|
280
|
-
return methodMatch[1];
|
|
281
|
-
}
|
|
282
|
-
function parseInterfaces(content, file) {
|
|
283
|
-
const interfaces = [];
|
|
284
|
-
const lines = content.split('\n');
|
|
285
|
-
let current = null;
|
|
286
|
-
for (const [i, line_] of lines.entries()) {
|
|
287
|
-
/* v8 ignore next -- defensive: lines.entries() never yields undefined */
|
|
288
|
-
const line = line_ ?? '';
|
|
289
|
-
const justStarted = current === null;
|
|
290
|
-
current ??= tryStartInterface(line, i);
|
|
291
|
-
if (!current)
|
|
292
|
-
continue;
|
|
293
|
-
// Multi-line interface header: when an `extends` clause appears on a
|
|
294
|
-
// continuation line before the opening `{`, capture it. The first
|
|
295
|
-
// line's extends (if any) was parsed by `tryStartInterface`; we only
|
|
296
|
-
// pick up the continuation when the body has not yet opened.
|
|
297
|
-
if (!justStarted && current.braces === 0 && current.extends.length === 0) {
|
|
298
|
-
const continuationMatch = INTERFACE_EXTENDS_CONTINUATION.exec(line);
|
|
299
|
-
if (continuationMatch?.[1]) {
|
|
300
|
-
current.extends = parseTypeList(continuationMatch[1]);
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
const hadBraces = current.braces > 0;
|
|
304
|
-
const { open, close } = countBraces(line);
|
|
305
|
-
current.braces += open - close;
|
|
306
|
-
const method = extractInterfaceMethod(line);
|
|
307
|
-
if (method) {
|
|
308
|
-
current.methods.push(method);
|
|
309
|
-
}
|
|
310
|
-
if (current.braces === 0 && (hadBraces || open > 0)) {
|
|
311
|
-
interfaces.push({
|
|
312
|
-
name: current.name,
|
|
313
|
-
extends: current.extends,
|
|
314
|
-
methods: current.methods,
|
|
315
|
-
startLine: current.startLine,
|
|
316
|
-
file,
|
|
317
|
-
});
|
|
318
|
-
current = null;
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
return interfaces;
|
|
322
|
-
}
|
|
323
|
-
/* v8 ignore start -- method-definition heuristic with many edge-case branches; covered indirectly via class parsing tests */
|
|
324
|
-
function isMethodDefinition(line) {
|
|
325
|
-
const trimmed = line.trim();
|
|
326
|
-
const leadingWhitespace = line.length - line.trimStart().length;
|
|
327
|
-
if (leadingWhitespace > 4)
|
|
328
|
-
return false;
|
|
329
|
-
if (trimmed.endsWith(');'))
|
|
330
|
-
return false;
|
|
331
|
-
if (trimmed.endsWith('),') || trimmed.endsWith('(,'))
|
|
332
|
-
return false;
|
|
333
|
-
if (VISIBILITY_MODIFIER_PATTERN.test(trimmed))
|
|
334
|
-
return true;
|
|
335
|
-
if (ASYNC_STATIC_METHOD_PATTERN.test(trimmed))
|
|
336
|
-
return true;
|
|
337
|
-
if (TYPE_ANNOTATION_PATTERN.test(trimmed) || METHOD_BODY_PATTERN.test(trimmed))
|
|
338
|
-
return true;
|
|
339
|
-
if (leadingWhitespace <= 2 && CLASS_LEVEL_METHOD_PATTERN.test(trimmed))
|
|
340
|
-
return true;
|
|
341
|
-
return false;
|
|
342
|
-
}
|
|
343
|
-
function tryStartClass(line, lineIndex) {
|
|
344
|
-
const match = CLASS_PATTERN.exec(line);
|
|
345
|
-
if (!match?.[1])
|
|
346
|
-
return null;
|
|
347
|
-
return {
|
|
348
|
-
name: match[1],
|
|
349
|
-
// `parseTypeList` strips generic args so `implements IFoo<T>` is keyed
|
|
350
|
-
// by the bare interface name, matching the `allInterfaces` map.
|
|
351
|
-
/* v8 ignore next -- defensive: regex group [2] may be undefined when no implements clause is present */
|
|
352
|
-
implements: parseTypeList(match[2] ?? ''),
|
|
353
|
-
startLine: lineIndex + 1,
|
|
354
|
-
methods: [],
|
|
355
|
-
braces: 0,
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
/* v8 ignore start -- class-method extraction has many edge-case skip paths; covered indirectly */
|
|
359
|
-
function extractClassMethod(line) {
|
|
360
|
-
const trimmed = line.trim();
|
|
361
|
-
if (trimmed.startsWith('private') || trimmed.startsWith('protected'))
|
|
362
|
-
return null;
|
|
363
|
-
if (line.includes('//'))
|
|
364
|
-
return null;
|
|
365
|
-
// Skip static methods. Interfaces cannot declare static members, so
|
|
366
|
-
// a class's `static fromX()` factory or `static create()` would always
|
|
367
|
-
// appear to be an "extra" method — that's a false positive.
|
|
368
|
-
if (STATIC_MODIFIER_PATTERN.test(line))
|
|
369
|
-
return null;
|
|
370
|
-
const methodMatch = METHOD_IN_CLASS_PATTERN.exec(line);
|
|
371
|
-
if (!methodMatch?.[1])
|
|
372
|
-
return null;
|
|
373
|
-
if (methodMatch[1] === 'constructor')
|
|
374
|
-
return null;
|
|
375
|
-
if (JS_KEYWORDS.has(methodMatch[1]))
|
|
376
|
-
return null;
|
|
377
|
-
if (!isMethodDefinition(line))
|
|
378
|
-
return null;
|
|
379
|
-
return methodMatch[1];
|
|
380
|
-
}
|
|
381
|
-
/* v8 ignore stop */
|
|
382
|
-
function parseClasses(content, file) {
|
|
383
|
-
const classes = [];
|
|
384
|
-
const lines = content.split('\n');
|
|
385
|
-
let current = null;
|
|
386
|
-
for (const [i, line_] of lines.entries()) {
|
|
387
|
-
/* v8 ignore next -- defensive: lines.entries() never yields undefined */
|
|
388
|
-
const line = line_ ?? '';
|
|
389
|
-
current ??= tryStartClass(line, i);
|
|
390
|
-
if (!current)
|
|
391
|
-
continue;
|
|
392
|
-
const hadBraces = current.braces > 0;
|
|
393
|
-
const { open, close } = countBraces(line);
|
|
394
|
-
current.braces += open - close;
|
|
395
|
-
const method = extractClassMethod(line);
|
|
396
|
-
if (method) {
|
|
397
|
-
current.methods.push(method);
|
|
398
|
-
}
|
|
399
|
-
if (current.braces === 0 && (hadBraces || open > 0)) {
|
|
400
|
-
classes.push({
|
|
401
|
-
name: current.name,
|
|
402
|
-
implements: current.implements,
|
|
403
|
-
methods: [...new Set(current.methods)],
|
|
404
|
-
startLine: current.startLine,
|
|
405
|
-
file,
|
|
406
|
-
});
|
|
407
|
-
current = null;
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
return classes;
|
|
411
|
-
}
|
|
412
|
-
function mergeInterface(allInterfaces, iface) {
|
|
413
|
-
const existing = allInterfaces.get(iface.name);
|
|
414
|
-
if (!existing) {
|
|
415
|
-
allInterfaces.set(iface.name, iface);
|
|
416
|
-
return;
|
|
417
|
-
}
|
|
418
|
-
const methodSet = new Set(existing.methods);
|
|
419
|
-
for (const method of iface.methods)
|
|
420
|
-
methodSet.add(method);
|
|
421
|
-
allInterfaces.set(iface.name, { ...existing, methods: [...methodSet] });
|
|
422
|
-
}
|
|
423
|
-
/* v8 ignore start -- interface-name resolution heuristic with multiple fallback paths; covered via integration */
|
|
424
|
-
function resolveInterface(allInterfaces, name) {
|
|
425
|
-
// Defensive: callers strip generics on parse, but if a generic slips
|
|
426
|
-
// through here we still want the lookup to succeed.
|
|
427
|
-
const bare = stripGenerics(name);
|
|
428
|
-
let iface = allInterfaces.get(bare);
|
|
429
|
-
if (iface)
|
|
430
|
-
return iface;
|
|
431
|
-
if (bare.startsWith('I') && bare.length > 1 && bare[1] === bare[1]?.toUpperCase()) {
|
|
432
|
-
iface = allInterfaces.get(bare.slice(1));
|
|
433
|
-
if (iface)
|
|
434
|
-
return iface;
|
|
435
|
-
}
|
|
436
|
-
return allInterfaces.get('I' + bare);
|
|
437
|
-
}
|
|
438
|
-
/* v8 ignore stop */
|
|
439
|
-
function createInterfaceMethodsResolver(allInterfaces) {
|
|
440
|
-
return function getInterfaceMethods(name, visited = new Set()) {
|
|
441
|
-
if (visited.has(name))
|
|
442
|
-
return [];
|
|
443
|
-
visited.add(name);
|
|
444
|
-
const iface = resolveInterface(allInterfaces, name);
|
|
445
|
-
if (!iface)
|
|
446
|
-
return [];
|
|
447
|
-
const methods = [...iface.methods];
|
|
448
|
-
for (const ext of iface.extends) {
|
|
449
|
-
for (const method of getInterfaceMethods(ext, visited))
|
|
450
|
-
methods.push(method);
|
|
451
|
-
}
|
|
452
|
-
return methods;
|
|
453
|
-
};
|
|
454
|
-
}
|
|
455
|
-
/**
|
|
456
|
-
* Test fakes (`class Fake<X> implements I<X>`) intentionally extend the
|
|
457
|
-
* production interface with helper methods that drive the fake's state
|
|
458
|
-
* (`queueError`, `setEvents`, `reset`, etc.). Flagging these as
|
|
459
|
-
* "extra methods" produces noise without surfacing real interface drift.
|
|
460
|
-
* Detected by class-name prefix rather than file path so the rule fires
|
|
461
|
-
* uniformly regardless of where fakes live.
|
|
462
|
-
*/
|
|
463
|
-
const TEST_DOUBLE_CLASS_NAME_PATTERN = /^(Fake|Mock|Stub|Spy)[A-Z]/;
|
|
6
|
+
import { isAllowedExtraMethod, TEST_DOUBLE_CLASS_NAME_PATTERN, } from './interface-implementation-consistency-constants.js';
|
|
7
|
+
import { createInterfaceMethodsResolver, mergeInterface, parseClasses, parseInterfaces, } from './interface-implementation-consistency-parse.js';
|
|
464
8
|
function checkConsistencyForClass(cls, getInterfaceMethods, issues) {
|
|
465
|
-
/* v8 ignore next
|
|
9
|
+
/* v8 ignore next */
|
|
466
10
|
if (!Array.isArray(issues))
|
|
467
11
|
return;
|
|
468
12
|
if (cls.implements.length === 0)
|
|
@@ -476,7 +20,7 @@ function checkConsistencyForClass(cls, getInterfaceMethods, issues) {
|
|
|
476
20
|
}
|
|
477
21
|
}
|
|
478
22
|
const reportInterface = cls.implements[0] ?? 'unknown';
|
|
479
|
-
const extraMethods = cls.methods.filter((method) => !
|
|
23
|
+
const extraMethods = cls.methods.filter((method) => !isAllowedExtraMethod(method) && !allowedMethods.has(method));
|
|
480
24
|
for (const method of extraMethods) {
|
|
481
25
|
issues.push({
|
|
482
26
|
file: cls.file,
|
|
@@ -519,7 +63,6 @@ export const interfaceImplementationConsistency = defineCheck({
|
|
|
519
63
|
const allInterfaces = new Map();
|
|
520
64
|
const allClasses = new Map();
|
|
521
65
|
// @lazy-ok -- validations inside loop depend on file content from await
|
|
522
|
-
// Collect interfaces and classes
|
|
523
66
|
for (const file of files.paths) {
|
|
524
67
|
const content = await files.read(file);
|
|
525
68
|
if (!content)
|
|
@@ -537,7 +80,6 @@ export const interfaceImplementationConsistency = defineCheck({
|
|
|
537
80
|
}
|
|
538
81
|
const getInterfaceMethods = createInterfaceMethodsResolver(allInterfaces);
|
|
539
82
|
const issues = [];
|
|
540
|
-
// Check each class against its interfaces
|
|
541
83
|
allClasses.forEach((cls) => {
|
|
542
84
|
checkConsistencyForClass(cls, getInterfaceMethods, issues);
|
|
543
85
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface-implementation-consistency.js","sourceRoot":"","sources":["../../../../src/checks/architecture/modules/interface-implementation-consistency.ts"],"names":[],"mappings":"AAAA,2HAA2H;AAC3H,iGAAiG;AACjG,sKAAsK;AACtK,uHAAuH;AACvH;;GAEG;AAEH,OAAO,EAAE,WAAW,EAA0C,MAAM,sBAAsB,CAAC;AAE3F,wEAAwE;AACxE,4DAA4D;AAC5D,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,0EAA0E;AAC1E,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,wEAAwE;AACxE,4BAA4B;AAC5B,MAAM,iBAAiB,GACrB,kFAAkF,CAAC;AACrF,4EAA4E;AAC5E,4DAA4D;AAC5D,yBAAyB;AACzB,kKAAkK;AAClK,MAAM,8BAA8B,GAAG,4CAA4C,CAAC;AACpF,MAAM,aAAa;AACjB,+KAA+K;AAC/K,sGAAsG,CAAC;AACzG,MAAM,2BAA2B,GAAG,4BAA4B,CAAC;AACjE,MAAM,uBAAuB,GAC3B,wFAAwF,CAAC;AAC3F,yEAAyE;AACzE,6EAA6E;AAC7E,0EAA0E;AAC1E,sEAAsE;AACtE,MAAM,uBAAuB,GAC3B,iFAAiF,CAAC;AAEpF,+CAA+C;AAC/C,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAC9D,MAAM,2BAA2B,GAAG,oDAAoD,CAAC;AACzF,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AACrD,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAC1C,MAAM,0BAA0B,GAAG,6BAA6B,CAAC;AA2BjE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,IAAI;IACJ,MAAM;IACN,OAAO;IACP,KAAK;IACL,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,OAAO;IACP,KAAK;IACL,OAAO;IACP,SAAS;IACT,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,UAAU;IACV,OAAO;IACP,SAAS;IACT,OAAO;IACP,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;IACP,KAAK;IACL,KAAK;IACL,OAAO;IACP,OAAO;IACP,QAAQ;IACR,KAAK;IACL,KAAK;IACL,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,SAAS;IACT,SAAS;IACT,SAAS;IACT,OAAO;IACP,UAAU;IACV,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,WAAW;IACX,OAAO;IACP,MAAM;IACN,QAAQ;IACR,UAAU;IACV,SAAS;IACT,OAAO;IACP,MAAM;IACN,WAAW;IACX,UAAU;IACV,iBAAiB;IACjB,YAAY;IACZ,gBAAgB;IAChB,WAAW;IACX,aAAa;IACb,SAAS;IACT,MAAM;IACN,IAAI;IACJ,KAAK;IACL,MAAM;IACN,WAAW;IACX,cAAc;IACd,eAAe;IACf,OAAO;IACP,gBAAgB;IAChB,QAAQ;IACR,UAAU;IACV,SAAS;IACT,WAAW;IACX,WAAW;IACX,mBAAmB;IACnB,MAAM;IACN,SAAS;IACT,aAAa;IACb,WAAW;IACX,mBAAmB;IACnB,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,KAAK;IACL,cAAc;IACd,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,WAAW;IACX,eAAe;IACf,oBAAoB;IACpB,WAAW;IACX,OAAO;IACP,OAAO;IACP,cAAc;IACd,aAAa;IACb,eAAe;IACf,wBAAwB;IACxB,SAAS;IACT,aAAa;IACb,WAAW;IACX,aAAa;IACb,iBAAiB;IACjB,aAAa;IACb,cAAc;IACd,cAAc;IACd,QAAQ;IACR,uBAAuB;IACvB,aAAa;IACb,yBAAyB;IACzB,qBAAqB;IACrB,0BAA0B;IAC1B,qBAAqB;IACrB,KAAK;IACL,QAAQ;IACR,aAAa;IACb,kBAAkB;IAClB,qBAAqB;IACrB,gBAAgB;IAChB,aAAa;IACb,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,wBAAwB;IACxB,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,qBAAqB;IACrB,cAAc;IACd,eAAe;IACf,aAAa;IACb,aAAa;IACb,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,OAAO;IACP,eAAe;IACf,MAAM;IACN,oBAAoB;IACpB,iBAAiB;IACjB,qBAAqB;IACrB,mBAAmB;IACnB,YAAY;IACZ,gBAAgB;IAChB,cAAc;CACf,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,IAAI,IAAI,GAAG,OAAO,CAAC;IACnB,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,KAAK,GAAG;YAAE,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAUD;;;;;GAKG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aACnB,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,GAAG,IAAI,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,aAAa,CAAC,GAAG,CAAC;SACtB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;SAC/C,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,SAAiB;IACxD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACd,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,SAAS,EAAE,SAAS,GAAG,CAAC;QACxB,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,CAAC;KACV,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,WAAW,GAAG,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,wGAAwG;IACxG,IAAI,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,IAAY;IACpD,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,OAAO,GAAsB,IAAI,CAAC;IAEtC,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACzC,yEAAyE;QACzE,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAEzB,MAAM,WAAW,GAAG,OAAO,KAAK,IAAI,CAAC;QACrC,OAAO,KAAK,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,qEAAqE;QACrE,kEAAkE;QAClE,qEAAqE;QACrE,6DAA6D;QAC7D,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzE,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC;QAE/B,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;YACpD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,IAAI;aACL,CAAC,CAAC;YACH,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,6HAA6H;AAC7H,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;IAEhE,IAAI,iBAAiB,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5F,IAAI,iBAAiB,IAAI,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpF,OAAO,KAAK,CAAC;AACf,CAAC;AAWD,SAAS,aAAa,CAAC,IAAY,EAAE,SAAiB;IACpD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACd,uEAAuE;QACvE,gEAAgE;QAChE,wGAAwG;QACxG,UAAU,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,SAAS,EAAE,SAAS,GAAG,CAAC;QACxB,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,CAAC;KACV,CAAC;AACJ,CAAC;AAED,kGAAkG;AAClG,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAClF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,oEAAoE;IACpE,uEAAuE;IACvE,4DAA4D;IAC5D,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpD,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AACD,oBAAoB;AAEpB,SAAS,YAAY,CAAC,OAAe,EAAE,IAAY;IACjD,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,OAAO,GAA2B,IAAI,CAAC;IAE3C,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACzC,yEAAyE;QACzE,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAEzB,OAAO,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC;QAE/B,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACtC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,IAAI;aACL,CAAC,CAAC;YACH,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CACrB,aAA+C,EAC/C,KAA0B;IAE1B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO;QAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1D,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,kHAAkH;AAClH,SAAS,gBAAgB,CACvB,aAA+C,EAC/C,IAAY;IAEZ,qEAAqE;IACrE,oDAAoD;IACpD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;QAClF,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AACvC,CAAC;AACD,oBAAoB;AAEpB,SAAS,8BAA8B,CACrC,aAA+C;IAE/C,OAAO,SAAS,mBAAmB,CAAC,IAAY,EAAE,UAAU,IAAI,GAAG,EAAU;QAC3E,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElB,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChC,KAAK,MAAM,MAAM,IAAI,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAEpE,SAAS,wBAAwB,CAC/B,GAAwB,EACxB,mBAA+C,EAC/C,MAA0B;IAE1B,+DAA+D;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO;IACnC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACxC,IAAI,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO;IAE1D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IACvD,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CACrC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAC9E,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,SAAS;YACnB,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE;YAC7B,OAAO,EAAE,WAAW,MAAM,iBAAiB,GAAG,CAAC,IAAI,mCAAmC,eAAe,GAAG;YACxG,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,WAAW,CAAC;IAC5D,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,sCAAsC;IAC5C,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE;IAC9E,aAAa,EAAE,eAAe;IAE9B,UAAU,EAAE,QAAQ;IACpB,WAAW,EAAE,iDAAiD;IAC9D,eAAe,EAAE;;;;;;;;;8GAS2F;IAC5G,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC;IACrC,SAAS,EAAE,CAAC,IAAI,CAAC;IAEjB,KAAK,CAAC,UAAU,CAAC,KAAmB;QAClC,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC7D,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+B,CAAC;QAE1D,wEAAwE;QACxE,iCAAiC;QACjC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;oBACnD,KAAK,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClE,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC9C,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,mBAAmB,GAAG,8BAA8B,CAAC,aAAa,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAuB,EAAE,CAAC;QAEtC,0CAA0C;QAC1C,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACzB,wBAAwB,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5B,QAAQ,EAAE,KAAK,CAAC,IAAI;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,eAAe,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,uFAAuF;YAC1I,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"interface-implementation-consistency.js","sourceRoot":"","sources":["../../../../src/checks/architecture/modules/interface-implementation-consistency.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-version-consistency.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/node-version-consistency.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node-version-consistency.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/node-version-consistency.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAkMH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,sCAoEjC,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// @fitness-ignore-file fitness-check-standards -- Uses fs for package.json reading, not source file content
|
|
2
|
-
// @fitness-ignore-file detached-promises -- helpers (checkNvmrc, checkWorkspaceEngines, checkTypesNode, checkCiWorkflow) are synchronous violation-collectors; heuristic flags them despite returning void
|
|
3
2
|
/**
|
|
4
3
|
* @fileoverview Node version consistency fitness check
|
|
5
4
|
* @invariants
|
|
@@ -202,7 +201,6 @@ export const nodeVersionConsistency = defineCheck({
|
|
|
202
201
|
if (expectedMajor === null)
|
|
203
202
|
return violations;
|
|
204
203
|
for (const filePath of files.paths) {
|
|
205
|
-
// @fitness-ignore-next-line performance-anti-patterns -- sequential file reading to control memory; FileAccessor is lazy
|
|
206
204
|
const content = await files.read(filePath);
|
|
207
205
|
const basename = path.basename(filePath);
|
|
208
206
|
if (basename === '.nvmrc') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-version-consistency.js","sourceRoot":"","sources":["../../../src/checks/architecture/node-version-consistency.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G
|
|
1
|
+
{"version":3,"file":"node-version-consistency.js","sourceRoot":"","sources":["../../../src/checks/architecture/node-version-consistency.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stale-build-artifacts.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/stale-build-artifacts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stale-build-artifacts.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/stale-build-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA0BH,eAAO,MAAM,mBAAmB,sCA6B9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stale-build-artifacts.js","sourceRoot":"","sources":["../../../src/checks/architecture/stale-build-artifacts.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stale-build-artifacts.js","sourceRoot":"","sources":["../../../src/checks/architecture/stale-build-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAA0C,MAAM,sBAAsB,CAAC;AAE3F,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrC,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAExD,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,gCAAgC;IAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,kDAAkD;IAClD,IACE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACnC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAE7B,OAAO,IAAI,CAAC;IAEd,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;IAC7C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE;IAC9E,UAAU,EAAE,MAAM;IAClB,WAAW,EACT,gGAAgG;IAClG,IAAI,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,SAAS,CAAC;IAE1C,4JAA4J;IAC5J,KAAK,CAAC,UAAU,CAAC,KAAmB;QAClC,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,MAAM,EAAE,CAAC;gBACX,UAAU,CAAC,IAAI,CAAC;oBACd,QAAQ;oBACR,IAAI,EAAE,CAAC;oBACP,OAAO,EAAE,yBAAyB,MAAM,CAAC,GAAG,oEAAoE;oBAChH,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,UAAU,QAAQ,yEAAyE;oBACvG,IAAI,EAAE,gBAAgB;iBACvB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-has-manifest.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/tool-has-manifest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-has-manifest.d.ts","sourceRoot":"","sources":["../../../src/checks/architecture/tool-has-manifest.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAe,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQ3F,gFAAgF;AAChF,UAAU,iBAAiB;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAC3C;AA4ED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAI3F;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAmB5F;AAED,eAAO,MAAM,eAAe,sCAS1B,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @fitness-ignore-file performance-anti-patterns -- the only async op is reading the analyzed workspace's package.json files in parallel; concurrency is bounded by the package.json count (a handful, not attacker-controlled), matching register-tools.ts's identical bounded-IO waiver.
|
|
2
1
|
/**
|
|
3
2
|
* @fileoverview Every first-party tool package must declare a conformant
|
|
4
3
|
* static plugin manifest (release 2.9.0, identity & compatibility — Phase 5).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-has-manifest.js","sourceRoot":"","sources":["../../../src/checks/architecture/tool-has-manifest.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tool-has-manifest.js","sourceRoot":"","sources":["../../../src/checks/architecture/tool-has-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type CheckViolation, type FileAccessor } from '@opensip-cli/fitness';
|
|
2
|
+
interface ManifestIdentity {
|
|
3
|
+
readonly name?: unknown;
|
|
4
|
+
readonly aliases?: unknown;
|
|
5
|
+
readonly layoutKey?: unknown;
|
|
6
|
+
}
|
|
7
|
+
interface OpensipToolsBlock {
|
|
8
|
+
readonly kind?: unknown;
|
|
9
|
+
readonly id?: unknown;
|
|
10
|
+
readonly identity?: ManifestIdentity;
|
|
11
|
+
readonly commands?: unknown;
|
|
12
|
+
readonly pluginLayout?: {
|
|
13
|
+
readonly domain?: unknown;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
interface PackageJson {
|
|
17
|
+
readonly opensipTools?: OpensipToolsBlock;
|
|
18
|
+
}
|
|
19
|
+
export declare function analyzeToolIdentitySingleSource(pkg: PackageJson, filePath: string): CheckViolation[];
|
|
20
|
+
export declare function analyzeAllToolIdentityManifests(files: FileAccessor): Promise<CheckViolation[]>;
|
|
21
|
+
export declare const toolIdentitySingleSource: import("@opensip-cli/fitness").Check;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=tool-identity-single-source.d.ts.map
|