@webpieces/dev-config 0.2.95 → 0.2.97
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/config/eslint/base.mjs +1 -1
- package/executors.json +6 -91
- package/package.json +6 -19
- package/{executors → src/executors}/help/executor.d.ts +4 -2
- package/src/executors/help/executor.js.map +1 -0
- package/src/executors/validate-eslint-sync/executor.js.map +1 -0
- package/{executors → src/executors}/validate-versions-locked/executor.js +2 -1
- package/src/executors/validate-versions-locked/executor.js.map +1 -0
- package/src/index.d.ts +1 -1
- package/src/index.js +1 -1
- package/src/index.js.map +1 -1
- package/src/plugin.d.ts +86 -0
- package/{plugin.js → src/plugin.js} +31 -15
- package/src/plugin.js.map +1 -0
- package/src/toError.d.ts +5 -0
- package/src/toError.js +37 -0
- package/src/toError.js.map +1 -0
- package/templates/eslint.webpieces.config.mjs +1 -1
- package/architecture/executors/diff-utils.d.ts +0 -24
- package/architecture/executors/diff-utils.js +0 -119
- package/architecture/executors/diff-utils.js.map +0 -1
- package/architecture/executors/diff-utils.ts +0 -127
- package/architecture/executors/generate/executor.d.ts +0 -16
- package/architecture/executors/generate/executor.js +0 -44
- package/architecture/executors/generate/executor.js.map +0 -1
- package/architecture/executors/generate/executor.ts +0 -59
- package/architecture/executors/generate/schema.json +0 -14
- package/architecture/executors/validate-architecture-unchanged/executor.d.ts +0 -17
- package/architecture/executors/validate-architecture-unchanged/executor.js +0 -229
- package/architecture/executors/validate-architecture-unchanged/executor.js.map +0 -1
- package/architecture/executors/validate-architecture-unchanged/executor.ts +0 -251
- package/architecture/executors/validate-architecture-unchanged/schema.json +0 -14
- package/architecture/executors/validate-code/executor.d.ts +0 -78
- package/architecture/executors/validate-code/executor.js +0 -243
- package/architecture/executors/validate-code/executor.js.map +0 -1
- package/architecture/executors/validate-code/executor.ts +0 -406
- package/architecture/executors/validate-code/schema.json +0 -227
- package/architecture/executors/validate-dtos/executor.d.ts +0 -42
- package/architecture/executors/validate-dtos/executor.js +0 -561
- package/architecture/executors/validate-dtos/executor.js.map +0 -1
- package/architecture/executors/validate-dtos/executor.ts +0 -689
- package/architecture/executors/validate-dtos/schema.json +0 -33
- package/architecture/executors/validate-modified-files/executor.d.ts +0 -25
- package/architecture/executors/validate-modified-files/executor.js +0 -501
- package/architecture/executors/validate-modified-files/executor.js.map +0 -1
- package/architecture/executors/validate-modified-files/executor.ts +0 -571
- package/architecture/executors/validate-modified-files/schema.json +0 -25
- package/architecture/executors/validate-modified-methods/executor.d.ts +0 -31
- package/architecture/executors/validate-modified-methods/executor.js +0 -694
- package/architecture/executors/validate-modified-methods/executor.js.map +0 -1
- package/architecture/executors/validate-modified-methods/executor.ts +0 -797
- package/architecture/executors/validate-modified-methods/schema.json +0 -25
- package/architecture/executors/validate-new-methods/executor.d.ts +0 -28
- package/architecture/executors/validate-new-methods/executor.js +0 -513
- package/architecture/executors/validate-new-methods/executor.js.map +0 -1
- package/architecture/executors/validate-new-methods/executor.ts +0 -584
- package/architecture/executors/validate-new-methods/schema.json +0 -25
- package/architecture/executors/validate-no-any-unknown/executor.d.ts +0 -42
- package/architecture/executors/validate-no-any-unknown/executor.js +0 -462
- package/architecture/executors/validate-no-any-unknown/executor.js.map +0 -1
- package/architecture/executors/validate-no-any-unknown/executor.ts +0 -540
- package/architecture/executors/validate-no-any-unknown/schema.json +0 -24
- package/architecture/executors/validate-no-architecture-cycles/executor.d.ts +0 -16
- package/architecture/executors/validate-no-architecture-cycles/executor.js +0 -48
- package/architecture/executors/validate-no-architecture-cycles/executor.js.map +0 -1
- package/architecture/executors/validate-no-architecture-cycles/executor.ts +0 -60
- package/architecture/executors/validate-no-architecture-cycles/schema.json +0 -8
- package/architecture/executors/validate-no-destructure/executor.d.ts +0 -52
- package/architecture/executors/validate-no-destructure/executor.js +0 -491
- package/architecture/executors/validate-no-destructure/executor.js.map +0 -1
- package/architecture/executors/validate-no-destructure/executor.ts +0 -578
- package/architecture/executors/validate-no-destructure/schema.json +0 -24
- package/architecture/executors/validate-no-direct-api-resolver/executor.d.ts +0 -47
- package/architecture/executors/validate-no-direct-api-resolver/executor.js +0 -566
- package/architecture/executors/validate-no-direct-api-resolver/executor.js.map +0 -1
- package/architecture/executors/validate-no-direct-api-resolver/executor.ts +0 -666
- package/architecture/executors/validate-no-direct-api-resolver/schema.json +0 -29
- package/architecture/executors/validate-no-inline-types/executor.d.ts +0 -91
- package/architecture/executors/validate-no-inline-types/executor.js +0 -669
- package/architecture/executors/validate-no-inline-types/executor.js.map +0 -1
- package/architecture/executors/validate-no-inline-types/executor.ts +0 -775
- package/architecture/executors/validate-no-inline-types/schema.json +0 -24
- package/architecture/executors/validate-no-skiplevel-deps/executor.d.ts +0 -19
- package/architecture/executors/validate-no-skiplevel-deps/executor.js +0 -227
- package/architecture/executors/validate-no-skiplevel-deps/executor.js.map +0 -1
- package/architecture/executors/validate-no-skiplevel-deps/executor.ts +0 -267
- package/architecture/executors/validate-no-skiplevel-deps/schema.json +0 -8
- package/architecture/executors/validate-packagejson/executor.d.ts +0 -16
- package/architecture/executors/validate-packagejson/executor.js +0 -57
- package/architecture/executors/validate-packagejson/executor.js.map +0 -1
- package/architecture/executors/validate-packagejson/executor.ts +0 -74
- package/architecture/executors/validate-packagejson/schema.json +0 -8
- package/architecture/executors/validate-prisma-converters/executor.d.ts +0 -60
- package/architecture/executors/validate-prisma-converters/executor.js +0 -634
- package/architecture/executors/validate-prisma-converters/executor.js.map +0 -1
- package/architecture/executors/validate-prisma-converters/executor.ts +0 -822
- package/architecture/executors/validate-prisma-converters/schema.json +0 -38
- package/architecture/executors/validate-return-types/executor.d.ts +0 -29
- package/architecture/executors/validate-return-types/executor.js +0 -439
- package/architecture/executors/validate-return-types/executor.js.map +0 -1
- package/architecture/executors/validate-return-types/executor.ts +0 -524
- package/architecture/executors/validate-return-types/schema.json +0 -24
- package/architecture/executors/visualize/executor.d.ts +0 -17
- package/architecture/executors/visualize/executor.js +0 -49
- package/architecture/executors/visualize/executor.js.map +0 -1
- package/architecture/executors/visualize/executor.ts +0 -63
- package/architecture/executors/visualize/schema.json +0 -14
- package/architecture/index.d.ts +0 -19
- package/architecture/index.js +0 -23
- package/architecture/index.js.map +0 -1
- package/architecture/index.ts +0 -20
- package/architecture/lib/graph-comparator.d.ts +0 -39
- package/architecture/lib/graph-comparator.js +0 -100
- package/architecture/lib/graph-comparator.js.map +0 -1
- package/architecture/lib/graph-comparator.ts +0 -141
- package/architecture/lib/graph-generator.d.ts +0 -19
- package/architecture/lib/graph-generator.js +0 -84
- package/architecture/lib/graph-generator.js.map +0 -1
- package/architecture/lib/graph-generator.ts +0 -97
- package/architecture/lib/graph-loader.d.ts +0 -31
- package/architecture/lib/graph-loader.js +0 -98
- package/architecture/lib/graph-loader.js.map +0 -1
- package/architecture/lib/graph-loader.ts +0 -116
- package/architecture/lib/graph-sorter.d.ts +0 -37
- package/architecture/lib/graph-sorter.js +0 -110
- package/architecture/lib/graph-sorter.js.map +0 -1
- package/architecture/lib/graph-sorter.ts +0 -137
- package/architecture/lib/graph-visualizer.d.ts +0 -29
- package/architecture/lib/graph-visualizer.js +0 -217
- package/architecture/lib/graph-visualizer.js.map +0 -1
- package/architecture/lib/graph-visualizer.ts +0 -231
- package/architecture/lib/package-validator.d.ts +0 -38
- package/architecture/lib/package-validator.js +0 -126
- package/architecture/lib/package-validator.js.map +0 -1
- package/architecture/lib/package-validator.ts +0 -170
- package/eslint-plugin/__tests__/catch-error-pattern.test.ts +0 -374
- package/eslint-plugin/__tests__/max-file-lines.test.ts +0 -207
- package/eslint-plugin/__tests__/max-method-lines.test.ts +0 -258
- package/eslint-plugin/__tests__/no-unmanaged-exceptions.test.ts +0 -359
- package/eslint-plugin/index.d.ts +0 -23
- package/eslint-plugin/index.js +0 -30
- package/eslint-plugin/index.js.map +0 -1
- package/eslint-plugin/index.ts +0 -29
- package/eslint-plugin/rules/catch-error-pattern.d.ts +0 -11
- package/eslint-plugin/rules/catch-error-pattern.js +0 -143
- package/eslint-plugin/rules/catch-error-pattern.js.map +0 -1
- package/eslint-plugin/rules/catch-error-pattern.ts +0 -246
- package/eslint-plugin/rules/enforce-architecture.d.ts +0 -15
- package/eslint-plugin/rules/enforce-architecture.js +0 -476
- package/eslint-plugin/rules/enforce-architecture.js.map +0 -1
- package/eslint-plugin/rules/enforce-architecture.ts +0 -543
- package/eslint-plugin/rules/max-file-lines.d.ts +0 -12
- package/eslint-plugin/rules/max-file-lines.js +0 -257
- package/eslint-plugin/rules/max-file-lines.js.map +0 -1
- package/eslint-plugin/rules/max-file-lines.ts +0 -272
- package/eslint-plugin/rules/max-method-lines.d.ts +0 -12
- package/eslint-plugin/rules/max-method-lines.js +0 -240
- package/eslint-plugin/rules/max-method-lines.js.map +0 -1
- package/eslint-plugin/rules/max-method-lines.ts +0 -287
- package/eslint-plugin/rules/no-unmanaged-exceptions.d.ts +0 -22
- package/eslint-plugin/rules/no-unmanaged-exceptions.js +0 -160
- package/eslint-plugin/rules/no-unmanaged-exceptions.js.map +0 -1
- package/eslint-plugin/rules/no-unmanaged-exceptions.ts +0 -179
- package/executors/help/executor.js.map +0 -1
- package/executors/help/executor.ts +0 -61
- package/executors/validate-eslint-sync/executor.js.map +0 -1
- package/executors/validate-eslint-sync/executor.ts +0 -87
- package/executors/validate-versions-locked/executor.js.map +0 -1
- package/executors/validate-versions-locked/executor.ts +0 -368
- package/plugin/README.md +0 -243
- package/plugin/index.d.ts +0 -4
- package/plugin/index.js +0 -8
- package/plugin/index.js.map +0 -1
- package/plugin/index.ts +0 -4
- /package/{executors → src/executors}/help/executor.js +0 -0
- /package/{executors → src/executors}/help/schema.json +0 -0
- /package/{executors → src/executors}/validate-eslint-sync/executor.d.ts +0 -0
- /package/{executors → src/executors}/validate-eslint-sync/executor.js +0 -0
- /package/{executors → src/executors}/validate-eslint-sync/schema.json +0 -0
- /package/{executors → src/executors}/validate-versions-locked/executor.d.ts +0 -0
- /package/{executors → src/executors}/validate-versions-locked/schema.json +0 -0
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ESLint rule to enforce standardized catch block error handling patterns
|
|
3
|
-
*
|
|
4
|
-
* Enforces three approved patterns:
|
|
5
|
-
* 1. Standard: catch (err: unknown) { const error = toError(err); }
|
|
6
|
-
* 2. Ignored: catch (err: unknown) { //const error = toError(err); }
|
|
7
|
-
* 3. Nested: catch (err2: unknown) { const error2 = toError(err2); }
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { Rule } from 'eslint';
|
|
11
|
-
|
|
12
|
-
// Using any for ESTree nodes to avoid complex type gymnastics
|
|
13
|
-
// ESLint rules work with dynamic AST nodes anyway
|
|
14
|
-
interface CatchClauseNode {
|
|
15
|
-
type: 'CatchClause';
|
|
16
|
-
param?: IdentifierNode | null;
|
|
17
|
-
body: BlockStatementNode;
|
|
18
|
-
[key: string]: any;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
interface IdentifierNode {
|
|
22
|
-
type: 'Identifier';
|
|
23
|
-
name: string;
|
|
24
|
-
typeAnnotation?: TypeAnnotationNode;
|
|
25
|
-
[key: string]: any;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface TypeAnnotationNode {
|
|
29
|
-
typeAnnotation?: {
|
|
30
|
-
type: string;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
interface BlockStatementNode {
|
|
35
|
-
type: 'BlockStatement';
|
|
36
|
-
body: any[];
|
|
37
|
-
range: [number, number];
|
|
38
|
-
[key: string]: any;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
interface VariableDeclarationNode {
|
|
42
|
-
type: 'VariableDeclaration';
|
|
43
|
-
declarations: VariableDeclaratorNode[];
|
|
44
|
-
[key: string]: any;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
interface VariableDeclaratorNode {
|
|
48
|
-
type: 'VariableDeclarator';
|
|
49
|
-
id: IdentifierNode;
|
|
50
|
-
init?: CallExpressionNode | null;
|
|
51
|
-
[key: string]: any;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
interface CallExpressionNode {
|
|
55
|
-
type: 'CallExpression';
|
|
56
|
-
callee: IdentifierNode;
|
|
57
|
-
arguments: any[];
|
|
58
|
-
[key: string]: any;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function validateParamName(
|
|
62
|
-
context: Rule.RuleContext,
|
|
63
|
-
param: IdentifierNode,
|
|
64
|
-
expectedParamName: string,
|
|
65
|
-
): void {
|
|
66
|
-
if (param.type === 'Identifier' && param.name !== expectedParamName) {
|
|
67
|
-
context.report({
|
|
68
|
-
node: param,
|
|
69
|
-
messageId: 'wrongParameterName',
|
|
70
|
-
data: { actual: param.name },
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
function validateTypeAnnotation(
|
|
76
|
-
context: Rule.RuleContext,
|
|
77
|
-
param: IdentifierNode,
|
|
78
|
-
expectedParamName: string,
|
|
79
|
-
): void {
|
|
80
|
-
if (
|
|
81
|
-
!param.typeAnnotation ||
|
|
82
|
-
!param.typeAnnotation.typeAnnotation ||
|
|
83
|
-
param.typeAnnotation.typeAnnotation.type !== 'TSUnknownKeyword'
|
|
84
|
-
) {
|
|
85
|
-
context.report({
|
|
86
|
-
node: param,
|
|
87
|
-
messageId: 'missingTypeAnnotation',
|
|
88
|
-
data: { param: param.name || expectedParamName },
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
function hasIgnoreComment(
|
|
94
|
-
catchNode: CatchClauseNode,
|
|
95
|
-
sourceCode: Rule.RuleContext['sourceCode'],
|
|
96
|
-
expectedVarName: string,
|
|
97
|
-
actualParamName: string,
|
|
98
|
-
): boolean {
|
|
99
|
-
const catchBlockStart = catchNode.body.range![0];
|
|
100
|
-
const catchBlockEnd = catchNode.body.range![1];
|
|
101
|
-
const catchBlockText = sourceCode.text.substring(catchBlockStart, catchBlockEnd);
|
|
102
|
-
|
|
103
|
-
const ignorePattern = new RegExp(
|
|
104
|
-
`//\\s*const\\s+${expectedVarName}\\s*=\\s*toError\\(${actualParamName}\\)`,
|
|
105
|
-
);
|
|
106
|
-
|
|
107
|
-
return ignorePattern.test(catchBlockText);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
function reportMissingToError(
|
|
111
|
-
context: Rule.RuleContext,
|
|
112
|
-
// webpieces-disable no-any-unknown -- ESLint AST node param requires any type
|
|
113
|
-
node: any,
|
|
114
|
-
paramName: string,
|
|
115
|
-
): void {
|
|
116
|
-
context.report({
|
|
117
|
-
node,
|
|
118
|
-
messageId: 'missingToError',
|
|
119
|
-
data: { param: paramName },
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function validateToErrorCall(
|
|
124
|
-
context: Rule.RuleContext,
|
|
125
|
-
// webpieces-disable no-any-unknown -- ESLint AST node param requires any type
|
|
126
|
-
firstStatement: any,
|
|
127
|
-
expectedParamName: string,
|
|
128
|
-
expectedVarName: string,
|
|
129
|
-
actualParamName: string,
|
|
130
|
-
): void {
|
|
131
|
-
if (firstStatement.type !== 'VariableDeclaration') {
|
|
132
|
-
reportMissingToError(context, firstStatement, expectedParamName);
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
const varDecl = firstStatement as VariableDeclarationNode;
|
|
137
|
-
const declaration = varDecl.declarations[0];
|
|
138
|
-
if (!declaration) {
|
|
139
|
-
reportMissingToError(context, firstStatement, expectedParamName);
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
if (declaration.id.type !== 'Identifier' || declaration.id.name !== expectedVarName) {
|
|
144
|
-
context.report({
|
|
145
|
-
node: declaration.id,
|
|
146
|
-
messageId: 'wrongVariableName',
|
|
147
|
-
data: { expected: expectedVarName, actual: declaration.id.name || 'unknown' },
|
|
148
|
-
});
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
if (!declaration.init || declaration.init.type !== 'CallExpression') {
|
|
153
|
-
reportMissingToError(context, declaration.init || declaration, expectedParamName);
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
const callExpr = declaration.init as CallExpressionNode;
|
|
158
|
-
const callee = callExpr.callee;
|
|
159
|
-
if (callee.type !== 'Identifier' || callee.name !== 'toError') {
|
|
160
|
-
reportMissingToError(context, callee, expectedParamName);
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
const args = callExpr.arguments;
|
|
165
|
-
if (
|
|
166
|
-
args.length !== 1 ||
|
|
167
|
-
args[0].type !== 'Identifier' ||
|
|
168
|
-
(args[0] as IdentifierNode).name !== actualParamName
|
|
169
|
-
) {
|
|
170
|
-
reportMissingToError(context, callExpr, actualParamName);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
const rule: Rule.RuleModule = {
|
|
175
|
-
meta: {
|
|
176
|
-
type: 'problem',
|
|
177
|
-
docs: {
|
|
178
|
-
description: 'Enforce standardized catch block error handling patterns',
|
|
179
|
-
category: 'Best Practices',
|
|
180
|
-
recommended: true,
|
|
181
|
-
url: 'https://github.com/deanhiller/webpieces-ts/blob/main/claude.patterns.md#error-handling-pattern',
|
|
182
|
-
},
|
|
183
|
-
messages: {
|
|
184
|
-
missingToError:
|
|
185
|
-
'Catch block must call toError({{param}}) as first statement or comment it out to explicitly ignore errors',
|
|
186
|
-
wrongVariableName: 'Error variable must be named "{{expected}}", got "{{actual}}"',
|
|
187
|
-
missingTypeAnnotation: 'Catch parameter must be typed as "unknown": catch ({{param}}: unknown)',
|
|
188
|
-
wrongParameterName:
|
|
189
|
-
'Catch parameter must be named "err" (or "err2", "err3" for nested catches), got "{{actual}}"',
|
|
190
|
-
toErrorNotFirst: 'toError({{param}}) must be the first statement in the catch block',
|
|
191
|
-
},
|
|
192
|
-
fixable: undefined,
|
|
193
|
-
schema: [],
|
|
194
|
-
},
|
|
195
|
-
|
|
196
|
-
create(context: Rule.RuleContext): Rule.RuleListener {
|
|
197
|
-
const catchStack: CatchClauseNode[] = [];
|
|
198
|
-
|
|
199
|
-
return {
|
|
200
|
-
CatchClause(node: any): void {
|
|
201
|
-
const catchNode = node as CatchClauseNode;
|
|
202
|
-
const depth = catchStack.length + 1;
|
|
203
|
-
catchStack.push(catchNode);
|
|
204
|
-
|
|
205
|
-
const suffix = depth === 1 ? '' : String(depth);
|
|
206
|
-
const expectedParamName = 'err' + suffix;
|
|
207
|
-
const expectedVarName = 'error' + suffix;
|
|
208
|
-
|
|
209
|
-
const param = catchNode.param;
|
|
210
|
-
if (!param) {
|
|
211
|
-
context.report({
|
|
212
|
-
node: catchNode,
|
|
213
|
-
messageId: 'missingTypeAnnotation',
|
|
214
|
-
data: { param: expectedParamName },
|
|
215
|
-
});
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
const actualParamName =
|
|
220
|
-
param.type === 'Identifier' ? param.name : expectedParamName;
|
|
221
|
-
|
|
222
|
-
validateParamName(context, param, expectedParamName);
|
|
223
|
-
validateTypeAnnotation(context, param, expectedParamName);
|
|
224
|
-
|
|
225
|
-
const sourceCode = context.sourceCode || context.getSourceCode();
|
|
226
|
-
if (hasIgnoreComment(catchNode, sourceCode, expectedVarName, actualParamName)) {
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
const body = catchNode.body.body;
|
|
231
|
-
if (body.length === 0) {
|
|
232
|
-
reportMissingToError(context, catchNode.body, expectedParamName);
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
validateToErrorCall(context, body[0], expectedParamName, expectedVarName, actualParamName);
|
|
237
|
-
},
|
|
238
|
-
|
|
239
|
-
'CatchClause:exit'(): void {
|
|
240
|
-
catchStack.pop();
|
|
241
|
-
},
|
|
242
|
-
};
|
|
243
|
-
},
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
export = rule;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ESLint rule to enforce architecture boundaries
|
|
3
|
-
*
|
|
4
|
-
* Validates that imports from @webpieces/* packages comply with the
|
|
5
|
-
* blessed dependency graph in .graphs/dependencies.json
|
|
6
|
-
*
|
|
7
|
-
* Supports transitive dependencies: if A depends on B and B depends on C,
|
|
8
|
-
* then A can import from C.
|
|
9
|
-
*
|
|
10
|
-
* Configuration:
|
|
11
|
-
* '@webpieces/enforce-architecture': 'error'
|
|
12
|
-
*/
|
|
13
|
-
import type { Rule } from 'eslint';
|
|
14
|
-
declare const rule: Rule.RuleModule;
|
|
15
|
-
export = rule;
|