Skip to content

Commit

Permalink
Use RpcRequestTransformer type parameter on request argument
Browse files Browse the repository at this point in the history
  • Loading branch information
lorisleiva committed Aug 30, 2024
1 parent 5b30135 commit c6621f4
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 10 deletions.
17 changes: 10 additions & 7 deletions packages/rpc-spec/src/__tests__/rpc-api-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ describe('createRpcApi', () => {
it('applies the request transformer to the provided method name', () => {
// Given a dummy API with a request transformer that appends 'Transformed' to the method name.
const api = createRpcApi<DummyApi>({
requestTransformer: <T>(request: RpcRequest<unknown>) =>
({ ...request, methodName: `${request.methodName}Transformed` }) as RpcRequest<T>,
requestTransformer: (request: RpcRequest) => ({
...request,
methodName: `${request.methodName}Transformed`,
}),
});

// When we call a method on the API.
Expand All @@ -37,8 +39,10 @@ describe('createRpcApi', () => {
it('applies the request transformer to the provided params', () => {
// Given a dummy API with a request transformer that doubles the provided params.
const api = createRpcApi<DummyApi>({
requestTransformer: <T>(request: RpcRequest<unknown>) =>
({ ...request, params: (request.params as number[]).map(x => x * 2) }) as RpcRequest<T>,
requestTransformer: (request: RpcRequest) => ({
...request,
params: (request.params as number[]).map(x => x * 2),
}),
});

// When we call a method on the API.
Expand All @@ -49,7 +53,7 @@ describe('createRpcApi', () => {
});
it('includes the provided response transformer in the plan', () => {
// Given a dummy API with a response transformer.
const responseTransformer = <T>(response: RpcResponse<unknown>) => response as RpcResponse<T>;
const responseTransformer = <T>(response: RpcResponse) => response as RpcResponse<T>;
const api = createRpcApi<DummyApi>({ responseTransformer });

// When we call a method on the API.
Expand All @@ -71,8 +75,7 @@ describe('createRpcApi', () => {
it('also returns a frozen object with a request transformer', () => {
// Given a dummy API with a request transformer.
const api = createRpcApi<DummyApi>({
requestTransformer: <T>(request: RpcRequest<unknown>) =>
({ ...request, methodName: 'transformed' }) as RpcRequest<T>,
requestTransformer: (request: RpcRequest) => ({ ...request, methodName: 'transformed' }),
});

// When we call a method on the API.
Expand Down
6 changes: 3 additions & 3 deletions packages/rpc-spec/src/rpc-shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ export type RpcResponse<TResponse = unknown> = {
};

export type RpcRequestTransformer = {
<TParams>(request: RpcRequest<unknown>): RpcRequest<TParams>;
<TParams>(request: RpcRequest<TParams>): RpcRequest;
};

export type RpcResponseTransformer = {
<TResponse>(response: RpcResponse<unknown>, request: RpcRequest<unknown>): RpcResponse<TResponse>;
<TResponse>(response: RpcResponse, request: RpcRequest): RpcResponse<TResponse>;
};

export type RpcResponseTransformerFor<TResponse> = {
(response: RpcResponse<unknown>, request: RpcRequest<unknown>): RpcResponse<TResponse>;
(response: RpcResponse, request: RpcRequest): RpcResponse<TResponse>;
};

export function createJsonRpcResponseTransformer<TResponse>(
Expand Down

0 comments on commit c6621f4

Please sign in to comment.