Skip to content

Commit ae45d38

Browse files
authored
Fix unused parameter in generated code which caused TS errors for users of the package. (#613)
When using the default behavior (ie: config `rawRequest` as `false`), the generated code has a `E` unused variable which make TS yelling when TS options `noUnusedParameters` is `true`. The fix is put that variable onlye when `rawRequest` is `true`.
1 parent 6fe40f7 commit ae45d38

3 files changed

Lines changed: 28 additions & 13 deletions

File tree

.changeset/giant-avocados-teach.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@graphql-codegen/typescript-generic-sdk': patch
3+
---
4+
5+
Fix unused parameter in generated code which caused TS errors for users of the package.

packages/plugins/typescript/generic-sdk/src/visitor.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,17 +137,27 @@ export class GenericSdkVisitor extends ClientSideBaseVisitor<
137137

138138
const documentNodeType =
139139
this.config.documentMode === DocumentMode.string ? 'string' : 'DocumentNode';
140-
const resultData = this.config.rawRequest ? 'ExecutionResult<R, E>' : 'R';
141-
const returnType = `Promise<${resultData}> | ${
142-
usingObservable ? 'Observable' : 'AsyncIterable'
143-
}<${resultData}>`;
144140

145-
return `export type Requester<C = {}, E = unknown> = <R, V>(doc: ${documentNodeType}, vars?: V, options?: C) => ${returnType}
141+
if (this.config.rawRequest) {
142+
return `export type Requester<C = {}, E = unknown> = <R, V>(doc: ${documentNodeType}, vars?: V, options?: C) => Promise<ExecutionResult<R, E>> | ${
143+
usingObservable ? 'Observable' : 'AsyncIterable'
144+
}<ExecutionResult<R, E>>
146145
export function getSdk<C, E>(requester: Requester<C, E>) {
147146
return {
148147
${allPossibleActions.join(',\n')}
149148
};
150149
}
150+
export type Sdk = ReturnType<typeof getSdk>;`;
151+
}
152+
153+
return `export type Requester<C = {}> = <R, V>(doc: ${documentNodeType}, vars?: V, options?: C) => Promise<R> | ${
154+
usingObservable ? 'Observable' : 'AsyncIterable'
155+
}<R>
156+
export function getSdk<C>(requester: Requester<C>) {
157+
return {
158+
${allPossibleActions.join(',\n')}
159+
};
160+
}
151161
export type Sdk = ReturnType<typeof getSdk>;`;
152162
}
153163
}

packages/plugins/typescript/generic-sdk/tests/__snapshots__/generic-sdk.spec.ts.snap

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,8 @@ export const Feed4Document = gql\`
237237
}
238238
}
239239
\`;
240-
export type Requester<C = {}, E = unknown> = <R, V>(doc: DocumentNode, vars?: V, options?: C) => Promise<R> | AsyncIterable<R>
241-
export function getSdk<C, E>(requester: Requester<C, E>) {
240+
export type Requester<C = {}> = <R, V>(doc: DocumentNode, vars?: V, options?: C) => Promise<R> | AsyncIterable<R>
241+
export function getSdk<C>(requester: Requester<C>) {
242242
return {
243243
feed(variables?: FeedQueryVariables, options?: C): Promise<FeedQuery> {
244244
return requester<FeedQuery, FeedQueryVariables>(FeedDocument, variables, options) as Promise<FeedQuery>;
@@ -486,8 +486,8 @@ export const FeedLiveDocument = gql\`
486486
}
487487
}
488488
\`;
489-
export type Requester<C = {}, E = unknown> = <R, V>(doc: DocumentNode, vars?: V, options?: C) => Promise<R> | AsyncIterable<R>
490-
export function getSdk<C, E>(requester: Requester<C, E>) {
489+
export type Requester<C = {}> = <R, V>(doc: DocumentNode, vars?: V, options?: C) => Promise<R> | AsyncIterable<R>
490+
export function getSdk<C>(requester: Requester<C>) {
491491
return {
492492
feed(variables?: FeedQueryVariables, options?: C): Promise<FeedQuery> {
493493
return requester<FeedQuery, FeedQueryVariables>(FeedDocument, variables, options) as Promise<FeedQuery>;
@@ -726,8 +726,8 @@ export const FeedLiveDocument = gql\`
726726
}
727727
}
728728
\`;
729-
export type Requester<C = {}, E = unknown> = <R, V>(doc: DocumentNode, vars?: V, options?: C) => Promise<R> | Observable<R>
730-
export function getSdk<C, E>(requester: Requester<C, E>) {
729+
export type Requester<C = {}> = <R, V>(doc: DocumentNode, vars?: V, options?: C) => Promise<R> | Observable<R>
730+
export function getSdk<C>(requester: Requester<C>) {
731731
return {
732732
feed(variables?: FeedQueryVariables, options?: C): Promise<FeedQuery> {
733733
return requester<FeedQuery, FeedQueryVariables>(FeedDocument, variables, options) as Promise<FeedQuery>;
@@ -978,8 +978,8 @@ export const Feed4Document = \`
978978
}
979979
}
980980
\`;
981-
export type Requester<C = {}, E = unknown> = <R, V>(doc: string, vars?: V, options?: C) => Promise<R> | AsyncIterable<R>
982-
export function getSdk<C, E>(requester: Requester<C, E>) {
981+
export type Requester<C = {}> = <R, V>(doc: string, vars?: V, options?: C) => Promise<R> | AsyncIterable<R>
982+
export function getSdk<C>(requester: Requester<C>) {
983983
return {
984984
feed(variables?: FeedQueryVariables, options?: C): Promise<FeedQuery> {
985985
return requester<FeedQuery, FeedQueryVariables>(FeedDocument, variables, options) as Promise<FeedQuery>;

0 commit comments

Comments
 (0)