Skip to content
This repository has been archived by the owner on Nov 9, 2023. It is now read-only.

Add pending response type #75

Merged
merged 2 commits into from
Nov 20, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions src/JsonRpcEngine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ export interface JsonRpcFailure extends JsonRpcResponseBase {

export type JsonRpcResponse<T> = JsonRpcSuccess<T> | JsonRpcFailure;

export interface PendingJsonRpcResponse<T> extends JsonRpcResponseBase {
result?: T;
error?: Error | JsonRpcError;
}

export type JsonRpcEngineCallbackError = Error | JsonRpcError | null;

export type JsonRpcEngineReturnHandler = (
Expand All @@ -76,16 +81,11 @@ export type JsonRpcEngineEndCallback = (

export type JsonRpcMiddleware<T, U> = (
req: JsonRpcRequest<T>,
res: JsonRpcResponse<U>,
res: PendingJsonRpcResponse<U>,
next: JsonRpcEngineNextCallback,
end: JsonRpcEngineEndCallback
) => void;

interface InternalJsonRpcResponse extends JsonRpcResponseBase {
result?: unknown;
error?: Error | JsonRpcError;
}

/**
* A JSON-RPC request and response processor.
* Give it a stack of middleware, pass it requests, and get back responses.
Expand Down Expand Up @@ -290,7 +290,7 @@ export class JsonRpcEngine extends SafeEventEmitter {
}

const req: JsonRpcRequest<unknown> = { ...callerReq };
const res: InternalJsonRpcResponse = {
const res: PendingJsonRpcResponse<unknown> = {
id: req.id,
jsonrpc: req.jsonrpc,
};
Expand Down Expand Up @@ -322,7 +322,7 @@ export class JsonRpcEngine extends SafeEventEmitter {
*/
private async _processRequest(
req: JsonRpcRequest<unknown>,
res: InternalJsonRpcResponse,
res: PendingJsonRpcResponse<unknown>,
): Promise<void> {
const [
error,
Expand Down Expand Up @@ -354,7 +354,7 @@ export class JsonRpcEngine extends SafeEventEmitter {
*/
private static async _runAllMiddleware(
req: JsonRpcRequest<unknown>,
res: InternalJsonRpcResponse,
res: PendingJsonRpcResponse<unknown>,
middlewareStack: JsonRpcMiddleware<unknown, unknown>[],
): Promise<
[
Expand Down Expand Up @@ -390,7 +390,7 @@ export class JsonRpcEngine extends SafeEventEmitter {
*/
private static _runMiddleware(
req: JsonRpcRequest<unknown>,
res: InternalJsonRpcResponse,
res: PendingJsonRpcResponse<unknown>,
middleware: JsonRpcMiddleware<unknown, unknown>,
returnHandlers: JsonRpcEngineReturnHandler[],
): Promise<[unknown, boolean]> {
Expand Down Expand Up @@ -432,7 +432,7 @@ export class JsonRpcEngine extends SafeEventEmitter {
};

try {
middleware(req, res as JsonRpcResponse<unknown>, next, end);
middleware(req, res, next, end);
} catch (error) {
end(error);
}
Expand All @@ -459,7 +459,7 @@ export class JsonRpcEngine extends SafeEventEmitter {
*/
private static _checkForCompletion(
req: JsonRpcRequest<unknown>,
res: InternalJsonRpcResponse,
res: PendingJsonRpcResponse<unknown>,
isComplete: boolean,
): void {
if (!('result' in res) && !('error' in res)) {
Expand Down
4 changes: 2 additions & 2 deletions src/createAsyncMiddleware.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import {
JsonRpcMiddleware,
JsonRpcRequest,
JsonRpcResponse,
PendingJsonRpcResponse,
} from './JsonRpcEngine';

export type AsyncJsonRpcEngineNextCallback = () => Promise<void>;

export type AsyncJsonrpcMiddleware<T, U> = (
req: JsonRpcRequest<T>,
res: JsonRpcResponse<U>,
res: PendingJsonRpcResponse<U>,
next: AsyncJsonRpcEngineNextCallback
) => Promise<void>;

Expand Down