diff --git a/compiler/forget/packages/eslint-plugin-react-forget/__tests__/ReactForgetDiagnostics-test.js b/compiler/forget/packages/eslint-plugin-react-forget/__tests__/ReactForgetDiagnostics-test.ts similarity index 100% rename from compiler/forget/packages/eslint-plugin-react-forget/__tests__/ReactForgetDiagnostics-test.js rename to compiler/forget/packages/eslint-plugin-react-forget/__tests__/ReactForgetDiagnostics-test.ts diff --git a/compiler/forget/packages/eslint-plugin-react-forget/babel.config.js b/compiler/forget/packages/eslint-plugin-react-forget/babel.config.js index 007d475fcb..bb79d35e31 100644 --- a/compiler/forget/packages/eslint-plugin-react-forget/babel.config.js +++ b/compiler/forget/packages/eslint-plugin-react-forget/babel.config.js @@ -5,4 +5,4 @@ * LICENSE file in the root directory of this source tree. */ -module.exports = { presets: ["@babel/preset-env"] }; +module.exports = { presets: ["@babel/preset-env", "@babel/preset-typescript"] }; diff --git a/compiler/forget/packages/eslint-plugin-react-forget/package.json b/compiler/forget/packages/eslint-plugin-react-forget/package.json index ed4bc34489..f6273fa4de 100644 --- a/compiler/forget/packages/eslint-plugin-react-forget/package.json +++ b/compiler/forget/packages/eslint-plugin-react-forget/package.json @@ -10,17 +10,18 @@ "main": "./lib/index.js", "exports": "./lib/index.js", "scripts": { - "build": ":", + "build": "tsc", "lint": "npm-run-all \"lint:*\"", "lint:eslint-docs": "npm-run-all \"update:eslint-docs -- --check\"", "lint:js": "eslint .", - "test": "jest", + "test": "tsc && jest", "update:eslint-docs": "eslint-doc-generator" }, "dependencies": {}, "devDependencies": { "@babel/preset-env": "^7.22.4", "@babel/preset-typescript": "^7.18.6", + "@types/node": "^20.2.5", "babel-jest": "^29.0.3", "eslint": "^8.19.0", "eslint-doc-generator": "^1.0.0", diff --git a/compiler/forget/packages/eslint-plugin-react-forget/src/index.js b/compiler/forget/packages/eslint-plugin-react-forget/src/index.ts similarity index 84% rename from compiler/forget/packages/eslint-plugin-react-forget/src/index.js rename to compiler/forget/packages/eslint-plugin-react-forget/src/index.ts index 3a76878527..1d17faaeea 100644 --- a/compiler/forget/packages/eslint-plugin-react-forget/src/index.js +++ b/compiler/forget/packages/eslint-plugin-react-forget/src/index.ts @@ -9,6 +9,6 @@ import ReactForgetDiagnostics from "./rules/ReactForgetDiagnostics"; module.exports = { rules: { - "react-forget-diagnoatics": ReactForgetDiagnostics, + "react-forget-diagnostics": ReactForgetDiagnostics, }, }; diff --git a/compiler/forget/packages/eslint-plugin-react-forget/src/rules/ReactForgetDiagnostics.js b/compiler/forget/packages/eslint-plugin-react-forget/src/rules/ReactForgetDiagnostics.ts similarity index 73% rename from compiler/forget/packages/eslint-plugin-react-forget/src/rules/ReactForgetDiagnostics.js rename to compiler/forget/packages/eslint-plugin-react-forget/src/rules/ReactForgetDiagnostics.ts index 79fff88556..c27cbbfd5b 100644 --- a/compiler/forget/packages/eslint-plugin-react-forget/src/rules/ReactForgetDiagnostics.js +++ b/compiler/forget/packages/eslint-plugin-react-forget/src/rules/ReactForgetDiagnostics.ts @@ -5,7 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -export default { +import type { Rule } from "eslint"; + +const rule: Rule.RuleModule = { meta: { type: "problem", docs: { @@ -13,7 +15,9 @@ export default { recommended: true, }, }, - create(context) { + create(_context: Rule.RuleContext) { return {}; }, }; + +export default rule; diff --git a/compiler/forget/packages/eslint-plugin-react-forget/tsconfig.json b/compiler/forget/packages/eslint-plugin-react-forget/tsconfig.json new file mode 100644 index 0000000000..4420706d67 --- /dev/null +++ b/compiler/forget/packages/eslint-plugin-react-forget/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "@tsconfig/node16-strictest/tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "dist", + "jsx": "react-jsxdev", + + // weaken strictness from preset + "importsNotUsedAsValues": "remove", + "noUncheckedIndexedAccess": false, + "noUnusedParameters": false, + "useUnknownInCatchVariables": false, + "target": "ES2015", + // ideally turn off only during dev, or on a per-file basis + "noUnusedLocals": false, + "sourceMap": true + }, + "exclude": ["node_modules"], + "include": ["src/**/*.ts"] +}