diff --git a/package-lock.json b/package-lock.json index 986fad8..ef37ee8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2130,14 +2130,8 @@ "@rondo/image-upload": { "version": "file:packages/image-upload" }, - "@rondo/jsonrpc-client": { - "version": "file:packages/jsonrpc-client" - }, - "@rondo/jsonrpc-common": { - "version": "file:packages/jsonrpc-common" - }, - "@rondo/jsonrpc-server": { - "version": "file:packages/jsonrpc-server" + "@rondo/jsonrpc": { + "version": "file:packages/jsonrpc" }, "@rondo/scripts": { "version": "file:packages/scripts" diff --git a/package.json b/package.json index 4ce9af1..ce9f4ec 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,7 @@ "@rondo/comments-client": "file:packages/comments-client", "@rondo/image-upload": "file:packages/image-upload", "@rondo/tasq": "file:packages/tasq", - "@rondo/jsonrpc-client": "file:packages/jsonrpc-client", - "@rondo/jsonrpc-server": "file:packages/jsonrpc-server", - "@rondo/jsonrpc-common": "file:packages/jsonrpc-common", + "@rondo/jsonrpc": "file:packages/jsonrpc", "@rondo/scripts": "file:packages/scripts" }, "devDependencies": { diff --git a/packages/jsonrpc-client/src/index.ts b/packages/jsonrpc-client/src/index.ts deleted file mode 100644 index 1fdc768..0000000 --- a/packages/jsonrpc-client/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './local' -export * from './remote' diff --git a/packages/jsonrpc-client/tsconfig.esm.json b/packages/jsonrpc-client/tsconfig.esm.json deleted file mode 100644 index 1644a64..0000000 --- a/packages/jsonrpc-client/tsconfig.esm.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "esm" - }, - "references": [ - {"path": "../jsonrpc-common/tsconfig.esm.json"}, - {"path": "../jsonrpc-server/tsconfig.esm.json"} - ] -} diff --git a/packages/jsonrpc-client/tsconfig.json b/packages/jsonrpc-client/tsconfig.json deleted file mode 100644 index 048a134..0000000 --- a/packages/jsonrpc-client/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../tsconfig.common.json", - "compilerOptions": { - "outDir": "lib", - "rootDir": "src" - }, - "references": [ - {"path": "../jsonrpc-common"}, - {"path": "../jsonrpc-server"} - ] -} diff --git a/packages/jsonrpc-common/jest.config.js b/packages/jsonrpc-common/jest.config.js deleted file mode 100644 index b3171a7..0000000 --- a/packages/jsonrpc-common/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - globals: { - 'ts-jest': { - compiler: 'ttypescript' - } - }, - roots: [ - '/src' - ], - transform: { - '^.+\\.tsx?$': 'ts-jest' - }, - testRegex: '(/__tests__/.*|\\.(test|spec))\\.tsx?$', - moduleFileExtensions: [ - 'ts', - 'tsx', - 'js', - 'jsx' - ], - setupFiles: ['/jest.setup.js'], - verbose: false -} diff --git a/packages/jsonrpc-common/jest.setup.js b/packages/jsonrpc-common/jest.setup.js deleted file mode 100644 index e69de29..0000000 diff --git a/packages/jsonrpc-common/package.json b/packages/jsonrpc-common/package.json deleted file mode 100644 index 7a7b493..0000000 --- a/packages/jsonrpc-common/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "@rondo/jsonrpc-common", - "private": true, - "scripts": { - "test": "jest", - "lint": "tslint --project .", - "compile": "tsc", - "clean": "rm -rf lib/" - }, - "dependencies": {}, - "devDependencies": {}, - "main": "lib/index.js", - "types": "lib/index.d.ts", - "module": "esm/index.js" -} diff --git a/packages/jsonrpc-common/src/index.ts b/packages/jsonrpc-common/src/index.ts deleted file mode 100644 index b4bbc59..0000000 --- a/packages/jsonrpc-common/src/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -export type ArgumentTypes = - T extends (...args: infer U) => infer R ? U : never -export type RetType = T extends (...args: any[]) => infer R ? R : never -export type UnwrapHOC = T extends (...args: any[]) => infer R ? R : T -export type RetProm = T extends Promise ? T : Promise -export type PromisifyReturnType = (...a: ArgumentTypes) => - RetProm>> -export type Asyncified = { - [K in keyof T]: PromisifyReturnType -} - -export type Reduxed = { - [K in keyof T]: (...a: ArgumentTypes) => { - type: ActionType - payload: RetProm>> - method: K - status: 'pending' - } -} diff --git a/packages/jsonrpc-server/jest.config.js b/packages/jsonrpc-server/jest.config.js deleted file mode 100644 index b3171a7..0000000 --- a/packages/jsonrpc-server/jest.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - globals: { - 'ts-jest': { - compiler: 'ttypescript' - } - }, - roots: [ - '/src' - ], - transform: { - '^.+\\.tsx?$': 'ts-jest' - }, - testRegex: '(/__tests__/.*|\\.(test|spec))\\.tsx?$', - moduleFileExtensions: [ - 'ts', - 'tsx', - 'js', - 'jsx' - ], - setupFiles: ['/jest.setup.js'], - verbose: false -} diff --git a/packages/jsonrpc-server/jest.setup.js b/packages/jsonrpc-server/jest.setup.js deleted file mode 100644 index e69de29..0000000 diff --git a/packages/jsonrpc-server/package.json b/packages/jsonrpc-server/package.json deleted file mode 100644 index 152d63a..0000000 --- a/packages/jsonrpc-server/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "@rondo/jsonrpc-server", - "private": true, - "scripts": { - "test": "jest", - "lint": "tslint --project .", - "compile": "tsc", - "clean": "rm -rf lib/" - }, - "dependencies": {}, - "devDependencies": {}, - "main": "lib/index.js", - "types": "lib/index.d.ts", - "module": "esm/index.js" -} diff --git a/packages/jsonrpc-server/src/index.ts b/packages/jsonrpc-server/src/index.ts deleted file mode 100644 index 3718365..0000000 --- a/packages/jsonrpc-server/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './server' diff --git a/packages/jsonrpc-server/tsconfig.esm.json b/packages/jsonrpc-server/tsconfig.esm.json deleted file mode 100644 index 3ced570..0000000 --- a/packages/jsonrpc-server/tsconfig.esm.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "esm" - }, - "references": [ - {"path": "../jsonrpc-common/tsconfig.esm.json"} - ] -} diff --git a/packages/jsonrpc-server/tsconfig.json b/packages/jsonrpc-server/tsconfig.json deleted file mode 100644 index b3137ee..0000000 --- a/packages/jsonrpc-server/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../tsconfig.common.json", - "compilerOptions": { - "outDir": "lib", - "rootDir": "src" - }, - "references": [ - {"path": "../jsonrpc-common"} - ] -} diff --git a/packages/jsonrpc-client/jest.config.js b/packages/jsonrpc/jest.config.js similarity index 100% rename from packages/jsonrpc-client/jest.config.js rename to packages/jsonrpc/jest.config.js diff --git a/packages/jsonrpc-client/jest.setup.js b/packages/jsonrpc/jest.setup.js similarity index 100% rename from packages/jsonrpc-client/jest.setup.js rename to packages/jsonrpc/jest.setup.js diff --git a/packages/jsonrpc-client/package.json b/packages/jsonrpc/package.json similarity index 88% rename from packages/jsonrpc-client/package.json rename to packages/jsonrpc/package.json index 0659cab..ebdfd25 100644 --- a/packages/jsonrpc-client/package.json +++ b/packages/jsonrpc/package.json @@ -1,5 +1,5 @@ { - "name": "@rondo/jsonrpc-client", + "name": "@rondo/jsonrpc", "private": true, "scripts": { "test": "jest", diff --git a/packages/jsonrpc-server/src/server.test.ts b/packages/jsonrpc/src/express.test.ts similarity index 99% rename from packages/jsonrpc-server/src/server.test.ts rename to packages/jsonrpc/src/express.test.ts index 7074457..a3753e5 100644 --- a/packages/jsonrpc-server/src/server.test.ts +++ b/packages/jsonrpc/src/express.test.ts @@ -2,7 +2,7 @@ import bodyParser from 'body-parser' import express from 'express' import request from 'supertest' import {createClient} from './supertest' -import {jsonrpc} from './server' +import {jsonrpc} from './express' describe('jsonrpc', () => { diff --git a/packages/jsonrpc-server/src/server.ts b/packages/jsonrpc/src/express.ts similarity index 100% rename from packages/jsonrpc-server/src/server.ts rename to packages/jsonrpc/src/express.ts diff --git a/packages/jsonrpc/src/index.ts b/packages/jsonrpc/src/index.ts new file mode 100644 index 0000000..511c57a --- /dev/null +++ b/packages/jsonrpc/src/index.ts @@ -0,0 +1,4 @@ +export * from './express' +export * from './local' +export * from './redux' +export * from './remote' diff --git a/packages/jsonrpc-client/src/local.test.ts b/packages/jsonrpc/src/local.test.ts similarity index 100% rename from packages/jsonrpc-client/src/local.test.ts rename to packages/jsonrpc/src/local.test.ts diff --git a/packages/jsonrpc-client/src/local.ts b/packages/jsonrpc/src/local.ts similarity index 87% rename from packages/jsonrpc-client/src/local.ts rename to packages/jsonrpc/src/local.ts index d067175..2b199dd 100644 --- a/packages/jsonrpc-client/src/local.ts +++ b/packages/jsonrpc/src/local.ts @@ -1,4 +1,4 @@ -import {Asyncified} from '@rondo/jsonrpc-common' +import {TAsyncified} from './types' /** * Creates a local client for a specific service instance. The actual service @@ -17,5 +17,5 @@ export function createLocalClient(service: T, context: any) { } }, }) - return proxy as Asyncified + return proxy as TAsyncified } diff --git a/packages/jsonrpc-client/src/redux.test.ts b/packages/jsonrpc/src/redux.test.ts similarity index 98% rename from packages/jsonrpc-client/src/redux.test.ts rename to packages/jsonrpc/src/redux.test.ts index 63dc033..158bde3 100644 --- a/packages/jsonrpc-client/src/redux.test.ts +++ b/packages/jsonrpc/src/redux.test.ts @@ -1,13 +1,14 @@ /** * @jest-environment node */ + import bodyParser from 'body-parser' import express from 'express' import {AddressInfo} from 'net' import {Server} from 'http' import {createReduxClient} from './redux' import {createRemoteClient} from './remote' -import {jsonrpc} from '@rondo/jsonrpc-server' +import {jsonrpc} from './express' import {keys} from 'ts-transformer-keys' describe('createReduxClient', () => { diff --git a/packages/jsonrpc-client/src/redux.ts b/packages/jsonrpc/src/redux.ts similarity index 78% rename from packages/jsonrpc-client/src/redux.ts rename to packages/jsonrpc/src/redux.ts index cc31921..0c3dd47 100644 --- a/packages/jsonrpc-client/src/redux.ts +++ b/packages/jsonrpc/src/redux.ts @@ -1,8 +1,8 @@ -import {Asyncified, Reduxed} from '@rondo/jsonrpc-common' +import {TAsyncified, TReduxed} from './types' import {createRemoteClient} from './remote' export function createReduxClient( - client: Asyncified, + client: TAsyncified, type: ActionType, ) { const service = Object.keys(client).reduce((obj, method: any) => { @@ -18,5 +18,5 @@ export function createReduxClient( return obj }, {} as any) - return service as Reduxed + return service as TReduxed } diff --git a/packages/jsonrpc-client/src/remote.test.ts b/packages/jsonrpc/src/remote.test.ts similarity index 96% rename from packages/jsonrpc-client/src/remote.test.ts rename to packages/jsonrpc/src/remote.test.ts index d644113..72819ad 100644 --- a/packages/jsonrpc-client/src/remote.test.ts +++ b/packages/jsonrpc/src/remote.test.ts @@ -1,12 +1,13 @@ /** * @jest-environment node */ + import bodyParser from 'body-parser' import express from 'express' import {AddressInfo} from 'net' import {Server} from 'http' import {createRemoteClient} from './remote' -import {jsonrpc} from '@rondo/jsonrpc-server' +import {jsonrpc} from './server' import {keys} from 'ts-transformer-keys' describe('remote', () => { diff --git a/packages/jsonrpc-client/src/remote.ts b/packages/jsonrpc/src/remote.ts similarity index 90% rename from packages/jsonrpc-client/src/remote.ts rename to packages/jsonrpc/src/remote.ts index 3c87dfb..fe6606d 100644 --- a/packages/jsonrpc-client/src/remote.ts +++ b/packages/jsonrpc/src/remote.ts @@ -1,5 +1,5 @@ import Axios from 'axios' -import {Asyncified} from '@rondo/jsonrpc-common' +import {TAsyncified} from './types' export function createRemoteClient( baseUrl: string, @@ -36,5 +36,5 @@ export function createRemoteClient( return obj }, {} as any) - return service as Asyncified + return service as TAsyncified } diff --git a/packages/jsonrpc-server/src/supertest.ts b/packages/jsonrpc/src/supertest.ts similarity index 78% rename from packages/jsonrpc-server/src/supertest.ts rename to packages/jsonrpc/src/supertest.ts index 0bf7185..2db3765 100644 --- a/packages/jsonrpc-server/src/supertest.ts +++ b/packages/jsonrpc/src/supertest.ts @@ -1,9 +1,8 @@ import request from 'supertest' import {Application} from 'express' -import {Asyncified} from '@rondo/jsonrpc-common' +import {TAsyncified} from './types' -export function createClient( - app: Application, path: string, +export function createClient( app: Application, path: string, ) { let id = 0 const proxy = new Proxy({}, { @@ -26,5 +25,5 @@ export function createClient( } }, }) - return proxy as Asyncified + return proxy as TAsyncified } diff --git a/packages/jsonrpc/src/types.ts b/packages/jsonrpc/src/types.ts new file mode 100644 index 0000000..49d6416 --- /dev/null +++ b/packages/jsonrpc/src/types.ts @@ -0,0 +1,20 @@ +type ArgumentTypes = + T extends (...args: infer U) => infer R ? U : never +type RetType = T extends (...args: any[]) => infer R ? R : never +type UnwrapHOC = T extends (...args: any[]) => infer R ? R : T +type RetProm = T extends Promise ? T : Promise +type PromisifyReturnType = (...a: ArgumentTypes) => + RetProm>> + +export type TAsyncified = { + [K in keyof T]: PromisifyReturnType +} + +export type TReduxed = { + [K in keyof T]: (...a: ArgumentTypes) => { + type: ActionType + payload: RetProm>> + method: K + status: 'pending' + } +} diff --git a/packages/jsonrpc-common/tsconfig.esm.json b/packages/jsonrpc/tsconfig.esm.json similarity index 100% rename from packages/jsonrpc-common/tsconfig.esm.json rename to packages/jsonrpc/tsconfig.esm.json diff --git a/packages/jsonrpc-common/tsconfig.json b/packages/jsonrpc/tsconfig.json similarity index 100% rename from packages/jsonrpc-common/tsconfig.json rename to packages/jsonrpc/tsconfig.json