From eebe26f706d3e6bba49da9c640323f61642ce2c8 Mon Sep 17 00:00:00 2001 From: Jerko Steiner Date: Tue, 10 Sep 2019 17:47:56 +0700 Subject: [PATCH] Extract redux, http-types, http-client and test-utils --- package-lock.json | 3 ++ package.json | 6 +++- packages/client/src/components/Link.tsx | 2 +- packages/client/src/crud/CRUD.test.tsx | 15 ++++---- packages/client/src/crud/CRUDActions.ts | 12 +++---- packages/client/src/crud/CRUDReducer.ts | 2 +- packages/client/src/crud/TCRUDAction.ts | 2 +- packages/client/src/crumbs/CrumbsActions.ts | 2 +- .../client/src/crumbs/CrumbsConnector.tsx | 9 ++--- packages/client/src/index.ts | 6 +--- packages/client/src/login/LoginActions.ts | 4 +-- packages/client/src/login/LoginConnector.tsx | 16 ++++----- packages/client/src/login/LoginForm.test.tsx | 10 +++--- .../client/src/login/RegisterConnector.tsx | 2 +- .../client/src/login/RegisterForm.test.tsx | 10 +++--- packages/client/src/login/withForm.tsx | 2 +- packages/client/src/redux/Connector.ts | 2 +- packages/client/src/redux/TStateSelector.ts | 5 --- packages/client/src/redux/index.ts | 2 -- packages/client/src/redux/temp-test.tsx | 34 ------------------- .../client/src/renderer/ClientRenderer.tsx | 2 +- .../client/src/renderer/ServerRenderer.tsx | 17 ++++------ packages/client/src/team/TeamActions.ts | 4 +-- .../client/src/team/TeamConnector.test.tsx | 4 ++- packages/client/src/team/TeamConnector.ts | 2 +- packages/client/src/team/TeamReducer.ts | 2 +- packages/client/src/test-utils/TestUtils.tsx | 3 +- packages/client/src/test-utils/getError.ts | 15 -------- packages/client/src/test-utils/index.ts | 2 -- packages/client/tsconfig.json | 1 + packages/common/src/index.ts | 3 -- packages/common/tsconfig.esm.json | 5 +-- packages/common/tsconfig.json | 4 ++- packages/config/tsconfig.esm.json | 9 +++++ packages/http-client/jest.config.js | 16 +++++++++ packages/http-client/jest.setup.js | 4 +++ packages/http-client/package.json | 16 +++++++++ .../http => http-client/src}/HTTPClient.ts | 3 +- .../src}/HTTPClientMock.test.ts | 2 +- .../src}/HTTPClientMock.ts | 10 +++--- .../http => http-client/src}/IHTTPClient.ts | 2 +- .../src/http => http-client/src}/IHeader.ts | 0 .../src/http => http-client/src}/IRequest.ts | 2 +- .../src/IRequestParams.ts | 0 .../src/IRequestQuery.ts | 0 .../src/http => http-client/src}/IResponse.ts | 0 .../src}/ITypedRequestParams.ts | 2 +- .../src/URLFormatter.ts | 1 - .../src/http => http-client/src}/index.ts | 6 +++- packages/http-client/tsconfig.esm.json | 11 ++++++ packages/http-client/tsconfig.json | 11 ++++++ packages/http-client/tslint.json | 10 ++++++ packages/http-types/jest.config.js | 16 +++++++++ packages/http-types/jest.setup.js | 4 +++ packages/http-types/package.json | 14 ++++++++ .../IRoutes.ts => http-types/src/index.ts} | 0 packages/http-types/tsconfig.esm.json | 8 +++++ packages/http-types/tsconfig.json | 9 +++++ packages/http-types/tslint.json | 10 ++++++ packages/jsonrpc/src/redux.test.ts | 2 +- packages/jsonrpc/src/types.ts | 2 +- packages/redux/README.md | 3 ++ packages/redux/jest.config.js | 16 +++++++++ packages/redux/jest.setup.js | 4 +++ packages/redux/package.json | 14 ++++++++ .../{client => redux}/src/actions/IAction.ts | 0 .../src/actions/IPendingAction.ts | 0 .../src/actions/IRejectedAction.ts | 0 .../src/actions/IResolvedAction.ts | 0 .../src/actions/PendingAction.ts | 0 .../src/actions/TAsyncAction.ts | 0 .../src/actions/TGetAction.ts | 0 .../src/actions/TGetPendingAction.ts | 0 .../src/actions/TGetResolvedAction.ts | 0 .../{client => redux}/src/actions/index.ts | 0 packages/redux/src/index.ts | 4 +++ .../src/middleware/PromiseMiddleware.test.ts | 2 +- .../src/middleware/PromiseMiddleware.ts | 0 .../src/middleware/ReduxLogger.ts | 0 .../src/middleware/WaitMiddleware.test.ts | 2 +- .../src/middleware/WaitMiddleware.ts | 0 .../{client => redux}/src/middleware/index.ts | 0 .../src/redux => redux/src}/pack.test.tsx | 3 +- .../{client/src/redux => redux/src}/pack.ts | 7 +++- .../src/store/createStore.ts | 0 packages/{client => redux}/src/store/index.ts | 0 packages/redux/tsconfig.esm.json | 9 +++++ packages/redux/tsconfig.json | 10 ++++++ packages/redux/tslint.json | 10 ++++++ .../server/src/application/configureServer.ts | 16 ++++----- packages/server/src/logger/ILogger.ts | 1 - packages/server/src/logger/SqlLogger.ts | 2 +- .../server/src/middleware/ErrorApiHandler.ts | 2 +- .../server/src/middleware/ErrorPageHandler.ts | 2 +- .../server/src/middleware/RequestLogger.ts | 2 +- packages/server/src/router/AsyncRouter.ts | 2 +- packages/server/src/router/ITypedRequest.ts | 2 +- packages/server/src/router/TTypedHandler.ts | 2 +- .../server/src/router/TransactionalRouter.ts | 2 +- packages/server/src/routes/BaseRoute.ts | 2 +- .../server/src/test-utils/RequestTester.ts | 7 ++-- packages/server/src/test-utils/TestUtils.ts | 2 +- packages/server/tsconfig.esm.json | 6 +++- packages/server/tsconfig.json | 4 ++- packages/tasq/src/TaskManager.test.ts | 12 +------ packages/tasq/tsconfig.esm.json | 4 ++- packages/tasq/tsconfig.json | 1 + packages/test-utils/jest.config.js | 16 +++++++++ packages/test-utils/jest.setup.js | 4 +++ packages/test-utils/package.json | 14 ++++++++ packages/test-utils/src/getError.ts | 10 ++++++ packages/test-utils/src/index.ts | 1 + packages/test-utils/tsconfig.esm.json | 8 +++++ packages/test-utils/tsconfig.json | 9 +++++ packages/test-utils/tslint.json | 10 ++++++ 115 files changed, 419 insertions(+), 188 deletions(-) delete mode 100644 packages/client/src/redux/TStateSelector.ts delete mode 100644 packages/client/src/redux/temp-test.tsx delete mode 100644 packages/client/src/test-utils/getError.ts create mode 100644 packages/config/tsconfig.esm.json create mode 100644 packages/http-client/jest.config.js create mode 100644 packages/http-client/jest.setup.js create mode 100644 packages/http-client/package.json rename packages/{client/src/http => http-client/src}/HTTPClient.ts (96%) rename packages/{client/src/test-utils => http-client/src}/HTTPClientMock.test.ts (97%) rename packages/{client/src/test-utils => http-client/src}/HTTPClientMock.ts (94%) rename packages/{client/src/http => http-client/src}/IHTTPClient.ts (96%) rename packages/{client/src/http => http-client/src}/IHeader.ts (100%) rename packages/{client/src/http => http-client/src}/IRequest.ts (70%) rename packages/{common => http-client}/src/IRequestParams.ts (100%) rename packages/{common => http-client}/src/IRequestQuery.ts (100%) rename packages/{client/src/http => http-client/src}/IResponse.ts (100%) rename packages/{client/src/http => http-client/src}/ITypedRequestParams.ts (80%) rename packages/{common => http-client}/src/URLFormatter.ts (97%) rename packages/{client/src/http => http-client/src}/index.ts (57%) create mode 100644 packages/http-client/tsconfig.esm.json create mode 100644 packages/http-client/tsconfig.json create mode 100644 packages/http-client/tslint.json create mode 100644 packages/http-types/jest.config.js create mode 100644 packages/http-types/jest.setup.js create mode 100644 packages/http-types/package.json rename packages/{common/src/IRoutes.ts => http-types/src/index.ts} (100%) create mode 100644 packages/http-types/tsconfig.esm.json create mode 100644 packages/http-types/tsconfig.json create mode 100644 packages/http-types/tslint.json create mode 100644 packages/redux/README.md create mode 100644 packages/redux/jest.config.js create mode 100644 packages/redux/jest.setup.js create mode 100644 packages/redux/package.json rename packages/{client => redux}/src/actions/IAction.ts (100%) rename packages/{client => redux}/src/actions/IPendingAction.ts (100%) rename packages/{client => redux}/src/actions/IRejectedAction.ts (100%) rename packages/{client => redux}/src/actions/IResolvedAction.ts (100%) rename packages/{client => redux}/src/actions/PendingAction.ts (100%) rename packages/{client => redux}/src/actions/TAsyncAction.ts (100%) rename packages/{client => redux}/src/actions/TGetAction.ts (100%) rename packages/{client => redux}/src/actions/TGetPendingAction.ts (100%) rename packages/{client => redux}/src/actions/TGetResolvedAction.ts (100%) rename packages/{client => redux}/src/actions/index.ts (100%) create mode 100644 packages/redux/src/index.ts rename packages/{client => redux}/src/middleware/PromiseMiddleware.test.ts (97%) rename packages/{client => redux}/src/middleware/PromiseMiddleware.ts (100%) rename packages/{client => redux}/src/middleware/ReduxLogger.ts (100%) rename packages/{client => redux}/src/middleware/WaitMiddleware.test.ts (98%) rename packages/{client => redux}/src/middleware/WaitMiddleware.ts (100%) rename packages/{client => redux}/src/middleware/index.ts (100%) rename packages/{client/src/redux => redux/src}/pack.test.tsx (97%) rename packages/{client/src/redux => redux/src}/pack.ts (90%) rename packages/{client => redux}/src/store/createStore.ts (100%) rename packages/{client => redux}/src/store/index.ts (100%) create mode 100644 packages/redux/tsconfig.esm.json create mode 100644 packages/redux/tsconfig.json create mode 100644 packages/redux/tslint.json delete mode 100644 packages/server/src/logger/ILogger.ts create mode 100644 packages/test-utils/jest.config.js create mode 100644 packages/test-utils/jest.setup.js create mode 100644 packages/test-utils/package.json create mode 100644 packages/test-utils/src/getError.ts create mode 100644 packages/test-utils/src/index.ts create mode 100644 packages/test-utils/tsconfig.esm.json create mode 100644 packages/test-utils/tsconfig.json create mode 100644 packages/test-utils/tslint.json diff --git a/package-lock.json b/package-lock.json index c0a815a..73b9f94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2153,6 +2153,9 @@ "@rondo.dev/logger": { "version": "file:packages/logger" }, + "@rondo.dev/redux-util": { + "version": "file:packages/redux-util" + }, "@rondo.dev/scripts": { "version": "file:packages/scripts" }, diff --git a/package.json b/package.json index a4b443c..4d04d98 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,11 @@ "@rondo.dev/scripts": "file:packages/scripts", "@rondo.dev/argparse": "file:packages/argparse", "@rondo.dev/logger": "file:packages/logger", - "@rondo.dev/config": "file:packages/config" + "@rondo.dev/config": "file:packages/config", + "@rondo.dev/redux": "file:packages/redux", + "@rondo.dev/http-client": "file:packages/http-client", + "@rondo.dev/test-utils": "file:packages/test-utils", + "@rondo.dev/http-types": "file:packages/http-types" }, "devDependencies": { "@types/bcrypt": "^3.0.0", diff --git a/packages/client/src/components/Link.tsx b/packages/client/src/components/Link.tsx index 4b59ab8..d8cfaa2 100644 --- a/packages/client/src/components/Link.tsx +++ b/packages/client/src/components/Link.tsx @@ -2,7 +2,7 @@ import React from 'react' import {History, Location} from 'history' import {IWithRouterProps} from './IWithRouterProps' import {Link as RouterLink, LinkProps} from 'react-router-dom' -import {URLFormatter} from '@rondo.dev/common' +import {URLFormatter} from '@rondo.dev/http-client' import {withRouter} from 'react-router' export interface ILinkProps diff --git a/packages/client/src/crud/CRUD.test.tsx b/packages/client/src/crud/CRUD.test.tsx index 0e32638..ac4ed44 100644 --- a/packages/client/src/crud/CRUD.test.tsx +++ b/packages/client/src/crud/CRUD.test.tsx @@ -1,10 +1,11 @@ -import {createCRUDActions} from './CRUDActions' -import React from 'react' -import {AnyAction} from 'redux' -import {CRUDReducer, TCRUDMethod, TCRUDAsyncMethod} from './' -import {HTTPClientMock, TestUtils, getError} from '../test-utils' -import {TMethod} from '@rondo.dev/common' -import {IPendingAction} from '../actions' +import { HTTPClientMock } from '@rondo.dev/http-client' +import { TMethod } from '@rondo.dev/http-types' +import { IPendingAction } from '@rondo.dev/redux' +import { getError } from '@rondo.dev/test-utils' +import { AnyAction } from 'redux' +import { TestUtils } from '../test-utils' +import { CRUDReducer, TCRUDAsyncMethod } from './' +import { createCRUDActions } from './CRUDActions' describe('CRUD', () => { diff --git a/packages/client/src/crud/CRUDActions.ts b/packages/client/src/crud/CRUDActions.ts index 0325d39..645022f 100644 --- a/packages/client/src/crud/CRUDActions.ts +++ b/packages/client/src/crud/CRUDActions.ts @@ -1,10 +1,8 @@ -import {IHTTPClient, ITypedRequestParams} from '../http' -import {IRoutes, TFilter, TOnlyDefined} from '@rondo.dev/common' -import {TCRUDAction} from './TCRUDAction' -import {TCRUDChangeAction} from './TCRUDAction' -import {TCRUDCreateAction} from './TCRUDAction' -import {TCRUDEditAction} from './TCRUDAction' -import {TCRUDMethod} from './TCRUDMethod' +import { TFilter, TOnlyDefined } from '@rondo.dev/common' +import { IHTTPClient } from '@rondo.dev/http-client' +import { IRoutes } from '@rondo.dev/http-types' +import { TCRUDAction, TCRUDChangeAction, TCRUDCreateAction, TCRUDEditAction } from './TCRUDAction' +import { TCRUDMethod } from './TCRUDMethod' type TAction = TFilter , {method: Method, status: 'pending'}> diff --git a/packages/client/src/crud/CRUDReducer.ts b/packages/client/src/crud/CRUDReducer.ts index 8be5d44..6bd2af8 100644 --- a/packages/client/src/crud/CRUDReducer.ts +++ b/packages/client/src/crud/CRUDReducer.ts @@ -1,4 +1,4 @@ -import {IAction, IResolvedAction} from '../actions' +import {IAction, IResolvedAction} from '@rondo.dev/redux' import {TCRUDAction} from './TCRUDAction' import {TCRUDMethod} from './TCRUDMethod' import {indexBy, without, TFilter} from '@rondo.dev/common' diff --git a/packages/client/src/crud/TCRUDAction.ts b/packages/client/src/crud/TCRUDAction.ts index 77fc68b..8a75734 100644 --- a/packages/client/src/crud/TCRUDAction.ts +++ b/packages/client/src/crud/TCRUDAction.ts @@ -1,4 +1,4 @@ -import {IAction, TAsyncAction} from '../actions' +import {IAction, TAsyncAction} from '@rondo.dev/redux' import {TCRUDMethod} from './TCRUDMethod' // Async actions diff --git a/packages/client/src/crumbs/CrumbsActions.ts b/packages/client/src/crumbs/CrumbsActions.ts index 8007b60..dcbb8bc 100644 --- a/packages/client/src/crumbs/CrumbsActions.ts +++ b/packages/client/src/crumbs/CrumbsActions.ts @@ -1,4 +1,4 @@ -import {TGetAction, IAction} from '../actions' +import {TGetAction, IAction} from '@rondo.dev/redux' import {ICrumbLink} from './ICrumbLink' export interface ICrumbs { diff --git a/packages/client/src/crumbs/CrumbsConnector.tsx b/packages/client/src/crumbs/CrumbsConnector.tsx index 3445a88..81d0521 100644 --- a/packages/client/src/crumbs/CrumbsConnector.tsx +++ b/packages/client/src/crumbs/CrumbsConnector.tsx @@ -1,7 +1,8 @@ -import {Crumb} from './Crumb' -import {Connector, TStateSelector} from '../redux' -import {ICrumbsState} from './CrumbsReducer' -import {CrumbsActions} from './CrumbsActions' +import { TStateSelector } from '@rondo.dev/redux' +import { Connector } from '../redux' +import { Crumb } from './Crumb' +import { CrumbsActions } from './CrumbsActions' +import { ICrumbsState } from './CrumbsReducer' export class CrumbsConnector extends Connector { protected readonly breadcrumbsActions = new CrumbsActions() diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index 8724035..c3d278b 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -1,15 +1,11 @@ -export * from './actions' export * from './components' export * from './crud' export * from './crumbs' export * from './csrf' -export * from './http' export * from './login' -export * from './middleware' export * from './redux' export * from './renderer' -export * from './store' export * from './test-utils' import * as team from './team' -export {team} +export { team } diff --git a/packages/client/src/login/LoginActions.ts b/packages/client/src/login/LoginActions.ts index 7c9d8fb..3c78550 100644 --- a/packages/client/src/login/LoginActions.ts +++ b/packages/client/src/login/LoginActions.ts @@ -1,6 +1,6 @@ -import {TGetAction, TAsyncAction, IAction, PendingAction} from '../actions' +import {TGetAction, TAsyncAction, IAction, PendingAction} from '@rondo.dev/redux' import {IAPIDef, ICredentials, INewUser, IUser} from '@rondo.dev/common' -import {IHTTPClient} from '../http/IHTTPClient' +import {IHTTPClient} from '@rondo.dev/http-client' export type TLoginAction = TAsyncAction diff --git a/packages/client/src/login/LoginConnector.tsx b/packages/client/src/login/LoginConnector.tsx index a0e4e90..a34702c 100644 --- a/packages/client/src/login/LoginConnector.tsx +++ b/packages/client/src/login/LoginConnector.tsx @@ -1,11 +1,11 @@ -import {Connector} from '../redux/Connector' -import {ICredentials} from '@rondo.dev/common' -import {ILoginState} from './LoginReducer' -import {TStateSelector} from '../redux' -import {LoginActions} from './LoginActions' -import {LoginForm} from './LoginForm' -import {bindActionCreators} from 'redux' -import {withForm} from './withForm' +import { ICredentials } from '@rondo.dev/common' +import { TStateSelector } from '@rondo.dev/redux' +import { bindActionCreators } from 'redux' +import { Connector } from '../redux/Connector' +import { LoginActions } from './LoginActions' +import { LoginForm } from './LoginForm' +import { ILoginState } from './LoginReducer' +import { withForm } from './withForm' const defaultCredentials: ICredentials = { username: '', diff --git a/packages/client/src/login/LoginForm.test.tsx b/packages/client/src/login/LoginForm.test.tsx index 35fde3c..e910c9c 100644 --- a/packages/client/src/login/LoginForm.test.tsx +++ b/packages/client/src/login/LoginForm.test.tsx @@ -1,10 +1,12 @@ -import * as Feature from './' +import { IAPIDef } from '@rondo.dev/common' +import { HTTPClientMock } from '@rondo.dev/http-client' +import { getError } from '@rondo.dev/test-utils' import React from 'react' import ReactDOM from 'react-dom' import T from 'react-dom/test-utils' -import {HTTPClientMock, TestUtils, getError} from '../test-utils' -import {IAPIDef} from '@rondo.dev/common' -import {MemoryRouter} from 'react-router-dom' +import { MemoryRouter } from 'react-router-dom' +import { TestUtils } from '../test-utils' +import * as Feature from './' const test = new TestUtils() diff --git a/packages/client/src/login/RegisterConnector.tsx b/packages/client/src/login/RegisterConnector.tsx index 1cbe518..d30a1b5 100644 --- a/packages/client/src/login/RegisterConnector.tsx +++ b/packages/client/src/login/RegisterConnector.tsx @@ -1,7 +1,7 @@ import {Connector} from '../redux/Connector' import {INewUser} from '@rondo.dev/common' import {ILoginState} from './LoginReducer' -import {TStateSelector} from '../redux' +import {TStateSelector} from '@rondo.dev/redux' import {LoginActions} from './LoginActions' import {RegisterForm} from './RegisterForm' import {bindActionCreators} from 'redux' diff --git a/packages/client/src/login/RegisterForm.test.tsx b/packages/client/src/login/RegisterForm.test.tsx index 38d2041..736436b 100644 --- a/packages/client/src/login/RegisterForm.test.tsx +++ b/packages/client/src/login/RegisterForm.test.tsx @@ -1,10 +1,12 @@ -import * as Feature from './' +import { IAPIDef } from '@rondo.dev/common' +import { HTTPClientMock } from '@rondo.dev/http-client' +import { getError } from '@rondo.dev/test-utils' import React from 'react' import ReactDOM from 'react-dom' import T from 'react-dom/test-utils' -import {HTTPClientMock, TestUtils, getError} from '../test-utils' -import {IAPIDef} from '@rondo.dev/common' -import {MemoryRouter} from 'react-router-dom' +import { MemoryRouter } from 'react-router-dom' +import { TestUtils } from '../test-utils' +import * as Feature from './' const test = new TestUtils() diff --git a/packages/client/src/login/withForm.tsx b/packages/client/src/login/withForm.tsx index 2b7db31..6d459ae 100644 --- a/packages/client/src/login/withForm.tsx +++ b/packages/client/src/login/withForm.tsx @@ -1,5 +1,5 @@ import React from 'react' -import {IPendingAction} from '../actions' +import {IPendingAction} from '@rondo.dev/redux' export interface IComponentProps { onSubmit: () => void diff --git a/packages/client/src/redux/Connector.ts b/packages/client/src/redux/Connector.ts index fe05f0c..65a2596 100644 --- a/packages/client/src/redux/Connector.ts +++ b/packages/client/src/redux/Connector.ts @@ -1,4 +1,4 @@ -import {TStateSelector} from './TStateSelector' +import {TStateSelector} from '@rondo.dev/redux' import {connect, Omit} from 'react-redux' import {Dispatch} from 'redux' import {ComponentType} from 'react' diff --git a/packages/client/src/redux/TStateSelector.ts b/packages/client/src/redux/TStateSelector.ts deleted file mode 100644 index 8a58ab4..0000000 --- a/packages/client/src/redux/TStateSelector.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* - * Select and return a part of the state - */ -export type TStateSelector - = (state: GlobalState) => StateSlice diff --git a/packages/client/src/redux/index.ts b/packages/client/src/redux/index.ts index b796323..0da848f 100644 --- a/packages/client/src/redux/index.ts +++ b/packages/client/src/redux/index.ts @@ -1,3 +1 @@ export * from './Connector' -export * from './TStateSelector' -export * from './pack' diff --git a/packages/client/src/redux/temp-test.tsx b/packages/client/src/redux/temp-test.tsx deleted file mode 100644 index 0fcd67d..0000000 --- a/packages/client/src/redux/temp-test.tsx +++ /dev/null @@ -1,34 +0,0 @@ -// import React from 'react' -// import {connect, Omit} from 'react-redux' - -// interface IProps { -// a: number -// } - -// class NumberDisplay extends React.PureComponent { -// render() { -// return `${this.props.a}` -// } -// } - -// // Case 1: this works -// function mapStateToProps(state: any) { -// return {a: 1} -// } - -// const ConnectedNumberDisplay1 = connect(mapStateToProps)(NumberDisplay) - -// export const display1 = - -// // Case 2: this doesn't work -// function wrap( -// mapState: (state: State) => StateProps, -// Component: React.ComponentType, -// ): React.ComponentType< -// Omit -// > { -// return connect(mapState)(Component as any) as any -// } - -// const ConnectedNumberDisplay2 = wrap(mapStateToProps, NumberDisplay) -// export const display2 = diff --git a/packages/client/src/renderer/ClientRenderer.tsx b/packages/client/src/renderer/ClientRenderer.tsx index be1e742..b294642 100644 --- a/packages/client/src/renderer/ClientRenderer.tsx +++ b/packages/client/src/renderer/ClientRenderer.tsx @@ -3,7 +3,7 @@ import ReactDOM from 'react-dom' import {Action} from 'redux' import {IAPIDef} from '@rondo.dev/common' import {IClientConfig} from './IClientConfig' -import {IHTTPClient, HTTPClient} from '../http' +import {IHTTPClient, HTTPClient} from '@rondo.dev/http-client' import {IRenderer} from './IRenderer' import {Provider} from 'react-redux' import {Router} from 'react-router-dom' diff --git a/packages/client/src/renderer/ServerRenderer.tsx b/packages/client/src/renderer/ServerRenderer.tsx index df3a6fb..20054f6 100644 --- a/packages/client/src/renderer/ServerRenderer.tsx +++ b/packages/client/src/renderer/ServerRenderer.tsx @@ -1,15 +1,12 @@ import React from 'react' +import { renderToNodeStream } from 'react-dom/server' +import { Provider } from 'react-redux' +import { StaticRouterContext } from 'react-router' +import { StaticRouter } from 'react-router-dom' import ssrPrepass from 'react-ssr-prepass' -import {Action} from 'redux' -import {IAPIDef} from '@rondo.dev/common' -import {IClientConfig} from './IClientConfig' -import {IHTTPClient, HTTPClient} from '../http' -import {IRenderer} from './IRenderer' -import {Provider} from 'react-redux' -import {StaticRouterContext} from 'react-router' -import {StaticRouter} from 'react-router-dom' -import {Store} from 'redux' -import {renderToNodeStream} from 'react-dom/server' +import { Store } from 'redux' +import { IClientConfig } from './IClientConfig' +import { IRenderer } from './IRenderer' export class ServerRenderer implements IRenderer { constructor( diff --git a/packages/client/src/team/TeamActions.ts b/packages/client/src/team/TeamActions.ts index a77dcff..0ee229b 100644 --- a/packages/client/src/team/TeamActions.ts +++ b/packages/client/src/team/TeamActions.ts @@ -1,6 +1,6 @@ import {IAPIDef} from '@rondo.dev/common' -import {TGetPendingAction, TAsyncAction, PendingAction} from '../actions' -import {IHTTPClient} from '../http/IHTTPClient' +import {TGetPendingAction, TAsyncAction, PendingAction} from '@rondo.dev/redux' +import {IHTTPClient} from '@rondo.dev/http-client' import {ITeam, IUser, IUserInTeam} from '@rondo.dev/common' export type TTeamAction = diff --git a/packages/client/src/team/TeamConnector.test.tsx b/packages/client/src/team/TeamConnector.test.tsx index c6c472d..d6630ee 100644 --- a/packages/client/src/team/TeamConnector.test.tsx +++ b/packages/client/src/team/TeamConnector.test.tsx @@ -1,7 +1,9 @@ import * as Feature from './' // export ReactDOM from 'react-dom' import T from 'react-dom/test-utils' -import {HTTPClientMock, TestUtils, getError} from '../test-utils' +import {TestUtils} from '../test-utils' +import {HTTPClientMock} from '@rondo.dev/http-client' +import {getError} from '@rondo.dev/test-utils' import {IAPIDef, ITeam, IUserInTeam} from '@rondo.dev/common' import React from 'react' import {MemoryRouter} from 'react-router-dom' diff --git a/packages/client/src/team/TeamConnector.ts b/packages/client/src/team/TeamConnector.ts index e6be98e..2f21d9a 100644 --- a/packages/client/src/team/TeamConnector.ts +++ b/packages/client/src/team/TeamConnector.ts @@ -1,5 +1,5 @@ import {Connector} from '../redux/Connector' -import {pack, TStateSelector} from '../redux' +import {pack, TStateSelector} from '@rondo.dev/redux' import {ITeamState} from './TeamReducer' import {TeamActions} from './TeamActions' import {TeamManager} from './TeamManager' diff --git a/packages/client/src/team/TeamReducer.ts b/packages/client/src/team/TeamReducer.ts index 3869ab7..e2cd1bd 100644 --- a/packages/client/src/team/TeamReducer.ts +++ b/packages/client/src/team/TeamReducer.ts @@ -2,7 +2,7 @@ import { ITeam, IUserInTeam, TReadonlyRecord, indexBy, without, } from '@rondo.dev/common' import {TTeamAction} from './TeamActions' -import {TGetResolvedAction} from '../actions' +import {TGetResolvedAction} from '@rondo.dev/redux' export interface ITeamState { readonly error: string diff --git a/packages/client/src/test-utils/TestUtils.tsx b/packages/client/src/test-utils/TestUtils.tsx index fd852dc..fee6bd8 100644 --- a/packages/client/src/test-utils/TestUtils.tsx +++ b/packages/client/src/test-utils/TestUtils.tsx @@ -1,9 +1,8 @@ import React from 'react' import ReactDOM from 'react-dom' import T from 'react-dom/test-utils' -import {TStateSelector} from '../redux' +import {createStore, TStateSelector} from '@rondo.dev/redux' import {Provider} from 'react-redux' -import {createStore} from '../store' import { Action, AnyAction, diff --git a/packages/client/src/test-utils/getError.ts b/packages/client/src/test-utils/getError.ts deleted file mode 100644 index 0c13b11..0000000 --- a/packages/client/src/test-utils/getError.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Waits for a promise be rejected and return the error. If a promise resolves - * it will throw an error. To be used during testing since - * `expect(...).toThrowError()` only works with synchronous calls - */ -export async function getError(promise: Promise): Promise { - let error: Error - try { - await promise - } catch (err) { - error = err - } - expect(error!).toBeTruthy() - return error! -} diff --git a/packages/client/src/test-utils/index.ts b/packages/client/src/test-utils/index.ts index a9191e9..fd83141 100644 --- a/packages/client/src/test-utils/index.ts +++ b/packages/client/src/test-utils/index.ts @@ -1,3 +1 @@ -export * from './HTTPClientMock' export * from './TestUtils' -export * from './getError' diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index ed92f98..927afb0 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -5,6 +5,7 @@ "rootDir": "src" }, "references": [ + {"path": "../redux"}, {"path": "../comments-common"} ] } diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index c76413f..8623671 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -4,16 +4,13 @@ export * from './IAPIDef' export * from './ICredentials' export * from './ILogger' export * from './INewUser' -export * from './IRequestParams' export * from './IRole' -export * from './IRoutes' export * from './ITeam' export * from './IUser' export * from './IUser' export * from './IUserInTeam' export * from './IUserTeam' export * from './StringUtils' -export * from './URLFormatter' export * from './filterProps' export * from './indexBy' export * from './types' diff --git a/packages/common/tsconfig.esm.json b/packages/common/tsconfig.esm.json index d54bfbf..6e2aaa7 100644 --- a/packages/common/tsconfig.esm.json +++ b/packages/common/tsconfig.esm.json @@ -3,5 +3,6 @@ "compilerOptions": { "outDir": "esm" }, - "references": [] -} \ No newline at end of file + "references": [ + ] +} diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json index caad41d..94e864b 100644 --- a/packages/common/tsconfig.json +++ b/packages/common/tsconfig.json @@ -3,5 +3,7 @@ "compilerOptions": { "outDir": "lib", "rootDir": "src" - } + }, + "references": [ + ] } diff --git a/packages/config/tsconfig.esm.json b/packages/config/tsconfig.esm.json new file mode 100644 index 0000000..f2183ea --- /dev/null +++ b/packages/config/tsconfig.esm.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "esm" + }, + "references": [ + {"path": "../logger/tsconfig.esm.json"} + ] +} diff --git a/packages/http-client/jest.config.js b/packages/http-client/jest.config.js new file mode 100644 index 0000000..737dab0 --- /dev/null +++ b/packages/http-client/jest.config.js @@ -0,0 +1,16 @@ +module.exports = { + roots: [ + '/src' + ], + transform: { + '^.+\\.tsx?$': 'ts-jest' + }, + testRegex: '(/__tests__/.*|\\.(test|spec))\\.tsx?$', + moduleFileExtensions: [ + 'ts', + 'tsx', + 'js', + 'jsx' + ], + setupFiles: ['/jest.setup.js'] +} diff --git a/packages/http-client/jest.setup.js b/packages/http-client/jest.setup.js new file mode 100644 index 0000000..a952c9b --- /dev/null +++ b/packages/http-client/jest.setup.js @@ -0,0 +1,4 @@ +if (!process.env.LOG) { + process.env.LOG = 'sql:warn' +} +process.chdir(__dirname) diff --git a/packages/http-client/package.json b/packages/http-client/package.json new file mode 100644 index 0000000..46ef7ee --- /dev/null +++ b/packages/http-client/package.json @@ -0,0 +1,16 @@ +{ + "name": "@rondo.dev/http-client", + "private": true, + "scripts": { + "test": "jest", + "lint": "tslint --project .", + "compile": "tsc", + "clean": "rm -rf lib/" + }, + "dependencies": { + "axios": "^0.19.0" + }, + "main": "lib/index.js", + "module": "esm/index.js", + "types": "lib/index.d.ts" +} diff --git a/packages/client/src/http/HTTPClient.ts b/packages/http-client/src/HTTPClient.ts similarity index 96% rename from packages/client/src/http/HTTPClient.ts rename to packages/http-client/src/HTTPClient.ts index b621235..b6b27d9 100644 --- a/packages/client/src/http/HTTPClient.ts +++ b/packages/http-client/src/HTTPClient.ts @@ -1,7 +1,8 @@ import axios from 'axios' import {IHTTPClient} from './IHTTPClient' import {IHeader} from './IHeader' -import {TMethod, IRoutes, URLFormatter} from '@rondo.dev/common' +import {TMethod, IRoutes} from '@rondo.dev/http-types' +import {URLFormatter} from './URLFormatter' import {IRequest} from './IRequest' import {IResponse} from './IResponse' import {ITypedRequestParams} from './ITypedRequestParams' diff --git a/packages/client/src/test-utils/HTTPClientMock.test.ts b/packages/http-client/src/HTTPClientMock.test.ts similarity index 97% rename from packages/client/src/test-utils/HTTPClientMock.test.ts rename to packages/http-client/src/HTTPClientMock.test.ts index a56cef9..b648776 100644 --- a/packages/client/src/test-utils/HTTPClientMock.test.ts +++ b/packages/http-client/src/HTTPClientMock.test.ts @@ -1,5 +1,5 @@ import {HTTPClientMock} from './HTTPClientMock' -import {getError} from './getError' +import {getError} from '@rondo.dev/test-utils' describe('HTTPClientMock', () => { diff --git a/packages/client/src/test-utils/HTTPClientMock.ts b/packages/http-client/src/HTTPClientMock.ts similarity index 94% rename from packages/client/src/test-utils/HTTPClientMock.ts rename to packages/http-client/src/HTTPClientMock.ts index 67a38b6..f8fe82f 100644 --- a/packages/client/src/test-utils/HTTPClientMock.ts +++ b/packages/http-client/src/HTTPClientMock.ts @@ -1,8 +1,8 @@ -import {HTTPClient} from '../http/HTTPClient' -import {IRequest} from '../http/IRequest' -import {IResponse} from '../http/IResponse' -import {IRoutes, TMethod} from '@rondo.dev/common' -import {ITypedRequestParams} from '../http/ITypedRequestParams' +import {HTTPClient} from './HTTPClient' +import {IRequest} from './IRequest' +import {IResponse} from './IResponse' +import {IRoutes, TMethod} from '@rondo.dev/http-types' +import {ITypedRequestParams} from './ITypedRequestParams' interface IReqRes { req: IRequest diff --git a/packages/client/src/http/IHTTPClient.ts b/packages/http-client/src/IHTTPClient.ts similarity index 96% rename from packages/client/src/http/IHTTPClient.ts rename to packages/http-client/src/IHTTPClient.ts index 71f6ffc..cff03a6 100644 --- a/packages/client/src/http/IHTTPClient.ts +++ b/packages/http-client/src/IHTTPClient.ts @@ -1,4 +1,4 @@ -import {TMethod, IRoutes} from '@rondo.dev/common' +import {TMethod, IRoutes} from '@rondo.dev/http-types' import {ITypedRequestParams} from './ITypedRequestParams' export interface IHTTPClient { diff --git a/packages/client/src/http/IHeader.ts b/packages/http-client/src/IHeader.ts similarity index 100% rename from packages/client/src/http/IHeader.ts rename to packages/http-client/src/IHeader.ts diff --git a/packages/client/src/http/IRequest.ts b/packages/http-client/src/IRequest.ts similarity index 70% rename from packages/client/src/http/IRequest.ts rename to packages/http-client/src/IRequest.ts index 28cfbe1..eb00dd3 100644 --- a/packages/client/src/http/IRequest.ts +++ b/packages/http-client/src/IRequest.ts @@ -1,4 +1,4 @@ -import {TMethod} from '@rondo.dev/common' +import {TMethod} from '@rondo.dev/http-types' export interface IRequest { method: TMethod, diff --git a/packages/common/src/IRequestParams.ts b/packages/http-client/src/IRequestParams.ts similarity index 100% rename from packages/common/src/IRequestParams.ts rename to packages/http-client/src/IRequestParams.ts diff --git a/packages/common/src/IRequestQuery.ts b/packages/http-client/src/IRequestQuery.ts similarity index 100% rename from packages/common/src/IRequestQuery.ts rename to packages/http-client/src/IRequestQuery.ts diff --git a/packages/client/src/http/IResponse.ts b/packages/http-client/src/IResponse.ts similarity index 100% rename from packages/client/src/http/IResponse.ts rename to packages/http-client/src/IResponse.ts diff --git a/packages/client/src/http/ITypedRequestParams.ts b/packages/http-client/src/ITypedRequestParams.ts similarity index 80% rename from packages/client/src/http/ITypedRequestParams.ts rename to packages/http-client/src/ITypedRequestParams.ts index 2e93964..2032930 100644 --- a/packages/client/src/http/ITypedRequestParams.ts +++ b/packages/http-client/src/ITypedRequestParams.ts @@ -1,4 +1,4 @@ -import {IRoutes, TMethod} from '@rondo.dev/common' +import {IRoutes, TMethod} from '@rondo.dev/http-types' export interface ITypedRequestParams< T extends IRoutes, diff --git a/packages/common/src/URLFormatter.ts b/packages/http-client/src/URLFormatter.ts similarity index 97% rename from packages/common/src/URLFormatter.ts rename to packages/http-client/src/URLFormatter.ts index 137bf38..ccf8730 100644 --- a/packages/common/src/URLFormatter.ts +++ b/packages/http-client/src/URLFormatter.ts @@ -1,4 +1,3 @@ -import assert from 'assert' import {IRequestParams} from './IRequestParams' import {IRequestQuery} from './IRequestQuery' diff --git a/packages/client/src/http/index.ts b/packages/http-client/src/index.ts similarity index 57% rename from packages/client/src/http/index.ts rename to packages/http-client/src/index.ts index 02772fa..59987e4 100644 --- a/packages/client/src/http/index.ts +++ b/packages/http-client/src/index.ts @@ -1,6 +1,10 @@ export * from './HTTPClient' -export * from './IHTTPClient' +export * from './HTTPClientMock' export * from './IHeader' +export * from './IHTTPClient' export * from './IRequest' +export * from './IRequestParams' +export * from './IRequestQuery' export * from './IResponse' export * from './ITypedRequestParams' +export * from './URLFormatter' diff --git a/packages/http-client/tsconfig.esm.json b/packages/http-client/tsconfig.esm.json new file mode 100644 index 0000000..a2f313f --- /dev/null +++ b/packages/http-client/tsconfig.esm.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "esm" + }, + "references": [{ + "path": "../test-utils/tsconfig.esm.json" + }, { + "path": "../http-types/tsconfig.json" + }] +} diff --git a/packages/http-client/tsconfig.json b/packages/http-client/tsconfig.json new file mode 100644 index 0000000..6b7bbed --- /dev/null +++ b/packages/http-client/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.common.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [ + {"path": "../test-utils"}, + {"path": "../http-types"} + ] +} diff --git a/packages/http-client/tslint.json b/packages/http-client/tslint.json new file mode 100644 index 0000000..1a7ba23 --- /dev/null +++ b/packages/http-client/tslint.json @@ -0,0 +1,10 @@ +{ + "extends": [ + "../tslint.json" + ], + "linterOptions": { + "exclude": [ + "src/migrations/*.ts" + ] + } +} diff --git a/packages/http-types/jest.config.js b/packages/http-types/jest.config.js new file mode 100644 index 0000000..737dab0 --- /dev/null +++ b/packages/http-types/jest.config.js @@ -0,0 +1,16 @@ +module.exports = { + roots: [ + '/src' + ], + transform: { + '^.+\\.tsx?$': 'ts-jest' + }, + testRegex: '(/__tests__/.*|\\.(test|spec))\\.tsx?$', + moduleFileExtensions: [ + 'ts', + 'tsx', + 'js', + 'jsx' + ], + setupFiles: ['/jest.setup.js'] +} diff --git a/packages/http-types/jest.setup.js b/packages/http-types/jest.setup.js new file mode 100644 index 0000000..a952c9b --- /dev/null +++ b/packages/http-types/jest.setup.js @@ -0,0 +1,4 @@ +if (!process.env.LOG) { + process.env.LOG = 'sql:warn' +} +process.chdir(__dirname) diff --git a/packages/http-types/package.json b/packages/http-types/package.json new file mode 100644 index 0000000..58084f4 --- /dev/null +++ b/packages/http-types/package.json @@ -0,0 +1,14 @@ +{ + "name": "@rondo.dev/http-types", + "private": true, + "scripts": { + "test": "jest", + "lint": "tslint --project .", + "compile": "tsc", + "clean": "rm -rf lib/" + }, + "dependencies": {}, + "main": "lib/index.js", + "module": "esm/index.js", + "types": "lib/index.d.ts" +} diff --git a/packages/common/src/IRoutes.ts b/packages/http-types/src/index.ts similarity index 100% rename from packages/common/src/IRoutes.ts rename to packages/http-types/src/index.ts diff --git a/packages/http-types/tsconfig.esm.json b/packages/http-types/tsconfig.esm.json new file mode 100644 index 0000000..6e2aaa7 --- /dev/null +++ b/packages/http-types/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "esm" + }, + "references": [ + ] +} diff --git a/packages/http-types/tsconfig.json b/packages/http-types/tsconfig.json new file mode 100644 index 0000000..94e864b --- /dev/null +++ b/packages/http-types/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.common.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [ + ] +} diff --git a/packages/http-types/tslint.json b/packages/http-types/tslint.json new file mode 100644 index 0000000..1a7ba23 --- /dev/null +++ b/packages/http-types/tslint.json @@ -0,0 +1,10 @@ +{ + "extends": [ + "../tslint.json" + ], + "linterOptions": { + "exclude": [ + "src/migrations/*.ts" + ] + } +} diff --git a/packages/jsonrpc/src/redux.test.ts b/packages/jsonrpc/src/redux.test.ts index b788de5..1e956d8 100644 --- a/packages/jsonrpc/src/redux.test.ts +++ b/packages/jsonrpc/src/redux.test.ts @@ -10,7 +10,7 @@ import {Contextual, TPendingActions, TAllActions} from './types' import {combineReducers} from 'redux' import {createActions, createReducer} from './redux' import {createRemoteClient} from './remote' -import {createStore} from '@rondo.dev/client' +import {createStore} from '@rondo.dev/redux' import {jsonrpc} from './express' import {keys} from 'ts-transformer-keys' import {noopLogger} from './test-utils' diff --git a/packages/jsonrpc/src/types.ts b/packages/jsonrpc/src/types.ts index 309890d..654e4ec 100644 --- a/packages/jsonrpc/src/types.ts +++ b/packages/jsonrpc/src/types.ts @@ -1,4 +1,4 @@ -import {IPendingAction, IResolvedAction, IRejectedAction} from '@rondo.dev/client' +import {IPendingAction, IResolvedAction, IRejectedAction} from '@rondo.dev/redux' export type ArgumentTypes = T extends (...args: infer U) => infer R ? U : never diff --git a/packages/redux/README.md b/packages/redux/README.md new file mode 100644 index 0000000..a20e891 --- /dev/null +++ b/packages/redux/README.md @@ -0,0 +1,3 @@ +# @rondo.dev/redux + +Client-side utilities and type helpers for Redux. diff --git a/packages/redux/jest.config.js b/packages/redux/jest.config.js new file mode 100644 index 0000000..737dab0 --- /dev/null +++ b/packages/redux/jest.config.js @@ -0,0 +1,16 @@ +module.exports = { + roots: [ + '/src' + ], + transform: { + '^.+\\.tsx?$': 'ts-jest' + }, + testRegex: '(/__tests__/.*|\\.(test|spec))\\.tsx?$', + moduleFileExtensions: [ + 'ts', + 'tsx', + 'js', + 'jsx' + ], + setupFiles: ['/jest.setup.js'] +} diff --git a/packages/redux/jest.setup.js b/packages/redux/jest.setup.js new file mode 100644 index 0000000..a952c9b --- /dev/null +++ b/packages/redux/jest.setup.js @@ -0,0 +1,4 @@ +if (!process.env.LOG) { + process.env.LOG = 'sql:warn' +} +process.chdir(__dirname) diff --git a/packages/redux/package.json b/packages/redux/package.json new file mode 100644 index 0000000..068d503 --- /dev/null +++ b/packages/redux/package.json @@ -0,0 +1,14 @@ +{ + "name": "@rondo.dev/redux", + "private": true, + "scripts": { + "test": "jest", + "lint": "tslint --project .", + "compile": "tsc", + "clean": "rm -rf lib/" + }, + "dependencies": {}, + "main": "lib/index.js", + "module": "esm/index.js", + "types": "lib/index.d.ts" +} diff --git a/packages/client/src/actions/IAction.ts b/packages/redux/src/actions/IAction.ts similarity index 100% rename from packages/client/src/actions/IAction.ts rename to packages/redux/src/actions/IAction.ts diff --git a/packages/client/src/actions/IPendingAction.ts b/packages/redux/src/actions/IPendingAction.ts similarity index 100% rename from packages/client/src/actions/IPendingAction.ts rename to packages/redux/src/actions/IPendingAction.ts diff --git a/packages/client/src/actions/IRejectedAction.ts b/packages/redux/src/actions/IRejectedAction.ts similarity index 100% rename from packages/client/src/actions/IRejectedAction.ts rename to packages/redux/src/actions/IRejectedAction.ts diff --git a/packages/client/src/actions/IResolvedAction.ts b/packages/redux/src/actions/IResolvedAction.ts similarity index 100% rename from packages/client/src/actions/IResolvedAction.ts rename to packages/redux/src/actions/IResolvedAction.ts diff --git a/packages/client/src/actions/PendingAction.ts b/packages/redux/src/actions/PendingAction.ts similarity index 100% rename from packages/client/src/actions/PendingAction.ts rename to packages/redux/src/actions/PendingAction.ts diff --git a/packages/client/src/actions/TAsyncAction.ts b/packages/redux/src/actions/TAsyncAction.ts similarity index 100% rename from packages/client/src/actions/TAsyncAction.ts rename to packages/redux/src/actions/TAsyncAction.ts diff --git a/packages/client/src/actions/TGetAction.ts b/packages/redux/src/actions/TGetAction.ts similarity index 100% rename from packages/client/src/actions/TGetAction.ts rename to packages/redux/src/actions/TGetAction.ts diff --git a/packages/client/src/actions/TGetPendingAction.ts b/packages/redux/src/actions/TGetPendingAction.ts similarity index 100% rename from packages/client/src/actions/TGetPendingAction.ts rename to packages/redux/src/actions/TGetPendingAction.ts diff --git a/packages/client/src/actions/TGetResolvedAction.ts b/packages/redux/src/actions/TGetResolvedAction.ts similarity index 100% rename from packages/client/src/actions/TGetResolvedAction.ts rename to packages/redux/src/actions/TGetResolvedAction.ts diff --git a/packages/client/src/actions/index.ts b/packages/redux/src/actions/index.ts similarity index 100% rename from packages/client/src/actions/index.ts rename to packages/redux/src/actions/index.ts diff --git a/packages/redux/src/index.ts b/packages/redux/src/index.ts new file mode 100644 index 0000000..922bfbb --- /dev/null +++ b/packages/redux/src/index.ts @@ -0,0 +1,4 @@ +export * from './actions' +export * from './middleware' +export * from './store' +export * from './pack' diff --git a/packages/client/src/middleware/PromiseMiddleware.test.ts b/packages/redux/src/middleware/PromiseMiddleware.test.ts similarity index 97% rename from packages/client/src/middleware/PromiseMiddleware.test.ts rename to packages/redux/src/middleware/PromiseMiddleware.test.ts index 5cb0c86..5fe6a2e 100644 --- a/packages/client/src/middleware/PromiseMiddleware.test.ts +++ b/packages/redux/src/middleware/PromiseMiddleware.test.ts @@ -1,6 +1,6 @@ import {createStore, applyMiddleware, Store} from 'redux' import {PromiseMiddleware} from './PromiseMiddleware' -import {getError} from '../test-utils' +import {getError} from '@rondo.dev/test-utils' describe('PromiseMiddleware', () => { diff --git a/packages/client/src/middleware/PromiseMiddleware.ts b/packages/redux/src/middleware/PromiseMiddleware.ts similarity index 100% rename from packages/client/src/middleware/PromiseMiddleware.ts rename to packages/redux/src/middleware/PromiseMiddleware.ts diff --git a/packages/client/src/middleware/ReduxLogger.ts b/packages/redux/src/middleware/ReduxLogger.ts similarity index 100% rename from packages/client/src/middleware/ReduxLogger.ts rename to packages/redux/src/middleware/ReduxLogger.ts diff --git a/packages/client/src/middleware/WaitMiddleware.test.ts b/packages/redux/src/middleware/WaitMiddleware.test.ts similarity index 98% rename from packages/client/src/middleware/WaitMiddleware.test.ts rename to packages/redux/src/middleware/WaitMiddleware.test.ts index 1846d85..fbaf986 100644 --- a/packages/client/src/middleware/WaitMiddleware.test.ts +++ b/packages/redux/src/middleware/WaitMiddleware.test.ts @@ -3,7 +3,7 @@ import { IAction, IPendingAction, IResolvedAction, IRejectedAction, } from '../actions' import {applyMiddleware, createStore, AnyAction} from 'redux' -import {getError} from '../test-utils' +import { getError } from '@rondo.dev/test-utils' describe('WaitMiddleware', () => { diff --git a/packages/client/src/middleware/WaitMiddleware.ts b/packages/redux/src/middleware/WaitMiddleware.ts similarity index 100% rename from packages/client/src/middleware/WaitMiddleware.ts rename to packages/redux/src/middleware/WaitMiddleware.ts diff --git a/packages/client/src/middleware/index.ts b/packages/redux/src/middleware/index.ts similarity index 100% rename from packages/client/src/middleware/index.ts rename to packages/redux/src/middleware/index.ts diff --git a/packages/client/src/redux/pack.test.tsx b/packages/redux/src/pack.test.tsx similarity index 97% rename from packages/client/src/redux/pack.test.tsx rename to packages/redux/src/pack.test.tsx index a754f30..e7ebb84 100644 --- a/packages/client/src/redux/pack.test.tsx +++ b/packages/redux/src/pack.test.tsx @@ -3,8 +3,7 @@ import ReactDOM from 'react-dom' import TestUtils from 'react-dom/test-utils' import { Provider } from 'react-redux' import { createStore } from 'redux' -import { pack } from './pack' -import { TStateSelector } from './TStateSelector' +import { pack, TStateSelector } from './pack' describe('pack', () => { diff --git a/packages/client/src/redux/pack.ts b/packages/redux/src/pack.ts similarity index 90% rename from packages/client/src/redux/pack.ts rename to packages/redux/src/pack.ts index 5171ea1..e7251d4 100644 --- a/packages/client/src/redux/pack.ts +++ b/packages/redux/src/pack.ts @@ -1,7 +1,12 @@ import { ComponentType, PureComponent } from 'react' import { connect, Omit, MapDispatchToPropsParam, Matching, GetProps, ResolveThunks } from 'react-redux' import { Dispatch } from 'redux' -import { TStateSelector } from './TStateSelector' + +/* + * Select and return a part of the state + */ +export type TStateSelector + = (state: GlobalState) => StateSlice /** * This function can be used to pack React components into reusable modules. diff --git a/packages/client/src/store/createStore.ts b/packages/redux/src/store/createStore.ts similarity index 100% rename from packages/client/src/store/createStore.ts rename to packages/redux/src/store/createStore.ts diff --git a/packages/client/src/store/index.ts b/packages/redux/src/store/index.ts similarity index 100% rename from packages/client/src/store/index.ts rename to packages/redux/src/store/index.ts diff --git a/packages/redux/tsconfig.esm.json b/packages/redux/tsconfig.esm.json new file mode 100644 index 0000000..95fa9c4 --- /dev/null +++ b/packages/redux/tsconfig.esm.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "esm" + }, + "references": [ + {"path": "../test-utils/tsconfig.esm.json"} + ] +} diff --git a/packages/redux/tsconfig.json b/packages/redux/tsconfig.json new file mode 100644 index 0000000..00958fd --- /dev/null +++ b/packages/redux/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.common.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [ + {"path": "../test-utils"} + ] +} diff --git a/packages/redux/tslint.json b/packages/redux/tslint.json new file mode 100644 index 0000000..1a7ba23 --- /dev/null +++ b/packages/redux/tslint.json @@ -0,0 +1,10 @@ +{ + "extends": [ + "../tslint.json" + ], + "linterOptions": { + "exclude": [ + "src/migrations/*.ts" + ] + } +} diff --git a/packages/server/src/application/configureServer.ts b/packages/server/src/application/configureServer.ts index 4efc46e..df895a2 100644 --- a/packages/server/src/application/configureServer.ts +++ b/packages/server/src/application/configureServer.ts @@ -1,20 +1,20 @@ -import cookieParser from 'cookie-parser' +import { IContext } from '@rondo.dev/common' +import { IRoutes } from '@rondo.dev/http-types' +import { bulkjsonrpc, jsonrpc } from '@rondo.dev/jsonrpc' import { json } from 'body-parser' +import cookieParser from 'cookie-parser' import { IDatabase } from '../database' import { loggerFactory } from '../logger' import * as Middleware from '../middleware' +import { TransactionalRouter } from '../router' +import * as routes from '../routes' +import * as rpc from '../rpc' import * as Services from '../services' import * as Team from '../team' import * as User from '../user' -import { IServerConfig } from './IServerConfig' import { IConfig } from './IConfig' +import { IServerConfig } from './IServerConfig' import { IServices } from './IServices' -import * as routes from '../routes' -import { TransactionalRouter } from '../router' -import { IRoutes, IContext } from '@rondo.dev/common' -import { Express } from 'express-serve-static-core' -import { jsonrpc, bulkjsonrpc } from '@rondo.dev/jsonrpc' -import * as rpc from '../rpc' export type ServerConfigurator< T extends IServerConfig = IServerConfig diff --git a/packages/server/src/logger/ILogger.ts b/packages/server/src/logger/ILogger.ts deleted file mode 100644 index 15187c5..0000000 --- a/packages/server/src/logger/ILogger.ts +++ /dev/null @@ -1 +0,0 @@ -export {ILogger} from '@rondo.dev/common' diff --git a/packages/server/src/logger/SqlLogger.ts b/packages/server/src/logger/SqlLogger.ts index 8642b35..8bf868f 100644 --- a/packages/server/src/logger/SqlLogger.ts +++ b/packages/server/src/logger/SqlLogger.ts @@ -1,4 +1,4 @@ -import {ILogger} from './ILogger' +import {ILogger} from '@rondo.dev/logger' import {Logger, QueryRunner} from 'typeorm' import {Namespace} from 'cls-hooked' import {CORRELATION_ID} from '../middleware/Transaction' diff --git a/packages/server/src/middleware/ErrorApiHandler.ts b/packages/server/src/middleware/ErrorApiHandler.ts index 2f47fc7..f278ac1 100644 --- a/packages/server/src/middleware/ErrorApiHandler.ts +++ b/packages/server/src/middleware/ErrorApiHandler.ts @@ -1,5 +1,5 @@ import {TErrorHandler} from './TErrorHandler' -import {ILogger} from '../logger/ILogger' +import {ILogger} from '@rondo.dev/logger' import {IMiddleware} from './IMiddleware' import {ValidationError} from '../validator' diff --git a/packages/server/src/middleware/ErrorPageHandler.ts b/packages/server/src/middleware/ErrorPageHandler.ts index 7932d74..2eec2c6 100644 --- a/packages/server/src/middleware/ErrorPageHandler.ts +++ b/packages/server/src/middleware/ErrorPageHandler.ts @@ -1,4 +1,4 @@ -import {ILogger} from '../logger/ILogger' +import {ILogger} from '@rondo.dev/logger' import {IMiddleware} from './IMiddleware' import {TErrorHandler} from './TErrorHandler' diff --git a/packages/server/src/middleware/RequestLogger.ts b/packages/server/src/middleware/RequestLogger.ts index 673c996..191c374 100644 --- a/packages/server/src/middleware/RequestLogger.ts +++ b/packages/server/src/middleware/RequestLogger.ts @@ -1,5 +1,5 @@ import {THandler} from './THandler' -import {ILogger} from '../logger/ILogger' +import {ILogger} from '@rondo.dev/logger' import {IMiddleware} from './IMiddleware' import shortid from 'shortid' diff --git a/packages/server/src/router/AsyncRouter.ts b/packages/server/src/router/AsyncRouter.ts index 4e33627..3e88ca2 100644 --- a/packages/server/src/router/AsyncRouter.ts +++ b/packages/server/src/router/AsyncRouter.ts @@ -1,5 +1,5 @@ import express from 'express' -import {IRoutes, TMethod} from '@rondo.dev/common' +import {IRoutes, TMethod} from '@rondo.dev/http-types' import {TTypedHandler, TTypedMiddleware} from './TTypedHandler' export class AsyncRouter { diff --git a/packages/server/src/router/ITypedRequest.ts b/packages/server/src/router/ITypedRequest.ts index 509743b..d6ba841 100644 --- a/packages/server/src/router/ITypedRequest.ts +++ b/packages/server/src/router/ITypedRequest.ts @@ -1,5 +1,5 @@ import express from 'express' -import {IRoute} from '@rondo.dev/common' +import {IRoute} from '@rondo.dev/http-types' export interface ITypedRequest extends express.Request { body: T['body'] diff --git a/packages/server/src/router/TTypedHandler.ts b/packages/server/src/router/TTypedHandler.ts index 07ae8c3..e3a77a8 100644 --- a/packages/server/src/router/TTypedHandler.ts +++ b/packages/server/src/router/TTypedHandler.ts @@ -1,5 +1,5 @@ import express from 'express' -import {IRoutes, TMethod} from '@rondo.dev/common' +import {IRoutes, TMethod} from '@rondo.dev/http-types' import {ITypedRequest} from './ITypedRequest' export type TTypedMiddleware< diff --git a/packages/server/src/router/TransactionalRouter.ts b/packages/server/src/router/TransactionalRouter.ts index ea958f4..6d8d4f0 100644 --- a/packages/server/src/router/TransactionalRouter.ts +++ b/packages/server/src/router/TransactionalRouter.ts @@ -1,6 +1,6 @@ import express from 'express' import {AsyncRouter} from './AsyncRouter' -import {IRoutes, TMethod} from '@rondo.dev/common' +import {IRoutes, TMethod} from '@rondo.dev/http-types' import {ITransactionManager} from '../database/ITransactionManager' import {TTypedHandler} from './TTypedHandler' diff --git a/packages/server/src/routes/BaseRoute.ts b/packages/server/src/routes/BaseRoute.ts index 38ed35c..fdabe1d 100644 --- a/packages/server/src/routes/BaseRoute.ts +++ b/packages/server/src/routes/BaseRoute.ts @@ -1,6 +1,6 @@ import {THandler} from '../middleware/THandler' import {AsyncRouter} from '../router' -import {IRoutes} from '@rondo.dev/common' +import {IRoutes} from '@rondo.dev/http-types' export abstract class BaseRoute { readonly handle: THandler diff --git a/packages/server/src/test-utils/RequestTester.ts b/packages/server/src/test-utils/RequestTester.ts index aaf94e5..e9a12d4 100644 --- a/packages/server/src/test-utils/RequestTester.ts +++ b/packages/server/src/test-utils/RequestTester.ts @@ -1,9 +1,6 @@ +import { URLFormatter } from '@rondo.dev/http-client' +import { IRoutes, TMethod } from '@rondo.dev/http-types' import supertest from 'supertest' -import { - TMethod, - IRoutes, - URLFormatter, -} from '@rondo.dev/common' // https://stackoverflow.com/questions/48215950/exclude-property-from-type type Omit = Pick> diff --git a/packages/server/src/test-utils/TestUtils.ts b/packages/server/src/test-utils/TestUtils.ts index c33a640..8621758 100644 --- a/packages/server/src/test-utils/TestUtils.ts +++ b/packages/server/src/test-utils/TestUtils.ts @@ -4,7 +4,7 @@ import {Connection, QueryRunner} from 'typeorm' import { ENTITY_MANAGER, ITransactionManager, TRANSACTION_ID, } from '../database/ITransactionManager' -import {IRoutes} from '@rondo.dev/common' +import {IRoutes} from '@rondo.dev/http-types' import {IBootstrap} from '../application/IBootstrap' import {RequestTester} from './RequestTester' import {Role} from '../entities/Role' diff --git a/packages/server/tsconfig.esm.json b/packages/server/tsconfig.esm.json index d05f413..f066e7e 100644 --- a/packages/server/tsconfig.esm.json +++ b/packages/server/tsconfig.esm.json @@ -6,6 +6,10 @@ "references": [ {"path": "../common/tsconfig.esm.json"}, {"path": "../jsonrpc/tsconfig.esm.json"}, - {"path": "../logger/tsconfig.esm.json"} + {"path": "../logger/tsconfig.esm.json"}, + {"path": "../config/tsconfig.esm.json"}, + {"path": "../tasq/tsconfig.esm.json"}, + {"path": "../http-client/tsconfig.esm.json"}, + {"path": "../http-types/tsconfig.esm.json"} ] } diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index a1e148c..5d1062a 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -9,6 +9,8 @@ {"path": "../jsonrpc"}, {"path": "../logger"}, {"path": "../config"}, - {"path": "../tasq"} + {"path": "../tasq"}, + {"path": "../http-client"}, + {"path": "../http-types"} ] } diff --git a/packages/tasq/src/TaskManager.test.ts b/packages/tasq/src/TaskManager.test.ts index 9915865..7baaf3c 100644 --- a/packages/tasq/src/TaskManager.test.ts +++ b/packages/tasq/src/TaskManager.test.ts @@ -1,5 +1,6 @@ import {TaskManager} from './TaskManager' import { PromiseExecutor } from './Executor' +import { getError } from '@rondo.dev/test-utils' describe('TaskManager', () => { @@ -76,17 +77,6 @@ describe('TaskManager', () => { }) - async function getError(p: Promise): Promise { - let error: Error | undefined - try { - await p - } catch (err) { - error = err - } - expect(error).toBeDefined() - return error! - } - describe('error handling', () => { it('does not fail on error', async () => { const tm = new TaskManager(2, diff --git a/packages/tasq/tsconfig.esm.json b/packages/tasq/tsconfig.esm.json index 915284d..95fa9c4 100644 --- a/packages/tasq/tsconfig.esm.json +++ b/packages/tasq/tsconfig.esm.json @@ -3,5 +3,7 @@ "compilerOptions": { "outDir": "esm" }, - "references": [] + "references": [ + {"path": "../test-utils/tsconfig.esm.json"} + ] } diff --git a/packages/tasq/tsconfig.json b/packages/tasq/tsconfig.json index 94e864b..00958fd 100644 --- a/packages/tasq/tsconfig.json +++ b/packages/tasq/tsconfig.json @@ -5,5 +5,6 @@ "rootDir": "src" }, "references": [ + {"path": "../test-utils"} ] } diff --git a/packages/test-utils/jest.config.js b/packages/test-utils/jest.config.js new file mode 100644 index 0000000..737dab0 --- /dev/null +++ b/packages/test-utils/jest.config.js @@ -0,0 +1,16 @@ +module.exports = { + roots: [ + '/src' + ], + transform: { + '^.+\\.tsx?$': 'ts-jest' + }, + testRegex: '(/__tests__/.*|\\.(test|spec))\\.tsx?$', + moduleFileExtensions: [ + 'ts', + 'tsx', + 'js', + 'jsx' + ], + setupFiles: ['/jest.setup.js'] +} diff --git a/packages/test-utils/jest.setup.js b/packages/test-utils/jest.setup.js new file mode 100644 index 0000000..a952c9b --- /dev/null +++ b/packages/test-utils/jest.setup.js @@ -0,0 +1,4 @@ +if (!process.env.LOG) { + process.env.LOG = 'sql:warn' +} +process.chdir(__dirname) diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json new file mode 100644 index 0000000..d321fbc --- /dev/null +++ b/packages/test-utils/package.json @@ -0,0 +1,14 @@ +{ + "name": "@rondo.dev/test-utils", + "private": true, + "scripts": { + "test": "jest", + "lint": "tslint --project .", + "compile": "tsc", + "clean": "rm -rf lib/" + }, + "dependencies": {}, + "main": "lib/index.js", + "module": "esm/index.js", + "types": "lib/index.d.ts" +} diff --git a/packages/test-utils/src/getError.ts b/packages/test-utils/src/getError.ts new file mode 100644 index 0000000..bd74ffd --- /dev/null +++ b/packages/test-utils/src/getError.ts @@ -0,0 +1,10 @@ +export async function getError(promise: Promise) { + let error!: Error + try { + await promise + } catch (err) { + error = err + } + expect(error).toBeTruthy() + return error +} diff --git a/packages/test-utils/src/index.ts b/packages/test-utils/src/index.ts new file mode 100644 index 0000000..7ad7b41 --- /dev/null +++ b/packages/test-utils/src/index.ts @@ -0,0 +1 @@ +export * from './getError' diff --git a/packages/test-utils/tsconfig.esm.json b/packages/test-utils/tsconfig.esm.json new file mode 100644 index 0000000..6e2aaa7 --- /dev/null +++ b/packages/test-utils/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "esm" + }, + "references": [ + ] +} diff --git a/packages/test-utils/tsconfig.json b/packages/test-utils/tsconfig.json new file mode 100644 index 0000000..94e864b --- /dev/null +++ b/packages/test-utils/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.common.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [ + ] +} diff --git a/packages/test-utils/tslint.json b/packages/test-utils/tslint.json new file mode 100644 index 0000000..1a7ba23 --- /dev/null +++ b/packages/test-utils/tslint.json @@ -0,0 +1,10 @@ +{ + "extends": [ + "../tslint.json" + ], + "linterOptions": { + "exclude": [ + "src/migrations/*.ts" + ] + } +}