Skip to content

Commit 1fdd211

Browse files
committed
Convert to TypeScript
1 parent 5f79eb3 commit 1fdd211

File tree

81 files changed

+857
-588
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+857
-588
lines changed

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,17 @@
3131
"vue-eslint-parser": "^7.0.0"
3232
},
3333
"devDependencies": {
34+
"@types/aria-query": "^4.2.1",
3435
"@types/eslint-scope": "^3.7.0",
3536
"@types/eslint-visitor-keys": "^1.0.0",
37+
"@types/jest": "^26.0.23",
3638
"eslint": "^7.3.1",
3739
"eslint-plugin-eslint-plugin": "^3.0.0",
3840
"husky": "^6.0.0",
3941
"jest": "^27.0.1",
4042
"prettier": "^2.1.1",
4143
"pretty-quick": "^3.0.0",
44+
"ts-jest": "^27.0.1",
4245
"typescript": "^4.2.4"
4346
},
4447
"eslintConfig": {
@@ -64,10 +67,11 @@
6467
}
6568
},
6669
"jest": {
70+
"preset": "ts-jest",
6771
"setupFilesAfterEnv": [
6872
"./jest.setup.js"
6973
],
70-
"testRegex": ".test.js$"
74+
"testRegex": ".test.ts$"
7175
},
7276
"prettier": {
7377
"trailingComma": "none"

src/index.js renamed to src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module.exports = {
1+
export default {
22
rules: {
33
"accessible-emoji": require("./rules/accessible-emoji"),
44
"alt-text": require("./rules/alt-text"),

src/rules/__tests__/accessible-emoji.test.js renamed to src/rules/__tests__/accessible-emoji.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../accessible-emoji");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../accessible-emoji";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("accessible-emoji", rule, {
55
valid: [

src/rules/__tests__/alt-text.test.js renamed to src/rules/__tests__/alt-text.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../alt-text");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../alt-text";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("alt-text", rule, {
55
valid: [

src/rules/__tests__/anchor-has-content.test.js renamed to src/rules/__tests__/anchor-has-content.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../anchor-has-content");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../anchor-has-content";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("anchor-has-content", rule, {
55
valid: [

src/rules/__tests__/aria-props.test.js renamed to src/rules/__tests__/aria-props.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../aria-props");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../aria-props";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("aria-props", rule, {
55
valid: ["<input aria-labelledby='address' />"],

src/rules/__tests__/aria-role.test.js renamed to src/rules/__tests__/aria-role.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../aria-role");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../aria-role";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("aria-role", rule, {
55
valid: [

src/rules/__tests__/aria-unsupported-elements.test.js renamed to src/rules/__tests__/aria-unsupported-elements.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../aria-unsupported-elements");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../aria-unsupported-elements";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("aria-unsupported-elements", rule, {
55
valid: ["<html />"],

src/rules/__tests__/click-events-have-key-events.test.js renamed to src/rules/__tests__/click-events-have-key-events.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../click-events-have-key-events");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../click-events-have-key-events";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("click-events-have-key-events", rule, {
55
valid: [

src/rules/__tests__/form-control-has-label.test.js renamed to src/rules/__tests__/form-control-has-label.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../form-control-has-label");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../form-control-has-label";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("form-control-has-label", rule, {
55
valid: [

src/rules/__tests__/heading-has-content.test.js renamed to src/rules/__tests__/heading-has-content.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../heading-has-content");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../heading-has-content";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("heading-has-content", rule, {
55
valid: [

src/rules/__tests__/iframe-has-title.test.js renamed to src/rules/__tests__/iframe-has-title.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../iframe-has-title");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../iframe-has-title";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("iframe-has-title", rule, {
55
valid: ["<iframe title='test' />", "<iframe :title='test' />"],

src/rules/__tests__/interactive-supports-focus.test.js renamed to src/rules/__tests__/interactive-supports-focus.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../interactive-supports-focus");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../interactive-supports-focus";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("interactive-supports-focus", rule, {
55
valid: [

src/rules/__tests__/label-has-for.test.js renamed to src/rules/__tests__/label-has-for.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../label-has-for");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../label-has-for";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("label-has-for", rule, {
55
valid: [

src/rules/__tests__/makeRuleTester.js

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/rules/__tests__/makeRuleTester.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import type { Rule } from "eslint";
2+
import { RuleTester } from "eslint";
3+
4+
type ValidCase = string | { code: string, options?: any[] };
5+
type InvalidCase = string | { code: string, options?: any[], errors: any[] };
6+
type Config = { valid: ValidCase[], invalid: InvalidCase[] };
7+
8+
const filename = "test.vue";
9+
const makeTemplate = (code: string) => `<template>${code}</template>`;
10+
11+
function makeValidExample(example: ValidCase) {
12+
if (typeof example === "string") {
13+
return { filename, code: makeTemplate(example) };
14+
}
15+
16+
return { ...example, filename, code: makeTemplate(example.code) };
17+
}
18+
19+
function makeInvalidExample(example: InvalidCase) {
20+
if (typeof example === "string") {
21+
return {
22+
filename,
23+
code: makeTemplate(example),
24+
errors: [{ messageId: "default" }]
25+
};
26+
}
27+
28+
return { ...example, filename, code: makeTemplate(example.code) };
29+
}
30+
31+
function makeRuleTester(name: string, rule: Rule.RuleModule, config: Config) {
32+
const ruleTester = new RuleTester({
33+
parser: require.resolve("vue-eslint-parser"),
34+
parserOptions: {
35+
ecmaVersion: 2015,
36+
sourceType: "module"
37+
}
38+
});
39+
40+
ruleTester.run(name, rule, {
41+
valid: config.valid.map(makeValidExample),
42+
invalid: config.invalid.map(makeInvalidExample)
43+
});
44+
}
45+
46+
export default makeRuleTester;

src/rules/__tests__/media-has-caption.test.js renamed to src/rules/__tests__/media-has-caption.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../media-has-caption");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../media-has-caption";
2+
import makeRuleTester from "./makeRuleTester";
33

44
const options = [
55
{

src/rules/__tests__/mouse-events-have-key-events.test.js renamed to src/rules/__tests__/mouse-events-have-key-events.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../mouse-events-have-key-events");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../mouse-events-have-key-events";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("mouse-events-have-key-events", rule, {
55
valid: [

src/rules/__tests__/no-access-key.test.js renamed to src/rules/__tests__/no-access-key.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../no-access-key");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../no-access-key";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("no-access-key", rule, {
55
valid: ["<div />", "<div accesskey />"],

src/rules/__tests__/no-autofocus.test.js renamed to src/rules/__tests__/no-autofocus.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../no-autofocus");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../no-autofocus";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("no-autofocus", rule, {
55
valid: [

src/rules/__tests__/no-distracting-elements.test.js renamed to src/rules/__tests__/no-distracting-elements.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../no-distracting-elements");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../no-distracting-elements";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("no-distracting-elements", rule, {
55
valid: ["<div />"],

src/rules/__tests__/no-onchange.test.js renamed to src/rules/__tests__/no-onchange.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../no-onchange");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../no-onchange";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("no-onchange", rule, {
55
valid: ["<select><option @blur='void 0' @change='void 0' /></select>"],

src/rules/__tests__/no-redundant-roles.test.js renamed to src/rules/__tests__/no-redundant-roles.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../no-redundant-roles");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../no-redundant-roles";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("no-redundant-roles", rule, {
55
valid: ["<a role='link' />", "<div role='link' />"],

src/rules/__tests__/role-has-required-aria-props.test.js renamed to src/rules/__tests__/role-has-required-aria-props.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../role-has-required-aria-props");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../role-has-required-aria-props";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("role-has-required-aria-props", rule, {
55
valid: [

src/rules/__tests__/tabindex-no-positive.test.js renamed to src/rules/__tests__/tabindex-no-positive.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const rule = require("../tabindex-no-positive");
2-
const makeRuleTester = require("./makeRuleTester");
1+
import rule from "../tabindex-no-positive";
2+
import makeRuleTester from "./makeRuleTester";
33

44
makeRuleTester("tabindex-no-positive", rule, {
55
valid: [
Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
const emojiRegex = require("emoji-regex");
2-
const {
1+
import type { Rule } from "eslint";
2+
import emojiRegex from "emoji-regex";
3+
4+
import {
35
defineTemplateBodyVisitor,
46
getElementAttributeValue,
57
getElementType,
68
hasAriaLabel,
79
isAriaHidden,
810
makeDocsURL
9-
} = require("../utils");
11+
} from "../utils";
1012

11-
module.exports = {
13+
const rule: Rule.RuleModule = {
1214
meta: {
1315
docs: {
1416
url: makeDocsURL("accessible-emoji")
@@ -20,21 +22,22 @@ module.exports = {
2022
create(context) {
2123
return defineTemplateBodyVisitor(context, {
2224
VText(node) {
23-
const { value } = node;
24-
25-
if (value && emojiRegex().test(value)) {
25+
if (node.value && emojiRegex().test(node.value)) {
2626
const element = node.parent;
2727

2828
if (
29+
element.type === "VElement" &&
2930
!isAriaHidden(element) &&
3031
(!hasAriaLabel(element) ||
3132
getElementType(element) !== "span" ||
3233
getElementAttributeValue(element, "role") !== "img")
3334
) {
34-
context.report({ node, messageId: "default" });
35+
context.report({ node: node as any, messageId: "default" });
3536
}
3637
}
3738
}
3839
});
3940
}
4041
};
42+
43+
export default rule;

0 commit comments

Comments
 (0)