From d17924bd4c953383e7782e73ca110b5733e59f35 Mon Sep 17 00:00:00 2001 From: peterlipt Date: Fri, 11 Oct 2024 20:53:08 +0200 Subject: [PATCH 1/3] Tasks entity --- apps/backend/package.json | 2 + .../20241011172602_init/migration.sql | 50 +++++++++++++++++ .../20241011184645_test/migration.sql | 22 ++++++++ apps/backend/prisma/schema.prisma | 8 +-- apps/backend/src/app.module.ts | 3 +- .../src/sprint/dto/update-sprint.dto.ts | 1 + apps/backend/src/sprint/sprint.controller.ts | 11 ++-- apps/backend/src/sprint/sprint.module.ts | 3 +- apps/backend/src/tasks/dto/create-task.dto.ts | 5 ++ apps/backend/src/tasks/dto/update-task.dto.ts | 5 ++ .../backend/src/tasks/entities/task.entity.ts | 22 ++++++++ apps/backend/src/tasks/tasks.controller.ts | 35 ++++++++++++ apps/backend/src/tasks/tasks.module.ts | 10 ++++ apps/backend/src/tasks/tasks.service.ts | 53 +++++++++++++++++++ apps/backend/src/user/user.controller.ts | 2 +- yarn.lock | 38 ++++++++++++- 16 files changed, 257 insertions(+), 13 deletions(-) create mode 100644 apps/backend/prisma/migrations/20241011172602_init/migration.sql create mode 100644 apps/backend/prisma/migrations/20241011184645_test/migration.sql create mode 100644 apps/backend/src/tasks/dto/create-task.dto.ts create mode 100644 apps/backend/src/tasks/dto/update-task.dto.ts create mode 100644 apps/backend/src/tasks/entities/task.entity.ts create mode 100644 apps/backend/src/tasks/tasks.controller.ts create mode 100644 apps/backend/src/tasks/tasks.module.ts create mode 100644 apps/backend/src/tasks/tasks.service.ts diff --git a/apps/backend/package.json b/apps/backend/package.json index 375db11..0b62988 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -20,6 +20,8 @@ "@nestjs/mapped-types": "*", "@nestjs/platform-express": "^10.3.8", "@prisma/client": "^5.13.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.1", "nestjs-prisma": "^0.23.0", "reflect-metadata": "^0.2.2", "rimraf": "^5.0.5", diff --git a/apps/backend/prisma/migrations/20241011172602_init/migration.sql b/apps/backend/prisma/migrations/20241011172602_init/migration.sql new file mode 100644 index 0000000..63f6850 --- /dev/null +++ b/apps/backend/prisma/migrations/20241011172602_init/migration.sql @@ -0,0 +1,50 @@ +-- CreateEnum +CREATE TYPE "Role" AS ENUM ('ADMIN', 'USER'); + +-- AlterTable +ALTER TABLE "User" ADD COLUMN "role" "Role" NOT NULL DEFAULT 'USER'; + +-- CreateTable +CREATE TABLE "Projekt" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT NOT NULL, + "userId" INTEGER NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Projekt_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Sprint" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "startDate" TIMESTAMP(3) NOT NULL, + "endDate" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Sprint_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Tasks" ( + "id" SERIAL NOT NULL, + "description" TEXT NOT NULL, + "sprintId" INTEGER NOT NULL, + "userId" INTEGER NOT NULL, + "projektId" INTEGER NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Tasks_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "Projekt" ADD CONSTRAINT "Projekt_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Tasks" ADD CONSTRAINT "Tasks_sprintId_fkey" FOREIGN KEY ("sprintId") REFERENCES "Sprint"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Tasks" ADD CONSTRAINT "Tasks_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Tasks" ADD CONSTRAINT "Tasks_projektId_fkey" FOREIGN KEY ("projektId") REFERENCES "Projekt"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/apps/backend/prisma/migrations/20241011184645_test/migration.sql b/apps/backend/prisma/migrations/20241011184645_test/migration.sql new file mode 100644 index 0000000..5b0f106 --- /dev/null +++ b/apps/backend/prisma/migrations/20241011184645_test/migration.sql @@ -0,0 +1,22 @@ +-- DropForeignKey +ALTER TABLE "Tasks" DROP CONSTRAINT "Tasks_projektId_fkey"; + +-- DropForeignKey +ALTER TABLE "Tasks" DROP CONSTRAINT "Tasks_sprintId_fkey"; + +-- DropForeignKey +ALTER TABLE "Tasks" DROP CONSTRAINT "Tasks_userId_fkey"; + +-- AlterTable +ALTER TABLE "Tasks" ALTER COLUMN "sprintId" DROP NOT NULL, +ALTER COLUMN "userId" DROP NOT NULL, +ALTER COLUMN "projektId" DROP NOT NULL; + +-- AddForeignKey +ALTER TABLE "Tasks" ADD CONSTRAINT "Tasks_sprintId_fkey" FOREIGN KEY ("sprintId") REFERENCES "Sprint"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Tasks" ADD CONSTRAINT "Tasks_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Tasks" ADD CONSTRAINT "Tasks_projektId_fkey" FOREIGN KEY ("projektId") REFERENCES "Projekt"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/apps/backend/prisma/schema.prisma b/apps/backend/prisma/schema.prisma index 69c45ed..d69fe79 100644 --- a/apps/backend/prisma/schema.prisma +++ b/apps/backend/prisma/schema.prisma @@ -53,9 +53,9 @@ model Tasks { description String sprintId Int sprint Sprint @relation(fields: [sprintId], references: [id]) - userId Int - user User @relation(fields: [userId], references: [id]) - projektId Int - projekt Projekt @relation(fields: [projektId], references: [id]) + userId Int? + user User? @relation(fields: [userId], references: [id]) + projektId Int? + projekt Projekt? @relation(fields: [projektId], references: [id]) createdAt DateTime @default(now()) } diff --git a/apps/backend/src/app.module.ts b/apps/backend/src/app.module.ts index 8dcc2e2..928ace3 100644 --- a/apps/backend/src/app.module.ts +++ b/apps/backend/src/app.module.ts @@ -4,10 +4,11 @@ import { PrismaModule } from 'nestjs-prisma'; import { AppController } from './app.controller'; import { AppService } from './app.service'; +import { TasksModule } from './tasks/tasks.module'; import { UserModule } from './user/user.module'; @Module({ - imports: [ConfigModule.forRoot(), PrismaModule.forRoot({ isGlobal: true }), UserModule], + imports: [ConfigModule.forRoot(), PrismaModule.forRoot({ isGlobal: true }), UserModule, TasksModule], controllers: [AppController], providers: [AppService], }) diff --git a/apps/backend/src/sprint/dto/update-sprint.dto.ts b/apps/backend/src/sprint/dto/update-sprint.dto.ts index 9cbb438..6cb8d72 100644 --- a/apps/backend/src/sprint/dto/update-sprint.dto.ts +++ b/apps/backend/src/sprint/dto/update-sprint.dto.ts @@ -1,4 +1,5 @@ import { PartialType } from '@nestjs/mapped-types'; + import { CreateSprintDto } from './create-sprint.dto'; export class UpdateSprintDto extends PartialType(CreateSprintDto) {} diff --git a/apps/backend/src/sprint/sprint.controller.ts b/apps/backend/src/sprint/sprint.controller.ts index 624aeba..4aefecf 100644 --- a/apps/backend/src/sprint/sprint.controller.ts +++ b/apps/backend/src/sprint/sprint.controller.ts @@ -1,7 +1,8 @@ -import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; -import { SprintService } from './sprint.service'; +import { Body, Controller, Delete, Get, Param, Patch, Post } from '@nestjs/common'; + import { CreateSprintDto } from './dto/create-sprint.dto'; import { UpdateSprintDto } from './dto/update-sprint.dto'; +import { SprintService } from './sprint.service'; @Controller('sprint') export class SprintController { @@ -19,16 +20,16 @@ export class SprintController { @Get(':id') findOne(@Param('id') id: string) { - return this.sprintService.findOne(+id); + return this.sprintService.findOne(Number(id)); } @Patch(':id') update(@Param('id') id: string, @Body() updateSprintDto: UpdateSprintDto) { - return this.sprintService.update(+id, updateSprintDto); + return this.sprintService.update(Number(id), updateSprintDto); } @Delete(':id') remove(@Param('id') id: string) { - return this.sprintService.remove(+id); + return this.sprintService.remove(Number(id)); } } diff --git a/apps/backend/src/sprint/sprint.module.ts b/apps/backend/src/sprint/sprint.module.ts index 7d19933..5cdf444 100644 --- a/apps/backend/src/sprint/sprint.module.ts +++ b/apps/backend/src/sprint/sprint.module.ts @@ -1,6 +1,7 @@ import { Module } from '@nestjs/common'; -import { SprintService } from './sprint.service'; + import { SprintController } from './sprint.controller'; +import { SprintService } from './sprint.service'; @Module({ controllers: [SprintController], diff --git a/apps/backend/src/tasks/dto/create-task.dto.ts b/apps/backend/src/tasks/dto/create-task.dto.ts new file mode 100644 index 0000000..6367026 --- /dev/null +++ b/apps/backend/src/tasks/dto/create-task.dto.ts @@ -0,0 +1,5 @@ +import { OmitType } from '@nestjs/mapped-types'; + +import { Tasks } from '../entities/task.entity'; + +export class CreateTaskDto extends OmitType(Tasks, ['id'] as const) {} diff --git a/apps/backend/src/tasks/dto/update-task.dto.ts b/apps/backend/src/tasks/dto/update-task.dto.ts new file mode 100644 index 0000000..5ba946b --- /dev/null +++ b/apps/backend/src/tasks/dto/update-task.dto.ts @@ -0,0 +1,5 @@ +import { PartialType } from '@nestjs/mapped-types'; + +import { CreateTaskDto } from './create-task.dto'; + +export class UpdateTaskDto extends PartialType(CreateTaskDto) {} diff --git a/apps/backend/src/tasks/entities/task.entity.ts b/apps/backend/src/tasks/entities/task.entity.ts new file mode 100644 index 0000000..b627cb2 --- /dev/null +++ b/apps/backend/src/tasks/entities/task.entity.ts @@ -0,0 +1,22 @@ +import { IsDate, IsInt, IsOptional, IsString } from 'class-validator'; + +export class Tasks { + @IsInt() + id: number; + + @IsString() + @IsOptional() + description: string; + + @IsInt() + sprintId: number; + + @IsInt() + userId: number; + + @IsInt() + projectId: number; + + @IsDate() + createdAt: Date; +} diff --git a/apps/backend/src/tasks/tasks.controller.ts b/apps/backend/src/tasks/tasks.controller.ts new file mode 100644 index 0000000..f921685 --- /dev/null +++ b/apps/backend/src/tasks/tasks.controller.ts @@ -0,0 +1,35 @@ +import { Body, Controller, Delete, Get, Param, Patch, Post } from '@nestjs/common'; + +import { CreateTaskDto } from './dto/create-task.dto'; +import { UpdateTaskDto } from './dto/update-task.dto'; +import { TasksService } from './tasks.service'; + +@Controller('tasks') +export class TasksController { + constructor(private readonly tasksService: TasksService) {} + + @Post() + create(@Body() createTaskDto: CreateTaskDto) { + return this.tasksService.create(createTaskDto); + } + + @Get() + findAll() { + return this.tasksService.findAll(); + } + + @Get(':id') + findOne(@Param('id') id: string) { + return this.tasksService.findOne(Number(id)); + } + + @Patch(':id') + update(@Param('id') id: string, @Body() updateTaskDto: UpdateTaskDto) { + return this.tasksService.update(Number(id), updateTaskDto); + } + + @Delete(':id') + remove(@Param('id') id: string) { + return this.tasksService.remove(Number(id)); + } +} diff --git a/apps/backend/src/tasks/tasks.module.ts b/apps/backend/src/tasks/tasks.module.ts new file mode 100644 index 0000000..e165025 --- /dev/null +++ b/apps/backend/src/tasks/tasks.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; + +import { TasksController } from './tasks.controller'; +import { TasksService } from './tasks.service'; + +@Module({ + controllers: [TasksController], + providers: [TasksService], +}) +export class TasksModule {} diff --git a/apps/backend/src/tasks/tasks.service.ts b/apps/backend/src/tasks/tasks.service.ts new file mode 100644 index 0000000..33d3478 --- /dev/null +++ b/apps/backend/src/tasks/tasks.service.ts @@ -0,0 +1,53 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { PrismaService } from 'nestjs-prisma'; + +import { CreateTaskDto } from './dto/create-task.dto'; +import { UpdateTaskDto } from './dto/update-task.dto'; + +@Injectable() +export class TasksService { + constructor(private readonly prisma: PrismaService) {} + + async create(data: CreateTaskDto) { + return await this.prisma.tasks.create({ data }); + } + + async findAll() { + try { + return await this.prisma.tasks.findMany(); + } catch { + throw new NotFoundException('Tasks not found'); + } + } + + async findOne(id: number) { + const task = await this.prisma.tasks.findUnique({ + where: { id }, + }); + if (!task) { + throw new NotFoundException(`Task with ID ${id} not found`); + } + return task; + } + + async update(id: number, updateTaskDto: UpdateTaskDto) { + try { + return await this.prisma.tasks.update({ + where: { id }, + data: updateTaskDto, + }); + } catch { + throw new NotFoundException(`Task with ID ${id} not found`); + } + } + + async remove(id: number) { + try { + return await this.prisma.tasks.delete({ + where: { id }, + }); + } catch { + throw new NotFoundException(`Task with ID ${id} not found`); + } + } +} diff --git a/apps/backend/src/user/user.controller.ts b/apps/backend/src/user/user.controller.ts index 44dc34c..e30c58f 100644 --- a/apps/backend/src/user/user.controller.ts +++ b/apps/backend/src/user/user.controller.ts @@ -23,7 +23,7 @@ export class UserController { const user = await this.authService.signIn(loginDto.email, loginDto.password); return { ...user, - isRegistered: user ? true : false, + isRegistered: Boolean(user), }; } diff --git a/yarn.lock b/yarn.lock index c5d01f1..12afdee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -818,6 +818,11 @@ "@types/node" "*" "@types/send" "*" +"@types/validator@^13.11.8": + version "13.12.2" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.12.2.tgz#760329e756e18a4aab82fc502b51ebdfebbe49f5" + integrity sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA== + "@typescript-eslint/eslint-plugin@^7.7.1": version "7.7.1" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz" @@ -1652,6 +1657,20 @@ chrome-trace-event@^1.0.2: resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +class-transformer@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.5.1.tgz#24147d5dffd2a6cea930a3250a677addf96ab336" + integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== + +class-validator@^0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.14.1.tgz#ff2411ed8134e9d76acfeb14872884448be98110" + integrity sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ== + dependencies: + "@types/validator" "^13.11.8" + libphonenumber-js "^1.10.53" + validator "^13.9.0" + class-variance-authority@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz" @@ -3611,6 +3630,11 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +libphonenumber-js@^1.10.53: + version "1.11.11" + resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.11.11.tgz#f4d521d7e2d1958916820e3725e609a2ea7575a8" + integrity sha512-mF3KaORjJQR6JBNcOkluDcJKhtoQT4VTLRMrX1v/wlBayL4M8ybwEDeryyPcrSEJmD0rVwHUbBarpZwN5NfPFQ== + lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" @@ -5094,7 +5118,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -5108,6 +5132,13 @@ strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" @@ -5577,6 +5608,11 @@ v8-compile-cache-lib@^3.0.1: resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== +validator@^13.9.0: + version "13.12.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.12.0.tgz#7d78e76ba85504da3fee4fd1922b385914d4b35f" + integrity sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg== + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" From 31504c5d893c3478ee5e3ea74cf84d10dc7a9d6a Mon Sep 17 00:00:00 2001 From: peterlipt Date: Fri, 11 Oct 2024 21:06:51 +0200 Subject: [PATCH 2/3] eslint fixes --- apps/backend/src/sprint/sprint.service.ts | 7 ++----- apps/frontend/src/components/CurrentJobs.tsx | 8 -------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/apps/backend/src/sprint/sprint.service.ts b/apps/backend/src/sprint/sprint.service.ts index 38b84f2..e1dff25 100644 --- a/apps/backend/src/sprint/sprint.service.ts +++ b/apps/backend/src/sprint/sprint.service.ts @@ -1,11 +1,8 @@ import { Injectable } from '@nestjs/common'; -import { CreateSprintDto } from './dto/create-sprint.dto'; -import { UpdateSprintDto } from './dto/update-sprint.dto'; - @Injectable() export class SprintService { - create(createSprintDto: CreateSprintDto) { + create() { return 'This action adds a new sprint'; } @@ -17,7 +14,7 @@ export class SprintService { return `This action returns a #${id} sprint`; } - update(id: number, updateSprintDto: UpdateSprintDto) { + update(id: number) { return `This action updates a #${id} sprint`; } diff --git a/apps/frontend/src/components/CurrentJobs.tsx b/apps/frontend/src/components/CurrentJobs.tsx index 52f4968..802ce9b 100644 --- a/apps/frontend/src/components/CurrentJobs.tsx +++ b/apps/frontend/src/components/CurrentJobs.tsx @@ -1,14 +1,6 @@ import Navbar from './Navbar'; export default function CurrentJobs() { - function ExpendableTable() { - const [ExpandedRow, setExpandedRow] = useState(false); - - const toggleRow = (rowIndex) => { - setExpandedRow(expandedRow === rowIndex ? null : rowIndex); - }; - } - return (
From 9ad07da92957678a1eb186c4ff6e4721d61fecf1 Mon Sep 17 00:00:00 2001 From: peterlipt Date: Fri, 11 Oct 2024 21:25:30 +0200 Subject: [PATCH 3/3] swagger added --- apps/backend/package.json | 1 + yarn.lock | 31 +++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/apps/backend/package.json b/apps/backend/package.json index 0b62988..21a530a 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -19,6 +19,7 @@ "@nestjs/core": "^10.3.8", "@nestjs/mapped-types": "*", "@nestjs/platform-express": "^10.3.8", + "@nestjs/swagger": "^7.4.2", "@prisma/client": "^5.13.0", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", diff --git a/yarn.lock b/yarn.lock index 12afdee..7762a95 100644 --- a/yarn.lock +++ b/yarn.lock @@ -250,6 +250,11 @@ semver "^7.3.5" tar "^6.1.11" +"@microsoft/tsdoc@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz#f29a55df17cb6e87cfbabce33ff6a14a9f85076d" + integrity sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA== + "@mole-inc/bin-wrapper@^8.0.1": version "8.0.1" resolved "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz" @@ -322,7 +327,7 @@ path-to-regexp "3.2.0" tslib "2.6.2" -"@nestjs/mapped-types@*": +"@nestjs/mapped-types@*", "@nestjs/mapped-types@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.5.tgz" integrity sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg== @@ -349,6 +354,18 @@ jsonc-parser "3.2.1" pluralize "8.0.0" +"@nestjs/swagger@^7.4.2": + version "7.4.2" + resolved "https://registry.yarnpkg.com/@nestjs/swagger/-/swagger-7.4.2.tgz#3b72eb8a6d1366e8e211f9a90681283bb18817e9" + integrity sha512-Mu6TEn1M/owIvAx2B4DUQObQXqo2028R2s9rSZ/hJEgBK95+doTwS0DjmVA2wTeZTyVtXOoN7CsoM5pONBzvKQ== + dependencies: + "@microsoft/tsdoc" "^0.15.0" + "@nestjs/mapped-types" "2.0.5" + js-yaml "4.1.0" + lodash "4.17.21" + path-to-regexp "3.3.0" + swagger-ui-dist "5.17.14" + "@next/env@14.2.2": version "14.2.2" resolved "https://registry.npmjs.org/@next/env/-/env-14.2.2.tgz" @@ -3525,7 +3542,7 @@ jiti@^1.21.0: resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^4.1.0: +js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -4310,6 +4327,11 @@ path-to-regexp@3.2.0: resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz" integrity sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA== +path-to-regexp@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.3.0.tgz#f7f31d32e8518c2660862b644414b6d5c63a611b" + integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" @@ -5225,6 +5247,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +swagger-ui-dist@5.17.14: + version "5.17.14" + resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.17.14.tgz#e2c222e5bf9e15ccf80ec4bc08b4aaac09792fd6" + integrity sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw== + symbol-observable@4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz"