diff --git a/apps/meteor/app/api/server/ApiClass.spec.ts b/apps/meteor/app/api/server/ApiClass.spec.ts index e68d0d94afb..4edc2dd12d2 100644 --- a/apps/meteor/app/api/server/ApiClass.spec.ts +++ b/apps/meteor/app/api/server/ApiClass.spec.ts @@ -39,3 +39,23 @@ it('Should return the expected type', () => { >; true as test; }); + +describe('ExtractRoutesFromAPI', () => { + it('Should extract correct function signature when query is not present', () => { + type APIWithNeverQuery = APIClass< + '/v1', + { + method: 'GET'; + path: '/v1/endpoint.test'; + response: { + 200: ValidateFunction; + }; + authRequired: true; + } + >; + type ExpectedFunctionSignature = Expect< + ShallowEqual['/v1/endpoint.test']['GET'], () => unknown> + >; + true as ExpectedFunctionSignature; + }); +}); diff --git a/apps/meteor/app/api/server/ApiClass.ts b/apps/meteor/app/api/server/ApiClass.ts index 90fa11a81f9..5b0db7ea772 100644 --- a/apps/meteor/app/api/server/ApiClass.ts +++ b/apps/meteor/app/api/server/ApiClass.ts @@ -73,7 +73,9 @@ type ConvertToRoute = { [K in TRoute['path']]: { [K2 in Extract['method']]: K2 extends 'GET' ? ( - params: ExtractValidation['query']>, + ...args: [ExtractValidation['query']>] extends [never] + ? [params?: never] + : [params: ExtractValidation['query']>] ) => ExtractValidation['response'][200]> : K2 extends 'POST' ? (