diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 0c2879a855..cd82baa477 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -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 diff --git a/server/server/package.json b/server/server/package.json index 78c75392c2..0eb0cdcfe2 100644 --- a/server/server/package.json +++ b/server/server/package.json @@ -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", diff --git a/server/server/src/__start.ts b/server/server/src/__start.ts index 53319cb68f..d503b208a3 100644 --- a/server/server/src/__start.ts +++ b/server/server/src/__start.ts @@ -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) diff --git a/server/server/src/server.ts b/server/server/src/server.ts index c691d84294..93e1c5011c 100644 --- a/server/server/src/server.ts +++ b/server/server/src/server.ts @@ -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 { +export async function start (dbUrl: string, port: number, host?: string): Promise { addLocation(serverChunterId, () => import('@anticrm/server-chunter-resources')) - startJsonRpc(() => createStorage(url, dbName), port, host) + startJsonRpc((workspace: string) => createStorage(dbUrl, workspace), port, host) } diff --git a/server/server/tsconfig.json b/server/server/tsconfig.json index fffbf4c341..1af7493d20 100644 --- a/server/server/tsconfig.json +++ b/server/server/tsconfig.json @@ -4,6 +4,7 @@ "compilerOptions": { "rootDir": "./src", "outDir": "./lib", - "esModuleInterop": true + "esModuleInterop": true, + "types": ["node"] } } \ No newline at end of file diff --git a/server/workspace/src/index.ts b/server/workspace/src/index.ts index 70f6176e02..8dbe0733e4 100644 --- a/server/workspace/src/index.ts +++ b/server/workspace/src/index.ts @@ -30,6 +30,6 @@ export async function createModel (url: string, dbName: string): Promise const result = await db.collection(DOMAIN_TX).insertMany(txJson as Document[]) return result.insertedCount } finally { - client.close() + await client.close() } } diff --git a/server/ws/src/server.ts b/server/ws/src/server.ts index ebdf025c35..d500da09ec 100644 --- a/server/ws/src/server.ts +++ b/server/ws/src/server.ts @@ -62,10 +62,10 @@ interface Workspace { class SessionManager { private readonly workspaces = new Map() - async addSession (ws: WebSocket, token: _Token, storageFactory: () => Promise): Promise { + async addSession (ws: WebSocket, token: _Token, storageFactory: (ws: string) => Promise): Promise { 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 (service: S, ws: WebSocket, msg: string): Promis * @param port - * @param host - */ -export function start (storageFactory: () => Promise, port: number, host?: string): void { +export function start (storageFactory: (workspace: string) => Promise, port: number, host?: string): void { console.log(`starting server on port ${port} ...`) const sessions = new SessionManager()