diff --git a/package-lock.json b/package-lock.json index bdd691d..4963751 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@nestjs/platform-express": "^10.3.0", "@nestjs/swagger": "^7.1.17", "@nestjs/throttler": "^5.1.1", - "@prisma/client": "^5.8.1", + "@prisma/client": "^6.16.0", "@smithy/middleware-stack": "^4.2.5", "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", @@ -69,7 +69,7 @@ "eslint-plugin-prettier": "^5.1.3", "jest": "^29.7.0", "prettier": "^3.2.5", - "prisma": "^5.8.1", + "prisma": "^6.16.0", "serverless-esbuild": "^1.55.1", "source-map-support": "^0.5.21", "supertest": "^6.3.4", @@ -3865,65 +3865,91 @@ } }, "node_modules/@prisma/client": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.22.0.tgz", - "integrity": "sha512-M0SVXfyHnQREBKxCgyo7sffrKttwE6R8PMq330MIUF0pTwjUhLbW84pFDlf06B27XyCR++VtjugEnIHdr07SVA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.16.0.tgz", + "integrity": "sha512-FYkFJtgwpwJRMxtmrB26y7gtpR372kyChw6lWng5TMmvn5V+uisy0OyllO5EJD1s8lX78V8X3XjhiXOoMLnu3w==", "hasInstallScript": true, "engines": { - "node": ">=16.13" + "node": ">=18.18" }, "peerDependencies": { - "prisma": "*" + "prisma": "*", + "typescript": ">=5.1.0" }, "peerDependenciesMeta": { "prisma": { "optional": true + }, + "typescript": { + "optional": true } } }, + "node_modules/@prisma/config": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.16.0.tgz", + "integrity": "sha512-Q9TgfnllVehvQziY9lJwRJLGmziX0OimZUEQ/MhCUBoJMSScj2VivCjw/Of2vlO1FfyaHXxrvjZAr7ASl7DVcw==", + "devOptional": true, + "dependencies": { + "c12": "3.1.0", + "deepmerge-ts": "7.1.5", + "effect": "3.16.12", + "empathic": "2.0.0" + } + }, + "node_modules/@prisma/config/node_modules/effect": { + "version": "3.16.12", + "resolved": "https://registry.npmjs.org/effect/-/effect-3.16.12.tgz", + "integrity": "sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==", + "devOptional": true, + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "fast-check": "^3.23.1" + } + }, "node_modules/@prisma/debug": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.22.0.tgz", - "integrity": "sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.16.0.tgz", + "integrity": "sha512-bxzro5vbVqAPkWyDs2A6GpQtRZunD8tyrLmSAchx9u0b+gWCDY6eV+oh5A0YtYT9245dIxQBswckayHuJG4u3w==", "devOptional": true }, "node_modules/@prisma/engines": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.22.0.tgz", - "integrity": "sha512-UNjfslWhAt06kVL3CjkuYpHAWSO6L4kDCVPegV6itt7nD1kSJavd3vhgAEhjglLJJKEdJ7oIqDJ+yHk6qO8gPA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.16.0.tgz", + "integrity": "sha512-RHJGCH/zi017W4CWYWqg0Sv1pquGGFVo8T3auJ9sodDNaiRzbeNldydjaQzszVS8nscdtcvLuJzy7e65C3puqQ==", "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/debug": "5.22.0", - "@prisma/engines-version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", - "@prisma/fetch-engine": "5.22.0", - "@prisma/get-platform": "5.22.0" + "@prisma/debug": "6.16.0", + "@prisma/engines-version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43", + "@prisma/fetch-engine": "6.16.0", + "@prisma/get-platform": "6.16.0" } }, "node_modules/@prisma/engines-version": { - "version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2.tgz", - "integrity": "sha512-2PTmxFR2yHW/eB3uqWtcgRcgAbG1rwG9ZriSvQw+nnb7c4uCr3RAcGMb6/zfE88SKlC1Nj2ziUvc96Z379mHgQ==", + "version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43.tgz", + "integrity": "sha512-ThvlDaKIVrnrv97ujNFDYiQbeMQpLa0O86HFA2mNoip4mtFqM7U5GSz2ie1i2xByZtvPztJlNRgPsXGeM/kqAA==", "devOptional": true }, "node_modules/@prisma/fetch-engine": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.22.0.tgz", - "integrity": "sha512-bkrD/Mc2fSvkQBV5EpoFcZ87AvOgDxbG99488a5cexp5Ccny+UM6MAe/UFkUC0wLYD9+9befNOqGiIJhhq+HbA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.16.0.tgz", + "integrity": "sha512-Mx5rml0XRIDizhB9eZxSP8c0nMoXYVITTiJJwxlWn9rNCel8mG8NAqIw+vJlN3gPR+kt3IBkP1SQVsplPPpYrA==", "devOptional": true, "dependencies": { - "@prisma/debug": "5.22.0", - "@prisma/engines-version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", - "@prisma/get-platform": "5.22.0" + "@prisma/debug": "6.16.0", + "@prisma/engines-version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43", + "@prisma/get-platform": "6.16.0" } }, "node_modules/@prisma/get-platform": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.22.0.tgz", - "integrity": "sha512-pHhpQdr1UPFpt+zFfnPazhulaZYCUqeIcPpJViYoq9R+D/yw4fjE+CtnsnKzPYm0ddUbeXUzjGVGIRVgPDCk4Q==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.16.0.tgz", + "integrity": "sha512-eaJOOvAoGslSUTjiQrtE9E0hoBdfL43j8SymOGD6LbdrKRNtIoiy6qiBaEr2fNYD+R/Qns7QOwPhl7SVHJayKA==", "devOptional": true, "dependencies": { - "@prisma/debug": "5.22.0" + "@prisma/debug": "6.16.0" } }, "node_modules/@sinclair/typebox": { @@ -4742,7 +4768,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", - "dev": true + "devOptional": true }, "node_modules/@tokenizer/inflate": { "version": "0.2.7", @@ -6455,6 +6481,74 @@ "node": ">= 0.8" } }, + "node_modules/c12": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz", + "integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==", + "devOptional": true, + "dependencies": { + "chokidar": "^4.0.3", + "confbox": "^0.2.2", + "defu": "^6.1.4", + "dotenv": "^16.6.1", + "exsolve": "^1.0.7", + "giget": "^2.0.0", + "jiti": "^2.4.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^1.0.0", + "pkg-types": "^2.2.0", + "rc9": "^2.1.2" + }, + "peerDependencies": { + "magicast": "^0.3.5" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/c12/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "devOptional": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/c12/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "devOptional": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/c12/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "devOptional": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -6615,6 +6709,24 @@ "node": ">=8" } }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "devOptional": true, + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/citty/node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "devOptional": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/cjs-module-lexer": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", @@ -6845,6 +6957,12 @@ "typedarray": "^0.0.6" } }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "devOptional": true + }, "node_modules/consola": { "version": "2.15.3", "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", @@ -7064,6 +7182,15 @@ "node": ">=0.10.0" } }, + "node_modules/deepmerge-ts": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", + "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", + "devOptional": true, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/defaults": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", @@ -7092,6 +7219,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "devOptional": true + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -7108,6 +7241,12 @@ "node": ">= 0.8" } }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "devOptional": true + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -7273,6 +7412,15 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", + "devOptional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -7893,6 +8041,12 @@ "node": ">= 0.6" } }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "devOptional": true + }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -7911,7 +8065,7 @@ "version": "3.23.2", "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz", "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==", - "dev": true, + "devOptional": true, "funding": [ { "type": "individual", @@ -8449,6 +8603,32 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/giget": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", + "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==", + "devOptional": true, + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.6", + "nypm": "^0.6.0", + "pathe": "^2.0.3" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/giget/node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "devOptional": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -9814,6 +9994,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "devOptional": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -10489,6 +10678,12 @@ } } }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "devOptional": true + }, "node_modules/node-gyp-build": { "version": "4.8.4", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", @@ -10532,6 +10727,34 @@ "node": ">=8" } }, + "node_modules/nypm": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz", + "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==", + "devOptional": true, + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.2", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "tinyexec": "^1.0.1" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/nypm/node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "devOptional": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -10551,6 +10774,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "devOptional": true + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -10842,11 +11071,23 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "devOptional": true + }, "node_modules/pause": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "devOptional": true + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -10938,6 +11179,17 @@ "node": ">=8" } }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "devOptional": true, + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -11018,22 +11270,28 @@ } }, "node_modules/prisma": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.22.0.tgz", - "integrity": "sha512-vtpjW3XuYCSnMsNVBjLMNkTj6OZbudcPPTPYHqX0CJfpcdWciI1dM8uHETwmDxxiqEwCIE6WvXucWUetJgfu/A==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.16.0.tgz", + "integrity": "sha512-TTh+H1Kw8N68KN9cDzdAyMroqMOvdCO/Z+kS2wKEVYR1nuR21qH5Q/Db/bZHsAgw7l/TPHtM/veG5VABcdwPDw==", "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/engines": "5.22.0" + "@prisma/config": "6.16.0", + "@prisma/engines": "6.16.0" }, "bin": { "prisma": "build/index.js" }, "engines": { - "node": ">=16.13" + "node": ">=18.18" }, - "optionalDependencies": { - "fsevents": "2.3.3" + "peerDependencies": { + "typescript": ">=5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/process-nextick-args": { @@ -11089,7 +11347,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "individual", @@ -11185,6 +11443,16 @@ "node": ">= 0.8" } }, + "node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", + "devOptional": true, + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.3" + } + }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -12391,6 +12659,15 @@ "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "devOptional": true, + "engines": { + "node": ">=18" + } + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -13223,7 +13500,7 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/package.json b/package.json index 5879671..126ddc0 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@nestjs/platform-express": "^10.3.0", "@nestjs/swagger": "^7.1.17", "@nestjs/throttler": "^5.1.1", - "@prisma/client": "^5.8.1", + "@prisma/client": "^6.16.0", "@smithy/middleware-stack": "^4.2.5", "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", @@ -86,7 +86,7 @@ "eslint-plugin-prettier": "^5.1.3", "jest": "^29.7.0", "prettier": "^3.2.5", - "prisma": "^5.8.1", + "prisma": "^6.16.0", "serverless-esbuild": "^1.55.1", "source-map-support": "^0.5.21", "supertest": "^6.3.4", diff --git a/serverless.yml b/serverless.yml index 86cfa45..253489e 100644 --- a/serverless.yml +++ b/serverless.yml @@ -150,10 +150,9 @@ functions: patterns: - 'src/modules/host/handlers/createPassword.*' - 'src/modules/host/services/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - - 'node_modules/.prisma/**' + - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node' events: - httpApi: @@ -182,7 +181,6 @@ functions: patterns: - 'src/modules/host/handlers/addActivity.*' - 'src/modules/host/services/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -198,7 +196,6 @@ functions: patterns: - 'src/modules/host/handlers/getbyidhandler.*' - 'src/modules/host/services/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -214,7 +211,6 @@ functions: patterns: - 'src/modules/host/handlers/getByIdPQQ.*' - 'src/modules/host/services/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -230,7 +226,6 @@ functions: patterns: - 'src/modules/host/handlers/getLatestQuestionDetailsPQQ.*' - 'src/modules/host/services/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -246,7 +241,6 @@ functions: patterns: - 'src/modules/host/handlers/getActivity.*' - 'src/modules/host/services/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -262,7 +256,6 @@ functions: patterns: - 'src/modules/host/handlers/acceptAgreement.*' - 'src/modules/host/services/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -294,7 +287,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -309,7 +301,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -324,7 +315,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -339,7 +329,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -356,7 +345,6 @@ functions: patterns: - 'src/modules/host/handlers/updateProfile.*' - 'src/modules/host/services/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -375,7 +363,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -390,7 +377,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -405,7 +391,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -420,7 +405,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -435,7 +419,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -450,7 +433,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -459,13 +441,27 @@ functions: - httpApi: path: /minglaradmin/get-all-coadmin-and-am-details method: get + + + getAllInvitedCoadminAndAMDetails: + handler: src/modules/minglaradmin/handlers/getAllInvitedCoadminAndAM.handler + package: + patterns: + - 'src/modules/minglaradmin/**' + - 'src/common/**' + - 'node_modules/@prisma/client/**' + - 'node_modules/.prisma/**' + + events: + - httpApi: + path: /minglaradmin/get-all-invited-coadmin-and-am + method: get getAllBankAndCurrencyDetails: handler: src/modules/prepopulate/handlers/getAllBankDetails.handler package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -480,7 +476,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -495,7 +490,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -510,7 +504,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -525,7 +518,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -540,7 +532,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -555,7 +546,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -570,7 +560,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -585,7 +574,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -600,7 +588,6 @@ functions: package: patterns: - 'src/modules/minglaradmin/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -616,7 +603,6 @@ functions: patterns: - 'src/modules/host/handlers/addCompanyDetails.*' - 'src/modules/host/services/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' @@ -644,7 +630,6 @@ functions: patterns: - 'src/modules/host/handlers/submitPqqAns.*' - 'src/modules/host/services/**' - - 'common/**' - 'src/common/**' - 'node_modules/@prisma/client/**' - 'node_modules/.prisma/**' diff --git a/src/common/utils/validation/host/hostCompanyDetails.validation.ts b/src/common/utils/validation/host/hostCompanyDetails.validation.ts index 5bcebfc..7858204 100644 --- a/src/common/utils/validation/host/hostCompanyDetails.validation.ts +++ b/src/common/utils/validation/host/hostCompanyDetails.validation.ts @@ -67,7 +67,6 @@ export const hostCompanyDetailsSchema = z.object({ facebookUrl: z.string().url().optional(), linkedinUrl: z.string().url().optional(), twitterUrl: z.string().url().optional(), - currencyXid: z.number().min(1, "Currency is required"), // Parent company nested when this is subsidiary parentCompany: parentCompanySchema.optional(), diff --git a/src/modules/host/handlers/addActivity.ts b/src/modules/host/handlers/addActivity.ts index bcc759b..c5af627 100644 --- a/src/modules/host/handlers/addActivity.ts +++ b/src/modules/host/handlers/addActivity.ts @@ -30,7 +30,7 @@ export const handler = safeHandler(async ( throw new ApiError(400, 'activityTypeXid is required'); } - const created = await hostService.createActivity( + await hostService.createActivity( userInfo.id, Number(activityTypeXid), frequenciesXid ? Number(frequenciesXid) : undefined, diff --git a/src/modules/host/handlers/addCompanyDetails.ts b/src/modules/host/handlers/addCompanyDetails.ts index 1999f67..4d61a2f 100644 --- a/src/modules/host/handlers/addCompanyDetails.ts +++ b/src/modules/host/handlers/addCompanyDetails.ts @@ -182,17 +182,17 @@ export const handler = safeHandler(async (event: APIGatewayProxyEvent): Promise< if (folderType === 'logo') { // Logo: Documents/Host/logo/{HostID}/{sanitized_filename} const sanitizedFileName = sanitizeFileName(originalName); - s3Key = `Documents/Host/logo/${hostId}/${sanitizedFileName}`; + s3Key = `Documents/Host/${hostId}/logo/${sanitizedFileName}`; } else if (folderType === 'documents' && documentTypeXid && fieldName) { // Host Documents: Documents/Host/documents/{HostID}/{documentTypeXid}_{fieldName}.{extension} const fileName = `${documentTypeXid}_${fieldName}.${fileExtension}`; const sanitizedFileName = sanitizeFileName(fileName); - s3Key = `Documents/Host/documents/${hostId}/${sanitizedFileName}`; + s3Key = `Documents/Host/${hostId}/documents/${sanitizedFileName}`; } else if (folderType === 'parent_company' && documentTypeXid && fieldName) { // Parent Documents: Documents/Host/parent_company/{HostID}/{documentTypeXid}_{fieldName}.{extension} const fileName = `${documentTypeXid}_${fieldName}.${fileExtension}`; const sanitizedFileName = sanitizeFileName(fileName); - s3Key = `Documents/Host/parent_company/${hostId}/${sanitizedFileName}`; + s3Key = `Documents/Host/${hostId}/parent_company/${sanitizedFileName}`; } else { throw new ApiError(400, 'Invalid folder type or missing documentTypeXid/fieldName'); } diff --git a/src/modules/host/handlers/getLatestQuestionDetailsPQQ.ts b/src/modules/host/handlers/getLatestQuestionDetailsPQQ.ts index 8667d31..4a43b7a 100644 --- a/src/modules/host/handlers/getLatestQuestionDetailsPQQ.ts +++ b/src/modules/host/handlers/getLatestQuestionDetailsPQQ.ts @@ -21,22 +21,25 @@ export const handler = safeHandler(async ( const userInfo = await verifyHostToken(token); const userId = Number(userInfo.id); - let body: { activity_xid: number }; + const activity_xid = event.queryStringParameters?.activity_xid + ? Number(event.queryStringParameters.activity_xid) + : null; - try { - body = event.body ? JSON.parse(event.body) : {}; - } catch (error) { - throw new ApiError(400, 'Invalid JSON in request body'); - } - - const { activity_xid } = body; - if(!activity_xid){ - throw new ApiError(400, "Activity id is required.") + // Validate it + if (!activity_xid || isNaN(activity_xid)) { + throw new ApiError(400, "Activity id is required and must be a number."); } // Fetch user with their HostHeader stepper info const pqqQuestionDetails = await hostService.getLatestQuestionDetailsPQQ(activity_xid); + const result = { + pqqQuestionXid: pqqQuestionDetails.pqqQuestionXid, + pqqAnswerXid: pqqQuestionDetails.pqqAnswerXid, + pqqSubCategoryXid: pqqQuestionDetails.pqqQuestions.pqqSubCategoryXid, + categoryXid: pqqQuestionDetails.pqqQuestions.pqqSubCategories.categoryXid + } + return { statusCode: 200, headers: { @@ -45,8 +48,8 @@ export const handler = safeHandler(async ( }, body: JSON.stringify({ success: true, - message: 'Stepper information retrieved successfully', - data: pqqQuestionDetails, + message: 'Latest information retrieved successfully', + data: result, }), }; }); diff --git a/src/modules/host/handlers/submitPqqAns.ts b/src/modules/host/handlers/submitPqqAns.ts index 3d832b5..867635b 100644 --- a/src/modules/host/handlers/submitPqqAns.ts +++ b/src/modules/host/handlers/submitPqqAns.ts @@ -165,9 +165,9 @@ export const handler = safeHandler(async (event: APIGatewayProxyEvent): Promise< if (!pqqQuestionXid || isNaN(pqqQuestionXid)) throw new ApiError(400, "Valid pqqQuestionXid is required"); if (!pqqAnswerXid || isNaN(pqqAnswerXid)) throw new ApiError(400, "Valid pqqAnswerXid is required"); - console.log(`📝 Processing - Activity: ${activityXid}, Question: ${pqqQuestionXid}, Answer: ${pqqAnswerXid}`); - console.log(`💬 Comments: ${comments ? 'Provided' : 'Not provided'}`); - console.log(`📎 Files: ${files.length}`); + // console.log(`📝 Processing - Activity: ${activityXid}, Question: ${pqqQuestionXid}, Answer: ${pqqAnswerXid}`); + // console.log(`💬 Comments: ${comments ? 'Provided' : 'Not provided'}`); + // console.log(`📎 Files: ${files.length}`); // 5) UPSERT: Check if header already exists for this combination const existingHeader = await pqqService.findHeaderByCompositeKey( diff --git a/src/modules/host/services/host.service.ts b/src/modules/host/services/host.service.ts index 7af8344..04e6deb 100644 --- a/src/modules/host/services/host.service.ts +++ b/src/modules/host/services/host.service.ts @@ -9,7 +9,7 @@ import { z } from 'zod'; import { hostCompanyDetailsSchema } from '@/common/utils/validation/host/hostCompanyDetails.validation'; import { HOST_STATUS_DISPLAY, HOST_STATUS_INTERNAL, STEPPER } from '@/common/utils/constants/host.constant'; import { MINGLAR_STATUS_DISPLAY, MINGLAR_STATUS_INTERNAL } from '@/common/utils/constants/minglar.constant'; -import { ROLE } from '@/common/utils/constants/common.constant'; +import { ROLE, USER_STATUS } from '@/common/utils/constants/common.constant'; import { getPresignedUrl } from '@/common/middlewares/aws/getPreSignedUrl'; import config from '@/config/config'; @@ -192,7 +192,7 @@ export class HostService { // Update user with hashed password await this.prisma.user.update({ where: { id: user.id }, - data: { userPassword: hashedPassword }, + data: { userPassword: hashedPassword, isEmailVerfied: true, userStatus: USER_STATUS.ACTIVE }, }); return true; @@ -249,7 +249,20 @@ export class HostService { async getLatestQuestionDetailsPQQ(activity_xid: number) { return await this.prisma.activityPQQheader.findFirst({ where: { activityXid: activity_xid, isActive: true }, - select: { pqqQuestionXid: true, pqqAnswerXid: true }, + select: { + pqqQuestionXid: true, + pqqAnswerXid: true, + pqqQuestions: { + select: { + pqqSubCategoryXid: true, + pqqSubCategories: { + select: { + categoryXid: true + } + } + } + } + }, orderBy: { id: 'desc' } }) } diff --git a/src/modules/minglaradmin/handlers/getAllInvitedCoadminAndAM.ts b/src/modules/minglaradmin/handlers/getAllInvitedCoadminAndAM.ts new file mode 100644 index 0000000..0f1d0c8 --- /dev/null +++ b/src/modules/minglaradmin/handlers/getAllInvitedCoadminAndAM.ts @@ -0,0 +1,39 @@ +import { verifyOnlyMinglarAdminToken } from '@/common/middlewares/jwt/authForOnlyMinglarAdmin'; +import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda'; +import { PrismaService } from '../../../common/database/prisma.service'; +import { safeHandler } from '../../../common/utils/handlers/safeHandler'; +import ApiError from '../../../common/utils/helper/ApiError'; +import { MinglarService } from '../services/minglar.service'; + +const prismaService = new PrismaService(); +const minglarService = new MinglarService(prismaService); + +export const handler = safeHandler(async ( + event: APIGatewayProxyEvent, + context?: Context +): Promise => { + // Extract token from headers + const token = event.headers['x-auth-token'] || event.headers['X-Auth-Token'] + if(!token) { + throw new ApiError(400, 'This is a protected route. Please provide a valid token.'); + } + + // Authenticate user using the shared authForHost function + await verifyOnlyMinglarAdminToken(token); + + const response = await minglarService.getAllInvitedCoadminAndAM(); + + return { + statusCode: 200, + headers: { + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + }, + body: JSON.stringify({ + success: true, + message: 'Data retrieved successfully', + data: response, + }), + }; +}); + diff --git a/src/modules/minglaradmin/services/minglar.service.ts b/src/modules/minglaradmin/services/minglar.service.ts index 2dcd75f..e777de1 100644 --- a/src/modules/minglaradmin/services/minglar.service.ts +++ b/src/modules/minglaradmin/services/minglar.service.ts @@ -494,7 +494,7 @@ export class MinglarService { notIn: [ROLE.CO_ADMIN, ROLE.ACCOUNT_MANAGER] }, } - }; + }; // Add search filter if search query is provided if (search && search.trim() !== '') { @@ -585,7 +585,7 @@ export class MinglarService { companyName: host.companyName || null, city: host.cities || null, state: host.states || null, - country: host.countries || null, + country: host.countries || null, assignedOn: host.assignedOn || null, })); } @@ -644,6 +644,32 @@ export class MinglarService { })); } + async getAllInvitedCoadminAndAM() { + return await this.prisma.user.findMany({ + where: { + roleXid: { + in: [ + ROLE.MINGLAR_ADMIN, // Admin + ROLE.CO_ADMIN, // Co-Admin + ROLE.ACCOUNT_MANAGER // AM + ] + }, + isActive: true, + userStatus: { + not: USER_STATUS.DE_ACTIVATED // Exclude DE_ACTIVATED status + }, + }, + include: { + role: { + select: { + id: true, + roleName: true, + }, + }, + }, + }); + } + async assignAMToHost(userId: number, hostXid: number, accountManagerXid: number) { const hostDetails = await this.prisma.hostHeader.findFirst({ @@ -685,8 +711,8 @@ export class MinglarService { if (!accountManagerXid) return false; const amUser = await this.prisma.user.findUnique({ - where: { id: accountManagerXid ,isActive:true}, - select: { emailAddress: true}, + where: { id: accountManagerXid, isActive: true }, + select: { emailAddress: true }, }); if (!amUser || !amUser.emailAddress) {