mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-13 19:58:09 +00:00
workspace support
Signed-off-by: Andrey Platov <andrey@hardcoreeng.com>
This commit is contained in:
parent
943f8baa49
commit
99c49f39be
@ -1474,6 +1474,10 @@ packages:
|
||||
resolution: {integrity: sha512-bLL69sKtd25w7p1nvg9pigE4gtKVpGTPojBFLMkGHXuUgap2sLqQt2qUnqmVCDfzGUL0DRNZP+1prIZJbMeAXg==}
|
||||
dev: false
|
||||
|
||||
/@types/node/16.6.2:
|
||||
resolution: {integrity: sha512-LSw8TZt12ZudbpHc6EkIyDM3nHVWKYrAvGy6EAJfNfjusbwnThqjqxUKKRwuV3iWYeW/LYMzNgaq3MaLffQ2xA==}
|
||||
dev: false
|
||||
|
||||
/@types/normalize-package-data/2.4.1:
|
||||
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
|
||||
dev: false
|
||||
@ -7925,37 +7929,7 @@ packages:
|
||||
webpack: 5.48.0_webpack-cli@4.7.2
|
||||
dev: false
|
||||
|
||||
/ts-node/10.2.0_typescript@4.3.5:
|
||||
resolution: {integrity: sha512-FstYHtQz6isj8rBtYMN4bZdnXN1vq4HCbqn9vdNQcInRqtB86PePJQIxE6es0PhxKWhj2PHuwbG40H+bxkZPmg==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@swc/core': '>=1.2.50'
|
||||
'@swc/wasm': '>=1.2.50'
|
||||
'@types/node': '*'
|
||||
typescript: '>=2.7'
|
||||
peerDependenciesMeta:
|
||||
'@swc/core':
|
||||
optional: true
|
||||
'@swc/wasm':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@cspotcode/source-map-support': 0.6.1
|
||||
'@tsconfig/node10': 1.0.8
|
||||
'@tsconfig/node12': 1.0.9
|
||||
'@tsconfig/node14': 1.0.1
|
||||
'@tsconfig/node16': 1.0.2
|
||||
acorn: 8.4.1
|
||||
acorn-walk: 8.1.1
|
||||
arg: 4.1.3
|
||||
create-require: 1.1.1
|
||||
diff: 4.0.2
|
||||
make-error: 1.3.6
|
||||
typescript: 4.3.5
|
||||
yn: 3.1.1
|
||||
dev: false
|
||||
|
||||
/ts-node/10.2.1_dea0625f6d31b223e93dc3dc354b8b43:
|
||||
/ts-node/10.2.1_c780171742f6906a053a603dfa210a4e:
|
||||
resolution: {integrity: sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
hasBin: true
|
||||
@ -7975,7 +7949,7 @@ packages:
|
||||
'@tsconfig/node12': 1.0.9
|
||||
'@tsconfig/node14': 1.0.1
|
||||
'@tsconfig/node16': 1.0.2
|
||||
'@types/node': 16.4.13
|
||||
'@types/node': 16.6.2
|
||||
acorn: 8.4.1
|
||||
acorn-walk: 8.1.1
|
||||
arg: 4.1.3
|
||||
@ -8957,7 +8931,7 @@ packages:
|
||||
eslint-plugin-node: 11.1.0_eslint@7.32.0
|
||||
eslint-plugin-promise: 4.3.1
|
||||
jwt-simple: 0.5.6
|
||||
ts-node: 10.2.0_typescript@4.3.5
|
||||
ts-node: 10.2.1_typescript@4.3.5
|
||||
transitivePeerDependencies:
|
||||
- '@swc/core'
|
||||
- '@swc/wasm'
|
||||
@ -9039,13 +9013,13 @@ packages:
|
||||
name: '@rush-temp/model-all'
|
||||
version: 0.0.0
|
||||
dependencies:
|
||||
'@types/node': 16.4.13
|
||||
'@types/node': 16.6.2
|
||||
'@typescript-eslint/eslint-plugin': 4.28.5_a8e83fcad666e1ba86be4b2e27a20aea
|
||||
eslint: 7.32.0
|
||||
eslint-plugin-import: 2.23.4_eslint@7.32.0
|
||||
eslint-plugin-node: 11.1.0_eslint@7.32.0
|
||||
eslint-plugin-promise: 4.3.1
|
||||
ts-node: 10.2.1_dea0625f6d31b223e93dc3dc354b8b43
|
||||
ts-node: 10.2.1_c780171742f6906a053a603dfa210a4e
|
||||
transitivePeerDependencies:
|
||||
- '@swc/core'
|
||||
- '@swc/wasm'
|
||||
@ -9480,7 +9454,7 @@ packages:
|
||||
version: 0.0.0
|
||||
dependencies:
|
||||
'@types/heft-jest': 1.0.2
|
||||
'@types/node': 16.4.13
|
||||
'@types/node': 16.6.2
|
||||
'@types/ws': 7.4.7
|
||||
'@typescript-eslint/eslint-plugin': 4.28.5_a8e83fcad666e1ba86be4b2e27a20aea
|
||||
eslint: 7.32.0
|
||||
@ -9500,7 +9474,7 @@ packages:
|
||||
version: 0.0.0
|
||||
dependencies:
|
||||
'@types/heft-jest': 1.0.2
|
||||
'@types/node': 16.4.13
|
||||
'@types/node': 16.6.2
|
||||
'@types/ws': 7.4.7
|
||||
'@typescript-eslint/eslint-plugin': 4.28.5_a8e83fcad666e1ba86be4b2e27a20aea
|
||||
eslint: 7.32.0
|
||||
@ -9520,7 +9494,7 @@ packages:
|
||||
version: 0.0.0
|
||||
dependencies:
|
||||
'@types/heft-jest': 1.0.2
|
||||
'@types/node': 16.4.13
|
||||
'@types/node': 16.6.2
|
||||
'@types/ws': 7.4.7
|
||||
'@typescript-eslint/eslint-plugin': 4.28.5_a8e83fcad666e1ba86be4b2e27a20aea
|
||||
eslint: 7.32.0
|
||||
@ -9539,13 +9513,13 @@ packages:
|
||||
dev: false
|
||||
|
||||
file:projects/server.tgz_6c259fadfeb3a4b20890aefe87070b8b:
|
||||
resolution: {integrity: sha512-bJkh/bNrjcVnBLEH3EpG7kFMKYsN1xBO8BUe4ugziPYqHJwfwTz4nuPhEd9wxzN+jvOU24KPh0wBb1qMl9pyFw==, tarball: file:projects/server.tgz}
|
||||
resolution: {integrity: sha512-FGh0R+fgnIuNcoSfPKeIXVZuNrlspS3l7hwwb/pJbyHQ/ao/mETg/xyDtFO53czcAIPCYt43i/de/OOGF0j3Lw==, tarball: file:projects/server.tgz}
|
||||
id: file:projects/server.tgz
|
||||
name: '@rush-temp/server'
|
||||
version: 0.0.0
|
||||
dependencies:
|
||||
'@types/heft-jest': 1.0.2
|
||||
'@types/node': 16.4.13
|
||||
'@types/node': 16.6.2
|
||||
'@types/ws': 7.4.7
|
||||
'@typescript-eslint/eslint-plugin': 4.28.5_a8e83fcad666e1ba86be4b2e27a20aea
|
||||
eslint: 7.32.0
|
||||
@ -9689,7 +9663,7 @@ packages:
|
||||
'@types/express': 4.17.13
|
||||
'@types/express-fileupload': 1.1.7
|
||||
'@types/heft-jest': 1.0.2
|
||||
'@types/node': 16.4.13
|
||||
'@types/node': 16.6.2
|
||||
'@types/uuid': 8.3.1
|
||||
'@types/ws': 7.4.7
|
||||
'@typescript-eslint/eslint-plugin': 4.28.5_a8e83fcad666e1ba86be4b2e27a20aea
|
||||
@ -9700,7 +9674,7 @@ packages:
|
||||
eslint-plugin-promise: 4.3.1
|
||||
express: 4.17.1
|
||||
express-fileupload: 1.2.1
|
||||
ts-node: 10.2.1_dea0625f6d31b223e93dc3dc354b8b43
|
||||
ts-node: 10.2.1_c780171742f6906a053a603dfa210a4e
|
||||
uuid: 8.3.2
|
||||
transitivePeerDependencies:
|
||||
- '@swc/core'
|
||||
@ -9799,7 +9773,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
file:projects/workspace.tgz_6c259fadfeb3a4b20890aefe87070b8b:
|
||||
resolution: {integrity: sha512-pWnn59hoagFEU+9zoCfk37thS081NkywXU6pDVWPcrjkHS6HBnWUmyE90XlcJn3zzWgwK7l8tWA37SGQdaPZWw==, tarball: file:projects/workspace.tgz}
|
||||
resolution: {integrity: sha512-gFZBlRFUbfwZ4a/RKKj/scqqzFrsGzYIY8VkVoB2NmQ6jPSHtPyLoyZtM8I84p+QnyHqlFpEgkZKTAbRTDrwnw==, tarball: file:projects/workspace.tgz}
|
||||
id: file:projects/workspace.tgz
|
||||
name: '@rush-temp/workspace'
|
||||
version: 0.0.0
|
||||
|
@ -11,7 +11,7 @@
|
||||
"devDependencies": {
|
||||
"@anticrm/platform-rig":"~0.6.0",
|
||||
"@types/heft-jest":"^1.0.2",
|
||||
"@types/node": "^16.4.10",
|
||||
"@types/node": "^16.6.2",
|
||||
"@typescript-eslint/eslint-plugin":"4",
|
||||
"eslint-plugin-import":"2",
|
||||
"eslint-plugin-promise":"4",
|
||||
|
@ -16,5 +16,12 @@
|
||||
|
||||
import { start } from '.'
|
||||
|
||||
const url = process.env.MONGO_URL
|
||||
|
||||
if (url === undefined) {
|
||||
console.error('please provide mongodb url')
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
||||
start(3333)
|
||||
start(url, 3333)
|
||||
|
@ -20,14 +20,11 @@ import { createStorage } from '@anticrm/mongo'
|
||||
import { addLocation } from '@anticrm/platform'
|
||||
import { serverChunterId } from '@anticrm/server-chunter'
|
||||
|
||||
const url = 'mongodb://localhost:27017'
|
||||
const dbName = 'ws1'
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export async function start (port: number, host?: string): Promise<void> {
|
||||
export async function start (dbUrl: string, port: number, host?: string): Promise<void> {
|
||||
addLocation(serverChunterId, () => import('@anticrm/server-chunter-resources'))
|
||||
|
||||
startJsonRpc(() => createStorage(url, dbName), port, host)
|
||||
startJsonRpc((workspace: string) => createStorage(dbUrl, workspace), port, host)
|
||||
}
|
||||
|
@ -4,6 +4,7 @@
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./lib",
|
||||
"esModuleInterop": true
|
||||
"esModuleInterop": true,
|
||||
"types": ["node"]
|
||||
}
|
||||
}
|
@ -30,6 +30,6 @@ export async function createModel (url: string, dbName: string): Promise<number>
|
||||
const result = await db.collection(DOMAIN_TX).insertMany(txJson as Document[])
|
||||
return result.insertedCount
|
||||
} finally {
|
||||
client.close()
|
||||
await client.close()
|
||||
}
|
||||
}
|
||||
|
@ -62,10 +62,10 @@ interface Workspace {
|
||||
class SessionManager {
|
||||
private readonly workspaces = new Map<string, Workspace>()
|
||||
|
||||
async addSession (ws: WebSocket, token: _Token, storageFactory: () => Promise<ServerStorage>): Promise<Session> {
|
||||
async addSession (ws: WebSocket, token: _Token, storageFactory: (ws: string) => Promise<ServerStorage>): Promise<Session> {
|
||||
const workspace = this.workspaces.get(token.workspace)
|
||||
if (workspace === undefined) {
|
||||
const storage = await storageFactory()
|
||||
const storage = await storageFactory(token.workspace)
|
||||
const session = new Session(this, token, storage)
|
||||
const workspace: Workspace = {
|
||||
storage,
|
||||
@ -120,7 +120,7 @@ async function handleRequest<S> (service: S, ws: WebSocket, msg: string): Promis
|
||||
* @param port -
|
||||
* @param host -
|
||||
*/
|
||||
export function start (storageFactory: () => Promise<ServerStorage>, port: number, host?: string): void {
|
||||
export function start (storageFactory: (workspace: string) => Promise<ServerStorage>, port: number, host?: string): void {
|
||||
console.log(`starting server on port ${port} ...`)
|
||||
|
||||
const sessions = new SessionManager()
|
||||
|
Loading…
Reference in New Issue
Block a user