From f3fa881ef7a7e67fa148dfde2639bfa9b9f09dc4 Mon Sep 17 00:00:00 2001 From: yorkyao Date: Wed, 7 Nov 2018 17:51:31 +0800 Subject: [PATCH] feat: handle Promise type reference --- demo/cases.ts | 2 +- demo/debug.json | 2 +- online/variables.ts | 2 +- src/parser.ts | 6 ++++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/demo/cases.ts b/demo/cases.ts index cf766ce..d41e98d 100644 --- a/demo/cases.ts +++ b/demo/cases.ts @@ -356,7 +356,7 @@ export type EntryType = { } export interface Mutation { - create(input: CreateInput): MutationResult + create(input: CreateInput): Promise } interface CreateInput { diff --git a/demo/debug.json b/demo/debug.json index 4770e5a..d1aa26b 100644 --- a/demo/debug.json +++ b/demo/debug.json @@ -2752,7 +2752,7 @@ "position": { "file": "demo/cases.ts", "line": 358, - "character": 30 + "character": 38 } }, "parameters": [ diff --git a/online/variables.ts b/online/variables.ts index 3d5dc0e..c2e4ac1 100644 --- a/online/variables.ts +++ b/online/variables.ts @@ -363,7 +363,7 @@ export type EntryType = { } export interface Mutation { - create(input: CreateInput): MutationResult + create(input: CreateInput): Promise } interface CreateInput { diff --git a/src/parser.ts b/src/parser.ts index 856c7ac..ab01b7e 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -587,6 +587,12 @@ export class Parser { if (reference.typeName.text === 'Array') { return this.getTypeOfArrayTypeReference(reference, sourceFile) } + if (reference.typeName.text === 'Promise' && reference.typeArguments && reference.typeArguments.length > 0) { + const typeArgument = reference.typeArguments[0] + if (typeArgument.kind === ts.SyntaxKind.TypeReference) { + return this.getTypeOfTypeReference(typeArgument as ts.TypeReferenceNode, sourceFile) + } + } return { kind: 'reference', name: reference.typeName.text,