diff --git a/packages/client/package.json b/packages/client/package.json
index 8a4d87d..b440d61 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -7,6 +7,6 @@
"react-redux": "^6.0.0",
"redux": "^4.0.1"
},
- "main": "src/index.js",
- "types": "src/index.d.ts"
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts"
}
diff --git a/packages/client/src/renderer/ClientRenderer.tsx b/packages/client/src/renderer/ClientRenderer.tsx
index e96000b..0ddacfe 100644
--- a/packages/client/src/renderer/ClientRenderer.tsx
+++ b/packages/client/src/renderer/ClientRenderer.tsx
@@ -7,19 +7,18 @@ import {IRenderer} from './IRenderer'
export class ClientRenderer implements IRenderer {
constructor(
readonly createStore: IStoreFactory,
- readonly Component: Component,
+ readonly RootComponent: typeof Component,
readonly target = document.body,
) {}
- render() {
- const state = (window as any).__PRELOADED_STATE__
- const {Component} = this
+ render(state = (window as any).__PRELOADED_STATE__) {
+ const {RootComponent} = this
if (state) {
const store = this.createStore(state)
ReactDOM.hydrate(
-
+
,
this.target,
)
@@ -27,11 +26,10 @@ export class ClientRenderer implements IRenderer {
const store = this.createStore()
ReactDOM.render(
-
+
,
this.target,
)
}
}
}
-
diff --git a/packages/client/src/renderer/IRenderer.ts b/packages/client/src/renderer/IRenderer.ts
index f63bcc9..e353b71 100644
--- a/packages/client/src/renderer/IRenderer.ts
+++ b/packages/client/src/renderer/IRenderer.ts
@@ -1,3 +1,3 @@
export interface IRenderer {
- render(): any
+ render(state?: any): any
}
diff --git a/packages/client/src/renderer/IStoreFactory.ts b/packages/client/src/renderer/IStoreFactory.ts
index c785beb..8860572 100644
--- a/packages/client/src/renderer/IStoreFactory.ts
+++ b/packages/client/src/renderer/IStoreFactory.ts
@@ -1,4 +1,4 @@
import {Store} from 'redux'
// TODO maybe Store should also be typed
-export type IStoreFactory = (state?: T) => Store
+export type IStoreFactory = (state?: any) => Store
diff --git a/packages/client/src/renderer/ServerRenderer.tsx b/packages/client/src/renderer/ServerRenderer.tsx
index fcd7a27..7b8c568 100644
--- a/packages/client/src/renderer/ServerRenderer.tsx
+++ b/packages/client/src/renderer/ServerRenderer.tsx
@@ -1,18 +1,22 @@
+import React from 'react'
+import {Component} from 'react'
import {IRenderer} from './IRenderer'
+import {IStoreFactory} from './IStoreFactory'
+import {Provider} from 'react-redux'
import {renderToNodeStream} from 'react-dom/server'
export class ServerRenderer implements IRenderer {
constructor(
readonly createStore: IStoreFactory,
- readonly Component: Component,
+ readonly RootComponent: typeof Component,
) {}
- render() {
- const {Component} = this
+ render(state?: any) {
+ const {RootComponent} = this
const store = this.createStore(state)
const stream = renderToNodeStream(
-
+
,
)
return stream
diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json
index b360d6b..56fff90 100644
--- a/packages/client/tsconfig.json
+++ b/packages/client/tsconfig.json
@@ -1,19 +1,7 @@
{
+ "extends": "../tsconfig.common.json"
"compilerOptions": {
- "lib": ["es2015", "dom"],
- "target": "es3",
- "moduleResolution": "node",
- "jsx": "react",
- "noImplicitAny": true,
- "strict": true,
- "skipLibCheck": true,
- "noUnusedLocals": true,
- "esModuleInterop": true,
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "plugins": [{
- "name": "typescript-tslint-plugin",
- "suppressWhileTypeErrorsPresent": true
- }]
+ "outDir": "lib",
+ "rootDir": "src"
}
}
diff --git a/packages/common/package.json b/packages/common/package.json
index 98b659d..817fcd3 100644
--- a/packages/common/package.json
+++ b/packages/common/package.json
@@ -1,6 +1,6 @@
{
"name": "@rondo/common",
"private": true,
- "main": "src/index.js",
- "types": "src/index.d.ts"
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts"
}
diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json
index b360d6b..caad41d 100644
--- a/packages/common/tsconfig.json
+++ b/packages/common/tsconfig.json
@@ -1,19 +1,7 @@
{
+ "extends": "../tsconfig.common.json",
"compilerOptions": {
- "lib": ["es2015", "dom"],
- "target": "es3",
- "moduleResolution": "node",
- "jsx": "react",
- "noImplicitAny": true,
- "strict": true,
- "skipLibCheck": true,
- "noUnusedLocals": true,
- "esModuleInterop": true,
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "plugins": [{
- "name": "typescript-tslint-plugin",
- "suppressWhileTypeErrorsPresent": true
- }]
+ "outDir": "lib",
+ "rootDir": "src"
}
}
diff --git a/packages/server/package.json b/packages/server/package.json
index 59eaa15..0b42d91 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -34,6 +34,6 @@
"uuid": "^3.3.2",
"winston": "^3.1.0"
},
- "main": "src/index.js",
- "types": "src/index.d.ts"
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts"
}
diff --git a/packages/server/src/application/Application.ts b/packages/server/src/application/Application.ts
index 4257ef1..9c5e1c7 100644
--- a/packages/server/src/application/Application.ts
+++ b/packages/server/src/application/Application.ts
@@ -6,7 +6,7 @@ import {IApplication} from './IApplication'
import {IConfig} from './IConfig'
import {IDatabase} from '../database/IDatabase'
import {ILogger} from '../logger/ILogger'
-import {IRoutes} from '../../common/REST'
+import {IRoutes} from '@rondo/common'
import {ITransactionManager} from '../database/ITransactionManager'
import {IUserService, UserService} from '../services'
import {loggerFactory, LoggerFactory} from '../logger/LoggerFactory'
diff --git a/packages/server/src/application/IApplication.ts b/packages/server/src/application/IApplication.ts
index 99bbb00..27e19c4 100644
--- a/packages/server/src/application/IApplication.ts
+++ b/packages/server/src/application/IApplication.ts
@@ -1,6 +1,6 @@
import express from 'express'
import {AsyncRouter} from '../router'
-import {IRoutes} from '../../common/REST'
+import {IRoutes} from '@rondo/common'
import {IDatabase} from '../database/IDatabase'
export interface IApplication {
diff --git a/packages/server/src/router/AsyncRouter.ts b/packages/server/src/router/AsyncRouter.ts
index e227d53..9656bbb 100644
--- a/packages/server/src/router/AsyncRouter.ts
+++ b/packages/server/src/router/AsyncRouter.ts
@@ -1,4 +1,4 @@
-import {IRoutes, IRoute, IMethod} from '../../common/REST'
+import {IRoutes, IRoute, IMethod} from '@rondo/common'
import express, {NextFunction} from 'express'
export interface IRequest extends express.Request {
diff --git a/packages/server/src/router/TransactionalRouter.ts b/packages/server/src/router/TransactionalRouter.ts
index f1a6c78..fb9ce8f 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, IHandler} from './AsyncRouter'
-import {IRoutes, IMethod} from '../../common/REST'
+import {IRoutes, IMethod} from '@rondo/common'
import {ITransactionManager} from '../database/ITransactionManager'
export class TransactionalRouter extends AsyncRouter {
diff --git a/packages/server/src/routes/BaseRoute.ts b/packages/server/src/routes/BaseRoute.ts
index a190ad6..ae4918e 100644
--- a/packages/server/src/routes/BaseRoute.ts
+++ b/packages/server/src/routes/BaseRoute.ts
@@ -1,8 +1,8 @@
import {IHandler} from '../middleware/IHandler'
import {AsyncRouter} from '../router'
-import {IAPIDef} from '../../common/IAPIDef'
+import {IRoutes} from '@rondo/common'
-export abstract class BaseRoute {
+export abstract class BaseRoute {
readonly handle: IHandler
constructor(protected readonly t: AsyncRouter) {
diff --git a/packages/server/src/routes/LoginRoutes.ts b/packages/server/src/routes/LoginRoutes.ts
index 579ef4a..6b1256c 100644
--- a/packages/server/src/routes/LoginRoutes.ts
+++ b/packages/server/src/routes/LoginRoutes.ts
@@ -1,6 +1,6 @@
import {AsyncRouter} from '../router'
import {BaseRoute} from './BaseRoute'
-import {IAPIDef} from '../../common/IAPIDef'
+import {IAPIDef} from '@rondo/common'
import {IUserService} from '../services'
import {Authenticator} from '../middleware'
diff --git a/packages/server/src/routes/UserRoutes.ts b/packages/server/src/routes/UserRoutes.ts
index 97300cd..210f81b 100644
--- a/packages/server/src/routes/UserRoutes.ts
+++ b/packages/server/src/routes/UserRoutes.ts
@@ -1,6 +1,6 @@
import {AsyncRouter} from '../router'
import {BaseRoute} from './BaseRoute'
-import {IAPIDef} from '../../common/IAPIDef'
+import {IAPIDef} from '@rondo/common'
import {IUserService} from '../services'
import {ensureLoggedInApi} from '../middleware'
diff --git a/packages/server/src/routes/application.tsx b/packages/server/src/routes/application.tsx
index 97c6e72..16f6974 100644
--- a/packages/server/src/routes/application.tsx
+++ b/packages/server/src/routes/application.tsx
@@ -1,45 +1,49 @@
-import React from 'react'
-import {CComponent} from '../../client/components/Component'
-import {Provider} from 'react-redux'
+// import React from 'react'
+// import {CComponent} from '@rondo/client'
+// import {Provider} from 'react-redux'
import {Router} from 'express'
-import {createReadStream} from 'fs'
-import {createStore} from '../../client/store'
-import {join} from 'path'
-import {renderToNodeStream} from 'react-dom/server'
+// import {createReadStream} from 'fs'
+// import {createStore} from '../../client/store'
+// import {join} from 'path'
+// import {renderToNodeStream} from 'react-dom/server'
export const application = Router()
-application.get('/client.js', (req, res) => {
- const stream = createReadStream(join(__dirname, '../build/client.js'))
- stream.pipe(res)
-})
+// application.get('/client.js', (req, res) => {
+// const stream = createReadStream(join(__dirname, '../build/client.js'))
+// stream.pipe(res)
+// })
-application.get('/no-ssr', (req, res) => {
- res.write('My Page')
- res.write(``)
- res.end()
-})
+// application.get('/no-ssr', (req, res) => {
+// res.write('My Page')
+// res.write(``)
+// res.end()
+// })
+
+// application.get('/', (req, res) => {
+// const store = createStore({
+// csrfToken: req.csrfToken(),
+// value: '1234',
+// })
+// const stream = renderToNodeStream(
+//
+//
+// ,
+// )
+// const state = store.getState()
+// res.write('My Page')
+// // TODO attach javascript
+// stream.pipe(res, { end: false })
+// stream.on('end', () => {
+// res.write(`
+//
+//
+// `)
+// res.end()
+// })
+// })
application.get('/', (req, res) => {
- const store = createStore({
- csrfToken: req.csrfToken(),
- value: '1234',
- })
- const stream = renderToNodeStream(
-
-
- ,
- )
- const state = store.getState()
- res.write('My Page')
- // TODO attach javascript
- stream.pipe(res, { end: false })
- stream.on('end', () => {
- res.write(`
-
-
-`)
- res.end()
- })
+ res.json({csrfToken: req.csrfToken})
})
diff --git a/packages/server/src/test-utils/RequestTester.ts b/packages/server/src/test-utils/RequestTester.ts
index 6655ec2..e9d3c1e 100644
--- a/packages/server/src/test-utils/RequestTester.ts
+++ b/packages/server/src/test-utils/RequestTester.ts
@@ -1,5 +1,5 @@
import supertest from 'supertest'
-import {IMethod, IRoutes} from '../../common/REST'
+import {IMethod, IRoutes} from '@rondo/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 4f16f5e..fbcf96e 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,
} from '../database/ITransactionManager'
-import {IRoutes} from '../../common/REST'
+import {IRoutes} from '@rondo/common'
import {IBootstrap} from '../application/IBootstrap'
import {RequestTester} from './RequestTester'
diff --git a/packages/server/src/test.ts b/packages/server/src/test.ts
index ca360ac..70b28e7 100644
--- a/packages/server/src/test.ts
+++ b/packages/server/src/test.ts
@@ -1,5 +1,5 @@
import {Bootstrap} from './application/Bootstrap'
-import {IAPIDef} from '../common/IAPIDef'
+import {IAPIDef} from '@rondo/common'
import {NamespaceMock, TestUtils} from './test-utils'
import {config} from './config'
diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json
index b360d6b..0d0ea08 100644
--- a/packages/server/tsconfig.json
+++ b/packages/server/tsconfig.json
@@ -1,19 +1,11 @@
{
+ "extends": "../tsconfig.common.json",
"compilerOptions": {
- "lib": ["es2015", "dom"],
- "target": "es3",
- "moduleResolution": "node",
- "jsx": "react",
- "noImplicitAny": true,
- "strict": true,
- "skipLibCheck": true,
- "noUnusedLocals": true,
- "esModuleInterop": true,
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "plugins": [{
- "name": "typescript-tslint-plugin",
- "suppressWhileTypeErrorsPresent": true
- }]
- }
+ "outDir": "lib",
+ "rootDir": "src"
+ },
+ "references": [
+ {"path": "../client"},
+ {"path": "../common"}
+ ]
}
diff --git a/packages/tsconfig.common.json b/packages/tsconfig.common.json
new file mode 100644
index 0000000..a003e86
--- /dev/null
+++ b/packages/tsconfig.common.json
@@ -0,0 +1,25 @@
+{
+ "compilerOptions": {
+ // following settings required for referenced projects
+ "composite": true,
+ "declaration": true,
+ "declarationMap": true,
+ "sourceMap": true,
+
+ "lib": ["es2015", "dom"],
+ "target": "es3",
+ "moduleResolution": "node",
+ "jsx": "react",
+ "noImplicitAny": true,
+ "strict": true,
+ "skipLibCheck": true,
+ "noUnusedLocals": true,
+ "esModuleInterop": true,
+ "emitDecoratorMetadata": true,
+ "experimentalDecorators": true,
+ "plugins": [{
+ "name": "typescript-tslint-plugin",
+ "suppressWhileTypeErrorsPresent": true
+ }]
+ }
+}
diff --git a/packages/tsconfig.json b/packages/tsconfig.json
new file mode 100644
index 0000000..1f639ae
--- /dev/null
+++ b/packages/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "files": [],
+ "references": [
+ {"path": "client"},
+ {"path": "common"},
+ {"path": "server"}
+ ]
+}