diff --git a/packages/jsonrpc/src/express.test.ts b/packages/jsonrpc/src/express.test.ts index 9108811..2e09a38 100644 --- a/packages/jsonrpc/src/express.test.ts +++ b/packages/jsonrpc/src/express.test.ts @@ -19,6 +19,7 @@ describe('jsonrpc', () => { httpError(statusCode: number, message: string): Promise addWithContext(a: number, b: number): (ctx: IContext) => number + addWithContext2(a: number, b: number): Promise } class Service implements IService { @@ -51,6 +52,9 @@ describe('jsonrpc', () => { addWithContext = (a: number, b: number) => (ctx: IContext): number => { return a + b + ctx.userId } + addWithContext2(a: number, b: number, ctx?: IContext) { + return Promise.resolve(a + b + ctx!.userId) + } } function createApp() { @@ -65,6 +69,7 @@ describe('jsonrpc', () => { 'asyncError', 'httpError', 'addWithContext', + 'addWithContext2', ]) .router(), ) @@ -144,6 +149,10 @@ describe('jsonrpc', () => { const response = await client.addWithContext(5, 7) expect(response).toEqual(1000 + 5 + 7) }) + it('can use context as extra argument', async () => { + const response = await client.addWithContext2(5, 7) + expect(response).toEqual(1000 + 5 + 7) + }) it('handles synchronous notifications', async () => { await request(createApp()) .post('/myService') diff --git a/packages/jsonrpc/src/jsonrpc.ts b/packages/jsonrpc/src/jsonrpc.ts index 04b703d..7f08527 100644 --- a/packages/jsonrpc/src/jsonrpc.ts +++ b/packages/jsonrpc/src/jsonrpc.ts @@ -107,7 +107,7 @@ export const createRpcService = >( }) } - let retValue = (rpcService[method] as any)(...params) + let retValue = (rpcService[method] as any)(...params, context) if (typeof retValue === 'function') { retValue = retValue(context)