-
Notifications
You must be signed in to change notification settings - Fork 47.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build(eslint-plugin-react-hooks): tsconfig and global types
Contributing to #32240, this change adds the tsconfig, tsup config, and estree type declarations that will be needed for that plugin's typescript migration.
- Loading branch information
1 parent
a657bc5
commit 473958c
Showing
4 changed files
with
98 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
/** | ||
* This file augments the `estree` types to include types that are not built-in to `estree` or `estree-jsx`. | ||
* This is necessary because the `estree` types are used by ESLint, and ESLint does not natively support | ||
* TypeScript or Flow types. Since we're not using a ton of them, we can just add them here, rather than | ||
* installing typescript estree or flow estree types. | ||
* | ||
* This also adds support for the AST mutation that the Exhaustive deps rule does to add parent nodes. | ||
*/ | ||
declare module 'estree' { | ||
// The Exhaustive deps rule mutates the AST to add parent nodes for efficient traversal. | ||
// We need to augment the `estree` types to support that. | ||
interface BaseNode { | ||
parent?: Node; | ||
} | ||
|
||
// Adding types that aren't built-in to estree or estree-jsx. | ||
// Namely, the specific TS and Flow types that we're using. | ||
interface AsExpression extends BaseExpression { | ||
type: 'AsExpression'; | ||
expression: Expression | Identifier; | ||
} | ||
|
||
interface OptionalCallExpression extends BaseCallExpression { | ||
type: 'OptionalCallExpression'; | ||
} | ||
|
||
interface OptionalMemberExpression extends MemberExpression { | ||
type: 'OptionalMemberExpression'; | ||
} | ||
|
||
interface TSAsExpression extends BaseExpression { | ||
type: 'TSAsExpression'; | ||
expression: Expression | Identifier; | ||
} | ||
|
||
interface TSTypeQuery extends BaseNode { | ||
type: 'TSTypeQuery'; | ||
exprName: Identifier; | ||
} | ||
|
||
interface TSTypeReference extends BaseNode { | ||
type: 'TSTypeReference'; | ||
typeName: Identifier; | ||
} | ||
|
||
interface TypeCastExpression extends BaseExpression { | ||
type: 'TypeCastExpression'; | ||
expression: Expression | Identifier; | ||
} | ||
|
||
// Extend the set of known Expression types | ||
interface ExpressionMap { | ||
AsExpression: AsExpression; | ||
OptionalCallExpression: OptionalCallExpression; | ||
OptionalMemberExpression: OptionalMemberExpression; | ||
TSAsExpression: TSAsExpression; | ||
TypeCastExpression: TypeCastExpression; | ||
} | ||
|
||
// Extend the set of known Node types | ||
interface NodeMap { | ||
AsExpression: AsExpression; | ||
OptionalCallExpression: OptionalCallExpression; | ||
OptionalMemberExpression: OptionalMemberExpression; | ||
TSAsExpression: TSAsExpression; | ||
TSTypeQuery: TSTypeQuery; | ||
TSTypeReference: TSTypeReference; | ||
TypeCastExpression: TypeCastExpression; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
// In order to support the __EXPERIMENTAL__ global in TypeScript, | ||
// we need to declare it here. The value of this is set in both | ||
// the jest setup and CI build | ||
declare const __EXPERIMENTAL__: boolean; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
{ | ||
"extends": "@tsconfig/strictest/tsconfig.json", | ||
"compilerOptions": { | ||
"module": "ES2015", | ||
"target": "ES2015", | ||
"moduleResolution": "Bundler", | ||
"lib": ["ES2020"], | ||
"rootDir": ".", | ||
"noEmit": true, | ||
"sourceMap": false, | ||
"types": ["estree-jsx", "node"] | ||
}, | ||
"exclude": ["node_modules"], | ||
"include": ["src/**/*.ts"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
import {defineConfig} from 'tsup'; | ||
|
||
export default defineConfig({ | ||
clean: true, | ||
dts: true, | ||
entry: ['src/index.ts'], | ||
format: ['cjs'], | ||
outDir: 'build', | ||
}); |