@angular-eslint/eslint-plugin-template 15.2.2-alpha.25 → 15.2.2-alpha.26

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 (99) hide show
  1. package/dist/configs/README.md +10 -0
  2. package/dist/configs/accessibility.json +17 -0
  3. package/dist/configs/all.json +10 -10
  4. package/dist/configs/recommended.json +2 -1
  5. package/dist/index.js +95 -1
  6. package/dist/processors.js +210 -0
  7. package/dist/rules/alt-text.js +131 -0
  8. package/dist/rules/attributes-order.js +233 -0
  9. package/dist/rules/banana-in-box.js +47 -0
  10. package/dist/rules/button-has-type.js +76 -0
  11. package/dist/rules/click-events-have-key-events.js +57 -0
  12. package/dist/rules/conditional-complexity.js +107 -0
  13. package/dist/rules/cyclomatic-complexity.js +50 -0
  14. package/dist/rules/elements-content.js +70 -0
  15. package/dist/rules/eqeqeq.js +99 -0
  16. package/dist/rules/i18n.js +368 -0
  17. package/dist/rules/interactive-supports-focus.js +64 -0
  18. package/dist/rules/label-has-associated-control.js +103 -0
  19. package/dist/rules/mouse-events-have-key-events.js +40 -0
  20. package/dist/rules/no-any.js +59 -0
  21. package/dist/rules/no-autofocus.js +41 -0
  22. package/dist/rules/no-call-expression.js +68 -0
  23. package/dist/rules/no-distracting-elements.js +36 -0
  24. package/dist/rules/no-duplicate-attributes.js +97 -0
  25. package/dist/rules/no-inline-styles.js +104 -0
  26. package/dist/rules/no-interpolation-in-attributes.js +36 -0
  27. package/dist/rules/no-negated-async.js +60 -0
  28. package/dist/rules/no-positive-tabindex.js +43 -0
  29. package/dist/rules/role-has-required-aria.js +73 -0
  30. package/dist/rules/table-scope.js +41 -0
  31. package/dist/rules/use-track-by-function.js +56 -0
  32. package/dist/rules/valid-aria.js +126 -0
  33. package/dist/utils/attributes-comparator.js +19 -0
  34. package/dist/utils/constants.js +11 -0
  35. package/dist/utils/create-eslint-rule.js +26 -0
  36. package/dist/utils/get-attribute-value.js +39 -0
  37. package/dist/utils/get-dom-elements.js +9 -0
  38. package/dist/utils/get-nearest-node-from.js +17 -0
  39. package/dist/utils/get-original-attribute-name.js +29 -0
  40. package/dist/utils/is-child-node-of.js +12 -0
  41. package/dist/utils/is-content-editable.js +14 -0
  42. package/dist/utils/is-disabled-element.js +20 -0
  43. package/dist/utils/is-hidden-from-screen-reader.js +97 -0
  44. package/dist/utils/is-interactive-element/get-interactive-element-ax-object-schemas.js +27 -0
  45. package/dist/utils/is-interactive-element/get-interactive-element-role-schemas.js +38 -0
  46. package/dist/utils/is-interactive-element/get-non-interactive-element-role-schemas.js +44 -0
  47. package/dist/utils/is-interactive-element/index.js +45 -0
  48. package/dist/utils/is-presentation-role.js +14 -0
  49. package/dist/utils/is-semantic-role-element.js +36 -0
  50. package/dist/utils/to-pattern.js +7 -0
  51. package/package.json +6 -6
  52. package/dist/configs/base.json +0 -4
  53. package/dist/eslint-plugin-template/src/index.d.ts +0 -133
  54. package/dist/eslint-plugin-template/src/processors.d.ts +0 -37
  55. package/dist/eslint-plugin-template/src/rules/accessibility-alt-text.d.ts +0 -4
  56. package/dist/eslint-plugin-template/src/rules/accessibility-elements-content.d.ts +0 -9
  57. package/dist/eslint-plugin-template/src/rules/accessibility-interactive-supports-focus.d.ts +0 -4
  58. package/dist/eslint-plugin-template/src/rules/accessibility-label-for.d.ts +0 -11
  59. package/dist/eslint-plugin-template/src/rules/accessibility-label-has-associated-control.d.ts +0 -14
  60. package/dist/eslint-plugin-template/src/rules/accessibility-role-has-required-aria.d.ts +0 -4
  61. package/dist/eslint-plugin-template/src/rules/accessibility-table-scope.d.ts +0 -4
  62. package/dist/eslint-plugin-template/src/rules/accessibility-valid-aria.d.ts +0 -4
  63. package/dist/eslint-plugin-template/src/rules/attributes-order.d.ts +0 -18
  64. package/dist/eslint-plugin-template/src/rules/banana-in-box.d.ts +0 -4
  65. package/dist/eslint-plugin-template/src/rules/button-has-type.d.ts +0 -5
  66. package/dist/eslint-plugin-template/src/rules/click-events-have-key-events.d.ts +0 -4
  67. package/dist/eslint-plugin-template/src/rules/conditional-complexity.d.ts +0 -7
  68. package/dist/eslint-plugin-template/src/rules/cyclomatic-complexity.d.ts +0 -7
  69. package/dist/eslint-plugin-template/src/rules/eqeqeq.d.ts +0 -8
  70. package/dist/eslint-plugin-template/src/rules/i18n.d.ts +0 -18
  71. package/dist/eslint-plugin-template/src/rules/mouse-events-have-key-events.d.ts +0 -5
  72. package/dist/eslint-plugin-template/src/rules/no-any.d.ts +0 -4
  73. package/dist/eslint-plugin-template/src/rules/no-autofocus.d.ts +0 -4
  74. package/dist/eslint-plugin-template/src/rules/no-call-expression.d.ts +0 -9
  75. package/dist/eslint-plugin-template/src/rules/no-distracting-elements.d.ts +0 -4
  76. package/dist/eslint-plugin-template/src/rules/no-duplicate-attributes.d.ts +0 -10
  77. package/dist/eslint-plugin-template/src/rules/no-inline-styles.d.ts +0 -10
  78. package/dist/eslint-plugin-template/src/rules/no-interpolation-in-attributes.d.ts +0 -4
  79. package/dist/eslint-plugin-template/src/rules/no-negated-async.d.ts +0 -7
  80. package/dist/eslint-plugin-template/src/rules/no-positive-tabindex.d.ts +0 -4
  81. package/dist/eslint-plugin-template/src/rules/use-track-by-function.d.ts +0 -4
  82. package/dist/eslint-plugin-template/src/utils/attributes-comparator.d.ts +0 -3
  83. package/dist/eslint-plugin-template/src/utils/constants.d.ts +0 -8
  84. package/dist/eslint-plugin-template/src/utils/create-eslint-rule.d.ts +0 -2
  85. package/dist/eslint-plugin-template/src/utils/get-attribute-value.d.ts +0 -12
  86. package/dist/eslint-plugin-template/src/utils/get-dom-elements.d.ts +0 -1
  87. package/dist/eslint-plugin-template/src/utils/get-nearest-node-from.d.ts +0 -6
  88. package/dist/eslint-plugin-template/src/utils/get-original-attribute-name.d.ts +0 -13
  89. package/dist/eslint-plugin-template/src/utils/is-child-node-of.d.ts +0 -2
  90. package/dist/eslint-plugin-template/src/utils/is-content-editable.d.ts +0 -2
  91. package/dist/eslint-plugin-template/src/utils/is-disabled-element.d.ts +0 -2
  92. package/dist/eslint-plugin-template/src/utils/is-hidden-from-screen-reader.d.ts +0 -9
  93. package/dist/eslint-plugin-template/src/utils/is-interactive-element/get-interactive-element-ax-object-schemas.d.ts +0 -9
  94. package/dist/eslint-plugin-template/src/utils/is-interactive-element/get-interactive-element-role-schemas.d.ts +0 -2
  95. package/dist/eslint-plugin-template/src/utils/is-interactive-element/get-non-interactive-element-role-schemas.d.ts +0 -3
  96. package/dist/eslint-plugin-template/src/utils/is-interactive-element/index.d.ts +0 -9
  97. package/dist/eslint-plugin-template/src/utils/is-presentation-role.d.ts +0 -2
  98. package/dist/eslint-plugin-template/src/utils/is-semantic-role-element.d.ts +0 -2
  99. package/dist/eslint-plugin-template/src/utils/to-pattern.d.ts +0 -1
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInteractiveElementAXObjectSchemas = void 0;
4
+ let interactiveElementAXObjectSchemas = null;
5
+ // This function follows the lazy initialization pattern.
6
+ // Since this is a top-level module (it will be included via `require`), we do not need to
7
+ // initialize the `interactiveElementAXObjectSchemas` until the function is called
8
+ // for the first time, so we will not take up the memory.
9
+ function getInteractiveElementAXObjectSchemas() {
10
+ if (interactiveElementAXObjectSchemas === null) {
11
+ // This package doesn't have type definitions.
12
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
13
+ const { AXObjects, elementAXObjects } = require('axobject-query');
14
+ // This set will contain all possible roles in ARIA, which are
15
+ // type of `structure` or `window` (since we filter out `widget` type).
16
+ const interactiveAXObjects = new Set(Array.from(AXObjects.keys()).filter((name) => AXObjects.get(name).type === 'widget'));
17
+ // This will contain all schemas that are related to ARIA roles
18
+ // listed in the above set `interactiveAXObjects`.
19
+ interactiveElementAXObjectSchemas = [...elementAXObjects.entries()].reduce((accumulator, [elementSchema, AXObjectSet]) => {
20
+ return accumulator.concat([...AXObjectSet].every((role) => interactiveAXObjects.has(role))
21
+ ? elementSchema
22
+ : []);
23
+ }, []);
24
+ }
25
+ return interactiveElementAXObjectSchemas;
26
+ }
27
+ exports.getInteractiveElementAXObjectSchemas = getInteractiveElementAXObjectSchemas;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInteractiveElementRoleSchemas = void 0;
4
+ const aria_query_1 = require("aria-query");
5
+ let interactiveElementRoleSchemas = null;
6
+ // This function follows the lazy initialization pattern.
7
+ // Since this is a top-level module (it will be included via `require`), we do not need to
8
+ // initialize the `interactiveElementRoleSchemas` until the function is called
9
+ // for the first time, so we will not take up the memory.
10
+ function getInteractiveElementRoleSchemas() {
11
+ if (interactiveElementRoleSchemas === null) {
12
+ const roleKeys = [...aria_query_1.roles.keys()];
13
+ const elementRoleEntries = [...aria_query_1.elementRoles.entries()];
14
+ // This set will contain all possible values for the `role` attribute,
15
+ // e.g. `button`, `navigation` or `presentation`.
16
+ const interactiveRoles = new Set(roleKeys
17
+ .filter((name) => {
18
+ const role = aria_query_1.roles.get(name);
19
+ return (role &&
20
+ !role.abstract &&
21
+ // The `progressbar` is descended from `widget`, but in practice, its
22
+ // value is always `readonly`, so we treat it as a non-interactive role.
23
+ name !== 'progressbar' &&
24
+ role.superClass.some((classes) => classes.includes('widget')));
25
+ })
26
+ .concat(
27
+ // 'toolbar' does not descend from widget, but it does support
28
+ // aria-activedescendant, thus in practice we treat it as a widget.
29
+ 'toolbar'));
30
+ interactiveElementRoleSchemas = elementRoleEntries.reduce((accumulator, [elementSchema, roleSet]) => {
31
+ return accumulator.concat([...roleSet].every((role) => interactiveRoles.has(role))
32
+ ? elementSchema
33
+ : []);
34
+ }, []);
35
+ }
36
+ return interactiveElementRoleSchemas;
37
+ }
38
+ exports.getInteractiveElementRoleSchemas = getInteractiveElementRoleSchemas;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNonInteractiveRoles = exports.getNonInteractiveElementRoleSchemas = void 0;
4
+ const aria_query_1 = require("aria-query");
5
+ let nonInteractiveElementRoleSchemas = null;
6
+ let nonInteractiveRoles = null;
7
+ // These functions follow the lazy initialization pattern.
8
+ // Since this is a top-level module (it will be included via `require`),
9
+ // we do not need to initialize the `nonInteractiveElementRoleSchemas` or
10
+ // `nonInteractiveRoles` until the functions are called for the first time,
11
+ // so we will not take up the memory.
12
+ function getNonInteractiveElementRoleSchemas() {
13
+ if (nonInteractiveElementRoleSchemas === null) {
14
+ const elementRoleEntries = [...aria_query_1.elementRoles.entries()];
15
+ nonInteractiveElementRoleSchemas = elementRoleEntries.reduce((accumulator, [elementSchema, roleSet]) => {
16
+ return accumulator.concat([...roleSet].every((role) => getNonInteractiveRoles().has(role))
17
+ ? elementSchema
18
+ : []);
19
+ }, []);
20
+ }
21
+ return nonInteractiveElementRoleSchemas;
22
+ }
23
+ exports.getNonInteractiveElementRoleSchemas = getNonInteractiveElementRoleSchemas;
24
+ function getNonInteractiveRoles() {
25
+ if (nonInteractiveRoles === null) {
26
+ const roleKeys = [...aria_query_1.roles.keys()];
27
+ nonInteractiveRoles = new Set(roleKeys
28
+ .filter((name) => {
29
+ const role = aria_query_1.roles.get(name);
30
+ return (role &&
31
+ !role.abstract &&
32
+ // 'toolbar' does not descend from widget, but it does support
33
+ // aria-activedescendant, thus in practice we treat it as a widget.
34
+ name !== 'toolbar' &&
35
+ !role.superClass.some((classes) => classes.includes('widget')));
36
+ })
37
+ .concat(
38
+ // The `progressbar` is descended from `widget`, but in practice, its
39
+ // value is always `readonly`, so we treat it as a non-interactive role.
40
+ 'progressbar'));
41
+ }
42
+ return nonInteractiveRoles;
43
+ }
44
+ exports.getNonInteractiveRoles = getNonInteractiveRoles;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isNonInteractiveRole = exports.isInteractiveElement = void 0;
4
+ const attributes_comparator_1 = require("../attributes-comparator");
5
+ const get_attribute_value_1 = require("../get-attribute-value");
6
+ const get_dom_elements_1 = require("../get-dom-elements");
7
+ const get_interactive_element_ax_object_schemas_1 = require("./get-interactive-element-ax-object-schemas");
8
+ const get_interactive_element_role_schemas_1 = require("./get-interactive-element-role-schemas");
9
+ const get_non_interactive_element_role_schemas_1 = require("./get-non-interactive-element-role-schemas");
10
+ function checkIsInteractiveElement(node) {
11
+ function elementSchemaMatcher({ attributes, name }) {
12
+ return node.name === name && (0, attributes_comparator_1.attributesComparator)(attributes !== null && attributes !== void 0 ? attributes : [], node);
13
+ }
14
+ // Check in elementRoles for inherent interactive role associations for
15
+ // this element.
16
+ const isInherentInteractiveElement = (0, get_interactive_element_role_schemas_1.getInteractiveElementRoleSchemas)().some(elementSchemaMatcher);
17
+ if (isInherentInteractiveElement) {
18
+ return true;
19
+ }
20
+ // Check in elementRoles for inherent non-interactive role associations for
21
+ // this element.
22
+ const isInherentNonInteractiveElement = (0, get_non_interactive_element_role_schemas_1.getNonInteractiveElementRoleSchemas)().some(elementSchemaMatcher);
23
+ if (isInherentNonInteractiveElement) {
24
+ return false;
25
+ }
26
+ // Check in elementAXObjects for AX Tree associations for this element.
27
+ return (0, get_interactive_element_ax_object_schemas_1.getInteractiveElementAXObjectSchemas)().some(elementSchemaMatcher);
28
+ }
29
+ function checkIsNonInteractiveRole(node) {
30
+ return (0, get_non_interactive_element_role_schemas_1.getNonInteractiveRoles)().has((0, get_attribute_value_1.getAttributeValue)(node, 'role'));
31
+ }
32
+ /**
33
+ * Returns boolean indicating whether the given element is
34
+ * interactive on the DOM or not. Usually used when an element
35
+ * has a dynamic handler on it and we need to discern whether or not
36
+ * it's intention is to be interacted with on the DOM.
37
+ */
38
+ function isInteractiveElement(node) {
39
+ return (0, get_dom_elements_1.getDomElements)().has(node.name) && checkIsInteractiveElement(node);
40
+ }
41
+ exports.isInteractiveElement = isInteractiveElement;
42
+ function isNonInteractiveRole(node) {
43
+ return checkIsNonInteractiveRole(node);
44
+ }
45
+ exports.isNonInteractiveRole = isNonInteractiveRole;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPresentationRole = void 0;
4
+ const get_attribute_value_1 = require("./get-attribute-value");
5
+ const presentationRoles = new Set([
6
+ 'none',
7
+ 'presentation',
8
+ ]);
9
+ function isPresentationRole(node) {
10
+ const roleAttributeValue = (0, get_attribute_value_1.getAttributeValue)(node, 'role');
11
+ return (typeof roleAttributeValue === 'string' &&
12
+ presentationRoles.has(roleAttributeValue));
13
+ }
14
+ exports.isPresentationRole = isPresentationRole;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSemanticRoleElement = void 0;
4
+ // The axobject-query package doesn't have type definitions, but this is what we're using from it here
5
+ let axElements = null;
6
+ let axRoles = null;
7
+ // This function follows the lazy initialization pattern.
8
+ // Since this is a top-level module (it will be included via `require`), we do not need to
9
+ // initialize the `nonInteractiveElementRoleSchemas` until the function is called
10
+ // for the first time, so we will not take up the memory.
11
+ function isSemanticRoleElement(element, role, elementAttributes) {
12
+ var _a;
13
+ if (axElements === null || axRoles === null) {
14
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
15
+ const { AXObjectRoles, elementAXObjects } = require('axobject-query');
16
+ axElements = elementAXObjects;
17
+ axRoles = AXObjectRoles;
18
+ }
19
+ // elementAXObjects: HTML elements are mapped to their related AXConcepts concepts
20
+ return Array.from((_a = axElements === null || axElements === void 0 ? void 0 : axElements.keys()) !== null && _a !== void 0 ? _a : []).some((htmlElement) => {
21
+ var _a, _b;
22
+ return htmlElement.name === element &&
23
+ ((_a = htmlElement.attributes) !== null && _a !== void 0 ? _a : []).every((htmlElemAttr) =>
24
+ // match every axElement html attributes to given elementAttributes
25
+ elementAttributes.find((elemAttr) => htmlElemAttr.name === elemAttr.name &&
26
+ htmlElemAttr.value === elemAttr.value)) &&
27
+ (
28
+ // aria- properties are covered by the element's semantic role
29
+ (_b = axElements === null || axElements === void 0 ? void 0 : axElements.get(htmlElement)) === null || _b === void 0 ? void 0 : _b.find((roleName) => {
30
+ var _a;
31
+ // AXObjectRoles: AXObjects are mapped to their related ARIA concepts
32
+ return (_a = axRoles === null || axRoles === void 0 ? void 0 : axRoles.get(roleName)) === null || _a === void 0 ? void 0 : _a.find((semanticRole) => semanticRole.name === role);
33
+ }));
34
+ });
35
+ }
36
+ exports.isSemanticRoleElement = isSemanticRoleElement;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toPattern = void 0;
4
+ function toPattern(value) {
5
+ return RegExp(`^(${value.join('|')})$`);
6
+ }
7
+ exports.toPattern = toPattern;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular-eslint/eslint-plugin-template",
3
- "version": "15.2.2-alpha.25+4fee6b0",
3
+ "version": "15.2.2-alpha.26+973d50d",
4
4
  "description": "ESLint plugin for Angular Templates",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -17,10 +17,10 @@
17
17
  "LICENSE"
18
18
  ],
19
19
  "dependencies": {
20
- "@angular-eslint/bundled-angular-compiler": "15.2.2-alpha.25+4fee6b0",
21
- "@angular-eslint/utils": "15.2.2-alpha.25+4fee6b0",
22
- "@typescript-eslint/type-utils": "5.51.0",
23
- "@typescript-eslint/utils": "5.51.0",
20
+ "@angular-eslint/bundled-angular-compiler": "15.2.2-alpha.26+973d50d",
21
+ "@angular-eslint/utils": "15.2.2-alpha.26+973d50d",
22
+ "@typescript-eslint/type-utils": "5.59.2",
23
+ "@typescript-eslint/utils": "5.59.2",
24
24
  "aria-query": "5.1.3",
25
25
  "axobject-query": "3.1.1"
26
26
  },
@@ -31,5 +31,5 @@
31
31
  "eslint": "^7.20.0 || ^8.0.0",
32
32
  "typescript": "*"
33
33
  },
34
- "gitHead": "4fee6b08060838ba004a8d20ee6cb43a781ff2c3"
34
+ "gitHead": "973d50daf8bd9f5e82bd60763fc333344073226e"
35
35
  }
@@ -1,4 +0,0 @@
1
- {
2
- "parser": "@angular-eslint/template-parser",
3
- "plugins": ["@angular-eslint/template"]
4
- }
@@ -1,133 +0,0 @@
1
- declare const _default: {
2
- configs: {
3
- all: {
4
- extends: string;
5
- rules: {
6
- "@angular-eslint/template/accessibility-alt-text": string;
7
- "@angular-eslint/template/accessibility-elements-content": string;
8
- "@angular-eslint/template/accessibility-interactive-supports-focus": string;
9
- "@angular-eslint/template/accessibility-label-for": string;
10
- "@angular-eslint/template/accessibility-label-has-associated-control": string;
11
- "@angular-eslint/template/accessibility-role-has-required-aria": string;
12
- "@angular-eslint/template/accessibility-table-scope": string;
13
- "@angular-eslint/template/accessibility-valid-aria": string;
14
- "@angular-eslint/template/attributes-order": string;
15
- "@angular-eslint/template/banana-in-box": string;
16
- "@angular-eslint/template/button-has-type": string;
17
- "@angular-eslint/template/click-events-have-key-events": string;
18
- "@angular-eslint/template/conditional-complexity": string;
19
- "@angular-eslint/template/cyclomatic-complexity": string;
20
- "@angular-eslint/template/eqeqeq": string;
21
- "@angular-eslint/template/i18n": string;
22
- "@angular-eslint/template/mouse-events-have-key-events": string;
23
- "@angular-eslint/template/no-any": string;
24
- "@angular-eslint/template/no-autofocus": string;
25
- "@angular-eslint/template/no-call-expression": string;
26
- "@angular-eslint/template/no-distracting-elements": string;
27
- "@angular-eslint/template/no-duplicate-attributes": string;
28
- "@angular-eslint/template/no-inline-styles": string;
29
- "@angular-eslint/template/no-interpolation-in-attributes": string;
30
- "@angular-eslint/template/no-negated-async": string;
31
- "@angular-eslint/template/no-positive-tabindex": string;
32
- "@angular-eslint/template/use-track-by-function": string;
33
- };
34
- };
35
- base: {
36
- parser: string;
37
- plugins: string[];
38
- };
39
- recommended: {
40
- extends: string;
41
- rules: {
42
- "@angular-eslint/template/banana-in-box": string;
43
- "@angular-eslint/template/eqeqeq": string;
44
- "@angular-eslint/template/no-negated-async": string;
45
- };
46
- };
47
- 'process-inline-templates': {
48
- parser: string;
49
- parserOptions: {
50
- ecmaVersion: number;
51
- sourceType: string;
52
- };
53
- plugins: string[];
54
- processor: string;
55
- };
56
- };
57
- processors: {
58
- 'extract-inline-html': {
59
- preprocess: typeof import("./processors").preprocessComponentFile;
60
- postprocess: typeof import("./processors").postprocessComponentFile;
61
- supportsAutofix: boolean;
62
- };
63
- };
64
- rules: {
65
- "accessibility-alt-text": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"accessibilityAltText", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
66
- "accessibility-elements-content": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"accessibilityElementsContent", [{
67
- readonly allowList?: readonly string[] | undefined;
68
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
69
- "accessibility-interactive-supports-focus": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"interactiveSupportsFocus", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
70
- "accessibility-label-for": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"accessibilityLabelFor", [{
71
- readonly controlComponents?: readonly string[] | undefined;
72
- readonly labelAttributes?: readonly string[] | undefined;
73
- readonly labelComponents?: readonly string[] | undefined;
74
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
75
- "accessibility-label-has-associated-control": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"accessibilityLabelHasAssociatedControl", [{
76
- readonly controlComponents?: readonly string[] | undefined;
77
- readonly labelComponents?: readonly {
78
- readonly inputs?: readonly string[] | undefined;
79
- readonly selector: string;
80
- }[] | undefined;
81
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
82
- "accessibility-role-has-required-aria": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<import("./rules/accessibility-role-has-required-aria").MessageIds, [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
83
- "accessibility-table-scope": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"accessibilityTableScope", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
84
- "accessibility-valid-aria": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<import("./rules/accessibility-valid-aria").MessageIds, [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
85
- "attributes-order": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"attributesOrder", [{
86
- readonly alphabetical: boolean;
87
- readonly order: readonly import("./rules/attributes-order").OrderType[];
88
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
89
- "banana-in-box": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"bananaInBox", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
90
- "button-has-type": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<import("./rules/button-has-type").MessageIds, [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
91
- "conditional-complexity": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"conditionalComplexity", [{
92
- maxComplexity: number;
93
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
94
- "click-events-have-key-events": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"clickEventsHaveKeyEvents", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
95
- "cyclomatic-complexity": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"cyclomaticComplexity", [{
96
- maxComplexity: number;
97
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
98
- eqeqeq: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<import("./rules/eqeqeq").MessageIds, [{
99
- readonly allowNullOrUndefined?: boolean | undefined;
100
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
101
- i18n: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<import("./rules/i18n").MessageIds, [{
102
- readonly boundTextAllowedPattern?: string | undefined;
103
- readonly checkAttributes?: boolean | undefined;
104
- readonly checkDuplicateId?: boolean | undefined;
105
- readonly checkId?: boolean | undefined;
106
- readonly checkText?: boolean | undefined;
107
- readonly ignoreAttributes?: readonly string[] | undefined;
108
- readonly ignoreTags?: readonly string[] | undefined;
109
- readonly requireDescription?: boolean | undefined;
110
- readonly requireMeaning?: boolean | undefined;
111
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
112
- "mouse-events-have-key-events": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"mouseEventsHaveKeyEvents", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
113
- "no-any": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<import("./rules/no-any").MessageIds, [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
114
- "no-autofocus": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"noAutofocus", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
115
- "no-call-expression": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"noCallExpression", [{
116
- readonly allowList?: readonly string[] | undefined;
117
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
118
- "no-distracting-elements": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"noDistractingElements", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
119
- "no-duplicate-attributes": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<import("./rules/no-duplicate-attributes").MessageIds, [{
120
- readonly allowTwoWayDataBinding?: boolean | undefined;
121
- readonly ignore?: readonly string[] | undefined;
122
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
123
- "no-inline-styles": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"noInlineStyles", [{
124
- readonly allowNgStyle?: boolean | undefined;
125
- readonly allowBindToStyle?: boolean | undefined;
126
- }], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
127
- "no-negated-async": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<import("./rules/no-negated-async").MessageIds, [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
128
- "no-positive-tabindex": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<import("./rules/no-positive-tabindex").MessageIds, [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
129
- "use-track-by-function": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"useTrackByFunction", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
130
- "no-interpolation-in-attributes": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"noInterpolationInAttributes", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
131
- };
132
- };
133
- export default _default;
@@ -1,37 +0,0 @@
1
- /**
2
- * Because ultimately a user is in control of how and when this processor gets invoked,
3
- * we can't fully protect them against doing more work than is necessary in all cases.
4
- *
5
- * Therefore, before we do a full parse of a TypeScript file to try and extract one or
6
- * more Component declarations we want to do a really quick check for whether or not
7
- * a file is likely to contain them.
8
- */
9
- export declare function isFileLikelyToContainComponentDeclarations(text: string, filename: string): boolean;
10
- type PreprocessResult = (string | {
11
- text: string;
12
- filename: string;
13
- })[];
14
- export declare function preprocessComponentFile(text: string, filename: string): PreprocessResult;
15
- export declare function postprocessComponentFile(multiDimensionalMessages: {
16
- ruleId: string;
17
- severity: number;
18
- message: string;
19
- line: number;
20
- column: number;
21
- nodeType: string;
22
- messageId: string;
23
- endLine: number;
24
- endColumn: number;
25
- fix?: {
26
- range: number[];
27
- text: string;
28
- };
29
- }[][], filename: string): readonly unknown[];
30
- declare const _default: {
31
- 'extract-inline-html': {
32
- preprocess: typeof preprocessComponentFile;
33
- postprocess: typeof postprocessComponentFile;
34
- supportsAutofix: boolean;
35
- };
36
- };
37
- export default _default;
@@ -1,4 +0,0 @@
1
- export type MessageIds = 'accessibilityAltText';
2
- export declare const RULE_NAME = "accessibility-alt-text";
3
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"accessibilityAltText", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
4
- export default _default;
@@ -1,9 +0,0 @@
1
- type Options = [
2
- {
3
- readonly allowList?: readonly string[];
4
- }
5
- ];
6
- export type MessageIds = 'accessibilityElementsContent';
7
- export declare const RULE_NAME = "accessibility-elements-content";
8
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"accessibilityElementsContent", Options, import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
9
- export default _default;
@@ -1,4 +0,0 @@
1
- export type MessageIds = 'interactiveSupportsFocus';
2
- export declare const RULE_NAME = "accessibility-interactive-supports-focus";
3
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"interactiveSupportsFocus", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
4
- export default _default;
@@ -1,11 +0,0 @@
1
- type Options = [
2
- {
3
- readonly controlComponents?: readonly string[];
4
- readonly labelAttributes?: readonly string[];
5
- readonly labelComponents?: readonly string[];
6
- }
7
- ];
8
- export type MessageIds = 'accessibilityLabelFor';
9
- export declare const RULE_NAME = "accessibility-label-for";
10
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"accessibilityLabelFor", Options, import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
11
- export default _default;
@@ -1,14 +0,0 @@
1
- type LabelComponent = {
2
- readonly inputs?: readonly string[];
3
- readonly selector: string;
4
- };
5
- type Options = [
6
- {
7
- readonly controlComponents?: readonly string[];
8
- readonly labelComponents?: readonly LabelComponent[];
9
- }
10
- ];
11
- export type MessageIds = 'accessibilityLabelHasAssociatedControl';
12
- export declare const RULE_NAME = "accessibility-label-has-associated-control";
13
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"accessibilityLabelHasAssociatedControl", Options, import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
14
- export default _default;
@@ -1,4 +0,0 @@
1
- export type MessageIds = 'roleHasRequiredAria' | 'suggestRemoveRole';
2
- export declare const RULE_NAME = "accessibility-role-has-required-aria";
3
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<MessageIds, [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
4
- export default _default;
@@ -1,4 +0,0 @@
1
- export type MessageIds = 'accessibilityTableScope';
2
- export declare const RULE_NAME = "accessibility-table-scope";
3
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"accessibilityTableScope", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
4
- export default _default;
@@ -1,4 +0,0 @@
1
- export type MessageIds = 'accessibilityValidAria' | 'accessibilityValidAriaValue' | 'suggestRemoveInvalidAria';
2
- export declare const RULE_NAME = "accessibility-valid-aria";
3
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<MessageIds, [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
4
- export default _default;
@@ -1,18 +0,0 @@
1
- export declare const enum OrderType {
2
- TemplateReferenceVariable = "TEMPLATE_REFERENCE",
3
- StructuralDirective = "STRUCTURAL_DIRECTIVE",
4
- AttributeBinding = "ATTRIBUTE_BINDING",
5
- InputBinding = "INPUT_BINDING",
6
- OutputBinding = "OUTPUT_BINDING",
7
- TwoWayBinding = "TWO_WAY_BINDING"
8
- }
9
- type Options = [
10
- {
11
- readonly alphabetical: boolean;
12
- readonly order: readonly OrderType[];
13
- }
14
- ];
15
- export type MessageIds = 'attributesOrder';
16
- export declare const RULE_NAME = "attributes-order";
17
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"attributesOrder", Options, import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
18
- export default _default;
@@ -1,4 +0,0 @@
1
- export type MessageIds = 'bananaInBox';
2
- export declare const RULE_NAME = "banana-in-box";
3
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"bananaInBox", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
4
- export default _default;
@@ -1,5 +0,0 @@
1
- export declare const RULE_NAME = "button-has-type";
2
- export declare const INVALID_TYPE_DATA_KEY = "type";
3
- export type MessageIds = 'invalidType' | 'missingType';
4
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<MessageIds, [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
5
- export default _default;
@@ -1,4 +0,0 @@
1
- export type MessageIds = 'clickEventsHaveKeyEvents';
2
- export declare const RULE_NAME = "click-events-have-key-events";
3
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"clickEventsHaveKeyEvents", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
4
- export default _default;
@@ -1,7 +0,0 @@
1
- type Options = [{
2
- maxComplexity: number;
3
- }];
4
- export type MessageIds = 'conditionalComplexity';
5
- export declare const RULE_NAME = "conditional-complexity";
6
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"conditionalComplexity", Options, import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
7
- export default _default;
@@ -1,7 +0,0 @@
1
- type Options = [{
2
- maxComplexity: number;
3
- }];
4
- export type MessageIds = 'cyclomaticComplexity';
5
- export declare const RULE_NAME = "cyclomatic-complexity";
6
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"cyclomaticComplexity", Options, import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
7
- export default _default;
@@ -1,8 +0,0 @@
1
- import type { TSESLint } from '@typescript-eslint/utils';
2
- type Options = [{
3
- readonly allowNullOrUndefined?: boolean;
4
- }];
5
- export type MessageIds = 'eqeqeq' | 'suggestStrictEquality';
6
- export declare const RULE_NAME = "eqeqeq";
7
- declare const _default: TSESLint.RuleModule<MessageIds, Options, TSESLint.RuleListener>;
8
- export default _default;
@@ -1,18 +0,0 @@
1
- import type { TSESLint } from '@typescript-eslint/utils';
2
- type Options = [
3
- {
4
- readonly boundTextAllowedPattern?: string;
5
- readonly checkAttributes?: boolean;
6
- readonly checkDuplicateId?: boolean;
7
- readonly checkId?: boolean;
8
- readonly checkText?: boolean;
9
- readonly ignoreAttributes?: readonly string[];
10
- readonly ignoreTags?: readonly string[];
11
- readonly requireDescription?: boolean;
12
- readonly requireMeaning?: boolean;
13
- }
14
- ];
15
- export type MessageIds = 'i18nAttribute' | 'i18nAttributeOnIcuOrText' | 'i18nCustomIdOnAttribute' | 'i18nCustomIdOnElement' | 'i18nDuplicateCustomId' | 'suggestAddI18nAttribute' | 'i18nMissingDescription' | 'i18nMissingMeaning';
16
- export declare const RULE_NAME = "i18n";
17
- declare const _default: TSESLint.RuleModule<MessageIds, Options, TSESLint.RuleListener>;
18
- export default _default;
@@ -1,5 +0,0 @@
1
- import type { TSESLint } from '@typescript-eslint/utils';
2
- export type MessageIds = 'mouseEventsHaveKeyEvents';
3
- export declare const RULE_NAME = "mouse-events-have-key-events";
4
- declare const _default: TSESLint.RuleModule<"mouseEventsHaveKeyEvents", [], TSESLint.RuleListener>;
5
- export default _default;
@@ -1,4 +0,0 @@
1
- export type MessageIds = 'noAny' | 'suggestRemoveAny';
2
- export declare const RULE_NAME = "no-any";
3
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<MessageIds, [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
4
- export default _default;
@@ -1,4 +0,0 @@
1
- export type MessageIds = 'noAutofocus';
2
- export declare const RULE_NAME = "no-autofocus";
3
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"noAutofocus", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
4
- export default _default;
@@ -1,9 +0,0 @@
1
- type Options = [
2
- {
3
- readonly allowList?: readonly string[];
4
- }
5
- ];
6
- export type MessageIds = 'noCallExpression';
7
- export declare const RULE_NAME = "no-call-expression";
8
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"noCallExpression", Options, import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
9
- export default _default;
@@ -1,4 +0,0 @@
1
- export type MessageIds = 'noDistractingElements';
2
- export declare const RULE_NAME = "no-distracting-elements";
3
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"noDistractingElements", [], import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>;
4
- export default _default;