Rename jsonrpc types

This commit is contained in:
Jerko Steiner 2019-09-13 23:49:05 +07:00
parent 16400d01c3
commit 195d7226e8
16 changed files with 51 additions and 51 deletions

View File

@ -1,4 +1,4 @@
import { TReduxed } from '@rondo.dev/jsonrpc'
import { RPCActions } from '@rondo.dev/jsonrpc'
import { keys } from 'ts-transformer-keys'
import { Team } from '../entities'
import { ITeamAddUserParams } from './ITeamAddUserParams'
@ -27,4 +27,4 @@ export interface ITeamService {
}
export const TeamServiceMethods = keys<ITeamService>()
export type TeamActions = TReduxed<ITeamService, 'teamService'>
export type TeamActions = RPCActions<ITeamService, 'teamService'>

View File

@ -1,4 +1,4 @@
import { TReduxed } from '@rondo.dev/jsonrpc'
import { RPCActions } from '@rondo.dev/jsonrpc'
import { keys } from 'ts-transformer-keys'
import { IUser } from './IUser'
@ -9,4 +9,4 @@ export interface IUserService {
}
export const UserServiceMethods = keys<IUserService>()
export type UserActions = TReduxed<IUserService, 'userService'>
export type UserActions = RPCActions<IUserService, 'userService'>

View File

@ -1,6 +1,6 @@
import * as util from './bulk'
import express from 'express'
import {Contextual} from './types'
import {WithContext} from './types'
import {jsonrpc} from './express'
import {noopLogger} from './test-utils'
import {createClient} from './supertest'
@ -21,13 +21,13 @@ describe('util', () => {
userId: number
}
class Service1 implements Contextual<IS1, IContext> {
class Service1 implements WithContext<IS1, IContext> {
add(cx: IContext, a: number, b: number) {
return a + b + cx.userId
}
}
class Service2 implements Contextual<IS2, IContext> {
class Service2 implements WithContext<IS2, IContext> {
mul(cx: IContext, a: number, b: number) {
return a * b + cx.userId
}

View File

@ -1,5 +1,5 @@
import {IJSONRPCReturnType} from './express'
import {Contextual, TAsyncified, TReduxed} from './types'
import {WithContext, RPCClient, RPCActions} from './types'
import {createActions} from './redux'
import {createLocalClient, LocalClient} from './local'
@ -8,11 +8,11 @@ function keys<T>(obj: T): Array<keyof T & string> {
}
export type BulkServices<T, Cx> = {
[K in keyof T & string]: Contextual<T[K], Cx>
[K in keyof T & string]: WithContext<T[K], Cx>
}
export type BulkLocalClient<T> = {[K in keyof T & string]: LocalClient<T[K]>}
export type BulkActions<T> = {[K in keyof T & string]: TReduxed<T[K], K>}
export type BulkClient<T> = {[K in keyof T & string]: TAsyncified<T[K]>}
export type BulkActions<T> = {[K in keyof T & string]: RPCActions<T[K], K>}
export type BulkClient<T> = {[K in keyof T & string]: RPCClient<T[K]>}
function bulkCreate<T, R>(
src: T,
@ -25,14 +25,14 @@ function bulkCreate<T, R>(
}, {} as any)
}
export function bulkCreateLocalClient<Cx, T extends Contextual<{}, Cx>>(
export function bulkCreateLocalClient<Cx, T extends WithContext<{}, Cx>>(
src: T,
context: Cx,
): BulkLocalClient<T> {
return bulkCreate(src, (key, value) => createLocalClient(value, context))
}
export function bulkCreateActions<T extends Record<string, TAsyncified<any>>>(
export function bulkCreateActions<T extends Record<string, RPCClient<any>>>(
src: T,
): BulkActions<T> {
return bulkCreate(src, (key, value) => createActions(value, key))

View File

@ -1,4 +1,4 @@
import { FunctionPropertyNames, TAsyncified } from './types'
import { FunctionPropertyNames, RPCClient } from './types'
export type TMocked<T> = {
[K in keyof T]:
@ -20,7 +20,7 @@ export type TMocked<T> = {
*/
export default function createClientMock<T extends object>(
methods: Array<FunctionPropertyNames<T>>,
): [TAsyncified<T>, TMocked<TAsyncified<T>>] {
): [RPCClient<T>, TMocked<RPCClient<T>>] {
const client = methods
.reduce((obj, prop) => {
obj[prop] = jest.fn()
@ -28,7 +28,7 @@ export default function createClientMock<T extends object>(
}, {} as any)
return [
client as TAsyncified<T>,
client as TMocked<TAsyncified<T>>,
client as RPCClient<T>,
client as TMocked<RPCClient<T>>,
]
}

View File

@ -6,7 +6,7 @@ import {createClient} from './supertest'
import {ensure} from './ensure'
import {jsonrpc} from './express'
import {noopLogger} from './test-utils'
import {Contextual} from './types'
import {WithContext} from './types'
describe('jsonrpc', () => {
@ -27,7 +27,7 @@ describe('jsonrpc', () => {
const ensureLoggedIn = ensure<IContext>(c => !!c.userId)
class Service implements Contextual<IService, IContext> {
class Service implements WithContext<IService, IContext> {
constructor(readonly time: number) {}
add(context: IContext, a: number, b: number) {
return a + b

View File

@ -1,6 +1,6 @@
import {createLocalClient} from './local'
import {keys} from 'ts-transformer-keys'
import {Contextual, ReverseContextual, TAsyncified} from './types'
import {WithContext, WithoutContext, RPCClient} from './types'
describe('local', () => {
@ -14,7 +14,7 @@ describe('local', () => {
userId: 1000
}
class Service implements Contextual<IService, IContext> {
class Service implements WithContext<IService, IContext> {
add(cx: IContext, a: number, b: number) {
return a + b
}

View File

@ -1,9 +1,9 @@
import {TAsyncified, Contextual, ReverseContextual} from './types'
import {RPCClient, WithContext, WithoutContext} from './types'
import {Request} from 'express'
import {TGetContext} from './express'
import {getAllMethods} from './jsonrpc'
export type LocalClient<T> = TAsyncified<ReverseContextual<T>>
export type LocalClient<T> = RPCClient<WithoutContext<T>>
/**
* Creates a local client for a specific service instance. The actual service
@ -11,7 +11,7 @@ export type LocalClient<T> = TAsyncified<ReverseContextual<T>>
* on the client- and server-side.
*
* The service argument is expected to be a class implementing the
* Contextual<Service, Context> type. The first (context) argument will be
* WithContext<Service, Context> type. The first (context) argument will be
* automatically removed from all methods in the service, and the supplied
* context argument will be used instead.
*/

View File

@ -6,7 +6,7 @@ import bodyParser from 'body-parser'
import express from 'express'
import {AddressInfo} from 'net'
import {Server} from 'http'
import {Contextual, TPendingActions, TAllActions} from './types'
import {WithContext, TPendingActions, TAllActions} from './types'
import {combineReducers} from 'redux'
import {createActions, createReducer} from './redux'
import {createRemoteClient} from './remote'
@ -30,7 +30,7 @@ describe('createActions', () => {
userId: number
}
class Service implements Contextual<IService, IContext> {
class Service implements WithContext<IService, IContext> {
add(cx: IContext, a: number, b: number) {
return a + b
}

View File

@ -1,14 +1,14 @@
import {
IReduxed,
TAsyncified,
TReduxed,
IRPCActions,
RPCClient,
RPCActions,
TResolvedActions,
TAllActions,
TReduxHandlers,
RPCReduxHandlers,
} from './types'
export function createActions<T, ActionType extends string>(
client: TAsyncified<T>,
client: RPCClient<T>,
type: ActionType,
) {
const service = Object.keys(client).reduce((obj, method: any) => {
@ -24,7 +24,7 @@ export function createActions<T, ActionType extends string>(
return obj
}, {} as any)
return service as TReduxed<T, ActionType>
return service as RPCActions<T, ActionType>
}
export interface IState {
@ -38,7 +38,7 @@ export function createReducer<ActionType extends string, State extends IState>(
) {
const self = {
withHandler<R extends IReduxed<ActionType>>(
withHandler<R extends IRPCActions<ActionType>>(
handleAction: (state: State, action: TResolvedActions<R>) => State,
): (state: State | undefined, action: TAllActions<R>) => State {
return (state: State = defaultState, action: TAllActions<R>): State => {
@ -66,8 +66,8 @@ export function createReducer<ActionType extends string, State extends IState>(
}, action)
}
},
withMapping<R extends IReduxed<ActionType>>(
handlers: TReduxHandlers<R, State>,
withMapping<R extends IRPCActions<ActionType>>(
handlers: RPCReduxHandlers<R, State>,
) {
return self.withHandler<R>((state, action) => {
if (action.method in handlers) {

View File

@ -10,7 +10,7 @@ import {createRemoteClient} from './remote'
import {jsonrpc} from './express'
import {keys} from 'ts-transformer-keys'
import {noopLogger} from './test-utils'
import {Contextual} from './types'
import {WithContext} from './types'
describe('remote', () => {
@ -21,7 +21,7 @@ describe('remote', () => {
}
const IServiceKeys = keys<IService>()
class Service implements Contextual<IService, {}> {
class Service implements WithContext<IService, {}> {
add(ctx: {}, a: number, b: number) {
return a + b
}

View File

@ -1,5 +1,5 @@
import Axios from 'axios'
import {FunctionPropertyNames, TAsyncified} from './types'
import {FunctionPropertyNames, RPCClient} from './types'
import {IDEMPOTENT_METHOD_REGEX} from './idempotent'
export type TRequestIdGenerator<T extends string | number> = () => T
@ -51,5 +51,5 @@ export function createRemoteClient<T>(
return obj
}, {} as any)
return service as TAsyncified<T>
return service as RPCClient<T>
}

View File

@ -1,6 +1,6 @@
import request from 'supertest'
import {Application} from 'express'
import {TAsyncified} from './types'
import {RPCClient} from './types'
export function createClient<T>(app: Application, path: string,
) {
@ -25,5 +25,5 @@ export function createClient<T>(app: Application, path: string,
}
},
})
return proxy as TAsyncified<T>
return proxy as RPCClient<T>
}

View File

@ -12,14 +12,14 @@ type PromisifyReturnType<T> = (...a: ArgumentTypes<T>) =>
* Helps implement a service from a service definiton that has a context as a
* last argument.
*/
export type Contextual<T, Cx> = {
export type WithContext<T, Cx> = {
[K in keyof T]:
T[K] extends (...args: infer A) => infer R
? (cx: Cx, ...args: A) => R :
never
}
export type ReverseContextual<T> = {
export type WithoutContext<T> = {
[K in keyof T]:
T[K] extends (cx: any, ...args: infer A) => infer R
? (...args: A) => R :
@ -34,20 +34,20 @@ export type FunctionPropertyNames<T> = {
: never
}[keyof T]
export type TAsyncified<T> = {
export type RPCClient<T> = {
[K in keyof T]: PromisifyReturnType<T[K]>
}
export interface IReduxed<ActionType extends string> {
export interface IRPCActions<ActionType extends string> {
[key: string]: (...a: any[]) => IRPCPendingAction<any, ActionType, typeof key>
}
export type TReduxed<T, ActionType extends string> = {
export type RPCActions<T, ActionType extends string> = {
[K in keyof T]: (...a: ArgumentTypes<T[K]>) =>
IRPCPendingAction<UnwrapPromise<RetType<T[K]>>, ActionType, K>
}
export type TReduxHandlers<T, State> = {
export type RPCReduxHandlers<T, State> = {
[K in keyof T]: (
state: State,
action: TResolved<TPending<RetType<T[K]>>>,

View File

@ -1,8 +1,8 @@
import { IContext } from '@rondo.dev/common'
import { Contextual, ensure } from '@rondo.dev/jsonrpc'
import { WithContext, ensure } from '@rondo.dev/jsonrpc'
export { IContext }
export type RPC<Service> = Contextual<Service, IContext>
export type RPC<Service> = WithContext<Service, IContext>
export const ensureLoggedIn = ensure<IContext>(
c => !!c.user && !!c.user.id,

View File

@ -11,7 +11,7 @@ import {Role} from '../entities/Role'
import {CORRELATION_ID} from '../middleware'
import shortid from 'shortid'
import { AddressInfo } from 'net'
import { createRemoteClient, FunctionPropertyNames, TAsyncified } from '@rondo.dev/jsonrpc'
import { createRemoteClient, FunctionPropertyNames, RPCClient } from '@rondo.dev/jsonrpc'
import {Server} from 'http'
import { IAppServer } from '../application/IAppServer'
@ -198,7 +198,7 @@ export class TestUtils<T extends IRoutes> {
return obj
}, {} as any)
return service as TAsyncified<S>
return service as RPCClient<S>
}
private getCookies(setCookiesString: string[]): string {