mirror of
https://github.com/swc-project/swc.git
synced 2025-01-01 18:16:09 +03:00
fix(es/parser): Fix bugs (#1405)
swc_ecma_parser: - Parse generics in class methods with special name properly.
This commit is contained in:
parent
a53186c842
commit
5ad57b02f2
@ -7,7 +7,7 @@ include = ["Cargo.toml", "src/**/*.rs", "examples/**/*.rs"]
|
||||
license = "Apache-2.0/MIT"
|
||||
name = "swc_ecma_parser"
|
||||
repository = "https://github.com/swc-project/swc.git"
|
||||
version = "0.47.1"
|
||||
version = "0.47.2"
|
||||
|
||||
[features]
|
||||
default = []
|
||||
|
@ -297,6 +297,8 @@ impl<'a, I: Tokens> Parser<I> {
|
||||
}
|
||||
|
||||
fn parse_class_member(&mut self) -> PResult<ClassMember> {
|
||||
trace_cur!(self, parse_class_member);
|
||||
|
||||
let start = cur_pos!(self);
|
||||
let decorators = self.parse_decorators(false)?;
|
||||
let declare = self.syntax().typescript() && eat!(self, "declare");
|
||||
@ -476,6 +478,7 @@ impl<'a, I: Tokens> Parser<I> {
|
||||
);
|
||||
}
|
||||
|
||||
trace_cur!(self, parse_class_member_with_is_static__normal_class_member);
|
||||
let mut key = self.parse_class_prop_name()?;
|
||||
let is_optional = self.input.syntax().typescript() && eat!(self, '?');
|
||||
|
||||
@ -496,6 +499,8 @@ impl<'a, I: Tokens> Parser<I> {
|
||||
if self.is_class_method()? {
|
||||
// handle a(){} / get(){} / set(){} / async(){}
|
||||
|
||||
trace_cur!(self, parse_class_member_with_is_static__normal_class_method);
|
||||
|
||||
if readonly {
|
||||
syntax_error!(self, span!(self, start), SyntaxError::ReadOnlyMethod);
|
||||
}
|
||||
@ -819,7 +824,9 @@ impl<'a, I: Tokens> Parser<I> {
|
||||
}
|
||||
|
||||
fn is_class_method(&mut self) -> PResult<bool> {
|
||||
Ok(is!(self, '(') || (self.input.syntax().typescript() && is!(self, '<')))
|
||||
Ok(is!(self, '(')
|
||||
|| (self.input.syntax().typescript() && is!(self, '<'))
|
||||
|| (self.input.syntax().typescript() && is!(self, JSXTagStart)))
|
||||
}
|
||||
|
||||
fn is_class_property(&mut self) -> PResult<bool> {
|
||||
@ -912,6 +919,8 @@ impl<'a, I: Tokens> Parser<I> {
|
||||
where
|
||||
F: FnOnce(&mut Self) -> PResult<Vec<Param>>,
|
||||
{
|
||||
trace_cur!(self, parse_fn_args_body);
|
||||
|
||||
// let prev_in_generator = self.ctx().in_generator;
|
||||
let ctx = Context {
|
||||
in_async: is_async,
|
||||
@ -922,6 +931,7 @@ impl<'a, I: Tokens> Parser<I> {
|
||||
self.with_ctx(ctx).parse_with(|p| {
|
||||
let type_params = if p.syntax().typescript() && is_one_of!(p, '<', JSXTagStart) {
|
||||
//
|
||||
trace_cur!(p, parse_fn_args_body__type_params);
|
||||
Some(p.parse_ts_type_params()?)
|
||||
} else {
|
||||
None
|
||||
@ -1033,6 +1043,8 @@ impl<'a, I: Tokens> Parser<I> {
|
||||
where
|
||||
F: FnOnce(&mut Self) -> PResult<Vec<Param>>,
|
||||
{
|
||||
trace_cur!(self, make_method);
|
||||
|
||||
let is_static = static_token.is_some();
|
||||
let ctx = Context {
|
||||
span_of_fn_name: Some(key.span()),
|
||||
|
@ -0,0 +1,5 @@
|
||||
function foo<P extends RouteParams = RP, S extends State = RS>(
|
||||
name: string,
|
||||
path: string,
|
||||
...middleware: RouterMiddleware<P, S>[]
|
||||
): Router<P extends RP ? P : (P & RP), S extends RS ? S : (S & RS)>; { }
|
@ -0,0 +1,653 @@
|
||||
{
|
||||
"type": "Script",
|
||||
"span": {
|
||||
"start": 0,
|
||||
"end": 216,
|
||||
"ctxt": 0
|
||||
},
|
||||
"body": [
|
||||
{
|
||||
"type": "FunctionDeclaration",
|
||||
"identifier": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 9,
|
||||
"end": 12,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "foo",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"declare": false,
|
||||
"params": [
|
||||
{
|
||||
"type": "Parameter",
|
||||
"span": {
|
||||
"start": 68,
|
||||
"end": 80,
|
||||
"ctxt": 0
|
||||
},
|
||||
"decorators": [],
|
||||
"pat": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 68,
|
||||
"end": 80,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "name",
|
||||
"typeAnnotation": {
|
||||
"type": "TsTypeAnnotation",
|
||||
"span": {
|
||||
"start": 72,
|
||||
"end": 80,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsKeywordType",
|
||||
"span": {
|
||||
"start": 74,
|
||||
"end": 80,
|
||||
"ctxt": 0
|
||||
},
|
||||
"kind": "string"
|
||||
}
|
||||
},
|
||||
"optional": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Parameter",
|
||||
"span": {
|
||||
"start": 86,
|
||||
"end": 98,
|
||||
"ctxt": 0
|
||||
},
|
||||
"decorators": [],
|
||||
"pat": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 86,
|
||||
"end": 98,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "path",
|
||||
"typeAnnotation": {
|
||||
"type": "TsTypeAnnotation",
|
||||
"span": {
|
||||
"start": 90,
|
||||
"end": 98,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsKeywordType",
|
||||
"span": {
|
||||
"start": 92,
|
||||
"end": 98,
|
||||
"ctxt": 0
|
||||
},
|
||||
"kind": "string"
|
||||
}
|
||||
},
|
||||
"optional": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Parameter",
|
||||
"span": {
|
||||
"start": 104,
|
||||
"end": 143,
|
||||
"ctxt": 0
|
||||
},
|
||||
"decorators": [],
|
||||
"pat": {
|
||||
"type": "RestElement",
|
||||
"span": {
|
||||
"start": 104,
|
||||
"end": 143,
|
||||
"ctxt": 0
|
||||
},
|
||||
"rest": {
|
||||
"start": 104,
|
||||
"end": 107,
|
||||
"ctxt": 0
|
||||
},
|
||||
"argument": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 107,
|
||||
"end": 117,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "middleware",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsTypeAnnotation",
|
||||
"span": {
|
||||
"start": 117,
|
||||
"end": 143,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsArrayType",
|
||||
"span": {
|
||||
"start": 119,
|
||||
"end": 143,
|
||||
"ctxt": 0
|
||||
},
|
||||
"elemType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 119,
|
||||
"end": 141,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 119,
|
||||
"end": 135,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RouterMiddleware",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": {
|
||||
"type": "TsTypeParameterInstantiation",
|
||||
"span": {
|
||||
"start": 135,
|
||||
"end": 141,
|
||||
"ctxt": 0
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 136,
|
||||
"end": 137,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 136,
|
||||
"end": 137,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "P",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 139,
|
||||
"end": 140,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 139,
|
||||
"end": 140,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "S",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"decorators": [],
|
||||
"span": {
|
||||
"start": 0,
|
||||
"end": 212,
|
||||
"ctxt": 0
|
||||
},
|
||||
"body": null,
|
||||
"generator": false,
|
||||
"async": false,
|
||||
"typeParameters": {
|
||||
"type": "TsTypeParameterDeclaration",
|
||||
"span": {
|
||||
"start": 12,
|
||||
"end": 62,
|
||||
"ctxt": 0
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"type": "TsTypeParameter",
|
||||
"span": {
|
||||
"start": 13,
|
||||
"end": 39,
|
||||
"ctxt": 0
|
||||
},
|
||||
"name": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 13,
|
||||
"end": 14,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "P",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"constraint": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 23,
|
||||
"end": 34,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 23,
|
||||
"end": 34,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RouteParams",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"default": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 37,
|
||||
"end": 39,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 37,
|
||||
"end": 39,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RP",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TsTypeParameter",
|
||||
"span": {
|
||||
"start": 41,
|
||||
"end": 61,
|
||||
"ctxt": 0
|
||||
},
|
||||
"name": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 41,
|
||||
"end": 42,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "S",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"constraint": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 51,
|
||||
"end": 56,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 51,
|
||||
"end": 56,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "State",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"default": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 59,
|
||||
"end": 61,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 59,
|
||||
"end": 61,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RS",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"returnType": {
|
||||
"type": "TsTypeAnnotation",
|
||||
"span": {
|
||||
"start": 145,
|
||||
"end": 211,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 147,
|
||||
"end": 211,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 147,
|
||||
"end": 153,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "Router",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": {
|
||||
"type": "TsTypeParameterInstantiation",
|
||||
"span": {
|
||||
"start": 153,
|
||||
"end": 211,
|
||||
"ctxt": 0
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"type": "TsConditionalType",
|
||||
"span": {
|
||||
"start": 154,
|
||||
"end": 181,
|
||||
"ctxt": 0
|
||||
},
|
||||
"checkType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 154,
|
||||
"end": 155,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 154,
|
||||
"end": 155,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "P",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"extendsType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 164,
|
||||
"end": 166,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 164,
|
||||
"end": 166,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RP",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"trueType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 169,
|
||||
"end": 170,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 169,
|
||||
"end": 170,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "P",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"falseType": {
|
||||
"type": "TsParenthesizedType",
|
||||
"span": {
|
||||
"start": 173,
|
||||
"end": 181,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsIntersectionType",
|
||||
"span": {
|
||||
"start": 174,
|
||||
"end": 180,
|
||||
"ctxt": 0
|
||||
},
|
||||
"types": [
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 174,
|
||||
"end": 175,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 174,
|
||||
"end": 175,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "P",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 178,
|
||||
"end": 180,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 178,
|
||||
"end": 180,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RP",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TsConditionalType",
|
||||
"span": {
|
||||
"start": 183,
|
||||
"end": 210,
|
||||
"ctxt": 0
|
||||
},
|
||||
"checkType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 183,
|
||||
"end": 184,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 183,
|
||||
"end": 184,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "S",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"extendsType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 193,
|
||||
"end": 195,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 193,
|
||||
"end": 195,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RS",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"trueType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 198,
|
||||
"end": 199,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 198,
|
||||
"end": 199,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "S",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"falseType": {
|
||||
"type": "TsParenthesizedType",
|
||||
"span": {
|
||||
"start": 202,
|
||||
"end": 210,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsIntersectionType",
|
||||
"span": {
|
||||
"start": 203,
|
||||
"end": 209,
|
||||
"ctxt": 0
|
||||
},
|
||||
"types": [
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 203,
|
||||
"end": 204,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 203,
|
||||
"end": 204,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "S",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 207,
|
||||
"end": 209,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 207,
|
||||
"end": 209,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RS",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "BlockStatement",
|
||||
"span": {
|
||||
"start": 213,
|
||||
"end": 216,
|
||||
"ctxt": 0
|
||||
},
|
||||
"stmts": []
|
||||
}
|
||||
],
|
||||
"interpreter": null
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
class Foo {
|
||||
delete<P extends RouteParams = RP, S extends State = RS>(
|
||||
name: string,
|
||||
path: string,
|
||||
...middleware: RouterMiddleware<P, S>[]
|
||||
): Router<P extends RP ? P : (P & RP), S extends RS ? S : (S & RS)> { }
|
||||
}
|
@ -0,0 +1,691 @@
|
||||
{
|
||||
"type": "Script",
|
||||
"span": {
|
||||
"start": 0,
|
||||
"end": 243,
|
||||
"ctxt": 0
|
||||
},
|
||||
"body": [
|
||||
{
|
||||
"type": "ClassDeclaration",
|
||||
"identifier": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 6,
|
||||
"end": 9,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "Foo",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"declare": false,
|
||||
"span": {
|
||||
"start": 0,
|
||||
"end": 243,
|
||||
"ctxt": 0
|
||||
},
|
||||
"decorators": [],
|
||||
"body": [
|
||||
{
|
||||
"type": "ClassMethod",
|
||||
"span": {
|
||||
"start": 16,
|
||||
"end": 241,
|
||||
"ctxt": 0
|
||||
},
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 16,
|
||||
"end": 22,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "delete",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"function": {
|
||||
"params": [
|
||||
{
|
||||
"type": "Parameter",
|
||||
"span": {
|
||||
"start": 82,
|
||||
"end": 94,
|
||||
"ctxt": 0
|
||||
},
|
||||
"decorators": [],
|
||||
"pat": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 82,
|
||||
"end": 94,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "name",
|
||||
"typeAnnotation": {
|
||||
"type": "TsTypeAnnotation",
|
||||
"span": {
|
||||
"start": 86,
|
||||
"end": 94,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsKeywordType",
|
||||
"span": {
|
||||
"start": 88,
|
||||
"end": 94,
|
||||
"ctxt": 0
|
||||
},
|
||||
"kind": "string"
|
||||
}
|
||||
},
|
||||
"optional": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Parameter",
|
||||
"span": {
|
||||
"start": 104,
|
||||
"end": 116,
|
||||
"ctxt": 0
|
||||
},
|
||||
"decorators": [],
|
||||
"pat": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 104,
|
||||
"end": 116,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "path",
|
||||
"typeAnnotation": {
|
||||
"type": "TsTypeAnnotation",
|
||||
"span": {
|
||||
"start": 108,
|
||||
"end": 116,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsKeywordType",
|
||||
"span": {
|
||||
"start": 110,
|
||||
"end": 116,
|
||||
"ctxt": 0
|
||||
},
|
||||
"kind": "string"
|
||||
}
|
||||
},
|
||||
"optional": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Parameter",
|
||||
"span": {
|
||||
"start": 126,
|
||||
"end": 165,
|
||||
"ctxt": 0
|
||||
},
|
||||
"decorators": [],
|
||||
"pat": {
|
||||
"type": "RestElement",
|
||||
"span": {
|
||||
"start": 126,
|
||||
"end": 165,
|
||||
"ctxt": 0
|
||||
},
|
||||
"rest": {
|
||||
"start": 126,
|
||||
"end": 129,
|
||||
"ctxt": 0
|
||||
},
|
||||
"argument": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 129,
|
||||
"end": 139,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "middleware",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsTypeAnnotation",
|
||||
"span": {
|
||||
"start": 139,
|
||||
"end": 165,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsArrayType",
|
||||
"span": {
|
||||
"start": 141,
|
||||
"end": 165,
|
||||
"ctxt": 0
|
||||
},
|
||||
"elemType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 141,
|
||||
"end": 163,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 141,
|
||||
"end": 157,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RouterMiddleware",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": {
|
||||
"type": "TsTypeParameterInstantiation",
|
||||
"span": {
|
||||
"start": 157,
|
||||
"end": 163,
|
||||
"ctxt": 0
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 158,
|
||||
"end": 159,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 158,
|
||||
"end": 159,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "P",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 161,
|
||||
"end": 162,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 161,
|
||||
"end": 162,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "S",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"decorators": [],
|
||||
"span": {
|
||||
"start": 16,
|
||||
"end": 241,
|
||||
"ctxt": 0
|
||||
},
|
||||
"body": {
|
||||
"type": "BlockStatement",
|
||||
"span": {
|
||||
"start": 238,
|
||||
"end": 241,
|
||||
"ctxt": 0
|
||||
},
|
||||
"stmts": []
|
||||
},
|
||||
"generator": false,
|
||||
"async": false,
|
||||
"typeParameters": {
|
||||
"type": "TsTypeParameterDeclaration",
|
||||
"span": {
|
||||
"start": 22,
|
||||
"end": 72,
|
||||
"ctxt": 0
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"type": "TsTypeParameter",
|
||||
"span": {
|
||||
"start": 23,
|
||||
"end": 49,
|
||||
"ctxt": 0
|
||||
},
|
||||
"name": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 23,
|
||||
"end": 24,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "P",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"constraint": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 33,
|
||||
"end": 44,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 33,
|
||||
"end": 44,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RouteParams",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"default": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 47,
|
||||
"end": 49,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 47,
|
||||
"end": 49,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RP",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TsTypeParameter",
|
||||
"span": {
|
||||
"start": 51,
|
||||
"end": 71,
|
||||
"ctxt": 0
|
||||
},
|
||||
"name": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 51,
|
||||
"end": 52,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "S",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"constraint": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 61,
|
||||
"end": 66,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 61,
|
||||
"end": 66,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "State",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"default": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 69,
|
||||
"end": 71,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 69,
|
||||
"end": 71,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RS",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"returnType": {
|
||||
"type": "TsTypeAnnotation",
|
||||
"span": {
|
||||
"start": 171,
|
||||
"end": 237,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 173,
|
||||
"end": 237,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 173,
|
||||
"end": 179,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "Router",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": {
|
||||
"type": "TsTypeParameterInstantiation",
|
||||
"span": {
|
||||
"start": 179,
|
||||
"end": 237,
|
||||
"ctxt": 0
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"type": "TsConditionalType",
|
||||
"span": {
|
||||
"start": 180,
|
||||
"end": 207,
|
||||
"ctxt": 0
|
||||
},
|
||||
"checkType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 180,
|
||||
"end": 181,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 180,
|
||||
"end": 181,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "P",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"extendsType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 190,
|
||||
"end": 192,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 190,
|
||||
"end": 192,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RP",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"trueType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 195,
|
||||
"end": 196,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 195,
|
||||
"end": 196,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "P",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"falseType": {
|
||||
"type": "TsParenthesizedType",
|
||||
"span": {
|
||||
"start": 199,
|
||||
"end": 207,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsIntersectionType",
|
||||
"span": {
|
||||
"start": 200,
|
||||
"end": 206,
|
||||
"ctxt": 0
|
||||
},
|
||||
"types": [
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 200,
|
||||
"end": 201,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 200,
|
||||
"end": 201,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "P",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 204,
|
||||
"end": 206,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 204,
|
||||
"end": 206,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RP",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TsConditionalType",
|
||||
"span": {
|
||||
"start": 209,
|
||||
"end": 236,
|
||||
"ctxt": 0
|
||||
},
|
||||
"checkType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 209,
|
||||
"end": 210,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 209,
|
||||
"end": 210,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "S",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"extendsType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 219,
|
||||
"end": 221,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 219,
|
||||
"end": 221,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RS",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"trueType": {
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 224,
|
||||
"end": 225,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 224,
|
||||
"end": 225,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "S",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
"falseType": {
|
||||
"type": "TsParenthesizedType",
|
||||
"span": {
|
||||
"start": 228,
|
||||
"end": 236,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeAnnotation": {
|
||||
"type": "TsIntersectionType",
|
||||
"span": {
|
||||
"start": 229,
|
||||
"end": 235,
|
||||
"ctxt": 0
|
||||
},
|
||||
"types": [
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 229,
|
||||
"end": 230,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 229,
|
||||
"end": 230,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "S",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
},
|
||||
{
|
||||
"type": "TsTypeReference",
|
||||
"span": {
|
||||
"start": 233,
|
||||
"end": 235,
|
||||
"ctxt": 0
|
||||
},
|
||||
"typeName": {
|
||||
"type": "Identifier",
|
||||
"span": {
|
||||
"start": 233,
|
||||
"end": 235,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "RS",
|
||||
"typeAnnotation": null,
|
||||
"optional": false
|
||||
},
|
||||
"typeParams": null
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"kind": "method",
|
||||
"isStatic": false,
|
||||
"accessibility": null,
|
||||
"isAbstract": false,
|
||||
"isOptional": false
|
||||
}
|
||||
],
|
||||
"superClass": null,
|
||||
"isAbstract": false,
|
||||
"typeParams": null,
|
||||
"superTypeParams": null,
|
||||
"implements": []
|
||||
}
|
||||
],
|
||||
"interpreter": null
|
||||
}
|
Loading…
Reference in New Issue
Block a user