From 666eef3bfa9fb1bbefdf67389cddbbf6e7f5a625 Mon Sep 17 00:00:00 2001 From: Saad eddyne El abdari Date: Mon, 6 Nov 2023 16:20:08 +0100 Subject: [PATCH] add: achivemets to profile --- backend/code/package-lock.json | 540 +++++++++--------- backend/code/package.json | 2 +- backend/code/src/game/game.service.ts | 8 +- backend/code/src/gateways/gateways.gateway.ts | 6 +- .../src/leaderboard/leaderboard.service.ts | 11 +- backend/code/src/main.ts | 4 +- .../src/messages/dto/message-format.dto.ts | 2 +- backend/code/src/messages/messages.service.ts | 3 +- backend/code/src/profile/dto/profile.dto.ts | 5 + .../code/src/profile/profile.controller.ts | 2 +- backend/code/src/profile/profile.service.ts | 30 +- backend/code/src/rooms/rooms.controller.ts | 18 +- backend/code/src/rooms/rooms.service.ts | 4 +- 13 files changed, 340 insertions(+), 295 deletions(-) diff --git a/backend/code/package-lock.json b/backend/code/package-lock.json index 9234f8e..b7e0c0a 100644 --- a/backend/code/package-lock.json +++ b/backend/code/package-lock.json @@ -68,7 +68,7 @@ "figlet": "^1.7.0", "jest": "^29.5.0", "prettier": "^3.0.0", - "prisma-dbml-generator": "^0.10.0", + "prisma-dbml-generator": "^0.9.1", "prompt": "^1.3.0", "prompt-sync": "^4.2.0", "source-map-support": "^0.5.21", @@ -2087,72 +2087,6 @@ "npm": ">=5.0.0" } }, - "node_modules/@opentelemetry/api": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.6.0.tgz", - "integrity": "sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.17.0.tgz", - "integrity": "sha512-tfnl3h+UefCgx1aeN2xtrmr6BmdWGKXypk0pflQR0urFS40aE88trnkOMc2HTJZbMrqEEl4HsaBeFhwLVXsrJg==", - "dev": true, - "dependencies": { - "@opentelemetry/semantic-conventions": "1.17.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.7.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.17.0.tgz", - "integrity": "sha512-+u0ciVnj8lhuL/qGRBPeVYvk7fL+H/vOddfvmOeJaA1KC+5/3UED1c9KoZQlRsNT5Kw1FaK8LkY2NVLYfOVZQw==", - "dev": true, - "dependencies": { - "@opentelemetry/core": "1.17.0", - "@opentelemetry/semantic-conventions": "1.17.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.7.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.17.0.tgz", - "integrity": "sha512-2T5HA1/1iE36Q9eg6D4zYlC4Y4GcycI1J6NsHPKZY9oWfAxWsoYnRlkPfUqyY5XVtocCo/xHpnJvGNHwzT70oQ==", - "dev": true, - "dependencies": { - "@opentelemetry/core": "1.17.0", - "@opentelemetry/resources": "1.17.0", - "@opentelemetry/semantic-conventions": "1.17.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.7.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.0.tgz", - "integrity": "sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA==", - "dev": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@otplib/core": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/@otplib/core/-/core-12.0.1.tgz", @@ -2236,42 +2170,47 @@ } }, "node_modules/@prisma/debug": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-4.6.1.tgz", - "integrity": "sha512-BezDvSenTgQDQ6WA3TdTDGcrt0Oh4vmpZtmSOYm1KaSZiSVIL2xT0P9TFM3vtOa4wn7sn/003PyTSxyHS3mShg==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-3.11.0.tgz", + "integrity": "sha512-hbOU50++HdE0Xdt0FenrVvCteTvRg8EHNGKkxa1jWIB8O2o0bkm5igOlhfYGkvHZ3H1GK35oZp7rllMVeMM4ig==", "dev": true, "dependencies": { "@types/debug": "4.1.7", - "debug": "4.3.4", + "ms": "2.1.3", "strip-ansi": "6.0.1" } }, + "node_modules/@prisma/debug/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/@prisma/engine-core": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@prisma/engine-core/-/engine-core-4.6.1.tgz", - "integrity": "sha512-JtvdEy9GeGU/xeTYOq3SEN4DiAytHoQty/4pJTZ5vNoGMnu7XF1ToprOCPzyT5oSgm3oQQuwpXMVaebJegwA4Q==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@prisma/engine-core/-/engine-core-3.11.0.tgz", + "integrity": "sha512-Mz/NnvVSbIaLIMFYKiXoFpMgtCQLTuaSXZXmUj/YKkMCUpYg29+rdnecz3hO4Q9eiMmNF14bLj9MDawtiDTXEw==", "dev": true, "dependencies": { - "@opentelemetry/api": "^1.1.0", - "@opentelemetry/sdk-trace-base": "^1.4.0", - "@prisma/debug": "4.6.1", - "@prisma/engines": "4.6.1", - "@prisma/generator-helper": "4.6.1", - "@prisma/get-platform": "4.6.1", + "@prisma/debug": "3.11.0", + "@prisma/engines": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b", + "@prisma/generator-helper": "3.11.0", + "@prisma/get-platform": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b", "chalk": "4.1.2", "execa": "5.1.1", "get-stream": "6.0.1", "indent-string": "4.0.0", "new-github-issue-url": "0.2.1", - "p-retry": "4.6.2", + "p-retry": "4.6.1", "strip-ansi": "6.0.1", - "undici": "5.11.0" + "terminal-link": "2.1.1", + "undici": "3.3.6" } }, "node_modules/@prisma/engine-core/node_modules/@prisma/engines": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.6.1.tgz", - "integrity": "sha512-3u2/XxvxB+Q7cMXHnKU0CpBiUK1QWqpgiBv28YDo1zOIJE3FCF8DI2vrp6vuwjGt5h0JGXDSvmSf4D4maVjJdw==", + "version": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b.tgz", + "integrity": "sha512-m9iZd5F5vP6A2IvKWfHpOO/qK8OOO9nbsV/pdyEkF/1WNe0E8SIWFBKb+HcMLkG9OFbDDBy8QItXmp/mIULuwQ==", "dev": true, "hasInstallScript": true }, @@ -2287,30 +2226,54 @@ "integrity": "sha512-jsnKT5JIDIE01lAeCj2ghY9IwxkedhKNvxQeoyLs6dr4ZXynetD0vTy7u6wMJt8vVPv8I5DPy/I4CFaoXAgbtg==" }, "node_modules/@prisma/fetch-engine": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-4.6.1.tgz", - "integrity": "sha512-0Nggqzd6J630wO65i5LjyYxarHSZL3mlN04j98Eff5tzhymwv6A8QEMMwuIJY3B5mQ+3ns3q6zZsJ3Ef063RUA==", + "version": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b.tgz", + "integrity": "sha512-VTg1n1OLSASR4t5m8o0MwDtR5sA+hkbE170Nn25hsMlr9H9qx9Y1cOMBaiXTwGkZ1o2gj7nuQw1mSOnshXhosA==", "dev": true, "dependencies": { - "@prisma/debug": "4.6.1", - "@prisma/get-platform": "4.6.1", + "@prisma/debug": "3.10.0", + "@prisma/get-platform": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b", "chalk": "4.1.2", "execa": "5.1.1", "find-cache-dir": "3.3.2", "hasha": "5.2.2", "http-proxy-agent": "5.0.0", - "https-proxy-agent": "5.0.1", + "https-proxy-agent": "5.0.0", "make-dir": "3.1.0", "node-fetch": "2.6.7", "p-filter": "2.1.0", "p-map": "4.0.0", - "p-retry": "4.6.2", + "p-retry": "4.6.1", "progress": "2.0.3", "rimraf": "3.0.2", "temp-dir": "2.0.0", "tempy": "1.0.1" } }, + "node_modules/@prisma/fetch-engine/node_modules/@prisma/debug": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-3.10.0.tgz", + "integrity": "sha512-rPf9EhhQ82bxuVz3lRkHSWyJTBluyDH1RSvzmiEZorpxxdqZSFxlk1gGxIEuu+T9dAhY1dtCq4E679SSycGHUQ==", + "dev": true, + "dependencies": { + "@types/debug": "4.1.7", + "ms": "2.1.3", + "strip-ansi": "6.0.1" + } + }, + "node_modules/@prisma/fetch-engine/node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/@prisma/fetch-engine/node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -2326,6 +2289,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@prisma/fetch-engine/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/@prisma/fetch-engine/node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -2371,107 +2340,118 @@ } }, "node_modules/@prisma/generator-helper": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@prisma/generator-helper/-/generator-helper-4.6.1.tgz", - "integrity": "sha512-70XBmqDhmpe8H35ttOJOgyg1OpppO/uelILB1SIwjeSI7PHHdU2+Y/+LkpnifkCEpSZKIhxEIPbHx17m2neAsA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@prisma/generator-helper/-/generator-helper-3.11.0.tgz", + "integrity": "sha512-flxbnlXwlAPIAipszn6pV+OzB5G29va2q5TMg6nu2h0mCUgUYohUl/6U4885FW966kKQivH/ArxHHFaVOWxjXQ==", "dev": true, "dependencies": { - "@prisma/debug": "4.6.1", + "@prisma/debug": "3.11.0", "@types/cross-spawn": "6.0.2", "chalk": "4.1.2", "cross-spawn": "7.0.3" } }, "node_modules/@prisma/get-platform": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-4.6.1.tgz", - "integrity": "sha512-JBlzN53Q00bTfk3mPxeprAx8LLN7bmEwTGZ3fFjbCKZACsHtbDaaqtIkqXwk0tv1jJ3jLYZfcq7NlvdOPyJhGw==", + "version": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b.tgz", + "integrity": "sha512-+CpsuTYo9ng8P2e2RV8S9x+sAGQsxun1mXk22KKkIAxYrq2EbEnpQIqyGCfbO9SOdf/8CjE7PtH1EYwPAFaLkQ==", "dev": true, "dependencies": { - "@prisma/debug": "4.6.1" + "@prisma/debug": "3.10.0" } }, - "node_modules/@prisma/internals": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@prisma/internals/-/internals-4.6.1.tgz", - "integrity": "sha512-oPE01UMMY5W9PAr+uP0MaHO4o7SD3b7dVqaEuZsj6NRN7jtoKujQXp+zo74BAeqjLJyCiHXhTIReuO9NExiZtg==", - "dev": true, - "dependencies": { - "@prisma/debug": "4.6.1", - "@prisma/engine-core": "4.6.1", - "@prisma/engines": "4.6.1", - "@prisma/fetch-engine": "4.6.1", - "@prisma/generator-helper": "4.6.1", - "@prisma/get-platform": "4.6.1", - "@prisma/prisma-fmt-wasm": "4.6.1-3.694eea289a8462c80264df36757e4fdc129b1b32", - "archiver": "5.3.1", - "arg": "5.0.2", + "node_modules/@prisma/get-platform/node_modules/@prisma/debug": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-3.10.0.tgz", + "integrity": "sha512-rPf9EhhQ82bxuVz3lRkHSWyJTBluyDH1RSvzmiEZorpxxdqZSFxlk1gGxIEuu+T9dAhY1dtCq4E679SSycGHUQ==", + "dev": true, + "dependencies": { + "@types/debug": "4.1.7", + "ms": "2.1.3", + "strip-ansi": "6.0.1" + } + }, + "node_modules/@prisma/get-platform/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/@prisma/sdk": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@prisma/sdk/-/sdk-3.11.0.tgz", + "integrity": "sha512-GvF+QL9XDy+gxtvGECvvNX+9eVR/oM4a0J6C7EL2hkmNdBF2kYp3XttYDtvhmJ/XTyzcZpDXfwOnw4x+S4/ZtA==", + "dev": true, + "dependencies": { + "@prisma/debug": "3.11.0", + "@prisma/engine-core": "3.11.0", + "@prisma/engines": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b", + "@prisma/fetch-engine": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b", + "@prisma/generator-helper": "3.11.0", + "@prisma/get-platform": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b", + "@timsuchanek/copy": "1.4.5", + "archiver": "5.3.0", + "arg": "5.0.1", "chalk": "4.1.2", "checkpoint-client": "1.1.21", "cli-truncate": "2.1.0", - "dotenv": "16.0.3", + "dotenv": "16.0.0", "escape-string-regexp": "4.0.0", "execa": "5.1.1", "find-up": "5.0.0", - "fp-ts": "2.13.1", - "fs-extra": "10.1.0", - "fs-jetpack": "5.1.0", + "fs-jetpack": "4.3.1", "global-dirs": "3.0.0", "globby": "11.1.0", "has-yarn": "2.1.0", - "is-windows": "^1.0.2", - "is-wsl": "^2.2.0", + "is-ci": "3.0.1", "make-dir": "3.1.0", - "new-github-issue-url": "0.2.1", "node-fetch": "2.6.7", - "open": "7", - "ora": "5.4.1", "p-map": "4.0.0", - "prompts": "2.4.2", "read-pkg-up": "7.0.1", "replace-string": "3.1.0", - "resolve": "1.22.1", + "resolve": "1.22.0", "rimraf": "3.0.2", + "shell-quote": "1.7.3", "string-width": "4.2.3", "strip-ansi": "6.0.1", "strip-indent": "3.0.0", + "tar": "6.1.11", "temp-dir": "2.0.0", "temp-write": "4.0.0", "tempy": "1.0.1", "terminal-link": "2.1.1", - "tmp": "0.2.1", - "ts-pattern": "^4.0.1" + "tmp": "0.2.1" } }, - "node_modules/@prisma/internals/node_modules/@prisma/engines": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.6.1.tgz", - "integrity": "sha512-3u2/XxvxB+Q7cMXHnKU0CpBiUK1QWqpgiBv28YDo1zOIJE3FCF8DI2vrp6vuwjGt5h0JGXDSvmSf4D4maVjJdw==", + "node_modules/@prisma/sdk/node_modules/@prisma/engines": { + "version": "3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-3.11.0-48.b371888aaf8f51357c7457d836b86d12da91658b.tgz", + "integrity": "sha512-m9iZd5F5vP6A2IvKWfHpOO/qK8OOO9nbsV/pdyEkF/1WNe0E8SIWFBKb+HcMLkG9OFbDDBy8QItXmp/mIULuwQ==", "dev": true, "hasInstallScript": true }, - "node_modules/@prisma/internals/node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "node_modules/@prisma/sdk/node_modules/arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", "dev": true }, - "node_modules/@prisma/internals/node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "node_modules/@prisma/sdk/node_modules/dotenv": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", + "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==", "dev": true, "engines": { "node": ">=12" } }, - "node_modules/@prisma/internals/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/@prisma/sdk/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "bin": { - "is-docker": "cli.js" + "dependencies": { + "semver": "^6.0.0" }, "engines": { "node": ">=8" @@ -2480,22 +2460,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@prisma/internals/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/@prisma/sdk/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "yallist": "^4.0.0" }, "engines": { "node": ">=8" + } + }, + "node_modules/@prisma/sdk/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10" } }, - "node_modules/@prisma/internals/node_modules/node-fetch": { + "node_modules/@prisma/sdk/node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", @@ -2515,29 +2504,13 @@ } } }, - "node_modules/@prisma/internals/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@prisma/internals/node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "node_modules/@prisma/sdk/node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.8.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -2548,7 +2521,7 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@prisma/internals/node_modules/rimraf": { + "node_modules/@prisma/sdk/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", @@ -2563,7 +2536,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@prisma/internals/node_modules/semver": { + "node_modules/@prisma/sdk/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", @@ -2572,7 +2545,24 @@ "semver": "bin/semver.js" } }, - "node_modules/@prisma/internals/node_modules/tmp": { + "node_modules/@prisma/sdk/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@prisma/sdk/node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", @@ -2584,10 +2574,10 @@ "node": ">=8.17.0" } }, - "node_modules/@prisma/prisma-fmt-wasm": { - "version": "4.6.1-3.694eea289a8462c80264df36757e4fdc129b1b32", - "resolved": "https://registry.npmjs.org/@prisma/prisma-fmt-wasm/-/prisma-fmt-wasm-4.6.1-3.694eea289a8462c80264df36757e4fdc129b1b32.tgz", - "integrity": "sha512-hT+YRaH5NTZDYhLhSKMUdtY+i8sKkjjFwiDYhy6688G+H8oFklIwPNeApKH8Jw5bbtuH6onIzo1oivapOFJryg==", + "node_modules/@prisma/sdk/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "node_modules/@sinclair/typebox": { @@ -2619,6 +2609,39 @@ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, + "node_modules/@timsuchanek/copy": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@timsuchanek/copy/-/copy-1.4.5.tgz", + "integrity": "sha512-N4+2/DvfwzQqHYL/scq07fv8yXbZc6RyUxKJoE8Clm14JpLOf9yNI4VB4D6RsV3h9zgzZ4loJUydHKM7pp3blw==", + "dev": true, + "dependencies": { + "@timsuchanek/sleep-promise": "^8.0.1", + "commander": "^2.19.0", + "mkdirp": "^1.0.4", + "prettysize": "^2.0.0" + }, + "bin": { + "node-copy": "cli.js" + } + }, + "node_modules/@timsuchanek/copy/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@timsuchanek/sleep-promise": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@timsuchanek/sleep-promise/-/sleep-promise-8.0.1.tgz", + "integrity": "sha512-cxHYbrXfnCWsklydIHSw5GCMHUPqpJ/enxWSyVHNOgNe61sit/+aOXTTI+VOdWkvVaJsI2vsB9N4+YDNITawOQ==", + "dev": true + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -2893,9 +2916,9 @@ "dev": true }, "node_modules/@types/ms": { - "version": "0.7.32", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz", - "integrity": "sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==", + "version": "0.7.33", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.33.tgz", + "integrity": "sha512-AuHIyzR5Hea7ij0P9q7vx7xu4z0C28ucwjAZC0ja7JhINyCnOw8/DnvAPQQ9TfOlCtZAmCERKQX9+o1mgQhuOQ==", "dev": true }, "node_modules/@types/multer": { @@ -2913,9 +2936,9 @@ "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" }, "node_modules/@types/normalize-package-data": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz", - "integrity": "sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz", + "integrity": "sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==", "dev": true }, "node_modules/@types/parse-json": { @@ -2991,9 +3014,9 @@ "dev": true }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.4.tgz", + "integrity": "sha512-l1YzFLj8Y6OhLdt7HKXlz56DoEmksB7qR8KVk+MpFsS4duwnoszLgDlLxJB0vgSqtg/rAS5gmYg5Bjw2sMJ8Ew==", "dev": true }, "node_modules/@types/revalidator": { @@ -3616,13 +3639,13 @@ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, "node_modules/archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", + "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", "dev": true, "dependencies": { "archiver-utils": "^2.1.0", - "async": "^3.2.3", + "async": "^3.2.0", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", "readdir-glob": "^1.0.0", @@ -3740,9 +3763,9 @@ } }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "node_modules/asynckit": { @@ -4788,6 +4811,12 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/comment-json": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", @@ -6398,12 +6427,6 @@ "node": ">= 0.6" } }, - "node_modules/fp-ts": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.13.1.tgz", - "integrity": "sha512-0eu5ULPS2c/jsa1lGFneEFFEdTbembJv8e4QKXeVJ3lm/5hyve06dlKZrpxmMwJt6rYen7sxmHHK2CLaXvWuWQ==", - "dev": true - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -6433,33 +6456,25 @@ } }, "node_modules/fs-jetpack": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-5.1.0.tgz", - "integrity": "sha512-Xn4fDhLydXkuzepZVsr02jakLlmoARPy+YWIclo4kh0GyNGUHnTqeH/w/qIsVn50dFxtp8otPL2t/HcPJBbxUA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-4.3.1.tgz", + "integrity": "sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ==", "dev": true, "dependencies": { - "minimatch": "^5.1.0" + "minimatch": "^3.0.2", + "rimraf": "^2.6.3" } }, - "node_modules/fs-jetpack/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/fs-jetpack/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/fs-jetpack/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" + "glob": "^7.1.3" }, - "engines": { - "node": ">=10" + "bin": { + "rimraf": "bin.js" } }, "node_modules/fs-minipass": { @@ -7065,6 +7080,18 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, "node_modules/is-core-module": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", @@ -7208,15 +7235,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -8908,12 +8926,12 @@ } }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", "dev": true, "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "^0.12.0", "retry": "^0.13.1" }, "engines": { @@ -9284,6 +9302,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/prettysize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prettysize/-/prettysize-2.0.0.tgz", + "integrity": "sha512-VVtxR7sOh0VsG8o06Ttq5TrI1aiZKmC+ClSn4eBPaNf4SHr5lzbYW+kYGX3HocBL/MfpVrRfFZ9V3vCbLaiplg==", + "dev": true + }, "node_modules/prisma": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.2.0.tgz", @@ -9300,13 +9324,13 @@ } }, "node_modules/prisma-dbml-generator": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/prisma-dbml-generator/-/prisma-dbml-generator-0.10.0.tgz", - "integrity": "sha512-5lguDOHGIBhKlWnWUTPTN/swZnDt9FyKQFP6VSgR2Y9Nb0YpyxbvnGZg+lvbUvNzWraqGy/DBODB5KqqhRimbQ==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/prisma-dbml-generator/-/prisma-dbml-generator-0.9.1.tgz", + "integrity": "sha512-b72dA0p2EpoN6jZHrIXo6iX4MYGHubGi4co/4gytyxb4laBm3nPpxB0q4+xe2HJe+Bgiq5Ffz21WyTwnJmt/Sw==", "dev": true, "dependencies": { - "@prisma/generator-helper": "4.6.1", - "@prisma/internals": "4.6.1" + "@prisma/generator-helper": "3.11.0", + "@prisma/sdk": "3.11.0" }, "bin": { "prisma-dbml-generator": "dist/generator.js" @@ -10303,6 +10327,12 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, "node_modules/shelljs": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", @@ -11012,12 +11042,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -11248,12 +11272,6 @@ } } }, - "node_modules/ts-pattern": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.3.0.tgz", - "integrity": "sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==", - "dev": true - }, "node_modules/tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", @@ -11387,16 +11405,10 @@ "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" }, "node_modules/undici": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.11.0.tgz", - "integrity": "sha512-oWjWJHzFet0Ow4YZBkyiJwiK5vWqEYoH7BINzJAJOLedZ++JpAlCbUktW2GQ2DS2FpKmxD/JMtWUUWl1BtghGw==", - "dev": true, - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=12.18" - } + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/undici/-/undici-3.3.6.tgz", + "integrity": "sha512-/j3YTZ5AobMB4ZrTY72mzM54uFUX32v0R/JRW9G2vOyF1uSKYAx+WT8dMsAcRS13TOFISv094TxIyWYk+WEPsA==", + "dev": true }, "node_modules/unique-string": { "version": "2.0.0", diff --git a/backend/code/package.json b/backend/code/package.json index f131466..f001d34 100644 --- a/backend/code/package.json +++ b/backend/code/package.json @@ -84,7 +84,7 @@ "figlet": "^1.7.0", "jest": "^29.5.0", "prettier": "^3.0.0", - "prisma-dbml-generator": "^0.10.0", + "prisma-dbml-generator": "^0.9.1", "prompt": "^1.3.0", "prompt-sync": "^4.2.0", "source-map-support": "^0.5.21", diff --git a/backend/code/src/game/game.service.ts b/backend/code/src/game/game.service.ts index 43fd9a2..fe3ccf4 100644 --- a/backend/code/src/game/game.service.ts +++ b/backend/code/src/game/game.service.ts @@ -56,14 +56,14 @@ export class GameService { score2: true, participant1: { select: { - userId:true, + userId: true, Username: true, avatar: true, }, }, participant2: { select: { - userId:true, + userId: true, Username: true, avatar: true, }, @@ -85,13 +85,13 @@ export class GameService { match: { createdAt: match.createdAt, Player1: { - id:match.participant1.userId, + id: match.participant1.userId, username: match.participant1.Username, score: match.score1, avatar: avatar1, }, Player2: { - id:match.participant2.userId, + id: match.participant2.userId, username: match.participant2.Username, score: match.score2, avatar: avatar2, diff --git a/backend/code/src/gateways/gateways.gateway.ts b/backend/code/src/gateways/gateways.gateway.ts index e685e30..9b68678 100644 --- a/backend/code/src/gateways/gateways.gateway.ts +++ b/backend/code/src/gateways/gateways.gateway.ts @@ -78,7 +78,9 @@ export class Gateways implements OnGatewayConnection, OnGatewayDisconnect { const friendIds = frienduserIds .map((friend) => (friend.toId === userId ? friend.fromId : friend.toId)) - .filter((id) => this.server.sockets.adapter.rooms.get(`User:${id}`)?.size); + .filter( + (id) => this.server.sockets.adapter.rooms.get(`User:${id}`)?.size, + ); client.emit('onlineFriends', friendIds); @@ -93,7 +95,7 @@ export class Gateways implements OnGatewayConnection, OnGatewayDisconnect { @OnEvent('sendMessages') sendMessage(message: MessageFormatDto) { - console.log("recive msg !") + console.log('recive msg !'); const chanellname: string = `Romm:${message.roomId}`; this.server.to(chanellname).emit('message', message); } diff --git a/backend/code/src/leaderboard/leaderboard.service.ts b/backend/code/src/leaderboard/leaderboard.service.ts index cf9dfb4..c69b5b7 100644 --- a/backend/code/src/leaderboard/leaderboard.service.ts +++ b/backend/code/src/leaderboard/leaderboard.service.ts @@ -16,8 +16,8 @@ export class LeaderBoardService { }, }, }); - const leaderboardsPromises = leaderboard.map(async (user ) => { - const lead = await this.prisma.user.findUnique({ + const leaderboardsPromises = leaderboard.map(async (user) => { + const lead = await this.prisma.user.findUnique({ where: { userId: user.winner_id, }, @@ -28,12 +28,11 @@ export class LeaderBoardService { avatar: true, userId: true, }, - }, - ) + }); return { ...lead, - wins: user._count.id - } + wins: user._count.id, + }; }); return await Promise.all(leaderboardsPromises); } diff --git a/backend/code/src/main.ts b/backend/code/src/main.ts index c601abb..dc8821c 100644 --- a/backend/code/src/main.ts +++ b/backend/code/src/main.ts @@ -45,8 +45,8 @@ async function bootstrap() { .addTag('friends') .addTag('rooms') .addTag('Messages') - .addTag('user') - .addTag('game') + .addTag('user') + .addTag('game') .build(); const document = SwaggerModule.createDocument(app, options); SwaggerModule.setup('api', app, document); diff --git a/backend/code/src/messages/dto/message-format.dto.ts b/backend/code/src/messages/dto/message-format.dto.ts index 3ec978d..6b5a5c8 100644 --- a/backend/code/src/messages/dto/message-format.dto.ts +++ b/backend/code/src/messages/dto/message-format.dto.ts @@ -11,7 +11,7 @@ export class MessageFormatDto { this.roomId = messageData.roomId; this.authorId = messageData.authorId; this.Username = messageData.author.Username; - + this.avatar = { thumbnail: `https://res.cloudinary.com/trandandan/image/upload/c_thumb,h_48,w_48/${messageData.author.avatar}`, medium: `https://res.cloudinary.com/trandandan/image/upload/c_thumb,h_72,w_72/${messageData.author.avatar}`, diff --git a/backend/code/src/messages/messages.service.ts b/backend/code/src/messages/messages.service.ts index 5892797..edd4e47 100644 --- a/backend/code/src/messages/messages.service.ts +++ b/backend/code/src/messages/messages.service.ts @@ -82,13 +82,12 @@ export class MessagesService { content: messageDto.content, roomId: channelId, authorId: userId, - }, include: { author: { select: { avatar: true, - Username:true, + Username: true, }, }, }, diff --git a/backend/code/src/profile/dto/profile.dto.ts b/backend/code/src/profile/dto/profile.dto.ts index 8d1ae82..02580e1 100644 --- a/backend/code/src/profile/dto/profile.dto.ts +++ b/backend/code/src/profile/dto/profile.dto.ts @@ -7,6 +7,7 @@ type ProfileDtoProps = Partial & right_friends: Friend[]; roomMember: RoomMember[]; owned_rooms: Room[]; + achievement: number; }>; export type NAME = { @@ -41,6 +42,7 @@ export class ProfileDto { if (is_friend) { this.friendship = [...userData.left_friends, ...userData.right_friends]; } + this.achievement = userData.achievement; } @ApiProperty({ example: 'cln8xxhut0000stofeef' }) @@ -73,4 +75,7 @@ export class ProfileDto { username: string; friendship: Friend[]; + + @ApiProperty({ example: 1, required: false }) + achievement: number; } diff --git a/backend/code/src/profile/profile.controller.ts b/backend/code/src/profile/profile.controller.ts index 4861faa..129cbed 100644 --- a/backend/code/src/profile/profile.controller.ts +++ b/backend/code/src/profile/profile.controller.ts @@ -36,7 +36,7 @@ import { QueryOffsetDto } from 'src/friends/dto/query-ofsset-dto'; @ApiCookieAuth('X-Acces-Token') @Controller('profile') export class ProfileController { - constructor(private readonly profileService: ProfileService) { } + constructor(private readonly profileService: ProfileService) {} @Get('me') @ApiOkResponse({ type: ProfileDto }) diff --git a/backend/code/src/profile/profile.service.ts b/backend/code/src/profile/profile.service.ts index 2cafcc9..b14a8d3 100644 --- a/backend/code/src/profile/profile.service.ts +++ b/backend/code/src/profile/profile.service.ts @@ -18,7 +18,20 @@ export class ProfileService { if (!user) { throw new HttpException('User not found', HttpStatus.NOT_FOUND); } - return new ProfileDto(user, false); + const wonMatches = await this.prisma.match.count({ + where: { + winner_id: userId, + }, + }); + + const achievement = + wonMatches === 0 + ? null + : wonMatches >= 100 + ? 2 + : Math.floor(Math.log10(wonMatches)); + + return new ProfileDto({ ...user, achievement }, false); } async getFriendProfile( @@ -34,7 +47,20 @@ export class ProfileService { if (!user) { throw new HttpException('User not found', HttpStatus.NOT_FOUND); } - return new ProfileDto(user, true); + + const wonMatches = await this.prisma.match.count({ + where: { + winner_id: friendId, + }, + }); + + const achievement = + wonMatches === 0 + ? null + : wonMatches >= 100 + ? 2 + : Math.floor(Math.log10(wonMatches)); + return new ProfileDto({ ...user, achievement }, true); } async updateProfile( diff --git a/backend/code/src/rooms/rooms.controller.ts b/backend/code/src/rooms/rooms.controller.ts index a781fe2..a179566 100644 --- a/backend/code/src/rooms/rooms.controller.ts +++ b/backend/code/src/rooms/rooms.controller.ts @@ -208,13 +208,13 @@ export class RoomsController { return this.roomsService.listRooms(userId, offset, limit, joined); } - @Get('dms') - @HttpCode(HttpStatus.OK) - @UseGuards(AtGuard) - async getDMs( - @GetCurrentUser('userId') userId: string, - @Query() { offset, limit }: QueryOffsetDto, - ) { - return this.roomsService.getDMs(userId, offset, limit); - } + @Get('dms') + @HttpCode(HttpStatus.OK) + @UseGuards(AtGuard) + async getDMs( + @GetCurrentUser('userId') userId: string, + @Query() { offset, limit }: QueryOffsetDto, + ) { + return this.roomsService.getDMs(userId, offset, limit); + } } diff --git a/backend/code/src/rooms/rooms.service.ts b/backend/code/src/rooms/rooms.service.ts index a7ce614..c7372bd 100644 --- a/backend/code/src/rooms/rooms.service.ts +++ b/backend/code/src/rooms/rooms.service.ts @@ -426,7 +426,9 @@ export class RoomsService { is_mueted: true, }, }); - const filtredmembers = members.filter((member) => !member.is_banned || user.is_admin) + const filtredmembers = members.filter( + (member) => !member.is_banned || user.is_admin, + ); return filtredmembers.map((member) => { if (!member.is_banned || user.is_admin) { const avatar: PICTURE = {