diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 73% rename from .eslintrc.js rename to .eslintrc.cjs index 144e5630b..40bdc7e45 100644 --- a/.eslintrc.js +++ b/.eslintrc.cjs @@ -1,14 +1,17 @@ +// @ts-check + "use strict"; require("@rushstack/eslint-patch/modern-module-resolution"); +/** @type import('eslint').Linter.Config */ module.exports = { env: { browser: true, node: true, jest: true, }, - ignorePatterns: ["*.js"], + ignorePatterns: ["*.js", "*.cjs"], extends: ["@saberhq/eslint-config-react"], parserOptions: { project: "tsconfig.json", diff --git a/package.json b/package.json index d6bd97f29..7ebdbc506 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "private": true, + "type": "module", "name": "@saberhq/saber-common", "description": "Common libraries across Saber projects.", "workspaces": [ @@ -25,6 +26,7 @@ "@types/babel__core": "^7.1.19", "@types/babel__preset-env": "^7.9.2", "@types/bn.js": "^5.1.0", + "@types/eslint": "^8.4.2", "@types/jest": "^27.5.1", "@types/node": "^17.0.36", "@types/react": "^18.0.9", diff --git a/packages/eslint-config-react/package.json b/packages/eslint-config-react/package.json index 4615d142a..bba1677d0 100644 --- a/packages/eslint-config-react/package.json +++ b/packages/eslint-config-react/package.json @@ -12,10 +12,15 @@ "saber", "react" ], - "main": "lib/eslint-config-react.js", + "type": "commonjs", + "main": "dist/cjs/eslint-config-react.cjs", "files": [ "lib" ], + "scripts": { + "build": "tsc", + "clean": "rm -fr dist/" + }, "publishConfig": { "access": "public" }, @@ -27,5 +32,12 @@ "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.30.0", "eslint-plugin-react-hooks": "^4.5.0" + }, + "devDependencies": { + "@saberhq/tsconfig": "workspace:^", + "@types/eslint": "^8.4.2", + "@types/node": "^17.0.38", + "eslint": "^8.16.0", + "typescript": "^4.7.2" } } diff --git a/packages/eslint-config-react/lib/eslint-config-react.js b/packages/eslint-config-react/src/eslint-config-react.cts similarity index 76% rename from packages/eslint-config-react/lib/eslint-config-react.js rename to packages/eslint-config-react/src/eslint-config-react.cts index 813c313e7..55326c25f 100644 --- a/packages/eslint-config-react/lib/eslint-config-react.js +++ b/packages/eslint-config-react/src/eslint-config-react.cts @@ -1,6 +1,6 @@ -"use strict"; +import type { Linter } from "eslint"; -module.exports = { +const config: Linter.Config = { env: { browser: true, }, @@ -16,3 +16,5 @@ module.exports = { "react/no-unescaped-entities": "off", }, }; + +module.exports = config; diff --git a/packages/eslint-config-react/tsconfig.json b/packages/eslint-config-react/tsconfig.json new file mode 100644 index 000000000..65f98a4d6 --- /dev/null +++ b/packages/eslint-config-react/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@saberhq/tsconfig/tsconfig.cjs.json", + "compilerOptions": { + "outDir": "dist/cjs/", + "types": ["node"] + }, + "include": ["src/"] +} diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 4d16492d0..dac173a13 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -11,10 +11,15 @@ "eslint", "saber" ], - "main": "lib/eslint-config.js", + "type": "commonjs", + "main": "dist/cjs/eslint-config.cjs", "files": [ "lib" ], + "scripts": { + "build": "tsc", + "clean": "rm -fr dist/" + }, "publishConfig": { "access": "public" }, @@ -31,5 +36,12 @@ "eslint-plugin-simple-import-sort": "^7.0.0", "eslint-plugin-unused-imports": "^2.0.0", "prettier": "^2.6.2" + }, + "devDependencies": { + "@saberhq/tsconfig": "workspace:^", + "@types/eslint": "^8.4.2", + "@types/node": "^17.0.38", + "eslint": "^8.16.0", + "typescript": "^4.7.2" } } diff --git a/packages/eslint-config/lib/eslint-config.js b/packages/eslint-config/src/eslint-config.cts similarity index 93% rename from packages/eslint-config/lib/eslint-config.js rename to packages/eslint-config/src/eslint-config.cts index bdd44c0b3..4582cb076 100644 --- a/packages/eslint-config/lib/eslint-config.js +++ b/packages/eslint-config/src/eslint-config.cts @@ -1,6 +1,6 @@ -"use strict"; +import type { Linter } from "eslint"; -module.exports = { +const config: Linter.Config = { root: true, ignorePatterns: ["dist/", "*.js"], parser: "@typescript-eslint/parser", @@ -49,3 +49,5 @@ module.exports = { ], }, }; + +module.exports = config; diff --git a/packages/eslint-config/tsconfig.json b/packages/eslint-config/tsconfig.json new file mode 100644 index 000000000..65f98a4d6 --- /dev/null +++ b/packages/eslint-config/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@saberhq/tsconfig/tsconfig.cjs.json", + "compilerOptions": { + "outDir": "dist/cjs/", + "types": ["node"] + }, + "include": ["src/"] +} diff --git a/yarn.lock b/yarn.lock index 4cd7c87e0..50d148ea9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2218,9 +2218,14 @@ __metadata: resolution: "@saberhq/eslint-config-react@workspace:packages/eslint-config-react" dependencies: "@saberhq/eslint-config": "workspace:^" + "@saberhq/tsconfig": "workspace:^" + "@types/eslint": ^8.4.2 + "@types/node": ^17.0.38 + eslint: ^8.16.0 eslint-plugin-jsx-a11y: ^6.5.1 eslint-plugin-react: ^7.30.0 eslint-plugin-react-hooks: ^4.5.0 + typescript: ^4.7.2 peerDependencies: eslint: ">=7" languageName: unknown @@ -2230,8 +2235,12 @@ __metadata: version: 0.0.0-use.local resolution: "@saberhq/eslint-config@workspace:packages/eslint-config" dependencies: + "@saberhq/tsconfig": "workspace:^" + "@types/eslint": ^8.4.2 + "@types/node": ^17.0.38 "@typescript-eslint/eslint-plugin": ^5.26.0 "@typescript-eslint/parser": ^5.26.0 + eslint: ^8.16.0 eslint-config-prettier: ^8.5.0 eslint-import-resolver-node: ^0.3.6 eslint-plugin-import: ^2.26.0 @@ -2239,6 +2248,7 @@ __metadata: eslint-plugin-simple-import-sort: ^7.0.0 eslint-plugin-unused-imports: ^2.0.0 prettier: ^2.6.2 + typescript: ^4.7.2 peerDependencies: eslint: ">=7" languageName: unknown @@ -2273,6 +2283,7 @@ __metadata: "@types/babel__core": ^7.1.19 "@types/babel__preset-env": ^7.9.2 "@types/bn.js": ^5.1.0 + "@types/eslint": ^8.4.2 "@types/jest": ^27.5.1 "@types/node": ^17.0.36 "@types/react": ^18.0.9 @@ -3013,6 +3024,16 @@ __metadata: languageName: node linkType: hard +"@types/eslint@npm:^8.4.2": + version: 8.4.2 + resolution: "@types/eslint@npm:8.4.2" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: e81268cdeb8d64d84af649344df88f064ece0f05db62072657c976b6162ffe16f94b6480a5367d627c629272c2d86d0ee8c24f7095e98f8e743b16f98500673b + languageName: node + linkType: hard + "@types/estree@npm:*, @types/estree@npm:^0.0.51": version: 0.0.51 resolution: "@types/estree@npm:0.0.51" @@ -3165,6 +3186,13 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^17.0.38": + version: 17.0.38 + resolution: "@types/node@npm:17.0.38" + checksum: 9db1c39d603850ced665ab60b8f8ebce674ff9d762dfff0f776d520e71e4d73fdcd4c7f69213b804d878cf3e726911b09cae4ee66e35ae2724538de9f4838681 + languageName: node + linkType: hard + "@types/prettier@npm:^2.1.5": version: 2.6.0 resolution: "@types/prettier@npm:2.6.0"