Skip to content

Commit

Permalink
feat(rpc/server): adds server types and defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
rafamel committed Oct 28, 2019
1 parent 45d3a62 commit 3d546ba
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 0 deletions.
1 change: 1 addition & 0 deletions packages/rpc/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from './server';
export * from './validate';
export * from './types';
16 changes: 16 additions & 0 deletions packages/rpc/src/server/defaults.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { RPCServerOptions } from './types';
import { DataOutput, DataInput } from '~/types';

export function createDefaults(): Required<Omit<RPCServerOptions, 'default'>> {
return {
children: true,
parser: {
serialize(data: object): DataOutput {
return JSON.stringify(data);
},
deserialize(data: DataInput): object {
return JSON.parse(String(data));
}
}
};
}
1 change: 1 addition & 0 deletions packages/rpc/src/server/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './types';
31 changes: 31 additions & 0 deletions packages/rpc/src/server/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { QueryServiceImplementation } from '@karmic/core';
import { DataOutput, DataInput, DataParser } from '~/types';

export interface RPCServerOptions {
/**
* Whether to create routes for type's children services.
* Default: `true`.
*/
children?: boolean;
/**
* Serializer and deserializer
*/
parser?: DataParser;
/**
* A default service for adapters to use when the route is non existent.
* Defaults to a `ClientNotFound` error throwing service.
*/
default?: QueryServiceImplementation;
}

export interface RPCServerConnect {
send: (data: DataOutput) => void | Promise<void>;
fatal: (error: Error) => void;
}

export type RPCServerProvideContext<T = any> = () => Promise<T> | T;

export interface RPCServerConnection {
request: (data: DataInput) => void;
close: () => void;
}

0 comments on commit 3d546ba

Please sign in to comment.