eslint-cdk-plugin 1.0.1 → 1.0.3

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 (58) hide show
  1. package/README.md +29 -2
  2. package/dist/index.cjs +783 -0
  3. package/dist/index.d.ts +51 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.mjs +755 -39
  6. package/package.json +22 -9
  7. package/src/index.ts +69 -0
  8. package/src/rules/no-class-in-interface.ts +56 -0
  9. package/src/rules/no-construct-stack-suffix.ts +86 -0
  10. package/src/rules/no-import-private.ts +60 -0
  11. package/src/rules/no-mutable-props-interface.ts +58 -0
  12. package/src/rules/no-mutable-public-fields.ts +75 -0
  13. package/src/rules/no-parent-name-construct-id-match.ts +312 -0
  14. package/src/rules/no-public-class-fields.ts +148 -0
  15. package/src/rules/no-variable-construct-id.ts +101 -0
  16. package/src/rules/pascal-case-construct-id.ts +95 -0
  17. package/src/rules/require-passing-this.ts +51 -0
  18. package/src/types/symbolFlags.ts +6 -0
  19. package/src/utils/convertString.ts +20 -0
  20. package/src/utils/typeCheck.ts +57 -0
  21. package/dist/index.d.mts +0 -31
  22. package/dist/index.mjs.map +0 -1
  23. package/dist/no-class-in-interface-props.d.mts +0 -2
  24. package/dist/no-class-in-interface-props.mjs +0 -45
  25. package/dist/no-class-in-interface-props.mjs.map +0 -1
  26. package/dist/no-construct-stack-suffix.d.mts +0 -2
  27. package/dist/no-construct-stack-suffix.mjs +0 -64
  28. package/dist/no-construct-stack-suffix.mjs.map +0 -1
  29. package/dist/no-import-private.d.mts +0 -2
  30. package/dist/no-import-private.mjs +0 -37
  31. package/dist/no-import-private.mjs.map +0 -1
  32. package/dist/no-mutable-props-interface.d.mts +0 -2
  33. package/dist/no-mutable-props-interface.mjs +0 -44
  34. package/dist/no-mutable-props-interface.mjs.map +0 -1
  35. package/dist/no-mutable-public-fields.d.mts +0 -2
  36. package/dist/no-mutable-public-fields.mjs +0 -57
  37. package/dist/no-mutable-public-fields.mjs.map +0 -1
  38. package/dist/no-parent-name-construct-id-match.d.mts +0 -2
  39. package/dist/no-parent-name-construct-id-match.mjs +0 -218
  40. package/dist/no-parent-name-construct-id-match.mjs.map +0 -1
  41. package/dist/no-public-class-fields.d.mts +0 -2
  42. package/dist/no-public-class-fields.mjs +0 -105
  43. package/dist/no-public-class-fields.mjs.map +0 -1
  44. package/dist/no-variable-construct-id.d.mts +0 -2
  45. package/dist/no-variable-construct-id.mjs +0 -63
  46. package/dist/no-variable-construct-id.mjs.map +0 -1
  47. package/dist/pascal-case-construct-id.d.mts +0 -2
  48. package/dist/pascal-case-construct-id.mjs +0 -62
  49. package/dist/pascal-case-construct-id.mjs.map +0 -1
  50. package/dist/require-passing-this.d.mts +0 -2
  51. package/dist/require-passing-this.mjs +0 -39
  52. package/dist/require-passing-this.mjs.map +0 -1
  53. package/dist/utils/convertString.d.mts +0 -1
  54. package/dist/utils/convertString.mjs +0 -13
  55. package/dist/utils/convertString.mjs.map +0 -1
  56. package/dist/utils/typeCheck.d.mts +0 -3
  57. package/dist/utils/typeCheck.mjs +0 -16
  58. package/dist/utils/typeCheck.mjs.map +0 -1
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Convert a string to PascalCase
3
+ * @param str - The string to convert
4
+ * @returns The PascalCase string
5
+ */
6
+ export const toPascalCase = (str: string): string => {
7
+ return str
8
+ .split(/[-_\s]/)
9
+ .map((word) => {
10
+ // Consider camelCase, split by uppercase letters
11
+ return word
12
+ .replace(/([A-Z])/g, " $1")
13
+ .split(/\s+/)
14
+ .map(
15
+ (part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase()
16
+ )
17
+ .join("");
18
+ })
19
+ .join("");
20
+ };
@@ -0,0 +1,57 @@
1
+ import { Type } from "typescript";
2
+
3
+ type SuperClassType = "Construct" | "Stack";
4
+
5
+ /**
6
+ * Check if the type extends Construct or Stack
7
+ * @param type - The type to check
8
+ * @returns True if the type extends Construct or Stack, otherwise false
9
+ */
10
+ export const isConstructOrStackType = (type: Type): boolean => {
11
+ return isTargetSuperClassType(
12
+ type,
13
+ ["Construct", "Stack"],
14
+ isConstructOrStackType
15
+ );
16
+ };
17
+
18
+ /**
19
+ * Check if the type extends Construct
20
+ * @param type - The type to check
21
+ * @returns True if the type extends Construct, otherwise false
22
+ */
23
+ export const isConstructType = (type: Type): boolean => {
24
+ return isTargetSuperClassType(type, ["Construct"], isConstructType);
25
+ };
26
+
27
+ /**
28
+ * Check if the type extends Stack
29
+ * @param type - The type to check
30
+ * @returns True if the type extends Stack, otherwise false
31
+ */
32
+ export const isStackType = (type: Type): boolean => {
33
+ return isTargetSuperClassType(type, ["Stack"], isStackType);
34
+ };
35
+
36
+ /**
37
+ * Check if the type extends target super class
38
+ * @param type - The type to check
39
+ * @param targetSuperClasses - The target super classes
40
+ * @returns True if the type extends target super class, otherwise false
41
+ */
42
+ const isTargetSuperClassType = (
43
+ type: Type,
44
+ targetSuperClasses: SuperClassType[],
45
+ typeCheckFunction: (type: Type) => boolean
46
+ ): boolean => {
47
+ if (!type.symbol) return false;
48
+
49
+ // NOTE: Check if the current type ends in target super class
50
+ if (targetSuperClasses.some((suffix) => type.symbol.name.endsWith(suffix))) {
51
+ return true;
52
+ }
53
+
54
+ // NOTE: Check the base type
55
+ const baseTypes = type.getBaseTypes() || [];
56
+ return baseTypes.some((baseType) => typeCheckFunction(baseType));
57
+ };
package/dist/index.d.mts DELETED
@@ -1,31 +0,0 @@
1
- declare const plugin: {
2
- rules: {
3
- "no-class-in-interface": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noClassInInterfaceProps", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
4
- "no-construct-stack-suffix": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noConstructStackSuffix", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
5
- "no-import-private": import("eslint").Rule.RuleModule;
6
- "no-parent-name-construct-id-match": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noParentNameConstructIdMatch", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
7
- "no-public-class-fields": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noPublicClassFields", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
8
- "pascal-case-construct-id": import("@typescript-eslint/utils/ts-eslint").RuleModule<"pascalCaseConstructId", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
9
- "no-mutable-public-fields": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noMutablePublicFields", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
10
- "no-mutable-props-interface": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noMutablePropsInterface", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
11
- "require-passing-this": import("@typescript-eslint/utils/ts-eslint").RuleModule<"requirePassingThis", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
12
- "no-variable-construct-id": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noVariableConstructId", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
13
- };
14
- configs: {
15
- recommended: {
16
- plugins: string[];
17
- rules: {
18
- "cdk/no-class-in-interface": string;
19
- "cdk/no-construct-stack-suffix": string;
20
- "cdk/no-parent-name-construct-id-match": string;
21
- "cdk/no-public-class-fields": string;
22
- "cdk/pascal-case-construct-id": string;
23
- "cdk/require-passing-this": string;
24
- "cdk/no-variable-construct-id": string;
25
- "cdk/no-mutable-public-fields": string;
26
- "cdk/no-mutable-props-interface": string;
27
- };
28
- };
29
- };
30
- };
31
- export default plugin;
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,MAAM,GAAG;IACb,KAAK,EAAE;QACL,uBAAuB,EAAE,uBAAuB;QAChD,2BAA2B,EAAE,sBAAsB;QACnD,mBAAmB,EAAE,eAAe;QACpC,mCAAmC,EAAE,4BAA4B;QACjE,wBAAwB,EAAE,mBAAmB;QAC7C,0BAA0B,EAAE,qBAAqB;QACjD,0BAA0B,EAAE,qBAAqB;QACjD,4BAA4B,EAAE,uBAAuB;QACrD,sBAAsB,EAAE,kBAAkB;QAC1C,0BAA0B,EAAE,qBAAqB;KAClD;IACD,OAAO,EAAE;QACP,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,KAAK,CAAC;YAChB,KAAK,EAAE;gBACL,2BAA2B,EAAE,OAAO;gBACpC,+BAA+B,EAAE,OAAO;gBACxC,uCAAuC,EAAE,OAAO;gBAChD,4BAA4B,EAAE,OAAO;gBACrC,8BAA8B,EAAE,OAAO;gBACvC,0BAA0B,EAAE,OAAO;gBACnC,8BAA8B,EAAE,OAAO;gBACvC,8BAA8B,EAAE,MAAM;gBACtC,gCAAgC,EAAE,MAAM;aACzC;SACF;KACF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1,2 +0,0 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const noClassInInterfaceProps: ESLintUtils.RuleModule<"noClassInInterfaceProps", [], unknown, ESLintUtils.RuleListener>;
@@ -1,45 +0,0 @@
1
- import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
2
- import { SymbolFlags } from "typescript";
3
- export const noClassInInterfaceProps = ESLintUtils.RuleCreator.withoutDocs({
4
- meta: {
5
- type: "problem",
6
- docs: {
7
- description: "Disallow class types in interface properties",
8
- },
9
- messages: {
10
- noClassInInterfaceProps: "Interface property '{{ propertyName }}' should not use class type '{{ typeName }}'. Consider using an interface or type alias instead.",
11
- },
12
- schema: [],
13
- },
14
- defaultOptions: [],
15
- create(context) {
16
- const parserServices = ESLintUtils.getParserServices(context);
17
- const typeChecker = parserServices.program.getTypeChecker();
18
- return {
19
- TSInterfaceDeclaration(node) {
20
- for (const property of node.body.body) {
21
- if (property.type !== AST_NODE_TYPES.TSPropertySignature ||
22
- property.key.type !== AST_NODE_TYPES.Identifier) {
23
- continue;
24
- }
25
- const tsNode = parserServices.esTreeNodeToTSNodeMap.get(property);
26
- const type = typeChecker.getTypeAtLocation(tsNode);
27
- if (!type.symbol)
28
- continue;
29
- const isClass = type.symbol.flags === SymbolFlags.Class;
30
- if (!isClass)
31
- continue;
32
- context.report({
33
- node: property,
34
- messageId: "noClassInInterfaceProps",
35
- data: {
36
- propertyName: property.key.name,
37
- typeName: type.symbol.name,
38
- },
39
- });
40
- }
41
- },
42
- };
43
- },
44
- });
45
- //# sourceMappingURL=no-class-in-interface-props.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-class-in-interface-props.mjs","sourceRoot":"","sources":["../src/no-class-in-interface-props.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;IACzE,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,8CAA8C;SAC5D;QACD,QAAQ,EAAE;YACR,uBAAuB,EACrB,wIAAwI;SAC3I;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5D,OAAO;YACL,sBAAsB,CAAC,IAAI;gBACzB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAEtC,IACE,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,mBAAmB;wBACpD,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAC/C,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,MAAM,MAAM,GAAG,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAClE,MAAM,IAAI,GAAG,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;oBACnD,IAAI,CAAC,IAAI,CAAC,MAAM;wBAAE,SAAS;oBAG3B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC;oBACxD,IAAI,CAAC,OAAO;wBAAE,SAAS;oBAEvB,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,yBAAyB;wBACpC,IAAI,EAAE;4BACJ,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI;4BAC/B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;yBAC3B;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const noConstructStackSuffix: ESLintUtils.RuleModule<"noConstructStackSuffix", [], unknown, ESLintUtils.RuleListener>;
@@ -1,64 +0,0 @@
1
- import { AST_NODE_TYPES, ESLintUtils, } from "@typescript-eslint/utils";
2
- import { toPascalCase } from "./utils/convertString.mjs";
3
- import { isConstructOrStackType } from "./utils/typeCheck.mjs";
4
- export const noConstructStackSuffix = ESLintUtils.RuleCreator.withoutDocs({
5
- meta: {
6
- type: "problem",
7
- docs: {
8
- description: "Effort to avoid using 'Construct' and 'Stack' suffix in construct id.",
9
- },
10
- messages: {
11
- noConstructStackSuffix: "{{ classType }} ID '{{ id }}' should not include {{ suffix }} suffix.",
12
- },
13
- schema: [],
14
- },
15
- defaultOptions: [],
16
- create(context) {
17
- const parserServices = ESLintUtils.getParserServices(context);
18
- const typeChecker = parserServices.program.getTypeChecker();
19
- return {
20
- NewExpression(node) {
21
- const type = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(node));
22
- if (!isConstructOrStackType(type)) {
23
- return;
24
- }
25
- if (node.arguments.length < 2)
26
- return;
27
- validateConstructId(node, context, node);
28
- },
29
- };
30
- },
31
- });
32
- const validateConstructId = (node, context, expression) => {
33
- if (expression.arguments.length < 2)
34
- return;
35
- const secondArg = expression.arguments[1];
36
- if (secondArg.type !== AST_NODE_TYPES.Literal ||
37
- typeof secondArg.value !== "string") {
38
- return;
39
- }
40
- const formattedConstructId = toPascalCase(secondArg.value);
41
- if (formattedConstructId.endsWith("Construct")) {
42
- context.report({
43
- node,
44
- messageId: "noConstructStackSuffix",
45
- data: {
46
- classType: "Construct",
47
- id: secondArg.value,
48
- suffix: "Construct",
49
- },
50
- });
51
- }
52
- else if (formattedConstructId.endsWith("Stack")) {
53
- context.report({
54
- node,
55
- messageId: "noConstructStackSuffix",
56
- data: {
57
- classType: "Stack",
58
- id: secondArg.value,
59
- suffix: "Stack",
60
- },
61
- });
62
- }
63
- };
64
- //# sourceMappingURL=no-construct-stack-suffix.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-construct-stack-suffix.mjs","sourceRoot":"","sources":["../src/no-construct-stack-suffix.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,WAAW,GAGZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAU/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;IACxE,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,uEAAuE;SAC1E;QACD,QAAQ,EAAE;YACR,sBAAsB,EACpB,uEAAuE;SAC1E;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5D,OAAO;YACL,aAAa,CAAC,IAAI;gBAChB,MAAM,IAAI,GAAG,WAAW,CAAC,iBAAiB,CACxC,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC/C,CAAC;gBACF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,OAAO;gBACT,CAAC;gBAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO;gBAEtC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAKH,MAAM,mBAAmB,GAAG,CAC1B,IAAmB,EACnB,OAAgB,EAChB,UAAkC,EAC5B,EAAE;IACR,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IAG5C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1C,IACE,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;QACzC,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EACnC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,oBAAoB,GAAG,YAAY,CAAC,SAAS,CAAC,KAAe,CAAC,CAAC;IAErE,IAAI,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC;YACb,IAAI;YACJ,SAAS,EAAE,wBAAwB;YACnC,IAAI,EAAE;gBACJ,SAAS,EAAE,WAAW;gBACtB,EAAE,EAAE,SAAS,CAAC,KAAK;gBACnB,MAAM,EAAE,WAAW;aACpB;SACF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC;YACb,IAAI;YACJ,SAAS,EAAE,wBAAwB;YACnC,IAAI,EAAE;gBACJ,SAAS,EAAE,OAAO;gBAClB,EAAE,EAAE,SAAS,CAAC,KAAK;gBACnB,MAAM,EAAE,OAAO;aAChB;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import { Rule } from "eslint";
2
- export declare const noImportPrivate: Rule.RuleModule;
@@ -1,37 +0,0 @@
1
- import * as path from "path";
2
- export const noImportPrivate = {
3
- meta: {
4
- type: "problem",
5
- docs: {
6
- description: "Cannot import modules from private dir at different levels of the hierarchy.",
7
- },
8
- messages: {
9
- noImportPrivate: "Cannot import modules from private dir at different levels of the hierarchy.",
10
- },
11
- schema: [],
12
- },
13
- create(context) {
14
- return {
15
- ImportDeclaration(node) {
16
- const importPath = node.source.value?.toString() ?? "";
17
- const currentFilePath = context.filename;
18
- const currentDirPath = path.dirname(currentFilePath);
19
- if (importPath.includes("/private")) {
20
- const absoluteCurrentDirPath = path.resolve(currentDirPath);
21
- const absoluteImportPath = path.resolve(currentDirPath, importPath);
22
- const importDirBeforePrivate = absoluteImportPath.split("/private")[0];
23
- const currentDirSegments = getDirSegments(absoluteCurrentDirPath);
24
- const importDirSegments = getDirSegments(importDirBeforePrivate);
25
- if (currentDirSegments.length !== importDirSegments.length ||
26
- currentDirSegments.some((segment, index) => segment !== importDirSegments[index])) {
27
- context.report({ node, messageId: "noImportPrivate" });
28
- }
29
- }
30
- },
31
- };
32
- },
33
- };
34
- const getDirSegments = (dirPath) => {
35
- return dirPath.split(path.sep).filter((segment) => segment !== "");
36
- };
37
- //# sourceMappingURL=no-import-private.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-import-private.mjs","sourceRoot":"","sources":["../src/no-import-private.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAU7B,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,8EAA8E;SACjF;QACD,QAAQ,EAAE;YACR,eAAe,EACb,8EAA8E;SACjF;QACD,MAAM,EAAE,EAAE;KACX;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,iBAAiB,CAAC,IAAI;gBACpB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACvD,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;gBACzC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBAErD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBACpC,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;oBAC5D,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;oBAGpE,MAAM,sBAAsB,GAC1B,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE1C,MAAM,kBAAkB,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;oBAClE,MAAM,iBAAiB,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;oBACjE,IACE,kBAAkB,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM;wBACtD,kBAAkB,CAAC,IAAI,CACrB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,iBAAiB,CAAC,KAAK,CAAC,CACzD,EACD,CAAC;wBACD,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAOF,MAAM,cAAc,GAAG,CAAC,OAAe,EAAY,EAAE;IACnD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const noMutablePropsInterface: ESLintUtils.RuleModule<"noMutablePropsInterface", [], unknown, ESLintUtils.RuleListener>;
@@ -1,44 +0,0 @@
1
- import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
2
- export const noMutablePropsInterface = ESLintUtils.RuleCreator.withoutDocs({
3
- meta: {
4
- type: "problem",
5
- docs: {
6
- description: "Disallow mutable properties in Props interfaces",
7
- },
8
- fixable: "code",
9
- messages: {
10
- noMutablePropsInterface: "Property '{{ propertyName }}' in Props interface should be readonly.",
11
- },
12
- schema: [],
13
- },
14
- defaultOptions: [],
15
- create(context) {
16
- const sourceCode = context.sourceCode;
17
- return {
18
- TSInterfaceDeclaration(node) {
19
- if (!node.id.name.endsWith("Props"))
20
- return;
21
- for (const property of node.body.body) {
22
- if (property.type !== AST_NODE_TYPES.TSPropertySignature ||
23
- property.key.type !== AST_NODE_TYPES.Identifier) {
24
- continue;
25
- }
26
- if (property.readonly)
27
- continue;
28
- context.report({
29
- node: property,
30
- messageId: "noMutablePropsInterface",
31
- data: {
32
- propertyName: property.key.name,
33
- },
34
- fix: (fixer) => {
35
- const propertyText = sourceCode.getText(property);
36
- return fixer.replaceText(property, `readonly ${propertyText}`);
37
- },
38
- });
39
- }
40
- },
41
- };
42
- },
43
- });
44
- //# sourceMappingURL=no-mutable-props-interface.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-mutable-props-interface.mjs","sourceRoot":"","sources":["../src/no-mutable-props-interface.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;IACzE,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,iDAAiD;SAC/D;QACD,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE;YACR,uBAAuB,EACrB,sEAAsE;SACzE;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAEtC,OAAO;YACL,sBAAsB,CAAC,IAAI;gBAEzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,OAAO;gBAE5C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAEtC,IACE,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,mBAAmB;wBACpD,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAC/C,CAAC;wBACD,SAAS;oBACX,CAAC;oBAGD,IAAI,QAAQ,CAAC,QAAQ;wBAAE,SAAS;oBAEhC,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,yBAAyB;wBACpC,IAAI,EAAE;4BACJ,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI;yBAChC;wBACD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;4BACb,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;4BAClD,OAAO,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,YAAY,EAAE,CAAC,CAAC;wBACjE,CAAC;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const noMutablePublicFields: ESLintUtils.RuleModule<"noMutablePublicFields", [], unknown, ESLintUtils.RuleListener>;
@@ -1,57 +0,0 @@
1
- import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
2
- import { isConstructOrStackType } from "./utils/typeCheck.mjs";
3
- export const noMutablePublicFields = ESLintUtils.RuleCreator.withoutDocs({
4
- meta: {
5
- type: "problem",
6
- docs: {
7
- description: "Disallow mutable public class fields",
8
- },
9
- fixable: "code",
10
- messages: {
11
- noMutablePublicFields: "Public field '{{ propertyName }}' should be readonly. Consider adding the 'readonly' modifier.",
12
- },
13
- schema: [],
14
- },
15
- defaultOptions: [],
16
- create(context) {
17
- const parserServices = ESLintUtils.getParserServices(context);
18
- const typeChecker = parserServices.program.getTypeChecker();
19
- const sourceCode = context.sourceCode;
20
- return {
21
- ClassDeclaration(node) {
22
- const type = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(node));
23
- if (!isConstructOrStackType(type)) {
24
- return;
25
- }
26
- for (const member of node.body.body) {
27
- if (member.type !== AST_NODE_TYPES.PropertyDefinition ||
28
- member.key.type !== AST_NODE_TYPES.Identifier) {
29
- continue;
30
- }
31
- if (["private", "protected"].includes(member.accessibility ?? "")) {
32
- continue;
33
- }
34
- if (member.readonly)
35
- continue;
36
- context.report({
37
- node: member,
38
- messageId: "noMutablePublicFields",
39
- data: {
40
- propertyName: member.key.name,
41
- },
42
- fix: (fixer) => {
43
- const accessibility = member.accessibility ? "public " : "";
44
- const paramText = sourceCode.getText(member);
45
- const [key, value] = paramText.split(":");
46
- const replacedKey = key.startsWith("public ")
47
- ? key.replace("public ", "")
48
- : key;
49
- return fixer.replaceText(member, `${accessibility}readonly ${replacedKey}:${value}`);
50
- },
51
- });
52
- }
53
- },
54
- };
55
- },
56
- });
57
- //# sourceMappingURL=no-mutable-public-fields.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-mutable-public-fields.mjs","sourceRoot":"","sources":["../src/no-mutable-public-fields.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAQ/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;IACvE,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,sCAAsC;SACpD;QACD,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE;YACR,qBAAqB,EACnB,gGAAgG;SACnG;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAEtC,OAAO;YACL,gBAAgB,CAAC,IAAI;gBACnB,MAAM,IAAI,GAAG,WAAW,CAAC,iBAAiB,CACxC,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC/C,CAAC;gBACF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,OAAO;gBACT,CAAC;gBAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAEpC,IACE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,kBAAkB;wBACjD,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAC7C,CAAC;wBACD,SAAS;oBACX,CAAC;oBAGD,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC;wBAClE,SAAS;oBACX,CAAC;oBAGD,IAAI,MAAM,CAAC,QAAQ;wBAAE,SAAS;oBAE9B,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,MAAM;wBACZ,SAAS,EAAE,uBAAuB;wBAClC,IAAI,EAAE;4BACJ,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI;yBAC9B;wBACD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;4BACb,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC5D,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;4BAC7C,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BAC1C,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;gCAC3C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;gCAC5B,CAAC,CAAC,GAAG,CAAC;4BAER,OAAO,KAAK,CAAC,WAAW,CACtB,MAAM,EACN,GAAG,aAAa,YAAY,WAAW,IAAI,KAAK,EAAE,CACnD,CAAC;wBACJ,CAAC;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const noParentNameConstructIdMatch: ESLintUtils.RuleModule<"noParentNameConstructIdMatch", [], unknown, ESLintUtils.RuleListener>;
@@ -1,218 +0,0 @@
1
- import { AST_NODE_TYPES, ESLintUtils, } from "@typescript-eslint/utils";
2
- import { toPascalCase } from "./utils/convertString.mjs";
3
- export const noParentNameConstructIdMatch = ESLintUtils.RuleCreator.withoutDocs({
4
- meta: {
5
- type: "problem",
6
- docs: {
7
- description: "Enforce that construct IDs does not match the parent construct name.",
8
- },
9
- messages: {
10
- noParentNameConstructIdMatch: "Construct ID '{{ constructId }}' should not match parent construct name '{{ parentConstructName }}'. Use a more specific identifier.",
11
- },
12
- schema: [],
13
- },
14
- defaultOptions: [],
15
- create(context) {
16
- return {
17
- ClassBody(node) {
18
- const parent = node.parent;
19
- if (parent?.type !== AST_NODE_TYPES.ClassDeclaration)
20
- return;
21
- const parentClassName = parent.id?.name;
22
- if (!parentClassName)
23
- return;
24
- for (const body of node.body) {
25
- if (body.type !== AST_NODE_TYPES.MethodDefinition ||
26
- !["method", "constructor"].includes(body.kind) ||
27
- body.value.type !== AST_NODE_TYPES.FunctionExpression) {
28
- continue;
29
- }
30
- validateConstructorBody({
31
- node,
32
- expression: body.value,
33
- parentClassName,
34
- context,
35
- });
36
- }
37
- },
38
- };
39
- },
40
- });
41
- const validateConstructorBody = ({ node, expression, parentClassName, context, }) => {
42
- for (const statement of expression.body.body) {
43
- switch (statement.type) {
44
- case AST_NODE_TYPES.VariableDeclaration: {
45
- const newExpression = statement.declarations[0].init;
46
- if (newExpression?.type !== AST_NODE_TYPES.NewExpression)
47
- continue;
48
- validateConstructId({
49
- node,
50
- context,
51
- expression: newExpression,
52
- parentClassName,
53
- });
54
- break;
55
- }
56
- case AST_NODE_TYPES.ExpressionStatement: {
57
- if (statement.expression?.type !== AST_NODE_TYPES.NewExpression)
58
- break;
59
- validateStatement({
60
- node,
61
- statement,
62
- parentClassName,
63
- context,
64
- });
65
- break;
66
- }
67
- case AST_NODE_TYPES.IfStatement: {
68
- traverseStatements({
69
- node,
70
- context,
71
- parentClassName,
72
- statement: statement.consequent,
73
- });
74
- break;
75
- }
76
- case AST_NODE_TYPES.SwitchStatement: {
77
- for (const switchCase of statement.cases) {
78
- for (const statement of switchCase.consequent) {
79
- traverseStatements({
80
- node,
81
- context,
82
- parentClassName,
83
- statement,
84
- });
85
- }
86
- }
87
- break;
88
- }
89
- }
90
- }
91
- };
92
- const traverseStatements = ({ node, statement, parentClassName, context, }) => {
93
- switch (statement.type) {
94
- case AST_NODE_TYPES.BlockStatement: {
95
- for (const body of statement.body) {
96
- validateStatement({
97
- node,
98
- statement: body,
99
- parentClassName,
100
- context,
101
- });
102
- }
103
- break;
104
- }
105
- case AST_NODE_TYPES.ExpressionStatement: {
106
- const newExpression = statement.expression;
107
- if (newExpression?.type !== AST_NODE_TYPES.NewExpression)
108
- break;
109
- validateStatement({
110
- node,
111
- statement,
112
- parentClassName,
113
- context,
114
- });
115
- break;
116
- }
117
- case AST_NODE_TYPES.VariableDeclaration: {
118
- const newExpression = statement.declarations[0].init;
119
- if (newExpression?.type !== AST_NODE_TYPES.NewExpression)
120
- break;
121
- validateConstructId({
122
- node,
123
- context,
124
- expression: newExpression,
125
- parentClassName,
126
- });
127
- break;
128
- }
129
- }
130
- };
131
- const validateStatement = ({ node, statement, parentClassName, context, }) => {
132
- switch (statement.type) {
133
- case AST_NODE_TYPES.VariableDeclaration: {
134
- const newExpression = statement.declarations[0].init;
135
- if (newExpression?.type !== AST_NODE_TYPES.NewExpression)
136
- break;
137
- validateConstructId({
138
- node,
139
- context,
140
- expression: newExpression,
141
- parentClassName,
142
- });
143
- break;
144
- }
145
- case AST_NODE_TYPES.ExpressionStatement: {
146
- const newExpression = statement.expression;
147
- if (newExpression?.type !== AST_NODE_TYPES.NewExpression)
148
- break;
149
- validateConstructId({
150
- node,
151
- context,
152
- expression: newExpression,
153
- parentClassName,
154
- });
155
- break;
156
- }
157
- case AST_NODE_TYPES.IfStatement: {
158
- validateIfStatement({
159
- node,
160
- statement,
161
- parentClassName,
162
- context,
163
- });
164
- break;
165
- }
166
- case AST_NODE_TYPES.SwitchStatement: {
167
- validateSwitchStatement({
168
- node,
169
- statement,
170
- parentClassName,
171
- context,
172
- });
173
- break;
174
- }
175
- }
176
- };
177
- const validateIfStatement = ({ node, statement, parentClassName, context, }) => {
178
- traverseStatements({
179
- node,
180
- context,
181
- parentClassName,
182
- statement: statement.consequent,
183
- });
184
- };
185
- const validateSwitchStatement = ({ node, statement, parentClassName, context, }) => {
186
- for (const caseStatement of statement.cases) {
187
- for (const _consequent of caseStatement.consequent) {
188
- traverseStatements({
189
- node,
190
- context,
191
- parentClassName,
192
- statement: _consequent,
193
- });
194
- }
195
- }
196
- };
197
- const validateConstructId = ({ node, context, expression, parentClassName, }) => {
198
- if (expression.arguments.length < 2)
199
- return;
200
- const secondArg = expression.arguments[1];
201
- if (secondArg.type !== AST_NODE_TYPES.Literal ||
202
- typeof secondArg.value !== "string") {
203
- return;
204
- }
205
- const formattedConstructId = toPascalCase(secondArg.value);
206
- const formattedParentClassName = toPascalCase(parentClassName);
207
- if (formattedParentClassName === formattedConstructId) {
208
- context.report({
209
- node,
210
- messageId: "noParentNameConstructIdMatch",
211
- data: {
212
- constructId: secondArg.value,
213
- parentConstructName: parentClassName,
214
- },
215
- });
216
- }
217
- };
218
- //# sourceMappingURL=no-parent-name-construct-id-match.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-parent-name-construct-id-match.mjs","sourceRoot":"","sources":["../src/no-parent-name-construct-id-match.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,WAAW,GAGZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAwBzD,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAC7E;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,sEAAsE;SACzE;QACD,QAAQ,EAAE;YACR,4BAA4B,EAC1B,sIAAsI;SACzI;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,SAAS,CAAC,IAAI;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC3B,IAAI,MAAM,EAAE,IAAI,KAAK,cAAc,CAAC,gBAAgB;oBAAE,OAAO;gBAE7D,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;gBACxC,IAAI,CAAC,eAAe;oBAAE,OAAO;gBAE7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAE7B,IACE,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;wBAC7C,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,kBAAkB,EACrD,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,uBAAuB,CAAC;wBACtB,IAAI;wBACJ,UAAU,EAAE,IAAI,CAAC,KAAK;wBACtB,eAAe;wBACf,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CACF,CAAC;AAMF,MAAM,uBAAuB,GAAG,CAAC,EAC/B,IAAI,EACJ,UAAU,EACV,eAAe,EACf,OAAO,GAC6C,EAAQ,EAAE;IAC9D,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACxC,MAAM,aAAa,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrD,IAAI,aAAa,EAAE,IAAI,KAAK,cAAc,CAAC,aAAa;oBAAE,SAAS;gBACnE,mBAAmB,CAAC;oBAClB,IAAI;oBACJ,OAAO;oBACP,UAAU,EAAE,aAAa;oBACzB,eAAe;iBAChB,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACxC,IAAI,SAAS,CAAC,UAAU,EAAE,IAAI,KAAK,cAAc,CAAC,aAAa;oBAAE,MAAM;gBACvE,iBAAiB,CAAC;oBAChB,IAAI;oBACJ,SAAS;oBACT,eAAe;oBACf,OAAO;iBACR,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;gBAChC,kBAAkB,CAAC;oBACjB,IAAI;oBACJ,OAAO;oBACP,eAAe;oBACf,SAAS,EAAE,SAAS,CAAC,UAAU;iBAChC,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;gBACpC,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;oBACzC,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;wBAC9C,kBAAkB,CAAC;4BACjB,IAAI;4BACJ,OAAO;4BACP,eAAe;4BACf,SAAS;yBACV,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAOF,MAAM,kBAAkB,GAAG,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,eAAe,EACf,OAAO,GACmC,EAAE,EAAE;IAC9C,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;YACnC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;gBAClC,iBAAiB,CAAC;oBAChB,IAAI;oBACJ,SAAS,EAAE,IAAI;oBACf,eAAe;oBACf,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC;YAC3C,IAAI,aAAa,EAAE,IAAI,KAAK,cAAc,CAAC,aAAa;gBAAE,MAAM;YAChE,iBAAiB,CAAC;gBAChB,IAAI;gBACJ,SAAS;gBACT,eAAe;gBACf,OAAO;aACR,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QACD,KAAK,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxC,MAAM,aAAa,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,IAAI,aAAa,EAAE,IAAI,KAAK,cAAc,CAAC,aAAa;gBAAE,MAAM;YAChE,mBAAmB,CAAC;gBAClB,IAAI;gBACJ,OAAO;gBACP,UAAU,EAAE,aAAa;gBACzB,eAAe;aAChB,CAAC,CAAC;YACH,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAOF,MAAM,iBAAiB,GAAG,CAAC,EACzB,IAAI,EACJ,SAAS,EACT,eAAe,EACf,OAAO,GACmC,EAAQ,EAAE;IACpD,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxC,MAAM,aAAa,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,IAAI,aAAa,EAAE,IAAI,KAAK,cAAc,CAAC,aAAa;gBAAE,MAAM;YAChE,mBAAmB,CAAC;gBAClB,IAAI;gBACJ,OAAO;gBACP,UAAU,EAAE,aAAa;gBACzB,eAAe;aAChB,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QACD,KAAK,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC;YAC3C,IAAI,aAAa,EAAE,IAAI,KAAK,cAAc,CAAC,aAAa;gBAAE,MAAM;YAChE,mBAAmB,CAAC;gBAClB,IAAI;gBACJ,OAAO;gBACP,UAAU,EAAE,aAAa;gBACzB,eAAe;aAChB,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QACD,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;YAChC,mBAAmB,CAAC;gBAClB,IAAI;gBACJ,SAAS;gBACT,eAAe;gBACf,OAAO;aACR,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QACD,KAAK,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;YACpC,uBAAuB,CAAC;gBACtB,IAAI;gBACJ,SAAS;gBACT,eAAe;gBACf,OAAO;aACR,CAAC,CAAC;YACH,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAMF,MAAM,mBAAmB,GAAG,CAAC,EAC3B,IAAI,EACJ,SAAS,EACT,eAAe,EACf,OAAO,GACqC,EAAQ,EAAE;IACtD,kBAAkB,CAAC;QACjB,IAAI;QACJ,OAAO;QACP,eAAe;QACf,SAAS,EAAE,SAAS,CAAC,UAAU;KAChC,CAAC,CAAC;AACL,CAAC,CAAC;AAMF,MAAM,uBAAuB,GAAG,CAAC,EAC/B,IAAI,EACJ,SAAS,EACT,eAAe,EACf,OAAO,GACyC,EAAQ,EAAE;IAC1D,KAAK,MAAM,aAAa,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QAC5C,KAAK,MAAM,WAAW,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;YACnD,kBAAkB,CAAC;gBACjB,IAAI;gBACJ,OAAO;gBACP,eAAe;gBACf,SAAS,EAAE,WAAW;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAKF,MAAM,mBAAmB,GAAG,CAAC,EAC3B,IAAI,EACJ,OAAO,EACP,UAAU,EACV,eAAe,GACgC,EAAQ,EAAE;IACzD,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IAG5C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1C,IACE,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;QACzC,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EACnC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,oBAAoB,GAAG,YAAY,CAAC,SAAS,CAAC,KAAe,CAAC,CAAC;IACrE,MAAM,wBAAwB,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAE/D,IAAI,wBAAwB,KAAK,oBAAoB,EAAE,CAAC;QACtD,OAAO,CAAC,MAAM,CAAC;YACb,IAAI;YACJ,SAAS,EAAE,8BAA8B;YACzC,IAAI,EAAE;gBACJ,WAAW,EAAE,SAAS,CAAC,KAAK;gBAC5B,mBAAmB,EAAE,eAAe;aACrC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const noPublicClassFields: ESLintUtils.RuleModule<"noPublicClassFields", [], unknown, ESLintUtils.RuleListener>;