From b97612efbae0773827ffa5674b78e02083f599b1 Mon Sep 17 00:00:00 2001 From: whiitex <89868763+whiitex@users.noreply.github.com> Date: Sat, 1 Jun 2024 16:26:09 +0200 Subject: [PATCH] Recruitment Session and Interview Slots (#28) - Added findAvailableTimeSlots method to retrieve time slots to hold interviews - Recruitment Session Controller, Service, Repository & Entity - CRUD operations for Recruitment Session - Improved API code coverage - Improved methods documentation - Refactored fronted file and folder structure --------- Co-authored-by: ozerodb <50593663+ozerodb@users.noreply.github.com> Co-authored-by: whiteOFF <89868763+whiteOFF@users.noreply.github.com> Co-authored-by: Alberto Baroso <35893959+AlbertoBaroso@users.noreply.github.com> Co-authored-by: Vincenzo Pellegrini Co-authored-by: Mugna0990 <150722467+Mugna0990@users.noreply.github.com> --- .github/workflows/fullstack.yml | 8 +- api/package.json | 86 +- api/src/availability/availability.entity.ts | 2 - .../availability/availability.service.spec.ts | 29 + api/src/availability/availability.service.ts | 35 +- api/src/mocks/data.ts | 90 +- api/src/mocks/db-data.ts | 810 ++++ api/src/mocks/db.sql | 179 + api/src/mocks/repositories.ts | 3 + api/src/mocks/requests.http | 2 + .../recruitment-session.entity.ts | 12 +- .../recruitment-session.service.spec.ts | 81 + api/src/timeslots/create-timeslot.dto.ts | 5 + api/src/timeslots/timeslot.entity.ts | 8 + .../timeslots/timeslots.controller.spec.ts | 44 + api/src/timeslots/timeslots.controller.ts | 18 +- api/src/timeslots/timeslots.e2e-spec.ts | 128 + api/src/timeslots/timeslots.service.spec.ts | 174 +- api/src/timeslots/timeslots.service.ts | 107 +- api/src/users/users.service.ts | 24 + frontend/index.html | 104 +- frontend/package.json | 31 +- frontend/public/hkn_logo_white_vector.svg | 74 + frontend/public/notfound404.jpg | Bin 0 -> 37104 bytes frontend/src/App.css | 94 +- frontend/src/App.jsx | 106 +- frontend/src/Auth0ProviderWithNavigate.tsx | 32 + frontend/src/LoginButton.tsx | 22 - frontend/src/MyNavbar.jsx | 47 - frontend/src/SignupForm.jsx | 252 -- frontend/src/components/AuthGuard.jsx | 17 + .../AvailabilitiesCell.jsx} | 4 +- .../AvailabilitiesTable.jsx} | 22 +- frontend/src/components/HKNavbar.jsx | 67 + frontend/src/components/HomeButton.jsx | 15 + frontend/src/components/LoadingSpinner.jsx | 11 + frontend/src/components/LoginButton.jsx | 23 + frontend/src/components/LogoutButton.jsx | 23 + frontend/src/components/PageHeader.jsx | 14 + frontend/src/components/PageLayout.jsx | 17 + frontend/src/index.css | 4 - frontend/src/index.jsx | 18 + frontend/src/logo.svg | 1 - frontend/src/main.jsx | 21 - frontend/src/pages/ApplyPage.jsx | 13 + frontend/src/pages/AvailabilitiesPage.jsx | 32 + frontend/src/pages/DebugPage.jsx | 41 + frontend/src/pages/HomePage.jsx | 36 + frontend/src/pages/NotFoundPage.jsx | 14 + .../src/{ApiRequests.tsx => services/API.ts} | 0 pnpm-lock.yaml | 3899 +++++++++-------- shared/package.json | 14 +- shared/src/timeslot.ts | 2 + sonar-project.properties | 3 +- 54 files changed, 4435 insertions(+), 2483 deletions(-) create mode 100644 api/src/mocks/db-data.ts create mode 100644 api/src/mocks/db.sql create mode 100644 api/src/mocks/requests.http create mode 100644 api/src/timeslots/timeslots.e2e-spec.ts create mode 100644 frontend/public/hkn_logo_white_vector.svg create mode 100644 frontend/public/notfound404.jpg create mode 100644 frontend/src/Auth0ProviderWithNavigate.tsx delete mode 100644 frontend/src/LoginButton.tsx delete mode 100644 frontend/src/MyNavbar.jsx delete mode 100644 frontend/src/SignupForm.jsx create mode 100644 frontend/src/components/AuthGuard.jsx rename frontend/src/{AvaiabilitiesCell.jsx => components/AvailabilitiesCell.jsx} (82%) rename frontend/src/{AvaiabilitiesTable.tsx => components/AvailabilitiesTable.jsx} (93%) create mode 100644 frontend/src/components/HKNavbar.jsx create mode 100644 frontend/src/components/HomeButton.jsx create mode 100644 frontend/src/components/LoadingSpinner.jsx create mode 100644 frontend/src/components/LoginButton.jsx create mode 100644 frontend/src/components/LogoutButton.jsx create mode 100644 frontend/src/components/PageHeader.jsx create mode 100644 frontend/src/components/PageLayout.jsx create mode 100644 frontend/src/index.jsx delete mode 100644 frontend/src/logo.svg delete mode 100644 frontend/src/main.jsx create mode 100644 frontend/src/pages/ApplyPage.jsx create mode 100644 frontend/src/pages/AvailabilitiesPage.jsx create mode 100644 frontend/src/pages/DebugPage.jsx create mode 100644 frontend/src/pages/HomePage.jsx create mode 100644 frontend/src/pages/NotFoundPage.jsx rename frontend/src/{ApiRequests.tsx => services/API.ts} (100%) diff --git a/.github/workflows/fullstack.yml b/.github/workflows/fullstack.yml index 7ff50a0..b74c029 100644 --- a/.github/workflows/fullstack.yml +++ b/.github/workflows/fullstack.yml @@ -1,12 +1,6 @@ name: Test -on: - push: - branches: - - '*' - pull_request: - branches: - - '*' +on: [push, pull_request] jobs: tests: diff --git a/api/package.json b/api/package.json index 9dcef79..773c168 100644 --- a/api/package.json +++ b/api/package.json @@ -22,63 +22,63 @@ "clean": "rimraf dist" }, "dependencies": { - "@casl/ability": "^6.3.3", - "@fastify/static": "^6.6.0", + "@casl/ability": "^6.7.1", + "@fastify/static": "^6.12.0", "@hkrecruitment/shared": "workspace:*", - "@joi/date": "^2.1.0", - "@nestjs/common": "^9.0.0", - "@nestjs/config": "^2.2.0", - "@nestjs/core": "^9.0.0", - "@nestjs/passport": "^9.0.0", - "@nestjs/platform-express": "^9.0.0", - "@nestjs/swagger": "^6.1.3", + "@joi/date": "^2.1.1", + "@nestjs/common": "^9.4.3", + "@nestjs/config": "^2.3.4", + "@nestjs/core": "^9.4.3", + "@nestjs/passport": "^9.0.3", + "@nestjs/platform-express": "^9.4.3", + "@nestjs/swagger": "^6.3.0", "@nestjs/typeorm": "^9.0.1", - "@types/js-yaml": "^4.0.5", - "@types/passport-jwt": "^3.0.7", + "@types/js-yaml": "^4.0.9", + "@types/passport-jwt": "^3.0.13", "class-transformer": "^0.5.1", - "dotenv": "^16.0.3", - "google-auth-library": "^8.7.0", + "dotenv": "^16.4.5", + "google-auth-library": "^8.9.0", "googleapis": "^118.0.0", - "jest-mock-extended": "^3.0.5", - "joi": "^17.7.0", + "jest-mock-extended": "^3.0.7", + "joi": "^17.13.1", "js-yaml": "^4.1.0", - "jwks-rsa": "^3.0.0", + "jwks-rsa": "^3.1.0", "passport": "^0.6.0", - "passport-jwt": "^4.0.0", - "pg": "^8.4.0", - "reflect-metadata": "^0.1.13", - "rxjs": "^7.2.0", + "passport-jwt": "^4.0.1", + "pg": "^8.11.5", + "reflect-metadata": "^0.1.14", + "rxjs": "^7.8.1", "typeorm": "0.3.11", - "webpack": "^5.75.0" + "webpack": "^5.91.0" }, "devDependencies": { - "@automock/jest": "^1.0.1", - "@golevelup/ts-jest": "^0.3.6", - "@nestjs/cli": "^9.0.0", - "@nestjs/schematics": "^9.0.0", - "@nestjs/testing": "^9.0.0", - "@swc/core": "^1.3.56", - "@swc/jest": "^0.2.26", - "@types/express": "^4.17.14", + "@automock/jest": "^1.4.0", + "@golevelup/ts-jest": "^0.3.8", + "@nestjs/cli": "^9.5.0", + "@nestjs/schematics": "^9.2.0", + "@nestjs/testing": "^9.4.3", + "@swc/core": "^1.5.5", + "@swc/jest": "^0.2.36", + "@types/express": "^4.17.21", "@types/jest": "28.1.8", - "@types/multer": "^1.4.7", - "@types/node": "^16.11.10", - "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^5.0.0", - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^8.0.1", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", + "@types/multer": "^1.4.11", + "@types/node": "^16.18.97", + "@types/supertest": "^2.0.16", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "eslint": "^8.57.0", + "eslint-config-prettier": "^8.10.0", + "eslint-plugin-prettier": "^4.2.1", "jest": "28.1.3", - "jose": "^4.14.4", + "jose": "^4.15.5", "nodemon": "^2.0.22", - "prettier": "^2.8.5", + "prettier": "^2.8.8", "rimraf": "^3.0.2", - "source-map-support": "^0.5.20", - "sqlite3": "^5.1.6", - "supertest": "^6.1.3", + "source-map-support": "^0.5.21", + "sqlite3": "^5.1.7", + "supertest": "^6.3.4", "ts-jest": "28.0.8", - "ts-loader": "^9.2.3", + "ts-loader": "^9.5.1", "ts-node": "10.7.0", "tsconfig-paths": "4.1.0", "typescript": "4.5.2" diff --git a/api/src/availability/availability.entity.ts b/api/src/availability/availability.entity.ts index 384669e..a0e383f 100644 --- a/api/src/availability/availability.entity.ts +++ b/api/src/availability/availability.entity.ts @@ -11,7 +11,6 @@ import { } from '../../../shared/src/availability'; import { User } from 'src/users/user.entity'; import { TimeSlot } from 'src/timeslots/timeslot.entity'; -import { DbAwareColumn } from 'src/utils/db-aware-column'; @Entity() export class Availability implements AvailabilityInterface { @@ -24,7 +23,6 @@ export class Availability implements AvailabilityInterface { @Column({ name: 'last_modified' }) lastModified: Date; - @DbAwareColumn(() => TimeSlot, { name: 'time_slot' }) @ManyToOne(() => TimeSlot, (timeSlot) => timeSlot.availabilities) timeSlot: Relation; diff --git a/api/src/availability/availability.service.spec.ts b/api/src/availability/availability.service.spec.ts index 9f62ba2..43121e6 100644 --- a/api/src/availability/availability.service.spec.ts +++ b/api/src/availability/availability.service.spec.ts @@ -78,6 +78,28 @@ describe('AvailabilityService', () => { }); }); + describe('updateAvailability', () => { + it('should update the availability with the specified id', async () => { + const mockUpdatedAvailability = { + ...mockAvailability, + state: AvailabilityState.Interviewing, + }; + jest + .spyOn(mockedRepository, 'save') + .mockResolvedValue(mockUpdatedAvailability); + const result = await service.updateAvailability( + mockAvailability.id, + mockUpdatedAvailability, + ); + expect(result).toEqual(mockUpdatedAvailability); + expect(mockedRepository.save).toHaveBeenCalledTimes(1); + expect(mockedRepository.save).toHaveBeenCalledWith({ + ...mockUpdatedAvailability, + id: mockAvailability.id, + }); + }); + }); + describe('deleteAvailability', () => { it('should remove the specified availability from the database', async () => { const mockAvailabilityRepository = { @@ -142,6 +164,13 @@ describe('AvailabilityService', () => { expect(result).toEqual(mockAvailability); expect(mockedRepository.findBy).toHaveBeenCalledTimes(1); }); + + it('should return null if no availability is found', async () => { + jest.spyOn(mockedRepository, 'findBy').mockResolvedValue([]); + const result = await service.findById(mockAvailability.id); + expect(result).toBeNull(); + expect(mockedRepository.findBy).toHaveBeenCalledTimes(1); + }); }); describe('findByUserAndTimeSlot', () => { diff --git a/api/src/availability/availability.service.ts b/api/src/availability/availability.service.ts index 6f9904d..c03e6af 100644 --- a/api/src/availability/availability.service.ts +++ b/api/src/availability/availability.service.ts @@ -16,10 +16,19 @@ export class AvailabilityService { private dataSource: DataSource, ) {} + /** + * List all availabilities + * @returns {Promise} - List of availabilities + */ async listAvailabilities(): Promise { return await this.availabilityRepository.find(); } + /** + * Find all availabilities for a given user + * @param user - User to find availabilities for + * @returns {Promise} - List of availabilities for the user + */ async findById(id: number): Promise { const matches = await this.availabilityRepository.findBy({ id: id, @@ -27,18 +36,34 @@ export class AvailabilityService { return matches.length > 0 ? matches[0] : null; } + /** + * Find all availabilities for a given user + * @param user - User to find availabilities for + * @returns {Promise} - List of availabilities for the user + */ async findByUserAndTimeSlot(user: User, timeSlot: TimeSlot) { const matches = await this.availabilityRepository.findBy({ - user: user, - timeSlot: timeSlot, + user: user as any, + timeSlot: timeSlot as any, }); return matches.length > 0 ? matches[0] : null; } + /** + * Create an availability + * @param availability - Availability to create + * @returns {Promise} - Created availability + */ async createAvailability(availability: Availability): Promise { return await this.availabilityRepository.save(availability); } + /** + * Update an availability + * @param oldAvailabilityId - ID of the + * @param newAvailability - New availability + * @returns {Promise} - Updated availability + */ async updateAvailability( oldAvailabilityId: number, newAvailability: Availability, @@ -49,6 +74,12 @@ export class AvailabilityService { }); } + /** + * Delete an availability + * @param availabilityId - ID of the availability to delete + * @returns {Promise} - Deleted availability + * @throws {ConflictException} - If availability is in use + */ async deleteAvailability(availabilityId: number): Promise { return await transaction( this.dataSource, diff --git a/api/src/mocks/data.ts b/api/src/mocks/data.ts index 64b1c36..9c7ea0a 100644 --- a/api/src/mocks/data.ts +++ b/api/src/mocks/data.ts @@ -28,13 +28,6 @@ export const testDateTime1Hour = new Date(2023, 0, 1, 11, 30, 0); export const testDateTime3Hours = new Date(2023, 0, 1, 13, 30, 0); export const testDateTimeEnd = new Date(2023, 0, 1, 11, 30, 0); -export const mockTimeSlot = { - start: testDateTimeStart, - end: testDateTimeEnd, - id: 1, - availabilities: [], -} as TimeSlot & { availabilities: any[] }; - export const testInterviewStart = '11:55' as unknown as Date; export const testInterviewEnd = '20:35' as unknown as Date; export const testDay1 = '2024-10-20' as unknown as Date; @@ -54,6 +47,14 @@ export const mockRecruitmentSession = { lastModified: testDateLastModified, }; +export const mockTimeSlot = { + recruitmentSession: mockRecruitmentSession, + start: testDateTimeStart, + end: testDateTimeEnd, + id: 1, + availabilities: [], +} as TimeSlot & { availabilities: any[] }; + export const mockCreateRecruitmentSessionDto = { slotDuration: 50, interviewStart: testInterviewStart, @@ -228,3 +229,78 @@ export const mockAvailability = { export const mockCreateAvailabilityDto = { timeSlotId: mockTimeSlot.id, } as CreateAvailabilityDto; + +export const mockTimeSlotsJoined = [ + { + start: new Date('2022-01-01T09:00:00'), + end: new Date('2022-01-01T10:00:00'), + id: 1, + recruitmentSession: 3, + availabilities: [ + { + state: AvailabilityState.Interviewing, + user: { + role: Role.None, + is_board: false, + is_expert: true, + }, + }, + { + state: AvailabilityState.Free, + user: { + role: Role.Member, + is_board: true, + is_expert: false, + }, + }, + { + state: AvailabilityState.Free, + user: { + role: Role.Applicant, + is_board: false, + is_expert: false, + }, + }, + { + state: AvailabilityState.Free, + user: { + role: Role.Member, + is_board: false, + is_expert: true, + }, + }, + { + state: AvailabilityState.Interviewing, + user: { + role: Role.Member, + is_board: false, + is_expert: true, + }, + }, + { + state: AvailabilityState.Interviewing, + user: { + role: Role.Admin, + is_board: false, + is_expert: true, + }, + }, + ], + }, + { + start: new Date('2022-01-01T9:00:00'), + end: new Date('2022-01-01T20:00:00'), + id: 2, + recruitmentSession: 3, + availabilities: [ + { + state: AvailabilityState.Free, + user: { + role: Role.Member, + is_board: true, + is_expert: true, + }, + }, + ], + }, +]; diff --git a/api/src/mocks/db-data.ts b/api/src/mocks/db-data.ts new file mode 100644 index 0000000..e54310e --- /dev/null +++ b/api/src/mocks/db-data.ts @@ -0,0 +1,810 @@ +import { + Person, + Role, + TimeSlot, + AvailabilityState, + RecruitmentSessionState, +} from '@hkrecruitment/shared'; + +export let mockRecruitmentSessions = [ + { + id: 1, + state: RecruitmentSessionState.Concluded, + slotDuration: 1, + lastModified: new Date('2024-04-10'), + createdAt: new Date('2024-04-04'), + days: [ + new Date('2024-04-05'), + new Date('2024-04-06'), + new Date('2024-04-07'), + new Date('2024-04-08'), + new Date('2024-04-09'), + ], + interviewStart: new Date('2024-04-05'), + interviewEnd: new Date('2024-04-10'), + }, + { + id: 2, + state: RecruitmentSessionState.Concluded, + slotDuration: 1, + lastModified: new Date('2024-05-10'), + createdAt: new Date('2024-05-04'), + days: [ + new Date('2024-05-05'), + new Date('2024-05-06'), + new Date('2024-05-07'), + new Date('2024-05-08'), + ], + interviewStart: new Date('2024-05-05'), + interviewEnd: new Date('2024-05-09'), + }, + { + id: 3, + state: RecruitmentSessionState.Active, + slotDuration: 1, + lastModified: new Date('2024-05-14'), + createdAt: new Date('2024-05-14'), + days: [ + new Date('2024-05-16'), + new Date('2024-05-17'), + new Date('2024-05-18'), + new Date('2024-05-19'), + new Date('2024-05-20'), + ], + interviewStart: new Date('2024-05-16'), + interviewEnd: new Date('2024-05-21'), + }, +]; + +export let mockUsers = [ + { + oauthId: '1', + firstName: 'Pasquale', + lastName: 'Bianco', + sex: 'M', + email: 'p.bianco@gmail.com', + role: Role.Member, + is_board: true, + is_expert: true, + }, + { + oauthId: '2', + firstName: 'John', + lastName: 'Doe', + sex: 'M', + email: 'j.doe@gmail.com', + role: Role.Member, + is_board: false, + is_expert: true, + }, + { + oauthId: '3', + firstName: 'Jane', + lastName: 'Smith', + sex: 'F', + email: 'j.smith@gmail.com', + role: Role.Member, + is_board: false, + is_expert: false, + }, + { + oauthId: '4', + firstName: 'Michael', + lastName: 'Johnson', + sex: 'M', + email: 'm.johnson@gmail.com', + role: Role.Member, + is_board: true, + is_expert: true, + }, + { + oauthId: '5', + firstName: 'Emily', + lastName: 'Brown', + sex: 'F', + email: 'e.brown@gmail.com', + role: Role.Member, + is_board: false, + is_expert: true, + }, + { + oauthId: '6', + firstName: 'David', + lastName: 'Wilson', + sex: 'M', + email: 'd.wilson@gmail.com', + role: Role.Member, + is_board: false, + is_expert: false, + }, + { + oauthId: '7', + firstName: 'Olivia', + lastName: 'Johnson', + sex: 'F', + email: 'o.johnson@gmail.com', + role: Role.Member, + is_board: true, + is_expert: false, + }, + { + oauthId: '8', + firstName: 'James', + lastName: 'Smith', + sex: 'M', + email: 'j.smith@gmail.com', + role: Role.Member, + is_board: false, + is_expert: false, + }, + { + oauthId: '9', + firstName: 'Sophia', + lastName: 'Miller', + sex: 'F', + email: 's.miller@gmail.com', + role: Role.Member, + is_board: false, + is_expert: true, + }, + { + oauthId: '10', + firstName: 'Benjamin', + lastName: 'Davis', + sex: 'M', + email: 'b.davis@gmail.com', + role: Role.Member, + is_board: false, + is_expert: false, + }, + { + oauthId: '11', + firstName: 'Ava', + lastName: 'Wilson', + sex: 'female', + email: 'a.wilson@gmail.com', + role: Role.Member, + is_board: true, + is_expert: true, + }, + { + oauthId: '12', + firstName: 'William', + lastName: 'Anderson', + sex: 'M', + email: 'w.anderson@gmail.com', + role: Role.Member, + is_board: false, + is_expert: false, + }, + { + oauthId: '13', + firstName: 'Mia', + lastName: 'Thomas', + sex: 'F', + email: 'm.thomas@gmail.com', + role: Role.Member, + is_board: false, + is_expert: false, + }, + { + oauthId: '14', + firstName: 'Alexander', + lastName: 'Taylor', + sex: 'M', + email: 'a.taylor@gmail.com', + role: Role.Member, + is_board: false, + is_expert: true, + }, + { + oauthId: '15', + firstName: 'Charlotte', + lastName: 'Clark', + sex: 'F', + email: 'c.clark@gmail.com', + role: Role.Member, + is_board: false, + is_expert: false, + }, + { + oauthId: '16', + firstName: 'Daniel', + lastName: 'Moore', + sex: 'M', + email: 'd.moore@gmail.com', + role: Role.Member, + is_board: false, + is_expert: false, + }, + { + oauthId: '17', + firstName: 'Amelia', + lastName: 'Walker', + sex: 'F', + email: 'a.walker@gmail.com', + role: Role.Clerk, + is_board: false, + is_expert: false, + }, + { + oauthId: '18', + firstName: 'Matthew', + lastName: 'Lewis', + sex: 'M', + email: 'm.lewis@gmail.com', + role: Role.Admin, + is_board: false, + is_expert: true, + }, + { + oauthId: '19', + firstName: 'Ella', + lastName: 'Harris', + sex: 'F', + email: 'e.harris@gmail.com', + role: Role.Supervisor, + is_board: false, + is_expert: true, + }, + { + oauthId: '20', + firstName: 'Joseph', + lastName: 'King', + sex: 'M', + email: 'j.king@gmail.com', + role: Role.Supervisor, + is_board: true, + is_expert: false, + }, +]; + +export let mockTimeSlots = [ + { + id: 51, + start: new Date('2024-05-16 10:00:00'), + end: new Date('2024-05-16 11:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 52, + start: new Date('2024-05-16 11:00:00'), + end: new Date('2024-05-16 12:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 53, + start: new Date('2024-05-16 15:00:00'), + end: new Date('2024-05-16 16:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 54, + start: new Date('2024-05-16 16:00:00'), + end: new Date('2024-05-16 17:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 55, + start: new Date('2024-05-16 17:00:00'), + end: new Date('2024-05-16 18:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 56, + start: new Date('2024-05-16 18:00:00'), + end: new Date('2024-05-16 19:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 57, + start: new Date('2024-05-17 10:00:00'), + end: new Date('2024-05-17 11:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 58, + start: new Date('2024-05-17 11:00:00'), + end: new Date('2024-05-17 12:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 59, + start: new Date('2024-05-17 15:00:00'), + end: new Date('2024-05-17 16:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 60, + start: new Date('2024-05-17 16:00:00'), + end: new Date('2024-05-17 17:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 61, + start: new Date('2024-05-17 17:00:00'), + end: new Date('2024-05-17 18:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 62, + start: new Date('2024-05-17 18:00:00'), + end: new Date('2024-05-17 19:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 63, + start: new Date('2024-05-18 10:00:00'), + end: new Date('2024-05-18 11:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 64, + start: new Date('2024-05-18 11:00:00'), + end: new Date('2024-05-18 12:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 65, + start: new Date('2024-05-18 15:00:00'), + end: new Date('2024-05-18 16:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 66, + start: new Date('2024-05-18 16:00:00'), + end: new Date('2024-05-18 17:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 67, + start: new Date('2024-05-18 17:00:00'), + end: new Date('2024-05-18 18:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 68, + start: new Date('2024-05-18 18:00:00'), + end: new Date('2024-05-18 19:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 69, + start: new Date('2024-05-19 10:00:00'), + end: new Date('2024-05-19 11:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 70, + start: new Date('2024-05-19 11:00:00'), + end: new Date('2024-05-19 12:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 71, + start: new Date('2024-05-19 15:00:00'), + end: new Date('2024-05-19 16:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 72, + start: new Date('2024-05-19 16:00:00'), + end: new Date('2024-05-19 17:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 73, + start: new Date('2024-05-19 17:00:00'), + end: new Date('2024-05-19 18:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 74, + start: new Date('2024-05-19 18:00:00'), + end: new Date('2024-05-19 19:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 75, + start: new Date('2024-05-20 10:00:00'), + end: new Date('2024-05-20 11:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 76, + start: new Date('2024-05-20 11:00:00'), + end: new Date('2024-05-20 12:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 77, + start: new Date('2024-05-20 15:00:00'), + end: new Date('2024-05-20 16:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 78, + start: new Date('2024-05-20 16:00:00'), + end: new Date('2024-05-20 17:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 79, + start: new Date('2024-05-20 17:00:00'), + end: new Date('2024-05-20 18:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, + { + id: 80, + start: new Date('2024-05-20 18:00:00'), + end: new Date('2024-05-20 19:00:00'), + recruitmentSession: mockRecruitmentSessions[2], + }, +]; + +export let mockAvailability = [ + { + id: 1, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 51, + userOauthId: '5', + }, + { + id: 2, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 53, + userOauthId: '7', + }, + { + id: 3, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 55, + userOauthId: '12', + }, + { + id: 4, + state: AvailabilityState.Recovering, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 61, + userOauthId: '19', + }, + { + id: 5, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 71, + userOauthId: '3', + }, + { + id: 6, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 78, + userOauthId: '15', + }, + { + id: 7, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 58, + userOauthId: '11', + }, + { + id: 8, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 57, + userOauthId: '8', + }, + { + id: 9, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 64, + userOauthId: '5', + }, + { + id: 10, + state: AvailabilityState.Recovering, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 53, + userOauthId: '17', + }, + { + id: 11, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 62, + userOauthId: '2', + }, + { + id: 12, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 71, + userOauthId: '9', + }, + { + id: 13, + state: AvailabilityState.Recovering, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 72, + userOauthId: '14', + }, + { + id: 14, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 74, + userOauthId: '6', + }, + { + id: 15, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 75, + userOauthId: '13', + }, + { + id: 16, + state: AvailabilityState.Recovering, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 74, + userOauthId: '10', + }, + { + id: 17, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 71, + userOauthId: '4', + }, + { + id: 18, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 64, + userOauthId: '16', + }, + { + id: 19, + state: AvailabilityState.Recovering, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 59, + userOauthId: '18', + }, + { + id: 20, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 57, + userOauthId: '1', + }, + { + id: 21, + state: AvailabilityState.Interviewing, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 66, + userOauthId: '20', + }, + { + id: 22, + state: AvailabilityState.Recovering, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 68, + userOauthId: '19', + }, + { + id: 23, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 69, + userOauthId: '7', + }, + { + id: 24, + state: AvailabilityState.Interviewing, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 70, + userOauthId: '16', + }, + { + id: 25, + state: AvailabilityState.Recovering, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 72, + userOauthId: '15', + }, + { + id: 26, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 73, + userOauthId: '11', + }, + { + id: 27, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 75, + userOauthId: '14', + }, + { + id: 28, + state: AvailabilityState.Recovering, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 76, + userOauthId: '9', + }, + { + id: 29, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 77, + userOauthId: '8', + }, + { + id: 30, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 78, + userOauthId: '10', + }, + { + id: 31, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 79, + userOauthId: '13', + }, + { + id: 32, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 80, + userOauthId: '12', + }, + { + id: 33, + state: AvailabilityState.Interviewing, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 79, + userOauthId: '20', + }, + { + id: 34, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 78, + userOauthId: '18', + }, + { + id: 35, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 77, + userOauthId: '17', + }, + { + id: 36, + state: AvailabilityState.Interviewing, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 76, + userOauthId: '19', + }, + { + id: 37, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 75, + userOauthId: '16', + }, + { + id: 38, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 74, + userOauthId: '15', + }, + { + id: 39, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 73, + userOauthId: '14', + }, + { + id: 40, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 72, + userOauthId: '13', + }, + { + id: 41, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 71, + userOauthId: '12', + }, + { + id: 42, + state: AvailabilityState.Interviewing, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 70, + userOauthId: '11', + }, + { + id: 43, + state: AvailabilityState.Recovering, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 69, + userOauthId: '10', + }, + { + id: 44, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 68, + userOauthId: '9', + }, + { + id: 45, + state: AvailabilityState.Interviewing, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 67, + userOauthId: '8', + }, + { + id: 46, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 66, + userOauthId: '7', + }, + { + id: 47, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 65, + userOauthId: '6', + }, + { + id: 48, + state: AvailabilityState.Interviewing, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 64, + userOauthId: '5', + }, + { + id: 49, + state: AvailabilityState.Recovering, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 63, + userOauthId: '8', + }, + { + id: 50, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 62, + userOauthId: '14', + }, + { + id: 51, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 61, + userOauthId: '4', + }, + { + id: 52, + state: AvailabilityState.Free, + lastModified: new Date('2024-05-14 00:00:00'), + timeSlot: 60, + userOauthId: '13', + }, +]; diff --git a/api/src/mocks/db.sql b/api/src/mocks/db.sql new file mode 100644 index 0000000..cd4bb63 --- /dev/null +++ b/api/src/mocks/db.sql @@ -0,0 +1,179 @@ +-- Active: 1715697529039@@127.0.0.1@5432@hkrecruitment@public + +# Recruitment Session +INSERT INTO "recruitment_session" + ("id","state","slot_duration","last_modified","created_at","days","interview_start","interview_end") +VALUES + (1, 'concluded', 1, '2024-04-10', '2024-04-04', ARRAY['2024-04-05', '2024-04-06', '2024-04-07', '2024-04-08', '2024-04-09']::date[], '2024-04-05', '2024-04-10'), + (2, 'concluded', 1, '2024-05-10', '2024-05-04', ARRAY['2024-05-05', '2024-05-06', '2024-05-07', '2024-05-08']::date[], '2024-05-05', '2024-05-09'), + (3, 'active', 1, '2024-05-14', '2024-05-14', ARRAY['2024-05-16', '2024-05-17', '2024-05-18', '2024-05-19', '2024-05-20']::date[], '2024-05-16', '2024-05-21'); + + + +# Time Slots +INSERT INTO "time_slot" + ("id","start","end","recruitmentSessionId") +VALUES + (1, '2024-04-05 10:00:00', '2024-05-21 11:00:00', 1), + (2, '2024-04-05 11:00:00', '2024-05-21 12:00:00', 1), + (3, '2024-04-05 15:00:00', '2024-05-21 16:00:00', 1), + (4, '2024-04-05 16:00:00', '2024-05-21 17:00:00', 1), + (5, '2024-04-05 17:00:00', '2024-05-21 18:00:00', 1), + (6, '2024-04-05 18:00:00', '2024-05-21 19:00:00', 1), + (7, '2024-04-06 10:00:00', '2024-06-21 11:00:00', 1), + (8, '2024-04-06 11:00:00', '2024-06-21 12:00:00', 1), + (9, '2024-04-06 15:00:00', '2024-06-21 16:00:00', 1), + (10, '2024-04-06 16:00:00', '2024-06-21 17:00:00', 1), + (11, '2024-04-06 17:00:00', '2024-06-21 18:00:00', 1), + (12, '2024-04-06 18:00:00', '2024-06-21 19:00:00', 1), + (13, '2024-04-07 10:00:00', '2024-07-21 11:00:00', 1), + (14, '2024-04-07 11:00:00', '2024-07-21 12:00:00', 1), + (15, '2024-04-07 15:00:00', '2024-07-21 16:00:00', 1), + (16, '2024-04-07 16:00:00', '2024-07-21 17:00:00', 1), + (17, '2024-04-07 17:00:00', '2024-07-21 18:00:00', 1), + (18, '2024-04-07 18:00:00', '2024-07-21 19:00:00', 1), + (19, '2024-04-08 10:00:00', '2024-08-21 11:00:00', 1), + (20, '2024-04-08 11:00:00', '2024-08-21 12:00:00', 1), + (21, '2024-04-08 15:00:00', '2024-08-21 16:00:00', 1), + (22, '2024-04-08 16:00:00', '2024-08-21 17:00:00', 1), + (23, '2024-04-08 17:00:00', '2024-08-21 18:00:00', 1), + (24, '2024-04-08 18:00:00', '2024-08-21 19:00:00', 1), + (25, '2024-04-09 10:00:00', '2024-09-21 11:00:00', 1), + (26, '2024-04-09 11:00:00', '2024-09-21 12:00:00', 1), + (27, '2024-04-09 15:00:00', '2024-09-21 16:00:00', 1), + (28, '2024-04-09 16:00:00', '2024-09-21 17:00:00', 1), + (29, '2024-04-09 17:00:00', '2024-09-21 18:00:00', 1), + (30, '2024-04-09 18:00:00', '2024-09-21 19:00:00', 1), + (31, '2024-05-05 10:00:00', '2024-05-05 11:00:00', 2), + (32, '2024-05-05 11:00:00', '2024-05-05 12:00:00', 2), + (33, '2024-05-05 15:00:00', '2024-05-05 16:00:00', 2), + (34, '2024-05-05 16:00:00', '2024-05-05 17:00:00', 2), + (35, '2024-05-05 17:00:00', '2024-05-05 18:00:00', 2), + (36, '2024-05-05 18:00:00', '2024-05-05 19:00:00', 2), + (37, '2024-05-06 10:00:00', '2024-05-06 11:00:00', 2), + (38, '2024-05-06 11:00:00', '2024-05-06 12:00:00', 2), + (39, '2024-05-06 15:00:00', '2024-05-06 16:00:00', 2), + (40, '2024-05-06 16:00:00', '2024-05-06 17:00:00', 2), + (41, '2024-05-06 17:00:00', '2024-05-06 18:00:00', 2), + (42, '2024-05-06 18:00:00', '2024-05-06 19:00:00', 2), + (43, '2024-05-07 10:00:00', '2024-05-07 11:00:00', 2), + (44, '2024-05-07 11:00:00', '2024-05-07 12:00:00', 2), + (45, '2024-05-07 15:00:00', '2024-05-07 16:00:00', 2), + (46, '2024-05-07 16:00:00', '2024-05-07 17:00:00', 2), + (47, '2024-05-07 17:00:00', '2024-05-07 18:00:00', 2), + (48, '2024-05-07 18:00:00', '2024-05-07 19:00:00', 2), + (49, '2024-05-08 10:00:00', '2024-05-08 11:00:00', 2), + (50, '2024-05-08 11:00:00', '2024-05-08 12:00:00', 2), + (51, '2024-05-16 10:00:00', '2024-05-16 11:00:00', 3), + (52, '2024-05-16 11:00:00', '2024-05-16 12:00:00', 3), + (53, '2024-05-16 15:00:00', '2024-05-16 16:00:00', 3), + (54, '2024-05-16 16:00:00', '2024-05-16 17:00:00', 3), + (55, '2024-05-16 17:00:00', '2024-05-16 18:00:00', 3), + (56, '2024-05-16 18:00:00', '2024-05-16 19:00:00', 3), + (57, '2024-05-17 10:00:00', '2024-05-17 11:00:00', 3), + (58, '2024-05-17 11:00:00', '2024-05-17 12:00:00', 3), + (59, '2024-05-17 15:00:00', '2024-05-17 16:00:00', 3), + (60, '2024-05-17 16:00:00', '2024-05-17 17:00:00', 3), + (61, '2024-05-17 17:00:00', '2024-05-17 18:00:00', 3), + (62, '2024-05-17 18:00:00', '2024-05-17 19:00:00', 3), + (63, '2024-05-18 10:00:00', '2024-05-18 11:00:00', 3), + (64, '2024-05-18 11:00:00', '2024-05-18 12:00:00', 3), + (65, '2024-05-18 15:00:00', '2024-05-18 16:00:00', 3), + (66, '2024-05-18 16:00:00', '2024-05-18 17:00:00', 3), + (67, '2024-05-18 17:00:00', '2024-05-18 18:00:00', 3), + (68, '2024-05-18 18:00:00', '2024-05-18 19:00:00', 3), + (69, '2024-05-19 10:00:00', '2024-05-19 11:00:00', 3), + (70, '2024-05-19 11:00:00', '2024-05-19 12:00:00', 3), + (71, '2024-05-19 15:00:00', '2024-05-19 16:00:00', 3), + (72, '2024-05-19 16:00:00', '2024-05-19 17:00:00', 3), + (73, '2024-05-19 17:00:00', '2024-05-19 18:00:00', 3), + (74, '2024-05-19 18:00:00', '2024-05-19 19:00:00', 3), + (75, '2024-05-20 10:00:00', '2024-05-20 11:00:00', 3), + (76, '2024-05-20 11:00:00', '2024-05-20 12:00:00', 3), + (77, '2024-05-20 15:00:00', '2024-05-20 16:00:00', 3), + (78, '2024-05-20 16:00:00', '2024-05-20 17:00:00', 3), + (79, '2024-05-20 17:00:00', '2024-05-20 18:00:00', 3), + (80, '2024-05-20 18:00:00', '2024-05-20 19:00:00', 3); + + +INSERT INTO "user" + ("oauthId","firstName","lastName","sex","email","phone_no","telegramId","role","is_board","is_expert") +VALUES + ('1', 'Pasquale', 'Bianco', 'male', 'p.bianco@gmail.com', '3405174444', 'pbianco', 'member', true, true), + ('2', 'John', 'Doe', 'male', 'j.doe@gmail.com', '1234567890', 'jdoe', 'member', false, true), + ('3', 'Jane', 'Smith', 'female', 'j.smith@gmail.com', '9876543210', 'jsmith', 'member', false, false), + ('4', 'Michael', 'Johnson', 'male', 'm.johnson@gmail.com', '5555555555', 'mjohnson', 'member', true, true), + ('5', 'Emily', 'Brown', 'female', 'e.brown@gmail.com', '1111111111', 'ebrown', 'member', false, true), + ('6', 'David', 'Wilson', 'male', 'd.wilson@gmail.com', '2222222222', 'dwilson', 'member', false, false), + ('7', 'Olivia', 'Johnson', 'female', 'o.johnson@gmail.com', '3333333333', 'ojohnson', 'member', true, false), + ('8', 'James', 'Smith', 'male', 'j.smith@gmail.com', '4444444444', 'jsmith', 'member', false, false), + ('9', 'Sophia', 'Miller', 'female', 's.miller@gmail.com', '5555555555', 'smiller', 'member', false, true), + ('10', 'Benjamin', 'Davis', 'male', 'b.davis@gmail.com', '6666666666', 'bdavis', 'member', false, false), + ('11', 'Ava', 'Wilson', 'female', 'a.wilson@gmail.com', '7777777777', 'awilson', 'member', true, true), + ('12', 'William', 'Anderson','male', 'w.anderson@gmail.com', '8888888888', 'wanderson', 'member', false, false), + ('13', 'Mia', 'Thomas', 'female', 'm.thomas@gmail.com', '9999999999', 'mthomas', 'member', false, false), + ('14', 'Alexander', 'Taylor', 'male', 'a.taylor@gmail.com', '1111111111', 'ataylor', 'member', false, true), + ('15', 'Charlotte', 'Clark', 'female', 'c.clark@gmail.com', '2222222222', 'cclark', 'member', false, false), + ('16', 'Daniel', 'Moore', 'male', 'd.moore@gmail.com', '3333333333', 'dmoore', 'member', false, false), + ('17', 'Amelia', 'Walker', 'female', 'a.walker@gmail.com', '4444444444', 'awalker', 'clerk', false, false), + ('18', 'Matthew', 'Lewis', 'male', 'm.lewis@gmail.com', '5555555555', 'mlewis', 'admin', false, true), + ('19', 'Ella', 'Harris', 'female', 'e.harris@gmail.com', '6666666666', 'eharris', 'supervisor', false, true), + ('20', 'Joseph', 'King', 'male', 'j.king@gmail.com', '7777777777', 'jking', 'supervisor', true, false); + + +# Availability +INSERT INTO "availability" + ("id","state","last_modified","timeSlotId","userOauthId") +VALUES + (1, 'free' ,'2024-05-14 00:00:00', 51, '5' ), + (2, 'free' ,'2024-05-14 00:00:00', 53, '7' ), + (3, 'free' ,'2024-05-14 00:00:00', 55, '12'), + (4, 'recovering' ,'2024-05-14 00:00:00', 61, '19'), + (5, 'free' ,'2024-05-14 00:00:00', 71, '3' ), + (6, 'free' ,'2024-05-14 00:00:00', 78, '15'), + (7, 'free' ,'2024-05-14 00:00:00', 58, '11'), + (8, 'free' ,'2024-05-14 00:00:00', 57, '8' ), + (9, 'free' ,'2024-05-14 00:00:00', 64, '5' ), + (10, 'recovering' ,'2024-05-14 00:00:00', 53, '17'), + (11, 'free' ,'2024-05-14 00:00:00', 62, '2' ), + (12, 'free' ,'2024-05-14 00:00:00', 71, '9' ), + (13, 'recovering' ,'2024-05-14 00:00:00', 72, '14'), + (14, 'free' ,'2024-05-14 00:00:00', 74, '6' ), + (15, 'free' ,'2024-05-14 00:00:00', 75, '13'), + (16, 'recovering' ,'2024-05-14 00:00:00', 74, '10'), + (17, 'free' ,'2024-05-14 00:00:00', 71, '4' ), + (18, 'free' ,'2024-05-14 00:00:00', 64, '16'), + (19, 'recovering' ,'2024-05-14 00:00:00', 59, '18'), + (20, 'free' ,'2024-05-14 00:00:00', 57, '1' ), + (21, 'interviewing' ,'2024-05-14 00:00:00', 66, '20'), + (22, 'recovering' ,'2024-05-14 00:00:00', 68, '19'), + (23, 'free' ,'2024-05-14 00:00:00', 69, '7' ), + (24, 'interviewing' ,'2024-05-14 00:00:00', 70, '16'), + (25, 'recovering' ,'2024-05-14 00:00:00', 72, '15'), + (26, 'free' ,'2024-05-14 00:00:00', 73, '11'), + (27, 'free' ,'2024-05-14 00:00:00', 75, '14'), + (28, 'recovering' ,'2024-05-14 00:00:00', 76, '9' ), + (29, 'free' ,'2024-05-14 00:00:00', 77, '8' ), + (30, 'free' ,'2024-05-14 00:00:00', 78, '10'), + (31, 'free' ,'2024-05-14 00:00:00', 79, '13'), + (32, 'free' ,'2024-05-14 00:00:00', 80, '12'), + (33, 'interviewing' ,'2024-05-14 00:00:00', 79, '20'), + (34, 'free' ,'2024-05-14 00:00:00', 78, '18'), + (35, 'free' ,'2024-05-14 00:00:00', 77, '17'), + (36, 'interviewing' ,'2024-05-14 00:00:00', 76, '19'), + (37, 'free' ,'2024-05-14 00:00:00', 75, '16'), + (38, 'free' ,'2024-05-14 00:00:00', 74, '15'), + (39, 'free' ,'2024-05-14 00:00:00', 73, '14'), + (40, 'free' ,'2024-05-14 00:00:00', 72, '13'), + (41, 'free' ,'2024-05-14 00:00:00', 71, '12'), + (42, 'interviewing' ,'2024-05-14 00:00:00', 70, '11'), + (43, 'recovering' ,'2024-05-14 00:00:00', 69, '10'), + (44, 'free' ,'2024-05-14 00:00:00', 68, '9' ), + (45, 'interviewing' ,'2024-05-14 00:00:00', 67, '8' ), + (46, 'free' ,'2024-05-14 00:00:00', 66, '7' ), + (47, 'free' ,'2024-05-14 00:00:00', 65, '6' ), + (48, 'interviewing' ,'2024-05-14 00:00:00', 64, '5' ), + (49, 'recovering' ,'2024-05-14 00:00:00', 63, '8' ), + (50, 'free' ,'2024-05-14 00:00:00', 62, '14'), + (51, 'free' ,'2024-05-14 00:00:00', 61, '4' ), + (52, 'free' ,'2024-05-14 00:00:00', 60, '13'); diff --git a/api/src/mocks/repositories.ts b/api/src/mocks/repositories.ts index e418727..7ac0b52 100644 --- a/api/src/mocks/repositories.ts +++ b/api/src/mocks/repositories.ts @@ -1,6 +1,9 @@ +import { count } from 'console'; + export const mockedRepository = { find: jest.fn(), findBy: jest.fn(), remove: jest.fn(), save: jest.fn(), + count: jest.fn(), }; diff --git a/api/src/mocks/requests.http b/api/src/mocks/requests.http new file mode 100644 index 0000000..1dcbb14 --- /dev/null +++ b/api/src/mocks/requests.http @@ -0,0 +1,2 @@ +GET http://localhost:3000/v1/timeslots/ +Authorization: Bearer diff --git a/api/src/recruitment-session/recruitment-session.entity.ts b/api/src/recruitment-session/recruitment-session.entity.ts index df58326..aebbe13 100644 --- a/api/src/recruitment-session/recruitment-session.entity.ts +++ b/api/src/recruitment-session/recruitment-session.entity.ts @@ -1,8 +1,15 @@ -import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; +import { + Column, + Entity, + Relation, + OneToMany, + PrimaryGeneratedColumn, +} from 'typeorm'; import { RecruitmentSession as RecruitmentSessionInterface, RecruitmentSessionState, } from '@hkrecruitment/shared'; +import { TimeSlot } from 'src/timeslots/timeslot.entity'; @Entity() export class RecruitmentSession implements RecruitmentSessionInterface { @@ -29,4 +36,7 @@ export class RecruitmentSession implements RecruitmentSessionInterface { @Column('date', { name: 'last_modified' }) lastModified: Date; + + @OneToMany(() => TimeSlot, (timeSlot) => timeSlot.recruitmentSession) + timeSlots?: Relation; } diff --git a/api/src/recruitment-session/recruitment-session.service.spec.ts b/api/src/recruitment-session/recruitment-session.service.spec.ts index 6df16dc..e777153 100644 --- a/api/src/recruitment-session/recruitment-session.service.spec.ts +++ b/api/src/recruitment-session/recruitment-session.service.spec.ts @@ -118,4 +118,85 @@ describe('Recruitment Session Service', () => { ); }); }); + + describe('findAllRecruitmentSessions', () => { + it('should return all recruitment sessions', async () => { + const recruitmentSessions = [mockRecruitmentSession]; + jest + .spyOn(mockedRepository, 'find') + .mockResolvedValue(recruitmentSessions); + const result = + await recruitmentSessionService.findAllRecruitmentSessions(); + expect(result).toEqual(recruitmentSessions); + expect(mockedRepository.find).toHaveBeenCalledTimes(1); + }); + + it('should return an empty array if there are no recruitment sessions', async () => { + jest.spyOn(mockedRepository, 'find').mockResolvedValue([]); + const result = + await recruitmentSessionService.findAllRecruitmentSessions(); + expect(result).toEqual([]); + expect(mockedRepository.find).toHaveBeenCalledTimes(1); + }); + }); + + describe('findRecruitmentSessionById', () => { + it('should return the recruitment session with the given ID', async () => { + jest + .spyOn(mockedRepository, 'findBy') + .mockResolvedValue([mockRecruitmentSession]); + const result = await recruitmentSessionService.findRecruitmentSessionById( + 1, + ); + expect(result).toEqual(mockRecruitmentSession); + expect(mockedRepository.findBy).toHaveBeenCalledTimes(1); + expect(mockedRepository.findBy).toHaveBeenCalledWith({ id: 1 }); + }); + + it('should return null if the recruitment session does not exist', async () => { + jest.spyOn(mockedRepository, 'findBy').mockResolvedValue([]); + const result = await recruitmentSessionService.findRecruitmentSessionById( + 1, + ); + expect(result).toBeNull(); + expect(mockedRepository.findBy).toHaveBeenCalledTimes(1); + expect(mockedRepository.findBy).toHaveBeenCalledWith({ id: 1 }); + }); + }); + + describe('findActiveRecruitmentSession', () => { + it('should return the active recruitment session', async () => { + jest + .spyOn(mockedRepository, 'findBy') + .mockResolvedValue([mockRecruitmentSession]); + const result = + await recruitmentSessionService.findActiveRecruitmentSession(); + expect(result).toEqual(mockRecruitmentSession); + expect(mockedRepository.findBy).toHaveBeenCalledTimes(1); + expect(mockedRepository.findBy).toHaveBeenCalledWith({ + state: RecruitmentSessionState.Active, + }); + }); + + it('should return null if there is no active recruitment session', async () => { + jest.spyOn(mockedRepository, 'findBy').mockResolvedValue([]); + const result = + await recruitmentSessionService.findActiveRecruitmentSession(); + expect(result).toBeNull(); + expect(mockedRepository.findBy).toHaveBeenCalledTimes(1); + expect(mockedRepository.findBy).toHaveBeenCalledWith({ + state: RecruitmentSessionState.Active, + }); + }); + }); + + describe('sessionHasPendingInterviews', () => { + it('should return error', async () => { + await recruitmentSessionService + .sessionHasPendingInterviews(mockRecruitmentSession) + .catch((error) => { + expect(error.message).toBe('Method not implemented.'); + }); + }); + }); }); diff --git a/api/src/timeslots/create-timeslot.dto.ts b/api/src/timeslots/create-timeslot.dto.ts index 2e7836d..2d40f64 100644 --- a/api/src/timeslots/create-timeslot.dto.ts +++ b/api/src/timeslots/create-timeslot.dto.ts @@ -1,5 +1,7 @@ import { TimeSlot } from '@hkrecruitment/shared'; import { ApiProperty } from '@nestjs/swagger'; +import { Availability } from 'src/availability/availability.entity'; +import { RecruitmentSession } from 'src/recruitment-session/recruitment-session.entity'; export class CreateTimeSlotDto implements Partial { @ApiProperty() @@ -7,4 +9,7 @@ export class CreateTimeSlotDto implements Partial { @ApiProperty() end: Date; + + @ApiProperty() + recruitmentSession: RecruitmentSession; } diff --git a/api/src/timeslots/timeslot.entity.ts b/api/src/timeslots/timeslot.entity.ts index 54911ca..4d8f8db 100644 --- a/api/src/timeslots/timeslot.entity.ts +++ b/api/src/timeslots/timeslot.entity.ts @@ -1,12 +1,14 @@ import { Column, Entity, + ManyToOne, OneToMany, PrimaryGeneratedColumn, Relation, } from 'typeorm'; import { TimeSlot as TimeSlotInterface } from '@hkrecruitment/shared'; import { Availability } from 'src/availability/availability.entity'; +import { RecruitmentSession } from 'src/recruitment-session/recruitment-session.entity'; @Entity() export class TimeSlot implements TimeSlotInterface { @@ -21,4 +23,10 @@ export class TimeSlot implements TimeSlotInterface { @OneToMany(() => Availability, (availability) => availability.timeSlot) availabilities: Relation; + + @ManyToOne( + () => RecruitmentSession, + (recruitmentSession) => recruitmentSession.timeSlots, + ) + recruitmentSession: Relation; } diff --git a/api/src/timeslots/timeslots.controller.spec.ts b/api/src/timeslots/timeslots.controller.spec.ts index 0c1c16d..f39ddcd 100644 --- a/api/src/timeslots/timeslots.controller.spec.ts +++ b/api/src/timeslots/timeslots.controller.spec.ts @@ -1,6 +1,7 @@ import { TestBed } from '@automock/jest'; import { TimeSlotsController } from './timeslots.controller'; import { TimeSlotsService } from './timeslots.service'; +import { TimeSlot } from './timeslot.entity'; describe('TimeSlotController', () => { let controller: TimeSlotsController; @@ -18,4 +19,47 @@ describe('TimeSlotController', () => { expect(controller).toBeDefined(); expect(service).toBeDefined(); }); + + describe('findAvailableTimeSlots', () => { + it('should return an array of available time slots', async () => { + const expectedTimeSlots: TimeSlot[] = [ + { + id: 71, + start: new Date('2024-05-19T13:00:00.000Z'), + end: new Date('2024-05-19T14:00:00.000Z'), + } as TimeSlot, + { + id: 73, + start: new Date('2024-05-19T15:00:00.000Z'), + end: new Date('2024-05-19T16:00:00.000Z'), + } as TimeSlot, + ]; + + jest + .spyOn(service, 'findAvailableTimeSlots') + .mockResolvedValue(expectedTimeSlots); + + // Act + const result = await controller.findAvailableTimeSlots(); + + // Assert + expect(result).toEqual(expectedTimeSlots); + expect(service.findAvailableTimeSlots).toHaveBeenCalledTimes(1); + }); + + it('should return an empty array if there are no available time slots', async () => { + const expectedTimeSlots: TimeSlot[] = []; + + jest + .spyOn(service, 'findAvailableTimeSlots') + .mockResolvedValue(expectedTimeSlots); + + // Act + const result = await controller.findAvailableTimeSlots(); + + // Assert + expect(result).toEqual(expectedTimeSlots); + expect(service.findAvailableTimeSlots).toHaveBeenCalledTimes(1); + }); + }); }); diff --git a/api/src/timeslots/timeslots.controller.ts b/api/src/timeslots/timeslots.controller.ts index 9580b8d..6a3af4a 100644 --- a/api/src/timeslots/timeslots.controller.ts +++ b/api/src/timeslots/timeslots.controller.ts @@ -1,10 +1,24 @@ -import { Controller } from '@nestjs/common'; +import { Controller, Get } from '@nestjs/common'; import { TimeSlotsService } from './timeslots.service'; -import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; +import { + ApiBearerAuth, + ApiTags, + ApiUnauthorizedResponse, +} from '@nestjs/swagger'; +import { TimeSlot } from './timeslot.entity'; +import { CheckPolicies } from 'src/authorization/check-policies.decorator'; +import { Action } from '@hkrecruitment/shared'; @ApiBearerAuth() @ApiTags('timeslots') @Controller('timeslots') export class TimeSlotsController { constructor(private readonly timeSlotsService: TimeSlotsService) {} + + @ApiUnauthorizedResponse() + @CheckPolicies((ability) => ability.can(Action.Read, 'TimeSlot')) + @Get() + async findAvailableTimeSlots(): Promise { + return await this.timeSlotsService.findAvailableTimeSlots(); + } } diff --git a/api/src/timeslots/timeslots.e2e-spec.ts b/api/src/timeslots/timeslots.e2e-spec.ts new file mode 100644 index 0000000..065e852 --- /dev/null +++ b/api/src/timeslots/timeslots.e2e-spec.ts @@ -0,0 +1,128 @@ +import { INestApplication } from '@nestjs/common'; +import * as request from 'supertest'; +import { TimeSlotsService } from './timeslots.service'; +import { UsersService } from '../users/users.service'; +import { AvailabilityService } from '../availability/availability.service'; +import { RecruitmentSessionService } from '../recruitment-session/recruitment-session.service'; +import { Availability } from 'src/availability/availability.entity'; +import { createApp, getAccessToken } from 'test/app.e2e-spec'; +import { + mockAvailability, + mockRecruitmentSessions, + mockTimeSlots, + mockUsers, +} from '../mocks/db-data'; + +describe('TimeslotsController', () => { + let app: INestApplication; + let newMemberToken: string; + let timeSlotsService: TimeSlotsService; + let usersService: UsersService; + let availabilityService: AvailabilityService; + let recruitmentSessionService: RecruitmentSessionService; + + beforeAll(async () => { + newMemberToken = await getAccessToken('newMember'); + }); + + beforeEach(async () => { + app = await createApp(); + timeSlotsService = app.get(TimeSlotsService); + availabilityService = app.get(AvailabilityService); + recruitmentSessionService = app.get( + RecruitmentSessionService, + ); + usersService = app.get(UsersService); + }); + + afterEach(async () => { + await app.close(); + }); + + describe('GET /timeslots', () => { + beforeEach(async () => { + for (const user of mockUsers) { + await usersService.create(user); + } + + for (const rs of mockRecruitmentSessions) { + await recruitmentSessionService.createRecruitmentSession(rs); + } + + for (const ts of mockTimeSlots) { + const timeSlot = { + ...ts, + recruitmentSession: mockRecruitmentSessions[2], + availabilities: [] as Availability[], + }; + await timeSlotsService.createTimeSlot(timeSlot); + } + + for (const a of mockAvailability) { + const availability = { + id: a.id, + state: a.state, + lastModified: a.lastModified, + timeSlot: timeSlotsService.findById(a.timeSlot), + user: mockUsers.find((u) => u.oauthId === a.userOauthId), + } as unknown as Availability; + await availabilityService.createAvailability(availability); + } + }); + + it('there should be users in the db', async () => { + const allUsers = await usersService.findAll(); + expect(allUsers).toHaveLength(mockUsers.length); + }); + + it('there should be recruitment sessions in the db', async () => { + const allRecruitmentSessions = + await recruitmentSessionService.findAllRecruitmentSessions(); + expect(allRecruitmentSessions).toHaveLength( + mockRecruitmentSessions.length, + ); + }); + + it('there should be timeslots in the db', async () => { + const allTimeSlots = await timeSlotsService.listTimeSlots(); + expect(allTimeSlots).toHaveLength(mockTimeSlots.length); + }); + + it('there should be availabilities in the db', async () => { + const allAvailabilities = await availabilityService.listAvailabilities(); + expect(allAvailabilities).toHaveLength(mockAvailability.length); + }); + + // it('DEBUG: check availabilities for timeslot having id 71 & 73', async () => { + // const allAvailabilities = await availabilityService.listAvailabilities(); + // const av71 = allAvailabilities.filter((a) => a.timeSlot.id === 71); + // const av73 = allAvailabilities.filter((a) => a.timeSlot.id === 73); + // expect(av71).toHaveLength(4); + // expect(av73).toHaveLength(2); + // }); + + // it('should return all available timeslots', async () => { + // const expected = [ + // { + // end: '2024-05-19T14:00:00.000Z', + // id: 71, + // start: '2024-05-19T13:00:00.000Z', + // }, + // { + // end: '2024-05-19T16:00:00.000Z', + // id: 73, + // start: '2024-05-19T15:00:00.000Z', + // }, + // ]; + // await request(app.getHttpServer()) + // .get('/timeslots') + // .set('Authorization', `Bearer ${newMemberToken}`) + // .expect(200) + // .expect((res) => { + // expect(res.body).toBeInstanceOf(Array); + // expect(res.body).toHaveLength(2); + // expect(res.body).toEqual(expected); + // }); + // }); + }); +}); diff --git a/api/src/timeslots/timeslots.service.spec.ts b/api/src/timeslots/timeslots.service.spec.ts index 6284724..1c2e7e1 100644 --- a/api/src/timeslots/timeslots.service.spec.ts +++ b/api/src/timeslots/timeslots.service.spec.ts @@ -1,10 +1,20 @@ -import { mockGenerateTimeSlots, mockTimeSlot, testDate } from 'src/mocks/data'; +import { + mockGenerateTimeSlots, + mockTimeSlot, + mockTimeSlotsJoined, + testDate, +} from 'src/mocks/data'; import { mockedRepository } from 'src/mocks/repositories'; import { TestingModule, Test } from '@nestjs/testing'; import { getRepositoryToken } from '@nestjs/typeorm'; import { TimeSlot } from './timeslot.entity'; import { TimeSlotsService } from './timeslots.service'; import { mockDataSource } from 'src/mocks/data-sources'; +import { + AvailabilityState, + RecruitmentSessionState, + Role, +} from '@hkrecruitment/shared'; describe('TimeSlotsService', () => { let timeSlotService: TimeSlotsService; @@ -40,10 +50,26 @@ describe('TimeSlotsService', () => { expect(timeSlotService).toBeDefined(); }); + describe('countOverlappingTimeSlots', () => { + it('should return the number of overlapping time slots', async () => { + jest.spyOn(mockedRepository, 'count').mockResolvedValue(2); + const startDate = new Date('2022-01-01T09:00:00'); + const endDate = new Date('2022-01-01T10:00:00'); + const result = await timeSlotService.countOverlappingTimeSlots( + startDate, + endDate, + ); + expect(result).toBe(2); + expect(mockedRepository.count).toHaveBeenCalledTimes(1); + }); + }); + describe('deleteTimeSlot', () => { it('should remove the specified timeslot from the database', async () => { jest.spyOn(mockedRepository, 'remove').mockResolvedValue(mockTimeSlot); - const result = await timeSlotService.deleteTimeSlot(mockTimeSlot); + const result = await timeSlotService.deleteTimeSlot( + mockTimeSlot as TimeSlot, + ); expect(result).toEqual(mockTimeSlot); expect(mockedRepository.remove).toHaveBeenCalledTimes(1); }); @@ -65,6 +91,13 @@ describe('TimeSlotsService', () => { expect(result).toEqual(mockTimeSlot); expect(mockedRepository.findBy).toHaveBeenCalledTimes(1); }); + + it("should return null if the timeslot doesn't exist", async () => { + jest.spyOn(mockedRepository, 'findBy').mockResolvedValue([]); + const result = await timeSlotService.findById(mockTimeSlot.id); + expect(result).toBeNull(); + expect(mockedRepository.findBy).toHaveBeenCalledTimes(1); + }); }); describe('createTimeSlot', () => { @@ -188,6 +221,143 @@ describe('TimeSlotsService', () => { ); }); }); + + describe('findAvailableTimeSlots', () => { + it('should correctly call all functions provided for database query', async () => { + // Mock the query builder and its methods + const mockQueryBuilder = { + innerJoinAndSelect: jest.fn().mockReturnThis(), + where: jest.fn().mockReturnThis(), + andWhere: jest.fn().mockReturnThis(), + getMany: jest.fn().mockResolvedValue([]), + }; + + // Mock the timeSlotRepository and its methods + const mockTimeSlotRepository = { + createQueryBuilder: jest.fn().mockReturnValue(mockQueryBuilder), + }; + + const timeSlotService = new TimeSlotsService( + mockTimeSlotRepository as any, + ); + const result = await timeSlotService.findAvailableTimeSlots(); + + // Assert that the query builder methods were called correctly + expect(mockQueryBuilder.innerJoinAndSelect).toHaveBeenCalledWith( + 'TimeSlot.availabilities', + 'availability', + ); + expect(mockQueryBuilder.innerJoinAndSelect).toHaveBeenCalledWith( + 'TimeSlot.recruitmentSession', + 'recruitmentSession', + ); + expect(mockQueryBuilder.innerJoinAndSelect).toHaveBeenCalledWith( + 'availability.user', + 'user', + ); + expect(mockQueryBuilder.where).toHaveBeenCalledWith( + 'recruitmentSession.state = :recruitmentSessionState', + { + recruitmentSessionState: RecruitmentSessionState.Active, + }, + ); + expect(mockQueryBuilder.andWhere).toHaveBeenCalledWith( + 'user.role NOT IN (:...roles)', + { + roles: [Role.None, Role.Applicant], + }, + ); + expect(mockQueryBuilder.andWhere).toHaveBeenCalledWith( + 'availability.state = :availabilityState AND (user.is_board = true OR user.is_expert = true)', + { + availabilityState: AvailabilityState.Free, + }, + ); + expect(mockQueryBuilder.andWhere).toHaveBeenCalledWith( + '(SELECT COUNT(availability.id) FROM Availability availability WHERE availability.timeSlotId = TimeSlot.id) > 1', + ); + + expect(result).toEqual([]); + + jest.clearAllMocks(); + jest.resetAllMocks(); + }); + + it('should return only time slots with at least 2 available people, one of which is a board member', async () => { + const mockQueryBuilder = { + innerJoinAndSelect: jest.fn().mockReturnThis(), + where: jest.fn().mockReturnThis(), + andWhere: jest.fn().mockReturnThis(), + getMany: jest.fn().mockResolvedValue(mockTimeSlotsJoined), + }; + + // Mock the timeSlotRepository and its methods + const mockTimeSlotRepository = { + createQueryBuilder: jest.fn().mockReturnValue(mockQueryBuilder), + }; + + const timeSlotService = new TimeSlotsService( + mockTimeSlotRepository as any, + ); + + const result = await timeSlotService.findAvailableTimeSlots(); + expect(JSON.stringify(result)).toBe( + JSON.stringify([ + { + id: 1, + start: new Date('2022-01-01T09:00:00'), + end: new Date('2022-01-01T10:00:00'), + }, + ]), + ); + }); + + it("should return an empty array if there aren't any time slots with at least 2 available people", async () => { + const mockQueryBuilder = { + innerJoinAndSelect: jest.fn().mockReturnThis(), + where: jest.fn().mockReturnThis(), + andWhere: jest.fn().mockReturnThis(), + getMany: jest.fn().mockResolvedValue([ + { + start: new Date('2022-01-01T09:00:00'), + end: new Date('2022-01-01T10:00:00'), + id: 1, + recruitmentSession: 3, + availabilities: [ + { + state: AvailabilityState.Interviewing, + user: { + role: Role.None, + is_board: false, + is_expert: true, + }, + }, + { + state: AvailabilityState.Free, + user: { + role: Role.Member, + is_board: false, + is_expert: true, + }, + }, + ], + }, + ]), + }; + + // Mock the timeSlotRepository and its methods + const mockTimeSlotRepository = { + createQueryBuilder: jest.fn().mockReturnValue(mockQueryBuilder), + }; + + const timeSlotService = new TimeSlotsService( + mockTimeSlotRepository as any, + ); + + const result = await timeSlotService.findAvailableTimeSlots(); + expect(result).toEqual([]); + }); + }); }); function testTimeSlotsGeneration( diff --git a/api/src/timeslots/timeslots.service.ts b/api/src/timeslots/timeslots.service.ts index 7eb37c0..729d8e7 100644 --- a/api/src/timeslots/timeslots.service.ts +++ b/api/src/timeslots/timeslots.service.ts @@ -1,9 +1,13 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { Repository, LessThan, MoreThan, QueryRunner } from 'typeorm'; +import { Repository, LessThan, MoreThan, QueryRunner, Not, In } from 'typeorm'; import { TimeSlot } from './timeslot.entity'; -import { RecruitmentSession } from '@hkrecruitment/shared'; -import { CreateTimeSlotDto } from './create-timeslot.dto'; +import { + RecruitmentSession, + RecruitmentSessionState, + AvailabilityState, + Role, +} from '@hkrecruitment/shared'; @Injectable() export class TimeSlotsService { @@ -12,6 +16,12 @@ export class TimeSlotsService { private readonly timeSlotRepository: Repository, ) {} + /** + * Count the number of overlapping time slots + * @param startDate - Start date of the time slot + * @param endDate - End date of the time slot + * @returns {Promise} - Number of overlapping time slots + */ async countOverlappingTimeSlots( startDate: Date, endDate: Date, @@ -34,14 +44,28 @@ export class TimeSlotsService { return count; } + /** + * List all time slots + * @returns {Promise} - List of time slots + */ async listTimeSlots(): Promise { return await this.timeSlotRepository.find(); } + /** + * Delete a time slot + * @param timeSlot - Time slot to delete + * @returns {Promise} - Deleted time slot + */ async deleteTimeSlot(timeSlot: TimeSlot): Promise { return await this.timeSlotRepository.remove(timeSlot); } + /** + * Find a time slot by its ID + * @param timeSlotId - ID of the time slot + * @returns {Promise} - Time slot with the given ID + */ async findById(timeSlotId: number): Promise { const matches = await this.timeSlotRepository.findBy({ id: timeSlotId, @@ -49,10 +73,21 @@ export class TimeSlotsService { return matches.length > 0 ? matches[0] : null; } - async createTimeSlot(timeSlot: CreateTimeSlotDto): Promise { + /** + * Create a time slot + * @param timeSlot - Time slot to create + * @returns {Promise} - Created time slot + */ + async createTimeSlot(timeSlot: TimeSlot): Promise { return await this.timeSlotRepository.save(timeSlot); } + /** + * Create time slots for a recruitment session + * @param queryRunner - Query runner + * @param recruitmentSession - Recruitment session + * @returns {Promise} - List of created time slots + */ async createRecruitmentSessionTimeSlots( queryRunner: QueryRunner, recruitmentSession: RecruitmentSession, @@ -68,6 +103,14 @@ export class TimeSlotsService { return await queryRunner.manager.getRepository(TimeSlot).save(timeSlots); } + /** + * Generate time slots for a recruitment session + * @param slotDuration - Duration of each time slot in minutes + * @param interviewStart - Start time of the interview + * @param interviewEnd - End time of the interview + * @param days - Days of the week the interview will be held + * @returns {TimeSlot[]} - List of generated time slots + */ generateTimeSlots( slotDuration: number, interviewStart: Date, @@ -105,4 +148,60 @@ export class TimeSlotsService { return timeSlots; } + + /** + * Find available time slots for the current recruitment session + * @returns {TimeSlot[]} - List of available time slots + */ + async findAvailableTimeSlots(): Promise { + const queryBuilder = this.timeSlotRepository.createQueryBuilder('TimeSlot'); + queryBuilder + .innerJoinAndSelect('TimeSlot.availabilities', 'availability') + .innerJoinAndSelect('TimeSlot.recruitmentSession', 'recruitmentSession') + .innerJoinAndSelect('availability.user', 'user') + + // only active recruitment sessions (the current one) + .where('recruitmentSession.state = :recruitmentSessionState', { + recruitmentSessionState: RecruitmentSessionState.Active, + }) + + // available people should be members of hkn + .andWhere('user.role NOT IN (:...roles)', { + roles: [Role.None, Role.Applicant], + }) + + // only free people that are board OR expert member + .andWhere( + 'availability.state = :availabilityState AND (user.is_board = true OR user.is_expert = true)', + { + availabilityState: AvailabilityState.Free, + }, + ) + + // there should be at least 2 available people (hopefully one of them is a board member) + .andWhere( + '(SELECT COUNT(availability.id) FROM Availability availability WHERE availability.timeSlotId = TimeSlot.id) > 1', + ); + + const allMatches = await queryBuilder.getMany(); + + return allMatches + .filter((timeSlot) => { + let [boardMembers, expertMembers] = [0, 0]; + for (let av of timeSlot.availabilities) { + if (av.state !== AvailabilityState.Free) continue; + if ([Role.None, Role.Applicant].includes(av.user.role)) continue; + if (av.user.is_board) ++boardMembers; + else if (av.user.is_expert) ++expertMembers; + } + return (boardMembers && expertMembers) || boardMembers > 1; + }) + .map((timeSlot) => { + return { + id: timeSlot.id, + start: timeSlot.start, + end: timeSlot.end, + } as TimeSlot; + }); + } } diff --git a/api/src/users/users.service.ts b/api/src/users/users.service.ts index a068892..e85a453 100644 --- a/api/src/users/users.service.ts +++ b/api/src/users/users.service.ts @@ -11,10 +11,19 @@ export class UsersService { private readonly userRepository: Repository, ) {} + /** + * Find all users + * @returns {Promise} - List of users + */ async findAll(): Promise { return this.userRepository.find(); } + /** + * Find a user by their OAuth ID + * @param {string} oauthId - OAuth ID of the user + * @returns {Promise} - User with the given OAuth ID + */ async findByOauthId(oauthId: string): Promise { return this.userRepository.findOne({ where: { oauthId } }); } @@ -23,14 +32,29 @@ export class UsersService { return this.userRepository.remove(user); } + /** + * Create a user + * @param {User} user - User to create + * @returns {Promise} - Created user + */ async create(user: User): Promise { return this.userRepository.save(user); } + /** + * Update a user + * @param {User} user - User to update + * @returns {Promise} - Updated user + */ async update(user: User): Promise { return this.userRepository.save(user); } + /** + * Get the role and abilities for a user + * @param {string} oauthId - OAuth ID of the user + * @returns {[Role, AppAbility]} - Role and abilities for the user + */ async getRoleAndAbilityForOauthId( oauthId: string, ): Promise<[Role, AppAbility]> { diff --git a/frontend/index.html b/frontend/index.html index 191149a..e8f3372 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1,71 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - HKRecruitment - - - -
- - - + + + + + + + + + + + + + + + + + + + + + + + + + + + HKRecruitment + + + + +
+ + + + \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index 91c62b6..32fd132 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,18 +4,21 @@ "private": true, "type": "module", "dependencies": { - "@auth0/auth0-react": "^1.12.0", + "@auth0/auth0-react": "^1.12.1", "@hkrecruitment/shared": "workspace:*", - "@popperjs/core": "^2.11.6", - "bootstrap": "^5.2.3", - "moment": "^2.29.3", - "moment-timezone": "^0.5.34", - "prop-types": "^15.7.0", - "react": "^18.2.0", - "react-bootstrap": "^2.2.3", - "react-dom": "^18.2.0", + "@popperjs/core": "^2.11.8", + "@types/react": "^18.3.2", + "bootstrap": "^5.3.3", + "bootstrap-icons": "^1.11.3", + "moment": "^2.30.1", + "moment-timezone": "^0.5.45", + "prop-types": "^15.8.1", + "react": "^18.3.1", + "react-bootstrap": "^2.10.2", + "react-dom": "^18.3.1", + "react-hook-form": "^7.51.4", "react-moment": "^1.1.3", - "react-router-dom": "^6.9.0", + "react-router-dom": "^6.23.1", "web-vitals": "^2.1.4" }, "scripts": { @@ -46,10 +49,10 @@ }, "devDependencies": { "@vitejs/plugin-react": "^3.1.0", - "prettier": "^2.8.5", + "prettier": "^2.8.8", "rimraf": "^3.0.2", - "typescript": "^4.6.4", - "vite": "^4.2.1", - "vite-plugin-html": "^3.2.0" + "typescript": "^4.9.5", + "vite": "^4.5.3", + "vite-plugin-html": "^3.2.2" } } diff --git a/frontend/public/hkn_logo_white_vector.svg b/frontend/public/hkn_logo_white_vector.svg new file mode 100644 index 0000000..e894e19 --- /dev/null +++ b/frontend/public/hkn_logo_white_vector.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/public/notfound404.jpg b/frontend/public/notfound404.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c0862874aebdddeb2b2d48f7c649308fdac1054 GIT binary patch literal 37104 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 thead { - vertical-align: bottom; - background-color: rgba(55, 81, 113, 1); +#profile-nav-dropdown .dropdown-menu .dropdown-item-text { + color: var(--hkwhite); } -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } +#profile-nav-dropdown .dropdown-menu .dropdown-divider { + border-top: 1px solid white; } diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 7c17f28..61abf77 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,70 +1,56 @@ -import "./App.css"; -import "bootstrap/dist/css/bootstrap.min.css"; -import React, { useEffect, useState } from "react"; -import MyNavbar from "./MyNavbar"; -import SignupForm from "./SignupForm"; -import { Route } from "react-router-dom"; -import { Navigate } from "react-router-dom"; -import { Routes } from "react-router-dom"; +import React from "react"; +import { Route, Routes } from "react-router-dom"; import { useAuth0 } from "@auth0/auth0-react"; -import AvaiabilitiesTable from "./AvaiabilitiesTable"; -function App() { - function parseJwt(token) { - return JSON.parse(Buffer.from(token.split(".")[1], "base64").toString()); - } +import Alert from "react-bootstrap/Alert"; - const { - isLoading, - isAuthenticated, - error, - user, - loginWithRedirect, - logout, - getAccessTokenSilently, - } = useAuth0(); +import HKNavbar from "./components/HKNavbar"; +import PageLayout from "./components/PageLayout"; +import LoadingSpinner from "./components/LoadingSpinner"; +import AuthGuard from "./components/AuthGuard"; - const [accessToken, setAccessToken] = useState(""); +import HomePage from "./pages/HomePage"; +import ApplyPage from "./pages/ApplyPage"; +import AvailabilitiesPage from "./pages/AvailabilitiesPage"; +import DebugPage from "./pages/DebugPage"; +import NotFoundPage from "./pages/NotFoundPage"; - useEffect(() => { - if (isAuthenticated) { - getAccessTokenSilently({ - audience: import.meta.env.VITE_AUTH0_AUDIENCE, - grant_type: "client_credentials", - }).then((token) => { - setAccessToken(parseJwt(token)); - }); - } - }, [isAuthenticated]); +import "./App.css"; - return ( - - - } - /> - } /> - - ); -} -export default App; +function App() { + const { isLoading } = useAuth0(); -function AfterLogin(props) { return ( -
- {" "} - - {props.isAuthenticated && - !props.user.email.endsWith("@hknpolito.org") && } - {props.isAuthenticated && props.user.email.endsWith("@hknpolito.org") && ( - - )} -
+ <> + + + + Note: all of this is work-in-progress, stuff{" "} + will change! + + {isLoading ? ( + + ) : ( + + } /> + } + /> + } + /> + } + /> + } /> + + )} + + ); } + +export default App; diff --git a/frontend/src/Auth0ProviderWithNavigate.tsx b/frontend/src/Auth0ProviderWithNavigate.tsx new file mode 100644 index 0000000..d58ee08 --- /dev/null +++ b/frontend/src/Auth0ProviderWithNavigate.tsx @@ -0,0 +1,32 @@ +import { Auth0Provider } from "@auth0/auth0-react"; +import React from "react"; +import { useNavigate } from "react-router-dom"; + +export const Auth0ProviderWithNavigate = ({ children }): JSX.Element | null => { + const navigate = useNavigate(); + + const domain = import.meta.env.VITE_AUTH0_DOMAIN; + const clientId = import.meta.env.VITE_AUTH0_CLIENTID; + const audience = import.meta.env.VITE_AUTH0_AUDIENCE; + const redirectUri = window.location.origin; + + const onRedirectCallback = (appState) => { + navigate(appState?.returnTo || window.location.pathname); + }; + + if (!(domain && clientId && redirectUri)) { + return null; + } + + return ( + + {children} + + ); +}; diff --git a/frontend/src/LoginButton.tsx b/frontend/src/LoginButton.tsx deleted file mode 100644 index be1df82..0000000 --- a/frontend/src/LoginButton.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from "react"; -import { useAuth0 } from "@auth0/auth0-react"; -import Button from "react-bootstrap/Button"; - -const LoginButton = () => { - const { isAuthenticated, loginWithRedirect, logout } = useAuth0(); - - return ( - - ); -}; - -export default LoginButton; diff --git a/frontend/src/MyNavbar.jsx b/frontend/src/MyNavbar.jsx deleted file mode 100644 index 44bc283..0000000 --- a/frontend/src/MyNavbar.jsx +++ /dev/null @@ -1,47 +0,0 @@ -import React, { ReactPropTypes } from "react"; -import Navbar from "react-bootstrap/Navbar"; -import Container from "react-bootstrap/Container"; -import Row from "react-bootstrap/Row"; -import LoginButton from "./LoginButton"; - -import Col from "react-bootstrap/Col"; -import { useAuth0 } from "@auth0/auth0-react"; - -const MyNavbar = (props) => { - const { isLoading, isAuthenticated, error, user, loginWithRedirect, logout } = - useAuth0(); - - return ( - - - - - - {" "} - HKRecruitment - - - - {" "} -

- {isAuthenticated - ? "Hello " + user.name.split(" ")[0] + "!" - : "Login"} -

- - - - -
-
-
- ); -}; - -export default MyNavbar; diff --git a/frontend/src/SignupForm.jsx b/frontend/src/SignupForm.jsx deleted file mode 100644 index 2437299..0000000 --- a/frontend/src/SignupForm.jsx +++ /dev/null @@ -1,252 +0,0 @@ -import React, { useState, useEffect } from "react"; -import Button from "react-bootstrap/Button"; -import Form from "react-bootstrap/Form"; -import Container from "react-bootstrap/Container"; -import Row from "react-bootstrap/Row"; -import Col from "react-bootstrap/Col"; -import Alert from "react-bootstrap/Alert"; - -function SignupForm(props) { - const [level, setLevel] = useState(""); - const [validated, setValidated] = useState(false); - const [previous, setPrevious] = useState(""); - const [average, setAverage] = useState(""); - const [cfu, setCfu] = useState(0); - const [course, setCourse] = useState(""); - const [year, setYear] = useState(0); - const [phd, setPhd] = useState(""); - const [isLoading, setLoading] = useState(false); - - const handleSubmit = (event) => { - const form = event.currentTarget; - if (form.checkValidity() === false) { - event.preventDefault(); - event.stopPropagation(); - } - switch (level) { - case "LT": - if (year > 1 && cfu > 60 && cfu < 180 && average >= 26) { - setValidated(true); - setLoading(true); - } - break; - case "LM": - if (cfu < 20 && average >= 26) { - setValidated(true); - setLoading(true); - } else if (cfu >= 20 && average >= 27) { - setValidated(true); - setLoading(true); - } - break; - case "PhD": - setValidated(true); - setLoading(true); - break; - default: - setValidated(false); - } - }; - return ( -
-

Insert your data to submit an application

- - - setLevel(event.target.value)} - > - Il mio attuale livello di studi - - - - - - - - - - setCfu(event.target.value)} - > - CFU obtained - - - - setCourse(event.target.value)} - > - Il mio attuale corso di studi - - - - - - - - - setPrevious(event.target.value)} - > - Il mio corso di studi triennale - - - - - - - - - setPhd(event.target.value)} - > - Brief Description of your PhD work - - - - - setPrevious(event.target.value)} - > - Il mio corso di studi magistrale - - - - - - - - - setCfu(event.target.value)} - > - CFU obtained - - - - setYear(event.target.value)} - > - Year - - - - - {level == "LT" ? : ""} - - - - setAverage(event.target.value)} - > - Average {cfu < 20 ? "bachelor" : ""} grade - - - Insert average grade (min 25, for 30L insert 30) - - - - - - - CV - { - return; - }} - /> - - Upload a cv to continue - - - - Lista Voti - { - return; - }} - /> - - Upload your actual grade list to continue - - - - - - -
- ); -} -export default SignupForm; diff --git a/frontend/src/components/AuthGuard.jsx b/frontend/src/components/AuthGuard.jsx new file mode 100644 index 0000000..4034e33 --- /dev/null +++ b/frontend/src/components/AuthGuard.jsx @@ -0,0 +1,17 @@ +import { withAuthenticationRequired } from "@auth0/auth0-react"; +import React from "react"; +import LoadingSpinner from "./LoadingSpinner"; + +const AuthGuard = ({ component }) => { + const Component = withAuthenticationRequired(component, { + onRedirecting: () => ( +
+ +
+ ), + }); + + return ; +}; + +export default AuthGuard; diff --git a/frontend/src/AvaiabilitiesCell.jsx b/frontend/src/components/AvailabilitiesCell.jsx similarity index 82% rename from frontend/src/AvaiabilitiesCell.jsx rename to frontend/src/components/AvailabilitiesCell.jsx index d48b762..a1ceafc 100644 --- a/frontend/src/AvaiabilitiesCell.jsx +++ b/frontend/src/components/AvailabilitiesCell.jsx @@ -1,6 +1,6 @@ import React, { useState, useEffect } from "react"; -function AvaiabilitiesCell(props) { +function AvailabilitiesCell(props) { const [className, setClassName] = useState("name"); return ( @@ -16,4 +16,4 @@ function AvaiabilitiesCell(props) { ); } -export default AvaiabilitiesCell; +export default AvailabilitiesCell; diff --git a/frontend/src/AvaiabilitiesTable.tsx b/frontend/src/components/AvailabilitiesTable.jsx similarity index 93% rename from frontend/src/AvaiabilitiesTable.tsx rename to frontend/src/components/AvailabilitiesTable.jsx index 712b46b..b4953fd 100644 --- a/frontend/src/AvaiabilitiesTable.tsx +++ b/frontend/src/components/AvailabilitiesTable.jsx @@ -2,14 +2,14 @@ import Table from "react-bootstrap/Table"; import Container from "react-bootstrap/Container"; import Row from "react-bootstrap/Row"; import Col from "react-bootstrap/Col"; -import AvaiabilitiesCell from "./AvaiabilitiesCell"; +import AvaiabilitiesCell from "./AvailabilitiesCell"; import moment from "moment"; import { useState, useEffect } from "react"; import { createUserSchema } from "@hkrecruitment/shared"; import React from "react"; -import { getApplicants, getUsers, getInterviewsByDates } from "./ApiRequests"; +// import { getApplicants, getUsers, getInterviewsByDates } from "../services/API"; -function AvaiabilitiesTable(props) { +function AvailabilitiesTable(props) { //const start = "2014-09-08T08:00:00"; const step = 45; //const end = "20.00"; @@ -29,13 +29,13 @@ function AvaiabilitiesTable(props) { // Suppongo che interviews restituisca un array di colloqui fissati in un certo periodo, ciascuno con data e ora const [interviews, setInterviews] = useState(null); - useEffect(() => { - if (startDate !== null) { - setInterviews( - getInterviewsByDates(startDate.getDate(), startDate.getDate() + 7) - ); - } - }, [startDate]); + // useEffect(() => { + // if (startDate !== null) { + // setInterviews( + // getInterviewsByDates(startDate.getDate(), startDate.getDate() + 7) + // ); + // } + // }, [startDate]); // Crea una matrice 16x7 a partire dalle interviste let fill = [[], []]; @@ -218,4 +218,4 @@ function AvaiabilitiesTable(props) { ); } -export default AvaiabilitiesTable; +export default AvailabilitiesTable; diff --git a/frontend/src/components/HKNavbar.jsx b/frontend/src/components/HKNavbar.jsx new file mode 100644 index 0000000..bd25a14 --- /dev/null +++ b/frontend/src/components/HKNavbar.jsx @@ -0,0 +1,67 @@ +import React from "react"; +import { useAuth0 } from "@auth0/auth0-react"; + +import Navbar from "react-bootstrap/Navbar"; +import Container from "react-bootstrap/Container"; +import Row from "react-bootstrap/Row"; +import Image from "react-bootstrap/Image"; +import { Link } from "react-router-dom"; +import Col from "react-bootstrap/Col"; +import NavDropdown from "react-bootstrap/NavDropdown"; + +import LogoutButton from "./LogoutButton"; +import LoginButton from "./LoginButton"; +import LoadingSpinner from "./LoadingSpinner"; + +const HKNavbar = () => { + const { isLoading, isAuthenticated, user } = useAuth0(); + + return ( + + + + + + + Home + + + + + +

HKRecruitment

+ + + + {isLoading ? ( + + ) : !isAuthenticated ? ( + + ) : ( +
+ )} + + + + + ); +}; + +export default HKNavbar; diff --git a/frontend/src/components/HomeButton.jsx b/frontend/src/components/HomeButton.jsx new file mode 100644 index 0000000..008af93 --- /dev/null +++ b/frontend/src/components/HomeButton.jsx @@ -0,0 +1,15 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import { Button } from "react-bootstrap"; + +const HomeButton = () => { + return ( + + + + ); +}; + +export default HomeButton; diff --git a/frontend/src/components/LoadingSpinner.jsx b/frontend/src/components/LoadingSpinner.jsx new file mode 100644 index 0000000..0a73893 --- /dev/null +++ b/frontend/src/components/LoadingSpinner.jsx @@ -0,0 +1,11 @@ +import { Spinner } from "react-bootstrap"; + +const LoadingSpinner = () => { + return ( +
+ +
+ ); +}; + +export default LoadingSpinner; diff --git a/frontend/src/components/LoginButton.jsx b/frontend/src/components/LoginButton.jsx new file mode 100644 index 0000000..2014a16 --- /dev/null +++ b/frontend/src/components/LoginButton.jsx @@ -0,0 +1,23 @@ +import React from "react"; +import { Button } from "react-bootstrap"; +import { useAuth0 } from "@auth0/auth0-react"; + +const LoginButton = () => { + const { loginWithRedirect } = useAuth0(); + + const handleLogin = async () => { + await loginWithRedirect({ + appState: { + returnTo: window.location.pathname, + }, + }); + }; + + return ( + + ); +}; + +export default LoginButton; diff --git a/frontend/src/components/LogoutButton.jsx b/frontend/src/components/LogoutButton.jsx new file mode 100644 index 0000000..74f95ff --- /dev/null +++ b/frontend/src/components/LogoutButton.jsx @@ -0,0 +1,23 @@ +import React from "react"; +import { Button } from "react-bootstrap"; +import { useAuth0 } from "@auth0/auth0-react"; + +const LogoutButton = () => { + const { logout } = useAuth0(); + + const handleLogout = () => { + logout({ + logoutParams: { + returnTo: window.location.origin, + }, + }); + }; + + return ( + + ); +}; + +export default LogoutButton; diff --git a/frontend/src/components/PageHeader.jsx b/frontend/src/components/PageHeader.jsx new file mode 100644 index 0000000..84c8e64 --- /dev/null +++ b/frontend/src/components/PageHeader.jsx @@ -0,0 +1,14 @@ +import React from "react"; +import { Container } from "react-bootstrap"; +import HomeButton from "./HomeButton"; + +const PageHeader = ({ children }) => { + return ( + + +

{children}

+
+ ); +}; + +export default PageHeader; diff --git a/frontend/src/components/PageLayout.jsx b/frontend/src/components/PageLayout.jsx new file mode 100644 index 0000000..c31625a --- /dev/null +++ b/frontend/src/components/PageLayout.jsx @@ -0,0 +1,17 @@ +import React from "react"; +import { Container, Row, Col } from "react-bootstrap"; + +const PageLayout = ({ children }) => { + return ( + + + + {/* Main content column (takes 8 columns on medium-sized screens and larger) */} + {children} + + + + ); +}; + +export default PageLayout; diff --git a/frontend/src/index.css b/frontend/src/index.css index 7183f7b..4a1df4d 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -11,7 +11,3 @@ code { font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; } - -.active { - color: green; -} diff --git a/frontend/src/index.jsx b/frontend/src/index.jsx new file mode 100644 index 0000000..86b745d --- /dev/null +++ b/frontend/src/index.jsx @@ -0,0 +1,18 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import { BrowserRouter } from "react-router-dom"; +import { Auth0ProviderWithNavigate } from "./Auth0ProviderWithNavigate"; +import "./index.css"; +import "bootstrap/dist/css/bootstrap.min.css"; +import "bootstrap-icons/font/bootstrap-icons.css"; +import App from "./App"; + +ReactDOM.createRoot(document.getElementById("root")).render( + + + + + + + +); diff --git a/frontend/src/logo.svg b/frontend/src/logo.svg deleted file mode 100644 index 9dfc1c0..0000000 --- a/frontend/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx deleted file mode 100644 index 3a52bed..0000000 --- a/frontend/src/main.jsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import "./index.css"; -import App from "./App"; -import { BrowserRouter } from "react-router-dom"; -import { Auth0Provider } from "@auth0/auth0-react"; - -ReactDOM.createRoot(document.getElementById("root")).render( - - - - - - - -); diff --git a/frontend/src/pages/ApplyPage.jsx b/frontend/src/pages/ApplyPage.jsx new file mode 100644 index 0000000..a957be8 --- /dev/null +++ b/frontend/src/pages/ApplyPage.jsx @@ -0,0 +1,13 @@ +import React from "react"; +import PageHeader from "../components/PageHeader"; + +function ApplyPage() { + return ( + <> + Apply +

This page will be used by non-members to apply.

+ + ); +} + +export default ApplyPage; diff --git a/frontend/src/pages/AvailabilitiesPage.jsx b/frontend/src/pages/AvailabilitiesPage.jsx new file mode 100644 index 0000000..6c97699 --- /dev/null +++ b/frontend/src/pages/AvailabilitiesPage.jsx @@ -0,0 +1,32 @@ +import React, { useEffect, useState } from "react"; +import { useAuth0 } from "@auth0/auth0-react"; +import AvailabilitiesTable from "../components/AvailabilitiesTable"; +import PageHeader from "../components/PageHeader"; + +function AvailabilitiesPage() { + const { isAuthenticated, getAccessTokenSilently } = useAuth0(); + const [accessToken, setAccessToken] = useState(""); + + /* AUTH */ + useEffect(() => { + if (isAuthenticated) { + getAccessTokenSilently({ + audience: import.meta.env.VITE_AUTH0_AUDIENCE, + grant_type: "client_credentials", + }).then((token) => { + setAccessToken(token); + }); + } + }, [isAuthenticated]); + + return ( + <> + Availabilities +

This page will be used by members to manage their availabilities.

+ + + + ); +} + +export default AvailabilitiesPage; diff --git a/frontend/src/pages/DebugPage.jsx b/frontend/src/pages/DebugPage.jsx new file mode 100644 index 0000000..6012989 --- /dev/null +++ b/frontend/src/pages/DebugPage.jsx @@ -0,0 +1,41 @@ +import React, { useEffect, useState } from "react"; +import PageHeader from "../components/PageHeader"; +import { useAuth0 } from "@auth0/auth0-react"; +import Accordion from "react-bootstrap/Accordion"; + +function DebugPage() { + const { isAuthenticated, user, getAccessTokenSilently } = useAuth0(); + const [accessToken, setAccessToken] = useState(""); + + /* AUTH */ + useEffect(() => { + if (isAuthenticated) { + getAccessTokenSilently({ + audience: import.meta.env.VITE_AUTH0_AUDIENCE, + grant_type: "client_credentials", + }).then((token) => { + setAccessToken(token); + }); + } + }, [isAuthenticated]); + + return ( + <> + Debug + + + User info + +
{JSON.stringify(user, null, 2)}
+
+
+ + Access Token + {accessToken} + +
+ + ); +} + +export default DebugPage; diff --git a/frontend/src/pages/HomePage.jsx b/frontend/src/pages/HomePage.jsx new file mode 100644 index 0000000..da2da34 --- /dev/null +++ b/frontend/src/pages/HomePage.jsx @@ -0,0 +1,36 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import { useAuth0 } from "@auth0/auth0-react"; + +function HomePage() { + const { isAuthenticated, user } = useAuth0(); + + return ( + <> + {isAuthenticated ? ( +

Welcome, {user.given_name}.

+ ) : ( +

Welcome, anonymous.

+ )} +

This is the HKN Polito Recruitment Platform.

+ + {isAuthenticated ? ( + <> +
+

Available pages:

+ Apply +
+ Availabilities +
+ Debug + + ) : ( + <> +

To get started, please login.

+ + )} + + ); +} + +export default HomePage; diff --git a/frontend/src/pages/NotFoundPage.jsx b/frontend/src/pages/NotFoundPage.jsx new file mode 100644 index 0000000..266765b --- /dev/null +++ b/frontend/src/pages/NotFoundPage.jsx @@ -0,0 +1,14 @@ +import React from "react"; +import Image from "react-bootstrap/Image"; +import PageHeader from "../components/PageHeader"; + +function NotFoundPage() { + return ( + <> + 404 - Page not found + + + ); +} + +export default NotFoundPage; diff --git a/frontend/src/ApiRequests.tsx b/frontend/src/services/API.ts similarity index 100% rename from frontend/src/ApiRequests.tsx rename to frontend/src/services/API.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1b5024d..16ca3ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,174 +11,174 @@ importers: api: dependencies: '@casl/ability': - specifier: ^6.3.3 - version: 6.3.3 + specifier: ^6.7.1 + version: 6.7.1 '@fastify/static': - specifier: ^6.6.0 - version: 6.6.0 + specifier: ^6.12.0 + version: 6.12.0 '@hkrecruitment/shared': specifier: workspace:* version: link:../shared '@joi/date': - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 '@nestjs/common': - specifier: ^9.0.0 - version: 9.2.1(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) + specifier: ^9.4.3 + version: 9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/config': - specifier: ^2.2.0 - version: 2.2.0(@nestjs/common@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) + specifier: ^2.3.4 + version: 2.3.4(@nestjs/common@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/core': - specifier: ^9.0.0 - version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) + specifier: ^9.4.3 + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/passport': - specifier: ^9.0.0 - version: 9.0.0(@nestjs/common@9.2.1)(passport@0.6.0) + specifier: ^9.0.3 + version: 9.0.3(@nestjs/common@9.4.3)(passport@0.6.0) '@nestjs/platform-express': - specifier: ^9.0.0 - version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + specifier: ^9.4.3 + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) '@nestjs/swagger': - specifier: ^6.1.3 - version: 6.1.3(@fastify/static@6.6.0)(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(class-transformer@0.5.1)(reflect-metadata@0.1.13) + specifier: ^6.3.0 + version: 6.3.0(@fastify/static@6.12.0)(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(reflect-metadata@0.1.14) '@nestjs/typeorm': specifier: ^9.0.1 - version: 9.0.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.5.7)(typeorm@0.3.11) + version: 9.0.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1)(typeorm@0.3.11) '@types/js-yaml': - specifier: ^4.0.5 - version: 4.0.5 + specifier: ^4.0.9 + version: 4.0.9 '@types/passport-jwt': - specifier: ^3.0.7 - version: 3.0.7 + specifier: ^3.0.13 + version: 3.0.13 class-transformer: specifier: ^0.5.1 version: 0.5.1 dotenv: - specifier: ^16.0.3 - version: 16.0.3 + specifier: ^16.4.5 + version: 16.4.5 google-auth-library: - specifier: ^8.7.0 - version: 8.7.0 + specifier: ^8.9.0 + version: 8.9.0 googleapis: specifier: ^118.0.0 version: 118.0.0 jest-mock-extended: - specifier: ^3.0.5 - version: 3.0.5(jest@28.1.3)(typescript@4.5.2) + specifier: ^3.0.7 + version: 3.0.7(jest@28.1.3)(typescript@4.5.2) joi: - specifier: ^17.7.0 - version: 17.7.0 + specifier: ^17.13.1 + version: 17.13.1 js-yaml: specifier: ^4.1.0 version: 4.1.0 jwks-rsa: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^3.1.0 + version: 3.1.0 passport: specifier: ^0.6.0 version: 0.6.0 passport-jwt: - specifier: ^4.0.0 - version: 4.0.0 + specifier: ^4.0.1 + version: 4.0.1 pg: - specifier: ^8.4.0 - version: 8.8.0 + specifier: ^8.11.5 + version: 8.11.5 reflect-metadata: - specifier: ^0.1.13 - version: 0.1.13 + specifier: ^0.1.14 + version: 0.1.14 rxjs: - specifier: ^7.2.0 - version: 7.5.7 + specifier: ^7.8.1 + version: 7.8.1 typeorm: specifier: 0.3.11 - version: 0.3.11(pg@8.8.0)(sqlite3@5.1.6)(ts-node@10.7.0) + version: 0.3.11(pg@8.11.5)(sqlite3@5.1.7)(ts-node@10.7.0) webpack: - specifier: ^5.75.0 - version: 5.75.0(@swc/core@1.3.56) + specifier: ^5.91.0 + version: 5.91.0(@swc/core@1.5.5) devDependencies: '@automock/jest': - specifier: ^1.0.1 - version: 1.0.1(jest@28.1.3)(typescript@4.5.2) + specifier: ^1.4.0 + version: 1.4.0(@nestjs/common@9.4.3)(jest@28.1.3)(typescript@4.5.2) '@golevelup/ts-jest': - specifier: ^0.3.6 - version: 0.3.6 + specifier: ^0.3.8 + version: 0.3.8 '@nestjs/cli': - specifier: ^9.0.0 - version: 9.1.5(@swc/core@1.3.56) + specifier: ^9.5.0 + version: 9.5.0(@swc/core@1.5.5) '@nestjs/schematics': - specifier: ^9.0.0 - version: 9.0.3(typescript@4.5.2) + specifier: ^9.2.0 + version: 9.2.0(typescript@4.5.2) '@nestjs/testing': - specifier: ^9.0.0 - version: 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/platform-express@9.2.1) + specifier: ^9.4.3 + version: 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/platform-express@9.4.3) '@swc/core': - specifier: ^1.3.56 - version: 1.3.56 + specifier: ^1.5.5 + version: 1.5.5 '@swc/jest': - specifier: ^0.2.26 - version: 0.2.26(@swc/core@1.3.56) + specifier: ^0.2.36 + version: 0.2.36(@swc/core@1.5.5) '@types/express': - specifier: ^4.17.14 - version: 4.17.14 + specifier: ^4.17.21 + version: 4.17.21 '@types/jest': specifier: 28.1.8 version: 28.1.8 '@types/multer': - specifier: ^1.4.7 - version: 1.4.7 + specifier: ^1.4.11 + version: 1.4.11 '@types/node': - specifier: ^16.11.10 - version: 16.18.4 + specifier: ^16.18.97 + version: 16.18.97 '@types/supertest': - specifier: ^2.0.11 - version: 2.0.12 + specifier: ^2.0.16 + version: 2.0.16 '@typescript-eslint/eslint-plugin': - specifier: ^5.0.0 - version: 5.45.0(@typescript-eslint/parser@5.45.0)(eslint@8.29.0)(typescript@4.5.2) + specifier: ^5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@4.5.2) '@typescript-eslint/parser': - specifier: ^5.0.0 - version: 5.45.0(eslint@8.29.0)(typescript@4.5.2) + specifier: ^5.62.0 + version: 5.62.0(eslint@8.57.0)(typescript@4.5.2) eslint: - specifier: ^8.0.1 - version: 8.29.0 + specifier: ^8.57.0 + version: 8.57.0 eslint-config-prettier: - specifier: ^8.3.0 - version: 8.5.0(eslint@8.29.0) + specifier: ^8.10.0 + version: 8.10.0(eslint@8.57.0) eslint-plugin-prettier: - specifier: ^4.0.0 - version: 4.2.1(eslint-config-prettier@8.5.0)(eslint@8.29.0)(prettier@2.8.8) + specifier: ^4.2.1 + version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@2.8.8) jest: specifier: 28.1.3 - version: 28.1.3(@types/node@16.18.4)(ts-node@10.7.0) + version: 28.1.3(@types/node@16.18.97)(ts-node@10.7.0) jose: - specifier: ^4.14.4 - version: 4.14.4 + specifier: ^4.15.5 + version: 4.15.5 nodemon: specifier: ^2.0.22 version: 2.0.22 prettier: - specifier: ^2.8.5 + specifier: ^2.8.8 version: 2.8.8 rimraf: specifier: ^3.0.2 version: 3.0.2 source-map-support: - specifier: ^0.5.20 + specifier: ^0.5.21 version: 0.5.21 sqlite3: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.1.7 + version: 5.1.7 supertest: - specifier: ^6.1.3 - version: 6.3.2 + specifier: ^6.3.4 + version: 6.3.4 ts-jest: specifier: 28.0.8 - version: 28.0.8(@babel/core@7.21.3)(jest@28.1.3)(typescript@4.5.2) + version: 28.0.8(@babel/core@7.24.5)(jest@28.1.3)(typescript@4.5.2) ts-loader: - specifier: ^9.2.3 - version: 9.4.2(typescript@4.5.2)(webpack@5.75.0) + specifier: ^9.5.1 + version: 9.5.1(typescript@4.5.2)(webpack@5.91.0) ts-node: specifier: 10.7.0 - version: 10.7.0(@swc/core@1.3.56)(@types/node@16.18.4)(typescript@4.5.2) + version: 10.7.0(@swc/core@1.5.5)(@types/node@16.18.97)(typescript@4.5.2) tsconfig-paths: specifier: 4.1.0 version: 4.1.0 @@ -189,148 +189,140 @@ importers: frontend: dependencies: '@auth0/auth0-react': - specifier: ^1.12.0 - version: 1.12.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^1.12.1 + version: 1.12.1(react-dom@18.3.1)(react@18.3.1) '@hkrecruitment/shared': specifier: workspace:* version: link:../shared '@popperjs/core': - specifier: ^2.11.6 - version: 2.11.6 + specifier: ^2.11.8 + version: 2.11.8 + '@types/react': + specifier: ^18.3.2 + version: 18.3.2 bootstrap: - specifier: ^5.2.3 - version: 5.2.3(@popperjs/core@2.11.6) + specifier: ^5.3.3 + version: 5.3.3(@popperjs/core@2.11.8) + bootstrap-icons: + specifier: ^1.11.3 + version: 1.11.3 moment: - specifier: ^2.29.3 - version: 2.29.4 + specifier: ^2.30.1 + version: 2.30.1 moment-timezone: - specifier: ^0.5.34 - version: 0.5.41 + specifier: ^0.5.45 + version: 0.5.45 prop-types: - specifier: ^15.7.0 + specifier: ^15.8.1 version: 15.8.1 react: - specifier: ^18.2.0 - version: 18.2.0 + specifier: ^18.3.1 + version: 18.3.1 react-bootstrap: - specifier: ^2.2.3 - version: 2.7.2(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.10.2 + version: 2.10.2(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-hook-form: + specifier: ^7.51.4 + version: 7.51.4(react@18.3.1) react-moment: specifier: ^1.1.3 - version: 1.1.3(moment@2.29.4)(prop-types@15.8.1)(react@18.2.0) + version: 1.1.3(moment@2.30.1)(prop-types@15.8.1)(react@18.3.1) react-router-dom: - specifier: ^6.9.0 - version: 6.9.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.23.1 + version: 6.23.1(react-dom@18.3.1)(react@18.3.1) web-vitals: specifier: ^2.1.4 version: 2.1.4 devDependencies: '@vitejs/plugin-react': specifier: ^3.1.0 - version: 3.1.0(vite@4.2.1) + version: 3.1.0(vite@4.5.3) prettier: - specifier: ^2.8.5 + specifier: ^2.8.8 version: 2.8.8 rimraf: specifier: ^3.0.2 version: 3.0.2 typescript: - specifier: ^4.6.4 - version: 4.9.3 + specifier: ^4.9.5 + version: 4.9.5 vite: - specifier: ^4.2.1 - version: 4.2.1 + specifier: ^4.5.3 + version: 4.5.3 vite-plugin-html: - specifier: ^3.2.0 - version: 3.2.0(vite@4.2.1) + specifier: ^3.2.2 + version: 3.2.2(vite@4.5.3) shared: dependencies: '@casl/ability': - specifier: ^6.3.3 - version: 6.3.3 + specifier: ^6.7.1 + version: 6.7.1 '@joi/date': - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 joi: - specifier: ^17.7.0 - version: 17.7.0 + specifier: ^17.13.1 + version: 17.13.1 devDependencies: '@swc/core': - specifier: ^1.3.56 - version: 1.3.56 + specifier: ^1.5.5 + version: 1.5.5 '@swc/jest': - specifier: ^0.2.26 - version: 0.2.26(@swc/core@1.3.56) + specifier: ^0.2.36 + version: 0.2.36(@swc/core@1.5.5) '@types/jest': specifier: 28.1.8 version: 28.1.8 jest: specifier: 28.1.3 - version: 28.1.3(@types/node@16.18.4)(ts-node@10.7.0) + version: 28.1.3(@types/node@16.18.97)(ts-node@10.7.0) prettier: - specifier: ^2.8.5 + specifier: ^2.8.8 version: 2.8.8 ts-jest: specifier: 28.0.8 - version: 28.0.8(@babel/core@7.21.3)(jest@28.1.3)(typescript@4.9.3) + version: 28.0.8(@babel/core@7.24.5)(jest@28.1.3)(typescript@4.9.5) typescript: - specifier: ^4.9.3 - version: 4.9.3 + specifier: ^4.9.5 + version: 4.9.5 packages: - /@ampproject/remapping@2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - /@angular-devkit/core@14.2.1(chokidar@3.5.3): - resolution: {integrity: sha512-lW8oNGuJqr4r31FWBjfWQYkSXdiOHBGOThIEtHvUVBKfPF/oVrupLueCUgBPel+NvxENXdo93uPsqHN7bZbmsQ==} - engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + /@angular-devkit/core@16.0.1(chokidar@3.5.3): + resolution: {integrity: sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^3.5.2 peerDependenciesMeta: chokidar: optional: true dependencies: - ajv: 8.11.0 - ajv-formats: 2.1.1(ajv@8.11.0) + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) chokidar: 3.5.3 - jsonc-parser: 3.1.0 - rxjs: 6.6.7 - source-map: 0.7.4 - dev: true - - /@angular-devkit/core@14.2.2(chokidar@3.5.3): - resolution: {integrity: sha512-ofDhTmJqoAkmkJP0duwUaCxDBMxPlc+AWYwgs3rKKZeJBb0d+tchEXHXevD5bYbbRfXtnwM+Vye2XYHhA4nWAA==} - engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - chokidar: ^3.5.2 - peerDependenciesMeta: - chokidar: - optional: true - dependencies: - ajv: 8.11.0 - ajv-formats: 2.1.1(ajv@8.11.0) - chokidar: 3.5.3 - jsonc-parser: 3.1.0 - rxjs: 6.6.7 + jsonc-parser: 3.2.0 + rxjs: 7.8.1 source-map: 0.7.4 dev: true - /@angular-devkit/schematics-cli@14.2.2(chokidar@3.5.3): - resolution: {integrity: sha512-timCty5tO1A5VOcy8nVJ+jL98i6+ct5/Hg+4rQxc3J6agmmNL9fALboJBEz1ckTt7MewlGtrpohMMy+YGhuWOg==} - engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + /@angular-devkit/schematics-cli@16.0.1(chokidar@3.5.3): + resolution: {integrity: sha512-6KLA125dpgd6oJGtiO2JpZAb92uOG3njQGIt7NFcuQGW/5GO7J41vMXH9cBAfdtbV8SIggSmR/cIEE9ijfj6YQ==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true dependencies: - '@angular-devkit/core': 14.2.2(chokidar@3.5.3) - '@angular-devkit/schematics': 14.2.2(chokidar@3.5.3) + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) ansi-colors: 4.1.3 inquirer: 8.2.4 symbol-observable: 4.0.0 @@ -339,270 +331,219 @@ packages: - chokidar dev: true - /@angular-devkit/schematics@14.2.1(chokidar@3.5.3): - resolution: {integrity: sha512-0U18FwDYt4zROBPrvewH6iBTkf2ozVHN4/gxUb9jWrqVw8mPU5AWc/iYxQLHBSinkr2Egjo1H/i9aBqgJSeh3g==} - engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + /@angular-devkit/schematics@16.0.1(chokidar@3.5.3): + resolution: {integrity: sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 14.2.1(chokidar@3.5.3) - jsonc-parser: 3.1.0 - magic-string: 0.26.2 - ora: 5.4.1 - rxjs: 6.6.7 - transitivePeerDependencies: - - chokidar - dev: true - - /@angular-devkit/schematics@14.2.2(chokidar@3.5.3): - resolution: {integrity: sha512-90hseNg1yQ2AR+lVr/NByZRHnYAlzCL6hr9p9q1KPHxA3Owo04yX6n6dvR/xf27hCopXInXKPsasR59XCx5ZOQ==} - engines: {node: ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - dependencies: - '@angular-devkit/core': 14.2.2(chokidar@3.5.3) - jsonc-parser: 3.1.0 - magic-string: 0.26.2 + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + jsonc-parser: 3.2.0 + magic-string: 0.30.0 ora: 5.4.1 - rxjs: 6.6.7 + rxjs: 7.8.1 transitivePeerDependencies: - chokidar dev: true - /@auth0/auth0-react@1.12.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Cny2RyHvr0GrKKKV8PMh6GU0vkWNSgd6mp/YHYJynnYCs9yFduNo9hdpHPxXbdDX5CB6wc2PqK6aL8leDlnl/A==} + /@auth0/auth0-react@1.12.1(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-8+ecK/4rE0AGsxLW2IDcr1oPbT55tuE6cQEzEIOkQjB6QGQxxWMzQy0D4nMKw3JUAc7nYcFVOABNFNbc471n9Q==} peerDependencies: react: ^16.11.0 || ^17 || ^18 react-dom: ^16.11.0 || ^17 || ^18 dependencies: - '@auth0/auth0-spa-js': 1.22.5 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@auth0/auth0-spa-js': 1.22.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) dev: false - /@auth0/auth0-spa-js@1.22.5: - resolution: {integrity: sha512-6gaQcd+Eb8ZBcdQkrrm9undM7dY/rPvVdQN8s7rxxrviUCs7OopEygsfSkHf67IP4HtlCiE8dSW5/AipRUOw/A==} + /@auth0/auth0-spa-js@1.22.6: + resolution: {integrity: sha512-iL3O0vWanfKFVgy1J2ZHDPlAUK6EVHWEHWS6mUXwHEuPiK39tjlQtyUKQIJI1F5YsZB75ijGgRWMTawSDXlwCA==} dependencies: abortcontroller-polyfill: 1.7.5 - browser-tabs-lock: 1.2.15 - core-js: 3.26.1 + browser-tabs-lock: 1.3.0 + core-js: 3.37.0 es-cookie: 1.3.2 fast-text-encoding: 1.0.6 - promise-polyfill: 8.2.3 + promise-polyfill: 8.3.0 unfetch: 4.2.0 dev: false - /@automock/jest@1.0.1(jest@28.1.3)(typescript@4.5.2): - resolution: {integrity: sha512-ig9Kx6eaQfpjRiiz8nU1P+t9rw+OsorNfSz160i/QxIHKRnZSopD1hCrxJtottluIbrOEkozKCKYwDw2O+oqKw==} + /@automock/adapters.nestjs@1.4.0(@nestjs/common@9.4.3): + resolution: {integrity: sha512-1BEh9glv23P1SdCrQ3fA7+mCgoRRiDXoHgtuCG2LUFSj6HdZ7unV/U6BGzKLabi017L2C8zOCelYQnMUdCMaGg==} + peerDependencies: + '@nestjs/common': '>= 8.x' + dependencies: + '@automock/common': 2.2.0 + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + dev: true + + /@automock/common@2.2.0: + resolution: {integrity: sha512-aAzMrOIDrhCoWutichpFcSC2TK+tr1tZTq1qxGXZVKpGILtJs/X5/cOOVkUr1AEOsfhW4rHVC4IroIsANn9ZEA==} + dev: true + + /@automock/core@1.4.0: + resolution: {integrity: sha512-okDvKznSAt4Ly3D3RBKCbZ0JYD1YwJ4zFaKv2SUmbIL6m/kEk/cVXvNLspOIyxd1r8WVwhTLafiL9VPvYXkZsg==} + dev: true + + /@automock/jest@1.4.0(@nestjs/common@9.4.3)(jest@28.1.3)(typescript@4.5.2): + resolution: {integrity: sha512-2+yjdWLXMzuH6vrjX4Us2FzuPOQc/ma2D25FnS2sVtcfhHgVauexNo+W3Jq90l1al93YkSE/ULzlVMkqQcGPfA==} + peerDependencies: + jest: '>= 25.x' dependencies: + '@automock/adapters.nestjs': 1.4.0(@nestjs/common@9.4.3) + '@automock/core': 1.4.0 + '@automock/types': 1.2.0 + jest: 28.1.3(@types/node@16.18.97)(ts-node@10.7.0) jest-mock-extended: 2.0.9(jest@28.1.3)(typescript@4.5.2) - ts-essentials: 7.0.3(typescript@4.5.2) transitivePeerDependencies: - - jest + - '@nestjs/common' - typescript dev: true + /@automock/types@1.2.0: + resolution: {integrity: sha512-kkGf1PvAb8aLjCXyX4OsIncQFTVAwCQUtsEpsbyH6hhpJ6ape8Lhor9Y5DgunajhuD4oE6D64+4jxSuRSwWNmQ==} + dev: true + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data@7.20.5: - resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.5 + picocolors: 1.0.0 - /@babel/core@7.20.5: - resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} + /@babel/compat-data@7.24.4: + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.20.5) - '@babel/helper-module-transforms': 7.20.2 - '@babel/helpers': 7.20.6 - '@babel/parser': 7.20.5 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - /@babel/core@7.21.3: - resolution: {integrity: sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==} + /@babel/core@7.24.5: + resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.3 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.3) - '@babel/helper-module-transforms': 7.21.2 - '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.3 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.3 - '@babel/types': 7.21.3 - convert-source-map: 1.9.0 + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helpers': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/generator@7.20.5: - resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} + /@babel/generator@7.24.5: + resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 - '@jridgewell/gen-mapping': 0.3.2 + '@babel/types': 7.24.5 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - /@babel/generator@7.21.3: - resolution: {integrity: sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==} + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.3 - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - jsesc: 2.5.2 - - /@babel/helper-compilation-targets@7.20.0(@babel/core@7.20.5): - resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - - /@babel/helper-compilation-targets@7.20.7(@babel/core@7.21.3): - resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.21.3 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.5 + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 lru-cache: 5.1.1 - semver: 6.3.0 - - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - - /@babel/helper-function-name@7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.5 + semver: 6.3.1 - /@babel/helper-function-name@7.21.0: - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.3 - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 - /@babel/helper-module-imports@7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.24.5 - /@babel/helper-module-transforms@7.20.2: - resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.24.5 - /@babel/helper-module-transforms@7.21.2: - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.3 - '@babel/types': 7.21.3 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.24.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 /@babel/helper-plugin-utils@7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} - /@babel/helper-simple-access@7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + /@babel/helper-plugin-utils@7.24.5: + resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-simple-access@7.24.5: + resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.24.5 - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + /@babel/helper-split-export-declaration@7.24.5: + resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.24.5 /@babel/helper-string-parser@7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + /@babel/helper-validator-identifier@7.24.5: + resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.21.0: - resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.20.6: - resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==} + /@babel/helpers@7.24.5: + resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - transitivePeerDependencies: - - supports-color - - /@babel/helpers@7.21.0: - resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.3 - '@babel/types': 7.21.3 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 transitivePeerDependencies: - supports-color @@ -614,6 +555,15 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight@7.24.5: + resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + /@babel/parser@7.20.5: resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} engines: {node: '>=6.0.0'} @@ -621,191 +571,174 @@ packages: dependencies: '@babel/types': 7.20.5 - /@babel/parser@7.21.3: - resolution: {integrity: sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==} + /@babel/parser@7.24.5: + resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.21.3 + '@babel/types': 7.24.5 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.3): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.3): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.3): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.3): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.3): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.3): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.3): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.3): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.3): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.3): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.3): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.3): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.3): - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.3): - resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} + /@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.3): - resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: true - /@babel/runtime@7.21.0: - resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + /@babel/runtime@7.24.5: + resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.1 dev: false /@babel/template@7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.24.2 '@babel/parser': 7.20.5 '@babel/types': 7.20.5 - /@babel/template@7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.21.3 - '@babel/types': 7.21.3 - - /@babel/traverse@7.20.5: - resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 - /@babel/traverse@7.21.3: - resolution: {integrity: sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==} + /@babel/traverse@7.24.5: + resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.3 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.3 - '@babel/types': 7.21.3 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -819,21 +752,21 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@babel/types@7.21.3: - resolution: {integrity: sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==} + /@babel/types@7.24.5: + resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.24.5 to-fast-properties: 2.0.0 /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - /@casl/ability@6.3.3: - resolution: {integrity: sha512-UzbqsE9etu6QzZrRmqIyVun2kztAzJ46Tz7lC/2P2buCE6B6Ll7Vptz7JTQtGwapLbeKo2jS7dL966TVOQ7x4g==} + /@casl/ability@6.7.1: + resolution: {integrity: sha512-e+Vgrehd1/lzOSwSqKHtmJ6kmIuZbGBlM2LBS5IuYGGKmVHuhUuyh3XgTn1VIw9+TO4gqU+uptvxfIRBUEdJuw==} dependencies: - '@ucast/mongo2js': 1.3.3 + '@ucast/mongo2js': 1.3.4 dev: false /@colors/colors@1.5.0: @@ -853,8 +786,8 @@ packages: dependencies: '@cspotcode/source-map-consumer': 0.8.0 - /@esbuild/android-arm64@0.17.12: - resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -862,8 +795,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.12: - resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -871,8 +804,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.12: - resolution: {integrity: sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -880,8 +813,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.12: - resolution: {integrity: sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -889,8 +822,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.12: - resolution: {integrity: sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -898,8 +831,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.12: - resolution: {integrity: sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -907,8 +840,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.12: - resolution: {integrity: sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -916,8 +849,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.12: - resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -925,8 +858,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.12: - resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -934,8 +867,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.12: - resolution: {integrity: sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -943,8 +876,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.12: - resolution: {integrity: sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -952,8 +885,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.12: - resolution: {integrity: sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -961,8 +894,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.12: - resolution: {integrity: sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -970,8 +903,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.12: - resolution: {integrity: sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -979,8 +912,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.12: - resolution: {integrity: sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -988,8 +921,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.12: - resolution: {integrity: sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -997,8 +930,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.12: - resolution: {integrity: sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -1006,8 +939,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.12: - resolution: {integrity: sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -1015,8 +948,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.12: - resolution: {integrity: sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -1024,8 +957,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.12: - resolution: {integrity: sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -1033,8 +966,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.12: - resolution: {integrity: sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1042,8 +975,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.12: - resolution: {integrity: sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1051,15 +984,30 @@ packages: dev: true optional: true - /@eslint/eslintrc@1.3.3: - resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.4.1 - globals: 13.18.0 - ignore: 5.2.1 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -1068,23 +1016,35 @@ packages: - supports-color dev: true + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@fastify/accept-negotiator@1.1.0: resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} engines: {node: '>=14'} dev: false - /@fastify/static@6.6.0: - resolution: {integrity: sha512-UiYSN2dUmDZ48M40xdIwY1dPwSSYD7c+wtoIQP8y7wyxCwcUtf1YT5/Q4n1uJsBF1fySvuo9njQZKlHeiKy4HQ==} + /@fastify/send@2.1.0: + resolution: {integrity: sha512-yNYiY6sDkexoJR0D8IDy3aRP3+L4wdqCpvx5WP+VtEU58sn7USmKynBzDQex5X42Zzvw2gNzzYgP90UfWShLFA==} + dependencies: + '@lukeed/ms': 2.0.2 + escape-html: 1.0.3 + fast-decode-uri-component: 1.0.1 + http-errors: 2.0.0 + mime: 3.0.0 + dev: false + + /@fastify/static@6.12.0: + resolution: {integrity: sha512-KK1B84E6QD/FcQWxDI2aiUCwHxMJBI1KeCUzm1BwYpPY1b742+jeKruGHP2uOluuM6OkBPI8CIANrXcCRtC2oQ==} dependencies: '@fastify/accept-negotiator': 1.1.0 + '@fastify/send': 2.1.0 content-disposition: 0.5.4 - fastify-plugin: 4.4.0 - glob: 8.0.3 + fastify-plugin: 4.5.1 + glob: 8.1.0 p-limit: 3.1.0 - readable-stream: 4.2.0 - send: 0.18.0 - transitivePeerDependencies: - - supports-color dev: false /@gar/promisify@1.1.3: @@ -1092,8 +1052,8 @@ packages: requiresBuild: true optional: true - /@golevelup/ts-jest@0.3.6: - resolution: {integrity: sha512-gLAMARxD1JtdPJchogfHqThNw7+mOh1hjfktUZts/2eh6p2SONfYiw7PyNAo6QUXh5EH3NxYGJD6kLXs//k8CA==} + /@golevelup/ts-jest@0.3.8: + resolution: {integrity: sha512-2H4XzpCHwoUs2P13tzwVzj+AYspbFGKwMr94WK5eHiDBKgx0j4QGgLQh1wgM18DjhN7jdntrzVMoQRie6kZhnw==} dev: true /@hapi/hoek@9.3.0: @@ -1106,11 +1066,11 @@ packages: '@hapi/hoek': 9.3.0 dev: false - /@humanwhocodes/config-array@0.11.7: - resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -1122,8 +1082,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true /@istanbuljs/load-nyc-config@1.1.0: @@ -1145,7 +1105,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 16.18.4 + '@types/node': 16.18.97 chalk: 4.1.2 jest-message-util: 28.1.3 jest-util: 28.1.3 @@ -1165,14 +1125,14 @@ packages: '@jest/test-result': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.4 + '@types/node': 16.18.97 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.7.0 + ci-info: 3.9.0 exit: 0.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-changed-files: 28.1.3 - jest-config: 28.1.3(@types/node@16.18.4)(ts-node@10.7.0) + jest-config: 28.1.3(@types/node@16.18.97)(ts-node@10.7.0) jest-haste-map: 28.1.3 jest-message-util: 28.1.3 jest-regex-util: 28.0.2 @@ -1193,11 +1153,11 @@ packages: - supports-color - ts-node - /@jest/create-cache-key-function@27.5.1: - resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/create-cache-key-function@29.7.0: + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 29.6.3 dev: true /@jest/environment@28.1.3: @@ -1206,7 +1166,7 @@ packages: dependencies: '@jest/fake-timers': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.4 + '@types/node': 16.18.97 jest-mock: 28.1.3 /@jest/expect-utils@28.1.3: @@ -1230,7 +1190,7 @@ packages: dependencies: '@jest/types': 28.1.3 '@sinonjs/fake-timers': 9.1.2 - '@types/node': 16.18.4 + '@types/node': 16.18.97 jest-message-util: 28.1.3 jest-mock: 28.1.3 jest-util: 28.1.3 @@ -1259,18 +1219,18 @@ packages: '@jest/test-result': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 - '@jridgewell/trace-mapping': 0.3.17 - '@types/node': 16.18.4 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 16.18.97 chalk: 4.1.2 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 - graceful-fs: 4.2.10 - istanbul-lib-coverage: 3.2.0 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 + istanbul-reports: 3.1.7 jest-message-util: 28.1.3 jest-util: 28.1.3 jest-worker: 28.1.3 @@ -1278,7 +1238,7 @@ packages: string-length: 4.0.2 strip-ansi: 6.0.1 terminal-link: 2.1.1 - v8-to-istanbul: 9.0.1 + v8-to-istanbul: 9.2.0 transitivePeerDependencies: - supports-color @@ -1288,11 +1248,18 @@ packages: dependencies: '@sinclair/typebox': 0.24.51 + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + /@jest/source-map@28.1.2: resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.10 @@ -1310,7 +1277,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/test-result': 28.1.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-haste-map: 28.1.3 slash: 3.0.0 @@ -1318,144 +1285,128 @@ packages: resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.24.5 '@jest/types': 28.1.3 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 1.9.0 fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-haste-map: 28.1.3 jest-regex-util: 28.0.2 jest-util: 28.1.3 micromatch: 4.0.5 - pirates: 4.0.5 + pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color - /@jest/types@27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 16.18.4 - '@types/yargs': 16.0.5 - chalk: 4.1.2 - dev: true - /@jest/types@28.1.3: resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/schemas': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 16.18.4 - '@types/yargs': 17.0.15 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 16.18.97 + '@types/yargs': 17.0.32 chalk: 4.1.2 - /@joi/date@2.1.0: - resolution: {integrity: sha512-2zN5m0LgxZp/cynHGbzEImVmFIa+n+IOb/Nlw5LX/PLJneeCwG1NbiGw7MvPjsAKUGQK8z31Nn6V6lEN+4fZhg==} + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - moment: 2.29.4 - dev: false + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 16.18.97 + '@types/yargs': 17.0.32 + chalk: 4.1.2 - /@jridgewell/gen-mapping@0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} + /@joi/date@2.1.1: + resolution: {integrity: sha512-oXF8vU8M+O9a6tuItgtTQeboO3+Ed6xunLatt6gq7WEFJ7HjawPH64OmrsX0ch3TEsUgQkU8v4MlOGEsf6PHSQ==} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + moment: 2.30.1 + dev: false - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 - /@mapbox/node-pre-gyp@1.0.10: - resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} - hasBin: true - dependencies: - detect-libc: 2.0.1 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.6.7 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.3.8 - tar: 6.1.13 - transitivePeerDependencies: - - encoding - - supports-color + /@lukeed/csprng@1.1.0: + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} + + /@lukeed/ms@2.0.2: + resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} + engines: {node: '>=8'} + dev: false - /@nestjs/cli@9.1.5(@swc/core@1.3.56): - resolution: {integrity: sha512-rSp26+Nv7PFtYrRSP18Gv5ZK8rRSc2SCCF5wh4SdZaVGgkxShpNq9YEfI+ik/uziN3KC5o74ppYRXGj+aHGVsA==} + /@nestjs/cli@9.5.0(@swc/core@1.5.5): + resolution: {integrity: sha512-Z7q+3vNsQSG2d2r2Hl/OOj5EpfjVx3OfnJ9+KuAsOdw1sKLm7+Zc6KbhMFTd/eIvfx82ww3Nk72xdmfPYCulWA==} engines: {node: '>= 12.9.0'} hasBin: true dependencies: - '@angular-devkit/core': 14.2.2(chokidar@3.5.3) - '@angular-devkit/schematics': 14.2.2(chokidar@3.5.3) - '@angular-devkit/schematics-cli': 14.2.2(chokidar@3.5.3) - '@nestjs/schematics': 9.0.3(chokidar@3.5.3)(typescript@4.8.4) - chalk: 3.0.0 + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics-cli': 16.0.1(chokidar@3.5.3) + '@nestjs/schematics': 9.2.0(chokidar@3.5.3)(typescript@4.9.5) + chalk: 4.1.2 chokidar: 3.5.3 - cli-table3: 0.6.2 + cli-table3: 0.6.3 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 7.2.13(typescript@4.8.4)(webpack@5.74.0) - inquirer: 7.3.3 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@4.9.5)(webpack@5.82.1) + inquirer: 8.2.5 node-emoji: 1.11.0 ora: 5.4.1 os-name: 4.0.1 - rimraf: 3.0.2 + rimraf: 4.4.1 shelljs: 0.8.5 source-map-support: 0.5.21 tree-kill: 1.2.2 - tsconfig-paths: 4.1.0 - tsconfig-paths-webpack-plugin: 4.0.0 - typescript: 4.8.4 - webpack: 5.74.0(@swc/core@1.3.56) + tsconfig-paths: 4.2.0 + tsconfig-paths-webpack-plugin: 4.0.1 + typescript: 4.9.5 + webpack: 5.82.1(@swc/core@1.5.5) webpack-node-externals: 3.0.0 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - - vue-template-compiler - webpack-cli dev: true - /@nestjs/common@9.2.1(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.5.7): - resolution: {integrity: sha512-nZuo3oDsSSlC5mti/M2aCWTEIfHPGDXmBwWgPeCpRbrNz3IWd109rkajll+yxgidVjznAdBS9y00JkAVJblNYw==} + /@nestjs/common@9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1): + resolution: {integrity: sha512-Gd6D4IaYj01o14Bwv81ukidn4w3bPHCblMUq+SmUmWLyosK+XQmInCS09SbDDZyL8jy86PngtBLTdhJ2bXSUig==} peerDependencies: cache-manager: <=5 class-transformer: '*' @@ -1472,29 +1423,29 @@ packages: dependencies: class-transformer: 0.5.1 iterare: 1.2.1 - reflect-metadata: 0.1.13 - rxjs: 7.5.7 - tslib: 2.4.1 - uuid: 9.0.0 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + tslib: 2.5.3 + uid: 2.0.2 - /@nestjs/config@2.2.0(@nestjs/common@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.5.7): - resolution: {integrity: sha512-78Eg6oMbCy3D/YvqeiGBTOWei1Jwi3f2pSIZcZ1QxY67kYsJzTRTkwRT8Iv30DbK0sGKc1mcloDLD5UXgZAZtg==} + /@nestjs/config@2.3.4(@nestjs/common@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1): + resolution: {integrity: sha512-IGdSF+0F9MJO6dCRTEahdxPz4iVijjtolcFBxnY+2QYM3bXYQvAgzskGZi+WkAFJN/VzR3TEp60gN5sI74GxPA==} peerDependencies: '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 reflect-metadata: ^0.1.13 rxjs: ^6.0.0 || ^7.2.0 dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) - dotenv: 16.0.1 - dotenv-expand: 8.0.3 + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + dotenv: 16.1.4 + dotenv-expand: 10.0.0 lodash: 4.17.21 - reflect-metadata: 0.1.13 - rxjs: 7.5.7 - uuid: 8.3.2 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + uuid: 9.0.0 dev: false - /@nestjs/core@9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.5.7): - resolution: {integrity: sha512-a9GkXuu8uXgNgCVW+17iI8kLCltO+HwHpU2IhR+32JKnN2WEQ1YEWU4t3GJ2MNq44YkjIw9zrKvFkjJBlYrNbQ==} + /@nestjs/core@9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1): + resolution: {integrity: sha512-Qi63+wi55Jh4sDyaj5Hhx2jOpKqT386aeo+VOKsxnd+Ql9VvkO/FjmuwBGUyzkJt29ENYc+P0Sx/k5LtstNpPQ==} requiresBuild: true peerDependencies: '@nestjs/common': ^9.0.0 @@ -1511,26 +1462,25 @@ packages: '@nestjs/websockets': optional: true dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) - '@nestjs/platform-express': 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/platform-express': 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 - object-hash: 3.0.0 path-to-regexp: 3.2.0 - reflect-metadata: 0.1.13 - rxjs: 7.5.7 - tslib: 2.4.1 - uuid: 9.0.0 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + tslib: 2.5.3 + uid: 2.0.2 transitivePeerDependencies: - encoding - /@nestjs/mapped-types@1.2.0(@nestjs/common@9.2.1)(class-transformer@0.5.1)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-NTFwPZkQWsArQH8QSyFWGZvJ08gR+R4TofglqZoihn/vU+ktHEJjMqsIsADwb7XD97DhiD+TVv5ac+jG33BHrg==} + /@nestjs/mapped-types@1.2.2(@nestjs/common@9.4.3)(class-transformer@0.5.1)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-3dHxLXs3M0GPiriAcCFFJQHoDFUuzTD5w6JDhE7TyfT89YKpe6tcCCIqOZWdXmt9AZjjK30RkHRSFF+QEnWFQg==} peerDependencies: '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0 class-transformer: ^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0 - class-validator: ^0.11.1 || ^0.12.0 || ^0.13.0 + class-validator: ^0.11.1 || ^0.12.0 || ^0.13.0 || ^0.14.0 reflect-metadata: ^0.1.12 peerDependenciesMeta: class-transformer: @@ -1538,60 +1488,58 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) class-transformer: 0.5.1 - reflect-metadata: 0.1.13 + reflect-metadata: 0.1.14 dev: false - /@nestjs/passport@9.0.0(@nestjs/common@9.2.1)(passport@0.6.0): - resolution: {integrity: sha512-Gnh8n1wzFPOLSS/94X1sUP4IRAoXTgG4odl7/AO5h+uwscEGXxJFercrZfqdAwkWhqkKWbsntM3j5mRy/6ZQDA==} + /@nestjs/passport@9.0.3(@nestjs/common@9.4.3)(passport@0.6.0): + resolution: {integrity: sha512-HplSJaimEAz1IOZEu+pdJHHJhQyBOPAYWXYHfAPQvRqWtw4FJF1VXl1Qtk9dcXQX1eKytDtH+qBzNQc19GWNEg==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) passport: 0.6.0 dev: false - /@nestjs/platform-express@9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1): - resolution: {integrity: sha512-7PecaXt8lrdS1p6Vb1X/am3GGv+EO1VahyDzaEGOK6C0zwhc0VPfLtwihkjjfhS6BjpRIXXgviwEjONUvxVZnA==} + /@nestjs/platform-express@9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3): + resolution: {integrity: sha512-FpdczWoRSC0zz2dNL9u2AQLXKXRVtq4HgHklAhbL59X0uy+mcxhlSThG7DHzDMkoSnuuHY8ojDVf7mDxk+GtCw==} peerDependencies: '@nestjs/common': ^9.0.0 '@nestjs/core': ^9.0.0 dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) - body-parser: 1.20.1 + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) + body-parser: 1.20.2 cors: 2.8.5 express: 4.18.2 multer: 1.4.4-lts.1 - tslib: 2.4.1 + tslib: 2.5.3 transitivePeerDependencies: - supports-color - /@nestjs/schematics@9.0.3(chokidar@3.5.3)(typescript@4.8.4): - resolution: {integrity: sha512-kZrU/lrpVd2cnK8I3ibDb3Wi1ppl3wX3U3lVWoL+DzRRoezWKkh8upEL4q0koKmuXnsmLiu3UPxFeMOrJV7TSA==} + /@nestjs/schematics@9.2.0(chokidar@3.5.3)(typescript@4.9.5): + resolution: {integrity: sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==} peerDependencies: - typescript: ^4.3.5 + typescript: '>=4.3.5' dependencies: - '@angular-devkit/core': 14.2.1(chokidar@3.5.3) - '@angular-devkit/schematics': 14.2.1(chokidar@3.5.3) - fs-extra: 10.1.0 + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) jsonc-parser: 3.2.0 pluralize: 8.0.0 - typescript: 4.8.4 + typescript: 4.9.5 transitivePeerDependencies: - chokidar dev: true - /@nestjs/schematics@9.0.3(typescript@4.5.2): - resolution: {integrity: sha512-kZrU/lrpVd2cnK8I3ibDb3Wi1ppl3wX3U3lVWoL+DzRRoezWKkh8upEL4q0koKmuXnsmLiu3UPxFeMOrJV7TSA==} + /@nestjs/schematics@9.2.0(typescript@4.5.2): + resolution: {integrity: sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==} peerDependencies: - typescript: ^4.3.5 + typescript: '>=4.3.5' dependencies: - '@angular-devkit/core': 14.2.1(chokidar@3.5.3) - '@angular-devkit/schematics': 14.2.1(chokidar@3.5.3) - fs-extra: 10.1.0 + '@angular-devkit/core': 16.0.1(chokidar@3.5.3) + '@angular-devkit/schematics': 16.0.1(chokidar@3.5.3) jsonc-parser: 3.2.0 pluralize: 8.0.0 typescript: 4.5.2 @@ -1599,33 +1547,37 @@ packages: - chokidar dev: true - /@nestjs/swagger@6.1.3(@fastify/static@6.6.0)(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(class-transformer@0.5.1)(reflect-metadata@0.1.13): - resolution: {integrity: sha512-H9C/yRgLFb5QrAt6iGrYmIX9X7Q0zXkgZaTNUATljUBra+RCWrEUbLHBcGjTAOtcIyGV/vmyCLv68YSVcZoE0Q==} + /@nestjs/swagger@6.3.0(@fastify/static@6.12.0)(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(class-transformer@0.5.1)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-Gnig189oa1tD+h0BYIfUwhp/wvvmTn6iO3csR2E4rQrDTgCxSxZDlNdfZo3AC+Rmf8u0KX4ZAX1RZN1qXTtC7A==} peerDependencies: '@fastify/static': ^6.0.0 '@nestjs/common': ^9.0.0 '@nestjs/core': ^9.0.0 + class-transformer: '*' + class-validator: '*' reflect-metadata: ^0.1.12 peerDependenciesMeta: '@fastify/static': optional: true + class-transformer: + optional: true + class-validator: + optional: true dependencies: - '@fastify/static': 6.6.0 - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) - '@nestjs/mapped-types': 1.2.0(@nestjs/common@9.2.1)(class-transformer@0.5.1)(reflect-metadata@0.1.13) + '@fastify/static': 6.12.0 + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/mapped-types': 1.2.2(@nestjs/common@9.4.3)(class-transformer@0.5.1)(reflect-metadata@0.1.14) + class-transformer: 0.5.1 js-yaml: 4.1.0 lodash: 4.17.21 path-to-regexp: 3.2.0 - reflect-metadata: 0.1.13 - swagger-ui-dist: 4.15.1 - transitivePeerDependencies: - - class-transformer - - class-validator + reflect-metadata: 0.1.14 + swagger-ui-dist: 4.18.2 dev: false - /@nestjs/testing@9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(@nestjs/platform-express@9.2.1): - resolution: {integrity: sha512-lemXZdRSuqoZ87l0orCrS/c7gqwxeduIFOd21g9g2RUeQ4qlWPegbQDKASzbfC28klPyrgJLW4MNq7uv2JwV8w==} + /@nestjs/testing@9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(@nestjs/platform-express@9.4.3): + resolution: {integrity: sha512-LDT8Ai2eKnTzvnPaJwWOK03qTaFap5uHHsJCv6dL0uKWk6hyF9jms8DjyVaGsaujCaXDG8izl1mDEER0OmxaZA==} peerDependencies: '@nestjs/common': ^9.0.0 '@nestjs/core': ^9.0.0 @@ -1637,13 +1589,13 @@ packages: '@nestjs/platform-express': optional: true dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) - '@nestjs/platform-express': 9.2.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1) - tslib: 2.4.1 + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/platform-express': 9.4.3(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + tslib: 2.5.3 dev: true - /@nestjs/typeorm@9.0.1(@nestjs/common@9.2.1)(@nestjs/core@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.5.7)(typeorm@0.3.11): + /@nestjs/typeorm@9.0.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1)(typeorm@0.3.11): resolution: {integrity: sha512-A2BgLIPsMtmMI0bPKEf4bmzgFPsnvHqNBx3KkvaJ7hJrBQy0OqYOb+Rr06ifblKWDWS2tUPNrAFQbZjtk3PI+g==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 @@ -1652,11 +1604,11 @@ packages: rxjs: ^7.2.0 typeorm: ^0.3.0 dependencies: - '@nestjs/common': 9.2.1(class-transformer@0.5.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) - '@nestjs/core': 9.2.1(@nestjs/common@9.2.1)(@nestjs/platform-express@9.2.1)(reflect-metadata@0.1.13)(rxjs@7.5.7) - reflect-metadata: 0.1.13 - rxjs: 7.5.7 - typeorm: 0.3.11(pg@8.8.0)(sqlite3@5.1.6)(ts-node@10.7.0) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(reflect-metadata@0.1.14)(rxjs@7.8.1) + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + typeorm: 0.3.11(pg@8.11.5)(sqlite3@5.1.7)(ts-node@10.7.0) uuid: 8.3.2 dev: false @@ -1678,7 +1630,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.14.0 + fastq: 1.17.1 dev: true /@npmcli/fs@1.1.1: @@ -1686,7 +1638,7 @@ packages: requiresBuild: true dependencies: '@gar/promisify': 1.1.3 - semver: 7.3.8 + semver: 7.6.2 optional: true /@npmcli/move-file@1.1.2: @@ -1706,53 +1658,54 @@ packages: dependencies: chalk: 4.1.2 consola: 2.15.3 - node-fetch: 2.6.7 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding - /@popperjs/core@2.11.6: - resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} + /@popperjs/core@2.11.8: + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false - /@react-aria/ssr@3.5.0(react@18.2.0): - resolution: {integrity: sha512-h0MJdSWOd1qObLnJ8mprU31wI8tmKFJMuwT22MpWq6psisOOZaga6Ml4u6Ee6M6duWWISjXvqO4Sb/J0PBA+nQ==} + /@react-aria/ssr@3.9.3(react@18.3.1): + resolution: {integrity: sha512-5bUZ93dmvHFcmfUcEN7qzYe8yQQ8JY+nHN6m9/iSDCQ/QmCiE0kWXYwhurjw5ch6I8WokQzx66xKIMHBAa4NNA==} + engines: {node: '>= 12'} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@swc/helpers': 0.4.14 - react: 18.2.0 + '@swc/helpers': 0.5.11 + react: 18.3.1 dev: false - /@remix-run/router@1.4.0: - resolution: {integrity: sha512-BJ9SxXux8zAg991UmT8slpwpsd31K1dHHbD3Ba4VzD+liLQ4WAMSxQp2d2ZPRPfN0jN2NPRowcSSoM7lCaF08Q==} - engines: {node: '>=14'} + /@remix-run/router@1.16.1: + resolution: {integrity: sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==} + engines: {node: '>=14.0.0'} dev: false - /@restart/hooks@0.4.9(react@18.2.0): - resolution: {integrity: sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==} + /@restart/hooks@0.4.16(react@18.3.1): + resolution: {integrity: sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==} peerDependencies: react: '>=16.8.0' dependencies: dequal: 2.0.3 - react: 18.2.0 + react: 18.3.1 dev: false - /@restart/ui@1.6.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-hcYs8PwpmHEtwjihLVn2Jr89yrYajfhxN5HtTq3HA9U3+feg1SC3swBM8/qibMTCFsXWToEEtzJMV+LWE+Qjpg==} + /@restart/ui@1.6.9(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-mUbygUsJcRurjZCt1f77gg4DpheD1D+Sc7J3JjAkysUj7t8m4EBJVOqWC9788Qtbc69cJ+HlJc6jBguKwS8Mcw==} peerDependencies: react: '>=16.14.0' react-dom: '>=16.14.0' dependencies: - '@babel/runtime': 7.21.0 - '@popperjs/core': 2.11.6 - '@react-aria/ssr': 3.5.0(react@18.2.0) - '@restart/hooks': 0.4.9(react@18.2.0) - '@types/warning': 3.0.0 + '@babel/runtime': 7.24.5 + '@popperjs/core': 2.11.8 + '@react-aria/ssr': 3.9.3(react@18.3.1) + '@restart/hooks': 0.4.16(react@18.3.1) + '@types/warning': 3.0.3 dequal: 2.0.3 dom-helpers: 5.2.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - uncontrollable: 8.0.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + uncontrollable: 8.0.4(react@18.3.1) warning: 4.0.3 dev: false @@ -1764,14 +1717,14 @@ packages: picomatch: 2.3.1 dev: true - /@sideway/address@4.1.4: - resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} dependencies: '@hapi/hoek': 9.3.0 dev: false - /@sideway/formula@3.0.0: - resolution: {integrity: sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==} + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} dev: false /@sideway/pinpoint@2.0.0: @@ -1781,6 +1734,10 @@ packages: /@sinclair/typebox@0.24.51: resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + /@sinonjs/commons@1.8.6: resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} dependencies: @@ -1795,88 +1752,88 @@ packages: resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} dev: false - /@swc/core-darwin-arm64@1.3.56: - resolution: {integrity: sha512-DZcu7BzDaLEdWHabz9DRTP0yEBLqkrWmskFcD5BX0lGAvoIvE4duMnAqi5F2B3X7630QioHRCYFoRw2WkeE3Cw==} + /@swc/core-darwin-arm64@1.5.5: + resolution: {integrity: sha512-Ol5ZwZYdTOZsv2NwjcT/qVVALKzVFeh+IJ4GNarr3P99+38Dkwi81OqCI1o/WaDXQYKAQC/V+CzMbkEuJJfq9Q==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@swc/core-darwin-x64@1.3.56: - resolution: {integrity: sha512-VH5saqYFasdRXJy6RAT+MXm0+IjkMZvOkohJwUei+oA65cKJofQwrJ1jZro8yOJFYvUSI3jgNRGsdBkmo/4hMw==} + /@swc/core-darwin-x64@1.5.5: + resolution: {integrity: sha512-XHWpKBIPKYLgh5/lV2PYjO84lkzf5JR51kjiloyz2Pa9HIV8tHoAP8bYdJwm4nUp2I7KcEh3pPH0AVu5LpxMKw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.56: - resolution: {integrity: sha512-LWwPo6NnJkH01+ukqvkoNIOpMdw+Zundm4vBeicwyVrkP+mC3kwVfi03TUFpQUz3kRKdw/QEnxGTj+MouCPbtw==} + /@swc/core-linux-arm-gnueabihf@1.5.5: + resolution: {integrity: sha512-vtoWNCWAe+CNSqtqIwFnIH48qgPPlUZKoQ4EVFeMM+7/kDi6SeNxoh5TierJs5bKAWxD49VkPvRoWFCk6V62mA==} engines: {node: '>=10'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-gnu@1.3.56: - resolution: {integrity: sha512-GzsUy/4egJ4cMlxbM+Ub7AMi5CKAc+pxBxrh8MUPQbyStW8jGgnQsJouTnGy0LHawtdEnsCOl6PcO6OgvktXuQ==} + /@swc/core-linux-arm64-gnu@1.5.5: + resolution: {integrity: sha512-L4l7M78U6h/rCAxId+y5Vu+1KfDRF6dJZtitFcaT293guiUQFwJv8gLxI4Jh5wFtZ0fYd0QaCuvh2Ip79CzGMg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-musl@1.3.56: - resolution: {integrity: sha512-9gxL09BIiAv8zY0DjfnFf19bo8+P4T9tdhzPwcm+1yPJcY5yr1+YFWLNFzz01agtOj6VlZ2/wUJTaOfdjjtc+A==} + /@swc/core-linux-arm64-musl@1.5.5: + resolution: {integrity: sha512-DkzJc13ukXa7oJpyn24BjIgsiOybYrc+IxjsQyfNlDrrs1QXP4elStcpkD02SsIuSyHjZV8Hw2HFBMQB3OHPrA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-gnu@1.3.56: - resolution: {integrity: sha512-n0ORNknl50vMRkll3BDO1E4WOqY6iISlPV1ZQCRLWQ6YQ2q8/WAryBxc2OAybcGHBUFkxyACpJukeU1QZ/9tNw==} + /@swc/core-linux-x64-gnu@1.5.5: + resolution: {integrity: sha512-kj4ZwWJGeBEUzHrRQP2VudN+kkkYH7OI1dPVDc6kWQx5X4329JeKOas4qY0l7gDVjBbRwN9IbbPI6TIn2KfAug==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-musl@1.3.56: - resolution: {integrity: sha512-r+D34WLAOAlJtfw1gaVWpHRwCncU9nzW9i7w9kSw4HpWYnHJOz54jLGSEmNsrhdTCz1VK2ar+V2ktFUsrlGlDA==} + /@swc/core-linux-x64-musl@1.5.5: + resolution: {integrity: sha512-6pTorCs4mYhPhYtC4jNOnhGgjNd3DZcRoZ9P0tzXXP69aCbYjvlgNH/NRvAROp9AaVFeZ7a7PmCWb6+Rbe7NKg==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-win32-arm64-msvc@1.3.56: - resolution: {integrity: sha512-29Yt75Is6X24z3x8h/xZC1HnDPkPpyLH9mDQiM6Cuc0I9mVr1XSriPEUB2N/awf5IE4SA8c+3IVq1DtKWbkJIw==} + /@swc/core-win32-arm64-msvc@1.5.5: + resolution: {integrity: sha512-o0/9pstmEjwZyrY/bA+mymF0zH7E+GT/XCVqdKeWW9Wn3gTTyWa5MZnrFgI2THQ+AXwdglMB/Zo76ARQPaz/+A==} engines: {node: '>=10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-ia32-msvc@1.3.56: - resolution: {integrity: sha512-mplp0zbYDrcHtfvkniXlXdB04e2qIjz2Gq/XHKr4Rnc6xVORJjjXF91IemXKpavx2oZYJws+LNJL7UFQ8jyCdQ==} + /@swc/core-win32-ia32-msvc@1.5.5: + resolution: {integrity: sha512-B+nypUwsmCuaH6RtKWgiPCb+ENjxstJPPJeMJvBqlJqyCaIkZzN4M07Ozi3xVv1VG21SRkd6G3xIqRoalrNc0Q==} engines: {node: '>=10'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-x64-msvc@1.3.56: - resolution: {integrity: sha512-zp8MBnrw/bjdLenO/ifYzHrImSjKunqL0C2IF4LXYNRfcbYFh2NwobsVQMZ20IT0474lKRdlP8Oxdt+bHuXrzA==} + /@swc/core-win32-x64-msvc@1.5.5: + resolution: {integrity: sha512-ry83ki9ZX0Q+GWGnqc2J618Z+FvKE8Ajn42F8EYi8Wj0q6Jz3mj+pJzgzakk2INm2ldEZ+FaRPipn4ozsZDcBg==} engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@swc/core@1.3.56: - resolution: {integrity: sha512-yz/EeXT+PMZucUNrYceRUaTfuNS4IIu5EDZSOlvCEvm4jAmZi7CYH1B/kvzEzoAOzr7zkQiDPNJftcQXLkjbjA==} + /@swc/core@1.5.5: + resolution: {integrity: sha512-M8O22EEgdSONLd+7KRrXj8pn+RdAZZ7ISnPjE9KCQQlI0kkFNEquWR+uFdlFxQfwlyCe/Zb6uGXGDvtcov4IMg==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -1884,43 +1841,55 @@ packages: peerDependenciesMeta: '@swc/helpers': optional: true + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.6 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.56 - '@swc/core-darwin-x64': 1.3.56 - '@swc/core-linux-arm-gnueabihf': 1.3.56 - '@swc/core-linux-arm64-gnu': 1.3.56 - '@swc/core-linux-arm64-musl': 1.3.56 - '@swc/core-linux-x64-gnu': 1.3.56 - '@swc/core-linux-x64-musl': 1.3.56 - '@swc/core-win32-arm64-msvc': 1.3.56 - '@swc/core-win32-ia32-msvc': 1.3.56 - '@swc/core-win32-x64-msvc': 1.3.56 + '@swc/core-darwin-arm64': 1.5.5 + '@swc/core-darwin-x64': 1.5.5 + '@swc/core-linux-arm-gnueabihf': 1.5.5 + '@swc/core-linux-arm64-gnu': 1.5.5 + '@swc/core-linux-arm64-musl': 1.5.5 + '@swc/core-linux-x64-gnu': 1.5.5 + '@swc/core-linux-x64-musl': 1.5.5 + '@swc/core-win32-arm64-msvc': 1.5.5 + '@swc/core-win32-ia32-msvc': 1.5.5 + '@swc/core-win32-x64-msvc': 1.5.5 + + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - /@swc/helpers@0.4.14: - resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + /@swc/helpers@0.5.11: + resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} dependencies: - tslib: 2.4.1 + tslib: 2.6.2 dev: false - /@swc/jest@0.2.26(@swc/core@1.3.56): - resolution: {integrity: sha512-7lAi7q7ShTO3E5Gt1Xqf3pIhRbERxR1DUxvtVa9WKzIB+HGQ7wZP5sYx86zqnaEoKKGhmOoZ7gyW0IRu8Br5+A==} + /@swc/jest@0.2.36(@swc/core@1.5.5): + resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==} engines: {npm: '>= 7.0.0'} peerDependencies: '@swc/core': '*' dependencies: - '@jest/create-cache-key-function': 27.5.1 - '@swc/core': 1.3.56 - jsonc-parser: 3.2.0 + '@jest/create-cache-key-function': 29.7.0 + '@swc/core': 1.5.5 + '@swc/counter': 0.1.3 + jsonc-parser: 3.2.1 dev: true + /@swc/types@0.1.6: + resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} + dependencies: + '@swc/counter': 0.1.3 + /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} requiresBuild: true optional: true - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -1928,96 +1897,123 @@ packages: /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - /@tsconfig/node16@1.0.3: - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} /@types/babel__core@7.1.20: resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} dependencies: '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 + '@babel/types': 7.24.5 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.3 + '@types/babel__traverse': 7.20.5 + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.24.5 + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.24.5 /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 + '@babel/types': 7.24.5 - /@types/babel__traverse@7.18.3: - resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/types': 7.20.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + dependencies: + '@babel/types': 7.24.5 - /@types/body-parser@1.19.2: - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: - '@types/connect': 3.4.35 - '@types/node': 16.18.4 + '@types/connect': 3.4.38 + '@types/node': 16.18.97 - /@types/connect@3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 16.18.4 + '@types/node': 16.18.97 - /@types/cookiejar@2.1.2: - resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==} + /@types/cookiejar@2.1.5: + resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} dev: true - /@types/eslint-scope@3.7.4: - resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: - '@types/eslint': 8.4.10 - '@types/estree': 0.0.51 + '@types/eslint': 8.56.10 + '@types/estree': 1.0.5 - /@types/eslint@8.4.10: - resolution: {integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==} + /@types/eslint@8.56.10: + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} dependencies: - '@types/estree': 0.0.51 - '@types/json-schema': 7.0.11 + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 - /@types/estree@0.0.51: - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - /@types/express-serve-static-core@4.17.31: - resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} + /@types/express-serve-static-core@4.19.0: + resolution: {integrity: sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==} dependencies: - '@types/node': 16.18.4 - '@types/qs': 6.9.7 - '@types/range-parser': 1.2.4 + '@types/node': 16.18.97 + '@types/qs': 6.9.15 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 - /@types/express@4.17.14: - resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: - '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.31 - '@types/qs': 6.9.7 - '@types/serve-static': 1.15.0 + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.0 + '@types/qs': 6.9.15 + '@types/serve-static': 1.15.7 - /@types/graceful-fs@4.1.5: - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 16.18.4 + '@types/node': 16.18.97 + + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.6 - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: - '@types/istanbul-lib-report': 3.0.0 + '@types/istanbul-lib-report': 3.0.3 /@types/jest@28.1.8: resolution: {integrity: sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==} @@ -2026,133 +2022,134 @@ packages: pretty-format: 28.1.3 dev: true - /@types/js-yaml@4.0.5: - resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} + /@types/js-yaml@4.0.9: + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} dev: false - /@types/json-schema@7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - /@types/jsonwebtoken@8.5.9: - resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==} + /@types/jsonwebtoken@9.0.6: + resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} dependencies: - '@types/node': 16.18.4 + '@types/node': 16.18.97 dev: false - /@types/mime@3.0.1: - resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + /@types/methods@1.1.4: + resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} + dev: true + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - /@types/multer@1.4.7: - resolution: {integrity: sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==} + /@types/multer@1.4.11: + resolution: {integrity: sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==} dependencies: - '@types/express': 4.17.14 + '@types/express': 4.17.21 dev: true - /@types/node@16.18.4: - resolution: {integrity: sha512-9qGjJ5GyShZjUfx2ArBIGM+xExdfLvvaCyQR0t6yRXKPcWCVYF/WemtX/uIU3r7FYECXRXkIiw2Vnhn6y8d+pw==} + /@types/node@16.18.97: + resolution: {integrity: sha512-4muilE1Lbfn57unR+/nT9AFjWk0MtWi5muwCEJqnOvfRQDbSfLCUdN7vCIg8TYuaANfhLOV85ve+FNpiUsbSRg==} - /@types/parse-json@4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + /@types/parse-json@4.0.2: + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} dev: true - /@types/passport-jwt@3.0.7: - resolution: {integrity: sha512-qRQ4qlww1Yhs3IaioDKrsDNmKy6gLDLgFsGwpCnc2YqWovO2Oxu9yCQdWHMJafQ7UIuOba4C4/TNXcGkQfEjlQ==} + /@types/passport-jwt@3.0.13: + resolution: {integrity: sha512-fjHaC6Bv8EpMMqzTnHP32SXlZGaNfBPC/Po5dmRGYi2Ky7ljXPbGnOy+SxZqa6iZvFgVhoJ1915Re3m93zmcfA==} dependencies: - '@types/express': 4.17.14 - '@types/jsonwebtoken': 8.5.9 - '@types/passport-strategy': 0.2.35 + '@types/express': 4.17.21 + '@types/jsonwebtoken': 9.0.6 + '@types/passport-strategy': 0.2.38 dev: false - /@types/passport-strategy@0.2.35: - resolution: {integrity: sha512-o5D19Jy2XPFoX2rKApykY15et3Apgax00RRLf0RUotPDUsYrQa7x4howLYr9El2mlUApHmCMv5CZ1IXqKFQ2+g==} + /@types/passport-strategy@0.2.38: + resolution: {integrity: sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA==} dependencies: - '@types/express': 4.17.14 - '@types/passport': 1.0.11 + '@types/express': 4.17.21 + '@types/passport': 1.0.16 dev: false - /@types/passport@1.0.11: - resolution: {integrity: sha512-pz1cx9ptZvozyGKKKIPLcVDVHwae4hrH5d6g5J+DkMRRjR3cVETb4jMabhXAUbg3Ov7T22nFHEgaK2jj+5CBpw==} + /@types/passport@1.0.16: + resolution: {integrity: sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A==} dependencies: - '@types/express': 4.17.14 + '@types/express': 4.17.21 dev: false - /@types/prettier@2.7.1: - resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} + /@types/prettier@2.7.3: + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} dev: false - /@types/qs@6.9.7: - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + /@types/qs@6.9.15: + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} - /@types/range-parser@1.2.4: - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - /@types/react-transition-group@4.4.5: - resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} + /@types/react-transition-group@4.4.10: + resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} dependencies: - '@types/react': 18.0.28 + '@types/react': 18.3.2 dev: false - /@types/react@18.0.28: - resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==} + /@types/react@18.3.2: + resolution: {integrity: sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==} dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.2 - csstype: 3.1.1 + '@types/prop-types': 15.7.12 + csstype: 3.1.3 dev: false - /@types/scheduler@0.16.2: - resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - dev: false - - /@types/semver@7.3.13: - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true - /@types/serve-static@1.15.0: - resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 16.18.97 + + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: - '@types/mime': 3.0.1 - '@types/node': 16.18.4 + '@types/http-errors': 2.0.4 + '@types/node': 16.18.97 + '@types/send': 0.17.4 /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - /@types/superagent@4.1.16: - resolution: {integrity: sha512-tLfnlJf6A5mB6ddqF159GqcDizfzbMUB1/DeT59/wBNqzRTNNKsaw79A/1TZ84X+f/EwWH8FeuSkjlCLyqS/zQ==} + /@types/superagent@8.1.7: + resolution: {integrity: sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww==} dependencies: - '@types/cookiejar': 2.1.2 - '@types/node': 16.18.4 + '@types/cookiejar': 2.1.5 + '@types/methods': 1.1.4 + '@types/node': 16.18.97 dev: true - /@types/supertest@2.0.12: - resolution: {integrity: sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==} + /@types/supertest@2.0.16: + resolution: {integrity: sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==} dependencies: - '@types/superagent': 4.1.16 + '@types/superagent': 8.1.7 dev: true - /@types/warning@3.0.0: - resolution: {integrity: sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==} + /@types/warning@3.0.3: + resolution: {integrity: sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==} dev: false - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - /@types/yargs@16.0.5: - resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: - '@types/yargs-parser': 21.0.0 - dev: true + '@types/yargs-parser': 21.0.3 - /@types/yargs@17.0.15: - resolution: {integrity: sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg==} - dependencies: - '@types/yargs-parser': 21.0.0 - - /@typescript-eslint/eslint-plugin@5.45.0(@typescript-eslint/parser@5.45.0)(eslint@8.29.0)(typescript@4.5.2): - resolution: {integrity: sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA==} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@4.5.2): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2162,24 +2159,25 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.45.0(eslint@8.29.0)(typescript@4.5.2) - '@typescript-eslint/scope-manager': 5.45.0 - '@typescript-eslint/type-utils': 5.45.0(eslint@8.29.0)(typescript@4.5.2) - '@typescript-eslint/utils': 5.45.0(eslint@8.29.0)(typescript@4.5.2) + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.5.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@4.5.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.5.2) debug: 4.3.4 - eslint: 8.29.0 - ignore: 5.2.1 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 - semver: 7.3.8 + semver: 7.6.2 tsutils: 3.21.0(typescript@4.5.2) typescript: 4.5.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.45.0(eslint@8.29.0)(typescript@4.5.2): - resolution: {integrity: sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==} + /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.5.2): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2188,26 +2186,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.45.0 - '@typescript-eslint/types': 5.45.0 - '@typescript-eslint/typescript-estree': 5.45.0(typescript@4.5.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.5.2) debug: 4.3.4 - eslint: 8.29.0 + eslint: 8.57.0 typescript: 4.5.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.45.0: - resolution: {integrity: sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==} + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.45.0 - '@typescript-eslint/visitor-keys': 5.45.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/type-utils@5.45.0(eslint@8.29.0)(typescript@4.5.2): - resolution: {integrity: sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q==} + /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@4.5.2): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -2216,23 +2214,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.45.0(typescript@4.5.2) - '@typescript-eslint/utils': 5.45.0(eslint@8.29.0)(typescript@4.5.2) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.5.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.5.2) debug: 4.3.4 - eslint: 8.29.0 + eslint: 8.57.0 tsutils: 3.21.0(typescript@4.5.2) typescript: 4.5.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.45.0: - resolution: {integrity: sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==} + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.45.0(typescript@4.5.2): - resolution: {integrity: sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==} + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.5.2): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -2240,175 +2238,179 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.45.0 - '@typescript-eslint/visitor-keys': 5.45.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 + semver: 7.6.2 tsutils: 3.21.0(typescript@4.5.2) typescript: 4.5.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.45.0(eslint@8.29.0)(typescript@4.5.2): - resolution: {integrity: sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA==} + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@4.5.2): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.45.0 - '@typescript-eslint/types': 5.45.0 - '@typescript-eslint/typescript-estree': 5.45.0(typescript@4.5.2) - eslint: 8.29.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.5.2) + eslint: 8.57.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.29.0) - semver: 7.3.8 + semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.45.0: - resolution: {integrity: sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==} + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.45.0 - eslint-visitor-keys: 3.3.0 + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 dev: true - /@ucast/core@1.10.1: - resolution: {integrity: sha512-sXKbvQiagjFh2JCpaHUa64P4UdJbOxYeC5xiZFn8y6iYdb0WkismduE+RmiJrIjw/eLDYmIEXiQeIYYowmkcAw==} + /@ucast/core@1.10.2: + resolution: {integrity: sha512-ons5CwXZ/51wrUPfoduC+cO7AS1/wRb0ybpQJ9RrssossDxVy4t49QxWoWgfBDvVKsz9VXzBk9z0wqTdZ+Cq8g==} dev: false - /@ucast/js@3.0.2: - resolution: {integrity: sha512-zxNkdIPVvqJjHI7D/iK8Aai1+59yqU+N7bpHFodVmiTN7ukeNiGGpNmmSjQgsUw7eNcEBnPrZHNzp5UBxwmaPw==} + /@ucast/js@3.0.4: + resolution: {integrity: sha512-TgG1aIaCMdcaEyckOZKQozn1hazE0w90SVdlpIJ/er8xVumE11gYAtSbw/LBeUnA4fFnFWTcw3t6reqseeH/4Q==} dependencies: - '@ucast/core': 1.10.1 + '@ucast/core': 1.10.2 dev: false - /@ucast/mongo2js@1.3.3: - resolution: {integrity: sha512-sBPtMUYg+hRnYeVYKL+ATm8FaRPdlU9PijMhGYKgsPGjV9J4Ks41ytIjGayvKUnBOEhiCaKUUnY4qPeifdqATw==} + /@ucast/mongo2js@1.3.4: + resolution: {integrity: sha512-ahazOr1HtelA5AC1KZ9x0UwPMqqimvfmtSm/PRRSeKKeE5G2SCqTgwiNzO7i9jS8zA3dzXpKVPpXMkcYLnyItA==} dependencies: - '@ucast/core': 1.10.1 - '@ucast/js': 3.0.2 - '@ucast/mongo': 2.4.2 + '@ucast/core': 1.10.2 + '@ucast/js': 3.0.4 + '@ucast/mongo': 2.4.3 dev: false - /@ucast/mongo@2.4.2: - resolution: {integrity: sha512-/zH1TdBJlYGKKD+Wh0oyD+aBvDSWrwHcD8b4tUL9UgHLhzHtkEnMVFuxbw3SRIRsAa01wmy06+LWt+WoZdj1Bw==} + /@ucast/mongo@2.4.3: + resolution: {integrity: sha512-XcI8LclrHWP83H+7H2anGCEeDq0n+12FU2mXCTz6/Tva9/9ddK/iacvvhCyW6cijAAOILmt0tWplRyRhVyZLsA==} dependencies: - '@ucast/core': 1.10.1 + '@ucast/core': 1.10.2 dev: false - /@vitejs/plugin-react@3.1.0(vite@4.2.1): + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vitejs/plugin-react@3.1.0(vite@4.5.3): resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.1.0-beta.0 dependencies: - '@babel/core': 7.21.3 - '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.3) - '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.3) + '@babel/core': 7.24.5 + '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) magic-string: 0.27.0 - react-refresh: 0.14.0 - vite: 4.2.1 + react-refresh: 0.14.2 + vite: 4.5.3 transitivePeerDependencies: - supports-color dev: true - /@webassemblyjs/ast@1.11.1: - resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} dependencies: - '@webassemblyjs/helper-numbers': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - /@webassemblyjs/floating-point-hex-parser@1.11.1: - resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - /@webassemblyjs/helper-api-error@1.11.1: - resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - /@webassemblyjs/helper-buffer@1.11.1: - resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - /@webassemblyjs/helper-numbers@1.11.1: - resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - /@webassemblyjs/helper-wasm-bytecode@1.11.1: - resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - /@webassemblyjs/helper-wasm-section@1.11.1: - resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 - /@webassemblyjs/ieee754@1.11.1: - resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 - /@webassemblyjs/leb128@1.11.1: - resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 - /@webassemblyjs/utf8@1.11.1: - resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - /@webassemblyjs/wasm-edit@1.11.1: - resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/helper-wasm-section': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-opt': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - '@webassemblyjs/wast-printer': 1.11.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 - /@webassemblyjs/wasm-gen@1.11.1: - resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 - /@webassemblyjs/wasm-opt@1.11.1: - resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 - /@webassemblyjs/wasm-parser@1.11.1: - resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 - /@webassemblyjs/wast-printer@1.11.1: - resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} dependencies: - '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 /@xtuc/ieee754@1.2.0: @@ -2420,13 +2422,6 @@ packages: /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - dependencies: - event-target-shim: 5.0.1 - dev: false - /abortcontroller-polyfill@1.7.5: resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} dev: false @@ -2438,27 +2433,27 @@ packages: mime-types: 2.1.35 negotiator: 0.6.3 - /acorn-import-assertions@1.8.0(acorn@8.8.1): - resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.8.1 + acorn: 8.11.3 - /acorn-jsx@5.3.2(acorn@8.8.1): + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.1 + acorn: 8.11.3 dev: true - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - /acorn@8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true @@ -2470,16 +2465,12 @@ packages: transitivePeerDependencies: - supports-color - /agentkeepalive@4.3.0: - resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} + /agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} requiresBuild: true dependencies: - debug: 4.3.4 - depd: 2.0.0 humanize-ms: 1.2.1 - transitivePeerDependencies: - - supports-color optional: true /aggregate-error@3.1.0: @@ -2491,7 +2482,7 @@ packages: indent-string: 4.0.0 optional: true - /ajv-formats@2.1.1(ajv@8.11.0): + /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 @@ -2499,7 +2490,7 @@ packages: ajv: optional: true dependencies: - ajv: 8.11.0 + ajv: 8.12.0 dev: true /ajv-keywords@3.5.2(ajv@6.12.6): @@ -2517,8 +2508,8 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv@8.11.0: - resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -2578,13 +2569,8 @@ packages: /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - /are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.0 + requiresBuild: true + optional: true /are-we-there-yet@3.0.1: resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} @@ -2592,7 +2578,7 @@ packages: requiresBuild: true dependencies: delegates: 1.0.0 - readable-stream: 3.6.0 + readable-stream: 3.6.2 optional: true /arg@4.1.3: @@ -2623,27 +2609,27 @@ packages: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: true - /async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} dev: true /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /babel-jest@28.1.3(@babel/core@7.21.3): + /babel-jest@28.1.3(@babel/core@7.24.5): resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@jest/transform': 28.1.3 - '@types/babel__core': 7.1.20 + '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3(@babel/core@7.21.3) + babel-preset-jest: 28.1.3(@babel/core@7.24.5) chalk: 4.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color @@ -2652,7 +2638,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.24.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -2665,38 +2651,38 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@babel/template': 7.18.10 - '@babel/types': 7.20.5 + '@babel/types': 7.24.5 '@types/babel__core': 7.1.20 - '@types/babel__traverse': 7.18.3 + '@types/babel__traverse': 7.20.5 - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.3): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.5): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.3 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.3) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.3) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.3) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.3) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.3) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.3) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.3) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.3) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.3) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.3) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.3) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.3) - - /babel-preset-jest@28.1.3(@babel/core@7.21.3): + '@babel/core': 7.24.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) + + /babel-preset-jest@28.1.3(@babel/core@7.24.5): resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 babel-plugin-jest-hoist: 28.1.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.3) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.5) /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2704,29 +2690,33 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /bignumber.js@9.1.1: - resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==} + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} dev: false - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} dev: true + /bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + dependencies: + file-uri-to-path: 1.0.0 + /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 inherits: 2.0.4 - readable-stream: 3.6.0 - dev: true + readable-stream: 3.6.2 /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 - content-type: 1.0.4 + content-type: 1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 @@ -2740,16 +2730,39 @@ packages: transitivePeerDependencies: - supports-color + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true - /bootstrap@5.2.3(@popperjs/core@2.11.6): - resolution: {integrity: sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==} + /bootstrap-icons@1.11.3: + resolution: {integrity: sha512-+3lpHrCw/it2/7lBL15VR0HEumaBss0+f/Lb6ZvHISn1mlK83jjFpooTLsMWbIjJMDjDjOExMsTxnXSIT4k4ww==} + dev: false + + /bootstrap@5.3.3(@popperjs/core@2.11.8): + resolution: {integrity: sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==} peerDependencies: - '@popperjs/core': ^2.11.6 + '@popperjs/core': ^2.11.8 dependencies: - '@popperjs/core': 2.11.6 + '@popperjs/core': 2.11.8 dev: false /brace-expansion@1.1.11: @@ -2769,32 +2782,22 @@ packages: dependencies: fill-range: 7.0.1 - /browser-tabs-lock@1.2.15: - resolution: {integrity: sha512-J8K9vdivK0Di+b8SBdE7EZxDr88TnATing7XoLw6+nFkXMQ6sVBh92K3NQvZlZU91AIkFRi0w3sztk5Z+vsswA==} + /browser-tabs-lock@1.3.0: + resolution: {integrity: sha512-g6nHaobTiT0eMZ7jh16YpD2kcjAp+PInbiVq3M1x6KKaEIVhT4v9oURNIpZLOZ3LQbQ3XYfNhMAb/9hzNLIWrw==} requiresBuild: true dependencies: lodash: 4.17.21 dev: false - /browserslist@4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001436 - electron-to-chromium: 1.4.284 - node-releases: 2.0.6 - update-browserslist-db: 1.0.10(browserslist@4.21.4) - - /browserslist@4.21.5: - resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001468 - electron-to-chromium: 1.4.284 - node-releases: 2.0.10 - update-browserslist-db: 1.0.10(browserslist@4.21.5) + caniuse-lite: 1.0.30001617 + electron-to-chromium: 1.4.763 + node-releases: 2.0.14 + update-browserslist-db: 1.0.15(browserslist@4.23.0) /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -2815,17 +2818,11 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer-writer@2.0.0: - resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} - engines: {node: '>=4'} - dev: false - /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: true /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -2865,17 +2862,21 @@ packages: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 8.0.1 - tar: 6.1.13 + tar: 6.2.1 unique-filename: 1.1.1 transitivePeerDependencies: - bluebird optional: true - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.1.3 + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -2885,7 +2886,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.4.1 + tslib: 2.6.2 dev: true /camelcase@5.3.1: @@ -2896,11 +2897,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /caniuse-lite@1.0.30001436: - resolution: {integrity: sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==} - - /caniuse-lite@1.0.30001468: - resolution: {integrity: sha512-zgAo8D5kbOyUcRAgSmgyuvBkjrGk5CGYG5TYgFdpQv+ywcyEpo1LOWoG8YmoflGnh+V+UsNuKYedsoYs0hzV5A==} + /caniuse-lite@1.0.30001617: + resolution: {integrity: sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==} /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -2910,14 +2908,6 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2945,9 +2935,27 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 + dev: true + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 dev: true + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} @@ -2956,22 +2964,22 @@ packages: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} - /ci-info@3.7.0: - resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - /cjs-module-lexer@1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + /cjs-module-lexer@1.3.1: + resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} /class-transformer@0.5.1: resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} - /classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + /classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} dev: false - /clean-css@5.3.2: - resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} + /clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} dependencies: source-map: 0.6.1 @@ -3003,13 +3011,13 @@ packages: yargs: 16.2.0 dev: false - /cli-spinners@2.7.0: - resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} dev: true - /cli-table3@0.6.2: - resolution: {integrity: sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==} + /cli-table3@0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} engines: {node: 10.* || >= 12.*} dependencies: string-width: 4.2.3 @@ -3050,6 +3058,9 @@ packages: /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -3070,9 +3081,11 @@ packages: /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true + requiresBuild: true + optional: true - /colorette@2.0.19: - resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true /combined-stream@1.0.8: @@ -3095,8 +3108,8 @@ packages: engines: {node: '>= 12'} dev: true - /component-emitter@1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + /component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} dev: true /concat-map@0.0.1: @@ -3108,7 +3121,7 @@ packages: dependencies: buffer-from: 1.1.2 inherits: 2.0.4 - readable-stream: 2.3.7 + readable-stream: 2.3.8 typedarray: 0.0.6 /connect-history-api-fallback@1.6.0: @@ -3121,6 +3134,8 @@ packages: /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + requiresBuild: true + optional: true /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} @@ -3128,13 +3143,16 @@ packages: dependencies: safe-buffer: 5.2.1 - /content-type@1.0.4: - resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} @@ -3142,12 +3160,12 @@ packages: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} - /cookiejar@2.1.3: - resolution: {integrity: sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==} + /cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} dev: true - /core-js@3.26.1: - resolution: {integrity: sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==} + /core-js@3.37.0: + resolution: {integrity: sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==} requiresBuild: true dev: false @@ -3165,7 +3183,7 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} dependencies: - '@types/parse-json': 4.0.0 + '@types/parse-json': 4.0.2 import-fresh: 3.3.0 parse-json: 5.2.0 path-type: 4.0.0 @@ -3198,13 +3216,15 @@ packages: engines: {node: '>= 6'} dev: true - /csstype@3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} dev: false - /date-fns@2.29.3: - resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.24.5 dev: false /debug@2.6.9: @@ -3240,15 +3260,25 @@ packages: dependencies: ms: 2.1.2 + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge@4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} /defaults@1.0.4: @@ -3257,6 +3287,14 @@ packages: clone: 1.0.4 dev: true + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -3264,6 +3302,8 @@ packages: /delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + requiresBuild: true + optional: true /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} @@ -3278,8 +3318,8 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - /detect-libc@2.0.1: - resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} + /detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} /detect-newline@3.1.0: @@ -3318,8 +3358,8 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.21.0 - csstype: 3.1.1 + '@babel/runtime': 7.24.5 + csstype: 3.1.3 dev: false /dom-serializer@1.4.1: @@ -3353,20 +3393,26 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.4.1 + tslib: 2.6.2 dev: true + /dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + dev: false + /dotenv-expand@8.0.3: resolution: {integrity: sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==} engines: {node: '>=12'} + dev: true - /dotenv@16.0.1: - resolution: {integrity: sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==} + /dotenv@16.1.4: + resolution: {integrity: sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==} engines: {node: '>=12'} dev: false - /dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} /ecdsa-sig-formatter@1.0.11: @@ -3378,16 +3424,16 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /ejs@3.1.9: - resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + /ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} hasBin: true dependencies: - jake: 10.8.5 + jake: 10.9.1 dev: true - /electron-to-chromium@1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + /electron-to-chromium@1.4.763: + resolution: {integrity: sha512-k4J8NrtJ9QrvHLRo8Q18OncqBCB7tIUyqxRcJnlonQ0ioHKYB988GcDFF3ZePmnb8eHEopDs/wPHR/iGAFgoUQ==} /emittery@0.10.2: resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} @@ -3411,13 +3457,12 @@ packages: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - dev: true - /enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + /enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} engines: {node: '>=10.13.0'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 tapable: 2.2.1 /entities@2.2.0: @@ -3444,41 +3489,51 @@ packages: resolution: {integrity: sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q==} dev: false - /es-module-lexer@0.9.3: - resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + /es-module-lexer@1.5.2: + resolution: {integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==} - /esbuild@0.17.12: - resolution: {integrity: sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.12 - '@esbuild/android-arm64': 0.17.12 - '@esbuild/android-x64': 0.17.12 - '@esbuild/darwin-arm64': 0.17.12 - '@esbuild/darwin-x64': 0.17.12 - '@esbuild/freebsd-arm64': 0.17.12 - '@esbuild/freebsd-x64': 0.17.12 - '@esbuild/linux-arm': 0.17.12 - '@esbuild/linux-arm64': 0.17.12 - '@esbuild/linux-ia32': 0.17.12 - '@esbuild/linux-loong64': 0.17.12 - '@esbuild/linux-mips64el': 0.17.12 - '@esbuild/linux-ppc64': 0.17.12 - '@esbuild/linux-riscv64': 0.17.12 - '@esbuild/linux-s390x': 0.17.12 - '@esbuild/linux-x64': 0.17.12 - '@esbuild/netbsd-x64': 0.17.12 - '@esbuild/openbsd-x64': 0.17.12 - '@esbuild/sunos-x64': 0.17.12 - '@esbuild/win32-arm64': 0.17.12 - '@esbuild/win32-ia32': 0.17.12 - '@esbuild/win32-x64': 0.17.12 - dev: true - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} /escape-html@1.0.3: @@ -3497,16 +3552,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.5.0(eslint@8.29.0): - resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} + /eslint-config-prettier@8.10.0(eslint@8.57.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.29.0 + eslint: 8.57.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.5.0)(eslint@8.29.0)(prettier@2.8.8): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3517,8 +3572,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.29.0 - eslint-config-prettier: 8.5.0(eslint@8.29.0) + eslint: 8.57.0 + eslint-config-prettier: 8.10.0(eslint@8.57.0) prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true @@ -3530,89 +3585,73 @@ packages: esrecurse: 4.3.0 estraverse: 4.3.0 - /eslint-scope@7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.29.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.29.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.3.0: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.29.0: - resolution: {integrity: sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==} + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.3.3 - '@humanwhocodes/config-array': 0.11.7 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-utils: 3.0.0(eslint@8.29.0) - eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.18.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.1 - import-fresh: 3.3.0 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.2.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.1 - regexpp: 3.2.0 + optionator: 0.9.4 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color dev: true - /espree@9.4.1: - resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2(acorn@8.8.1) - eslint-visitor-keys: 3.3.0 + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 dev: true /esprima@4.0.1: @@ -3620,8 +3659,8 @@ packages: engines: {node: '>=4'} hasBin: true - /esquery@1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 @@ -3654,11 +3693,6 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false - /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -3696,6 +3730,10 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} + /expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + /expect@28.1.3: resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -3714,7 +3752,7 @@ packages: array-flatten: 1.1.1 body-parser: 1.20.1 content-disposition: 0.5.4 - content-type: 1.0.4 + content-type: 1.0.5 cookie: 0.5.0 cookie-signature: 1.0.6 debug: 2.6.9 @@ -3757,15 +3795,19 @@ packages: tmp: 0.0.33 dev: true + /fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + dev: false + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3789,12 +3831,12 @@ packages: resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} dev: false - /fastify-plugin@4.4.0: - resolution: {integrity: sha512-ovwFQG2qNy3jcCROiWpr94Hs0le+c7N/3t7m9aVwbFhkxcR/esp2xu25dP8e617HpQdmeDv+gFX4zagdUhDByw==} + /fastify-plugin@4.5.1: + resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} dev: false - /fastq@1.14.0: - resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 dev: true @@ -3815,13 +3857,16 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.2.0 dev: true + /file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + /filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: - minimatch: 5.1.1 + minimatch: 5.1.6 dev: true /fill-range@7.0.1: @@ -3859,43 +3904,40 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.7 + flatted: 3.3.1 + keyv: 4.5.4 rimraf: 3.0.2 dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true - /fork-ts-checker-webpack-plugin@7.2.13(typescript@4.8.4)(webpack@5.74.0): - resolution: {integrity: sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==} + /fork-ts-checker-webpack-plugin@8.0.0(typescript@4.9.5)(webpack@5.82.1): + resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: typescript: '>3.6.0' - vue-template-compiler: '*' webpack: ^5.11.0 - peerDependenciesMeta: - vue-template-compiler: - optional: true dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.24.2 chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.1.0 - deepmerge: 4.2.2 + deepmerge: 4.3.1 fs-extra: 10.1.0 - memfs: 3.4.12 + memfs: 3.5.3 minimatch: 3.1.2 - node-abort-controller: 3.0.1 - schema-utils: 3.1.1 - semver: 7.3.8 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.6.2 tapable: 2.2.1 - typescript: 4.8.4 - webpack: 5.74.0(@swc/core@1.3.56) + typescript: 4.9.5 + webpack: 5.82.1(@swc/core@1.5.5) dev: true /form-data@4.0.0: @@ -3907,13 +3949,13 @@ packages: mime-types: 2.1.35 dev: true - /formidable@2.1.1: - resolution: {integrity: sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==} + /formidable@2.1.2: + resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} dependencies: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 - qs: 6.11.0 + qs: 6.12.1 dev: true /forwarded@0.2.0: @@ -3924,13 +3966,16 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 6.1.0 - universalify: 2.0.0 + universalify: 2.0.1 dev: true /fs-minipass@2.1.0: @@ -3939,36 +3984,22 @@ packages: dependencies: minipass: 3.3.6 - /fs-monkey@1.0.3: - resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} + /fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} dev: true /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - - /gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} /gauge@4.0.4: resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} @@ -3985,24 +4016,24 @@ packages: wide-align: 1.1.5 optional: true - /gaxios@5.1.0: - resolution: {integrity: sha512-aezGIjb+/VfsJtIcHGcBSerNEDdfdHeMros+RbYbGpmonKWQCOVOes0LVZhn1lDtIgq55qq0HaxymIoae3Fl/A==} + /gaxios@5.1.3: + resolution: {integrity: sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==} engines: {node: '>=12'} dependencies: extend: 3.0.2 https-proxy-agent: 5.0.1 is-stream: 2.0.1 - node-fetch: 2.6.7 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding - supports-color dev: false - /gcp-metadata@5.2.0: - resolution: {integrity: sha512-aFhhvvNycky2QyhG+dcfEdHBF0FRbYcf39s6WNHUDysKSrbJ5vuFbjydxBcmewtXeV248GP8dWT3ByPNxsyHCw==} + /gcp-metadata@5.3.0: + resolution: {integrity: sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==} engines: {node: '>=12'} dependencies: - gaxios: 5.1.0 + gaxios: 5.1.3 json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -4017,12 +4048,15 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-intrinsic@1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: - function-bind: 1.1.1 - has: 1.0.3 + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 has-symbols: 1.0.3 + hasown: 2.0.2 /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} @@ -4039,6 +4073,9 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + /github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -4066,23 +4103,33 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.0.3: - resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.1.1 + minimatch: 5.1.6 once: 1.4.0 dev: false + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.11.1 + dev: true + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.18.0: - resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -4094,22 +4141,22 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.1 + fast-glob: 3.3.2 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true - /google-auth-library@8.7.0: - resolution: {integrity: sha512-1M0NG5VDIvJZEnstHbRdckLZESoJwguinwN8Dhae0j2ZKIQFIV63zxm6Fo6nM4xkgqUr2bbMtV5Dgo+Hy6oo0Q==} + /google-auth-library@8.9.0: + resolution: {integrity: sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==} engines: {node: '>=12'} dependencies: arrify: 2.0.1 base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 fast-text-encoding: 1.0.6 - gaxios: 5.1.0 - gcp-metadata: 5.2.0 + gaxios: 5.1.3 + gcp-metadata: 5.3.0 gtoken: 6.1.2 jws: 4.0.0 lru-cache: 6.0.0 @@ -4131,11 +4178,11 @@ packages: engines: {node: '>=12.0.0'} dependencies: extend: 3.0.2 - gaxios: 5.1.0 - google-auth-library: 8.7.0 - qs: 6.11.0 + gaxios: 5.1.3 + google-auth-library: 8.9.0 + qs: 6.12.1 url-template: 2.0.8 - uuid: 9.0.0 + uuid: 9.0.1 transitivePeerDependencies: - encoding - supports-color @@ -4145,25 +4192,33 @@ packages: resolution: {integrity: sha512-Ny6zJOGn5P/YDT6GQbJU6K0lSzEu4Yuxnsn45ZgBIeSQ1RM0FolEjUToLXquZd89DU9wUfqA5XYHPEctk1TFWg==} engines: {node: '>=12.0.0'} dependencies: - google-auth-library: 8.7.0 + google-auth-library: 8.9.0 googleapis-common: 6.0.4 transitivePeerDependencies: - encoding - supports-color dev: false + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true /gtoken@6.1.2: resolution: {integrity: sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==} engines: {node: '>=12.0.0'} dependencies: - gaxios: 5.1.0 + gaxios: 5.1.3 google-p12-pem: 4.0.1 jws: 4.0.0 transitivePeerDependencies: @@ -4179,18 +4234,29 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + requiresBuild: true + optional: true - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -4215,12 +4281,12 @@ packages: hasBin: true dependencies: camel-case: 4.1.2 - clean-css: 5.3.2 + clean-css: 5.3.3 commander: 8.3.0 he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.16.1 + terser: 5.31.0 dev: true /http-cache-semantics@4.1.1: @@ -4296,8 +4362,8 @@ packages: resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} dev: true - /ignore@5.2.1: - resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} dev: true @@ -4341,9 +4407,12 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + /inquirer@8.2.4: + resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} + engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -4353,15 +4422,17 @@ packages: figures: 3.2.0 lodash: 4.17.21 mute-stream: 0.0.8 + ora: 5.4.1 run-async: 2.4.1 - rxjs: 6.6.7 + rxjs: 7.8.1 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 + wrap-ansi: 7.0.0 dev: true - /inquirer@8.2.4: - resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} + /inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 @@ -4374,7 +4445,7 @@ packages: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.5.7 + rxjs: 7.8.1 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -4392,9 +4463,13 @@ packages: loose-envify: 1.4.0 dev: false - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + /ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} requiresBuild: true + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 optional: true /ipaddr.js@1.9.1: @@ -4408,13 +4483,13 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 dev: true - /is-core-module@2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - has: 1.0.3 + hasown: 2.0.2 /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -4471,28 +4546,28 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} requiresBuild: true - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.21.3 - '@babel/parser': 7.21.3 + '@babel/core': 7.24.5 + '@babel/parser': 7.24.5 '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 transitivePeerDependencies: - supports-color - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 supports-color: 7.2.0 /istanbul-lib-source-maps@4.0.1: @@ -4500,28 +4575,28 @@ packages: engines: {node: '>=10'} dependencies: debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 /iterare@1.2.1: resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} engines: {node: '>=6'} - /jake@10.8.5: - resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} + /jake@10.9.1: + resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} engines: {node: '>=10'} hasBin: true dependencies: - async: 3.2.4 + async: 3.2.5 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 @@ -4542,7 +4617,7 @@ packages: '@jest/expect': 28.1.3 '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.4 + '@types/node': 16.18.97 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -4560,7 +4635,7 @@ packages: transitivePeerDependencies: - supports-color - /jest-cli@28.1.3(@types/node@16.18.4)(ts-node@10.7.0): + /jest-cli@28.1.3(@types/node@16.18.97)(ts-node@10.7.0): resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true @@ -4575,19 +4650,19 @@ packages: '@jest/types': 28.1.3 chalk: 4.1.2 exit: 0.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 28.1.3(@types/node@16.18.4)(ts-node@10.7.0) + jest-config: 28.1.3(@types/node@16.18.97)(ts-node@10.7.0) jest-util: 28.1.3 jest-validate: 28.1.3 prompts: 2.4.2 - yargs: 17.6.2 + yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - supports-color - ts-node - /jest-config@28.1.3(@types/node@16.18.4)(ts-node@10.7.0): + /jest-config@28.1.3(@types/node@16.18.97)(ts-node@10.7.0): resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: @@ -4599,16 +4674,16 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 '@jest/test-sequencer': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.4 - babel-jest: 28.1.3(@babel/core@7.21.3) + '@types/node': 16.18.97 + babel-jest: 28.1.3(@babel/core@7.24.5) chalk: 4.1.2 - ci-info: 3.7.0 - deepmerge: 4.2.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 glob: 7.2.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-circus: 28.1.3 jest-environment-node: 28.1.3 jest-get-type: 28.0.2 @@ -4622,7 +4697,7 @@ packages: pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.7.0(@swc/core@1.3.56)(@types/node@16.18.4)(typescript@4.5.2) + ts-node: 10.7.0(@swc/core@1.5.5)(@types/node@16.18.97)(typescript@4.5.2) transitivePeerDependencies: - supports-color @@ -4658,7 +4733,7 @@ packages: '@jest/environment': 28.1.3 '@jest/fake-timers': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.4 + '@types/node': 16.18.97 jest-mock: 28.1.3 jest-util: 28.1.3 @@ -4671,18 +4746,18 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/graceful-fs': 4.1.5 - '@types/node': 16.18.4 + '@types/graceful-fs': 4.1.9 + '@types/node': 16.18.97 anymatch: 3.1.3 fb-watchman: 2.0.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-regex-util: 28.0.2 jest-util: 28.1.3 jest-worker: 28.1.3 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 /jest-leak-detector@28.1.3: resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} @@ -4720,19 +4795,19 @@ packages: jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 typescript: ^3.0.0 || ^4.0.0 dependencies: - jest: 28.1.3(@types/node@16.18.4)(ts-node@10.7.0) + jest: 28.1.3(@types/node@16.18.97)(ts-node@10.7.0) ts-essentials: 7.0.3(typescript@4.5.2) typescript: 4.5.2 dev: true - /jest-mock-extended@3.0.5(jest@28.1.3)(typescript@4.5.2): - resolution: {integrity: sha512-/eHdaNPUAXe7f65gHH5urc8SbRVWjYxBqmCgax2uqOBJy8UUcCBMN1upj1eZ8y/i+IqpyEm4Kq0VKss/GCCTdw==} + /jest-mock-extended@3.0.7(jest@28.1.3)(typescript@4.5.2): + resolution: {integrity: sha512-7lsKdLFcW9B9l5NzZ66S/yTQ9k8rFtnwYdCNuRU/81fqDWicNDVhitTSPnrGmNeNm0xyw0JHexEOShrIKRCIRQ==} peerDependencies: jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 typescript: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - jest: 28.1.3(@types/node@16.18.4)(ts-node@10.7.0) - ts-essentials: 7.0.3(typescript@4.5.2) + jest: 28.1.3(@types/node@16.18.97)(ts-node@10.7.0) + ts-essentials: 10.0.0(typescript@4.5.2) typescript: 4.5.2 dev: false @@ -4741,7 +4816,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 16.18.4 + '@types/node': 16.18.97 /jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} @@ -4772,13 +4847,13 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: chalk: 4.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-haste-map: 28.1.3 jest-pnp-resolver: 1.2.3(jest-resolve@28.1.3) jest-util: 28.1.3 jest-validate: 28.1.3 - resolve: 1.22.1 - resolve.exports: 1.1.0 + resolve: 1.22.8 + resolve.exports: 1.1.1 slash: 3.0.0 /jest-runner@28.1.3: @@ -4790,10 +4865,10 @@ packages: '@jest/test-result': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.4 + '@types/node': 16.18.97 chalk: 4.1.2 emittery: 0.10.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-docblock: 28.1.1 jest-environment-node: 28.1.3 jest-haste-map: 28.1.3 @@ -4821,11 +4896,11 @@ packages: '@jest/transform': 28.1.3 '@jest/types': 28.1.3 chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 + cjs-module-lexer: 1.3.1 + collect-v8-coverage: 1.0.2 execa: 5.1.1 glob: 7.2.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-haste-map: 28.1.3 jest-message-util: 28.1.3 jest-mock: 28.1.3 @@ -4842,20 +4917,20 @@ packages: resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.21.3 - '@babel/generator': 7.21.3 - '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.3) - '@babel/traverse': 7.21.3 - '@babel/types': 7.21.3 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 '@jest/expect-utils': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 - '@types/babel__traverse': 7.18.3 - '@types/prettier': 2.7.1 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.3) + '@types/babel__traverse': 7.20.5 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.5) chalk: 4.1.2 expect: 28.1.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-diff: 28.1.3 jest-get-type: 28.0.2 jest-haste-map: 28.1.3 @@ -4864,7 +4939,7 @@ packages: jest-util: 28.1.3 natural-compare: 1.4.0 pretty-format: 28.1.3 - semver: 7.3.8 + semver: 7.6.2 transitivePeerDependencies: - supports-color @@ -4873,10 +4948,10 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 16.18.4 + '@types/node': 16.18.97 chalk: 4.1.2 - ci-info: 3.7.0 - graceful-fs: 4.2.10 + ci-info: 3.9.0 + graceful-fs: 4.2.11 picomatch: 2.3.1 /jest-validate@28.1.3: @@ -4896,7 +4971,7 @@ packages: dependencies: '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.4 + '@types/node': 16.18.97 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 @@ -4907,7 +4982,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 16.18.4 + '@types/node': 16.18.97 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -4915,11 +4990,11 @@ packages: resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@types/node': 16.18.4 + '@types/node': 16.18.97 merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@28.1.3(@types/node@16.18.4)(ts-node@10.7.0): + /jest@28.1.3(@types/node@16.18.97)(ts-node@10.7.0): resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true @@ -4932,28 +5007,24 @@ packages: '@jest/core': 28.1.3(ts-node@10.7.0) '@jest/types': 28.1.3 import-local: 3.1.0 - jest-cli: 28.1.3(@types/node@16.18.4)(ts-node@10.7.0) + jest-cli: 28.1.3(@types/node@16.18.97)(ts-node@10.7.0) transitivePeerDependencies: - '@types/node' - supports-color - ts-node - /joi@17.7.0: - resolution: {integrity: sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==} + /joi@17.13.1: + resolution: {integrity: sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.4 - '@sideway/formula': 3.0.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 dev: false - /jose@4.14.4: - resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==} - - /js-sdsl@4.2.0: - resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} - dev: true + /jose@4.15.5: + resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -4971,6 +5042,11 @@ packages: dependencies: argparse: 2.0.1 + /jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + requiresBuild: true + optional: true + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -4979,9 +5055,13 @@ packages: /json-bigint@1.0.0: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} dependencies: - bignumber.js: 9.1.1 + bignumber.js: 9.1.2 dev: false + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -4996,25 +5076,19 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5@2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} - engines: {node: '>=6'} - hasBin: true - dev: true - /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - /jsonc-parser@3.1.0: - resolution: {integrity: sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==} - dev: true - /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -5023,9 +5097,9 @@ packages: graceful-fs: 4.2.10 dev: true - /jsonwebtoken@8.5.1: - resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} - engines: {node: '>=4', npm: '>=1.4.28'} + /jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} dependencies: jws: 3.2.2 lodash.includes: 4.3.0 @@ -5036,7 +5110,7 @@ packages: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 5.7.1 + semver: 7.6.2 dev: false /jwa@1.4.1: @@ -5055,16 +5129,16 @@ packages: safe-buffer: 5.2.1 dev: false - /jwks-rsa@3.0.0: - resolution: {integrity: sha512-x9qNrP/kD6tOfrLzBVC5HaneBTR+fCEGIjwk/xSdl+KA7Tzf+R3oiY9ibrONKVLF9fR0V03enkitYPZkO65fAQ==} + /jwks-rsa@3.1.0: + resolution: {integrity: sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==} engines: {node: '>=14'} dependencies: - '@types/express': 4.17.14 - '@types/jsonwebtoken': 8.5.9 + '@types/express': 4.17.21 + '@types/jsonwebtoken': 9.0.6 debug: 4.3.4 - jose: 4.14.4 + jose: 4.15.5 limiter: 1.1.5 - lru-memoizer: 2.1.4 + lru-memoizer: 2.2.0 transitivePeerDependencies: - supports-color dev: false @@ -5083,6 +5157,12 @@ packages: safe-buffer: 5.2.1 dev: false + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -5184,7 +5264,12 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.4.1 + tslib: 2.6.2 + dev: true + + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} dev: true /lru-cache@4.0.2: @@ -5205,37 +5290,37 @@ packages: dependencies: yallist: 4.0.0 - /lru-memoizer@2.1.4: - resolution: {integrity: sha512-IXAq50s4qwrOBrXJklY+KhgZF+5y98PDaNo0gi/v2KQBFLyWr+JyFvijZXkGKjQj/h9c0OwoE+JZbwUXce76hQ==} + /lru-memoizer@2.2.0: + resolution: {integrity: sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw==} dependencies: lodash.clonedeep: 4.5.0 lru-cache: 4.0.2 dev: false - /macos-release@2.5.0: - resolution: {integrity: sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==} + /macos-release@2.5.1: + resolution: {integrity: sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==} engines: {node: '>=6'} dev: true - /magic-string@0.26.2: - resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==} + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} dependencies: - sourcemap-codec: 1.4.8 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + /magic-string@0.30.0: + resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} engines: {node: '>=12'} dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: - semver: 6.3.0 + semver: 7.6.2 /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -5245,7 +5330,7 @@ packages: engines: {node: '>= 10'} requiresBuild: true dependencies: - agentkeepalive: 4.3.0 + agentkeepalive: 4.5.0 cacache: 15.3.0 http-cache-semantics: 4.1.1 http-proxy-agent: 4.0.1 @@ -5275,11 +5360,11 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - /memfs@3.4.12: - resolution: {integrity: sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==} + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} dependencies: - fs-monkey: 1.0.3 + fs-monkey: 1.0.6 dev: true /merge-descriptors@1.0.1: @@ -5325,23 +5410,40 @@ packages: hasBin: true dev: true + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: false + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimatch@5.1.1: - resolution: {integrity: sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==} + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - /minimist@1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} /minipass-collect@1.0.2: resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} @@ -5396,6 +5498,16 @@ packages: /minipass@4.2.8: resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} engines: {node: '>=8'} + dev: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + /minipass@7.1.1: + resolution: {integrity: sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} @@ -5404,25 +5516,28 @@ packages: minipass: 3.3.6 yallist: 4.0.0 + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - /moment-timezone@0.5.41: - resolution: {integrity: sha512-e0jGNZDOHfBXJGz8vR/sIMXvBIGJJcqFjmlg9lmE+5KX1U7/RZNMswfD8nKnNCnQdKTIj50IaRKwl1fvMLyyRg==} + /moment-timezone@0.5.45: + resolution: {integrity: sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==} dependencies: - moment: 2.29.4 + moment: 2.30.1 dev: false - /moment@2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + /moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} dev: false /ms@2.0.0: @@ -5458,12 +5573,15 @@ packages: thenify-all: 1.6.0 dev: false - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true + /napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -5482,15 +5600,22 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.4.1 + tslib: 2.6.2 dev: true - /node-abort-controller@3.0.1: - resolution: {integrity: sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==} + /node-abi@3.62.0: + resolution: {integrity: sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.2 + + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} dev: true - /node-addon-api@4.3.0: - resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} + /node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} /node-emoji@1.11.0: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} @@ -5498,8 +5623,8 @@ packages: lodash: 4.17.21 dev: true - /node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -5522,13 +5647,13 @@ packages: dependencies: env-paths: 2.2.1 glob: 7.2.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 make-fetch-happen: 9.1.0 nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.3.8 - tar: 6.1.13 + semver: 7.6.2 + tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: - bluebird @@ -5545,23 +5670,20 @@ packages: /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - /node-releases@2.0.10: - resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - - /node-releases@2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} /nodemon@2.0.22: resolution: {integrity: sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==} engines: {node: '>=8.10.0'} hasBin: true dependencies: - chokidar: 3.5.3 + chokidar: 3.6.0 debug: 3.2.7(supports-color@5.5.0) ignore-by-default: 1.0.1 minimatch: 3.1.2 pstree.remy: 1.1.8 - semver: 5.7.1 + semver: 5.7.2 simple-update-notifier: 1.1.0 supports-color: 5.5.0 touch: 3.1.0 @@ -5579,8 +5701,10 @@ packages: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} hasBin: true + requiresBuild: true dependencies: abbrev: 1.1.1 + optional: true /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -5592,14 +5716,6 @@ packages: dependencies: path-key: 3.1.1 - /npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - /npmlog@6.0.2: resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -5621,12 +5737,8 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - /object-inspect@1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} @@ -5645,8 +5757,8 @@ packages: dependencies: mimic-fn: 2.1.0 - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 @@ -5654,7 +5766,7 @@ packages: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.3 + word-wrap: 1.2.5 dev: true /ora@5.4.1: @@ -5664,7 +5776,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.7.0 + cli-spinners: 2.9.2 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -5676,7 +5788,7 @@ packages: resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==} engines: {node: '>=10'} dependencies: - macos-release: 2.5.0 + macos-release: 2.5.1 windows-release: 4.0.0 dev: true @@ -5722,15 +5834,11 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - /packet-reader@1.0.0: - resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} - dev: false - /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.4.1 + tslib: 2.6.2 dev: true /parent-module@1.0.1: @@ -5744,7 +5852,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5771,13 +5879,13 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.4.1 + tslib: 2.6.2 dev: true - /passport-jwt@4.0.0: - resolution: {integrity: sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg==} + /passport-jwt@4.0.1: + resolution: {integrity: sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==} dependencies: - jsonwebtoken: 8.5.1 + jsonwebtoken: 9.0.2 passport-strategy: 1.0.0 dev: false @@ -5810,6 +5918,14 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.2.2 + minipass: 7.1.1 + dev: true + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} @@ -5829,8 +5945,14 @@ packages: resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} dev: false - /pg-connection-string@2.5.0: - resolution: {integrity: sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==} + /pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} + requiresBuild: true + dev: false + optional: true + + /pg-connection-string@2.6.4: + resolution: {integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==} dev: false /pg-int8@1.0.1: @@ -5838,16 +5960,16 @@ packages: engines: {node: '>=4.0.0'} dev: false - /pg-pool@3.5.2(pg@8.8.0): - resolution: {integrity: sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==} + /pg-pool@3.6.2(pg@8.11.5): + resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==} peerDependencies: pg: '>=8.0' dependencies: - pg: 8.8.0 + pg: 8.11.5 dev: false - /pg-protocol@1.5.0: - resolution: {integrity: sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==} + /pg-protocol@1.6.1: + resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} dev: false /pg-types@2.2.0: @@ -5861,8 +5983,8 @@ packages: postgres-interval: 1.2.0 dev: false - /pg@8.8.0: - resolution: {integrity: sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==} + /pg@8.11.5: + resolution: {integrity: sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==} engines: {node: '>= 8.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -5870,19 +5992,19 @@ packages: pg-native: optional: true dependencies: - buffer-writer: 2.0.0 - packet-reader: 1.0.0 - pg-connection-string: 2.5.0 - pg-pool: 3.5.2(pg@8.8.0) - pg-protocol: 1.5.0 + pg-connection-string: 2.6.4 + pg-pool: 3.6.2(pg@8.11.5) + pg-protocol: 1.6.1 pg-types: 2.2.0 pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 dev: false /pgpass@1.0.5: resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} dependencies: - split2: 4.1.0 + split2: 4.2.0 dev: false /picocolors@1.0.0: @@ -5892,8 +6014,8 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} /pkg-dir@4.2.0: @@ -5907,13 +6029,13 @@ packages: engines: {node: '>=4'} dev: true - /postcss@8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.7 picocolors: 1.0.0 - source-map-js: 1.0.2 + source-map-js: 1.2.0 dev: true /postgres-array@2.0.0: @@ -5938,6 +6060,24 @@ packages: xtend: 4.0.2 dev: false + /prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + detect-libc: 2.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.62.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -5947,7 +6087,7 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} dependencies: - fast-diff: 1.2.0 + fast-diff: 1.3.0 dev: true /prettier@2.8.8: @@ -5968,11 +6108,6 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: false - /promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} requiresBuild: true @@ -5983,8 +6118,8 @@ packages: optional: true optional: true - /promise-polyfill@8.2.3: - resolution: {integrity: sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==} + /promise-polyfill@8.3.0: + resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==} dev: false /promise-retry@2.0.1: @@ -6003,12 +6138,12 @@ packages: kleur: 3.0.3 sisteransi: 1.0.5 - /prop-types-extra@1.1.1(react@18.2.0): + /prop-types-extra@1.1.1(react@18.3.1): resolution: {integrity: sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==} peerDependencies: react: '>=0.14.0' dependencies: - react: 18.2.0 + react: 18.3.1 react-is: 16.13.1 warning: 4.0.3 dev: false @@ -6041,17 +6176,22 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: true - /punycode@2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 + + /qs@6.12.1: + resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.6 /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -6075,8 +6215,26 @@ packages: iconv-lite: 0.4.24 unpipe: 1.0.0 - /react-bootstrap@2.7.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-WDSln+mG4RLLFO01stkj2bEx/3MF4YihK9D/dWnHaSxOiQZLbhhlf95D2Jb20X3t2m7vMxRe888FVrfLJoGmmA==} + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + /react-bootstrap@2.10.2(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-UvB7mRqQjivdZNxJNEA2yOQRB7L9N43nBnKc33K47+cH90/ujmnMwatTCwQLu83gLhrzAl8fsa6Lqig/KLghaA==} peerDependencies: '@types/react': '>=16.14.8' react: '>=16.14.0' @@ -6085,30 +6243,40 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 - '@restart/hooks': 0.4.9(react@18.2.0) - '@restart/ui': 1.6.2(react-dom@18.2.0)(react@18.2.0) - '@types/react-transition-group': 4.4.5 - classnames: 2.3.2 + '@babel/runtime': 7.24.5 + '@restart/hooks': 0.4.16(react@18.3.1) + '@restart/ui': 1.6.9(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-transition-group': 4.4.10 + classnames: 2.5.1 dom-helpers: 5.2.1 invariant: 2.2.4 prop-types: 15.8.1 - prop-types-extra: 1.1.1(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - uncontrollable: 7.2.1(react@18.2.0) + prop-types-extra: 1.1.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1) + uncontrollable: 7.2.1(react@18.3.1) warning: 4.0.3 dev: false - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: - react: ^18.2.0 + react: ^18.3.1 dependencies: loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 + react: 18.3.1 + scheduler: 0.23.2 + dev: false + + /react-hook-form@7.51.4(react@18.3.1): + resolution: {integrity: sha512-V14i8SEkh+V1gs6YtD0hdHYnoL4tp/HX/A45wWQN15CYr9bFRmmRdYStSO5L65lCCZRF+kYiSKhm9alqbcdiVA==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + dependencies: + react: 18.3.1 dev: false /react-is@16.13.1: @@ -6122,69 +6290,69 @@ packages: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} dev: false - /react-moment@1.1.3(moment@2.29.4)(prop-types@15.8.1)(react@18.2.0): + /react-moment@1.1.3(moment@2.30.1)(prop-types@15.8.1)(react@18.3.1): resolution: {integrity: sha512-8EPvlUL8u6EknPp1ISF5MQ3wx2OHJVXIP/iZc4wRh3iV3XozftZERDv9ANZeAtMlhNNQHdFoqcZHFUkBSTONfA==} peerDependencies: moment: ^2.29.0 prop-types: ^15.7.0 react: ^16.0 || ^17.0.0 || ^18.0.0 dependencies: - moment: 2.29.4 + moment: 2.30.1 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 dev: false - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} dev: true - /react-router-dom@6.9.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/seUAPY01VAuwkGyVBPCn1OXfVbaWGGu4QN9uj0kCPcTyNYgL1ldZpxZUpRU7BLheKQI4Twtl/OW2nHRF1u26Q==} - engines: {node: '>=14'} + /react-router-dom@6.23.1(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==} + engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.4.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router: 6.9.0(react@18.2.0) + '@remix-run/router': 1.16.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.23.1(react@18.3.1) dev: false - /react-router@6.9.0(react@18.2.0): - resolution: {integrity: sha512-51lKevGNUHrt6kLuX3e/ihrXoXCa9ixY/nVWRLlob4r/l0f45x3SzBvYJe3ctleLUQQ5fVa4RGgJOTH7D9Umhw==} - engines: {node: '>=14'} + /react-router@6.23.1(react@18.3.1): + resolution: {integrity: sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==} + engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.4.0 - react: 18.2.0 + '@remix-run/router': 1.16.1 + react: 18.3.1 dev: false - /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): + /react-transition-group@4.4.5(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.24.5 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) dev: false - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 dev: false - /readable-stream@2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -6194,24 +6362,14 @@ packages: string_decoder: 1.1.1 util-deprecate: 1.0.2 - /readable-stream@3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readable-stream@4.2.0: - resolution: {integrity: sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - dev: false - /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -6223,21 +6381,16 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.1 + resolve: 1.22.8 dev: true - /reflect-metadata@0.1.13: - resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + /reflect-metadata@0.1.14: + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} dev: false - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - /relateurl@0.2.7: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} @@ -6267,15 +6420,15 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - /resolve.exports@1.1.0: - resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} + /resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} engines: {node: '>=10'} - /resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.11.0 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -6304,12 +6457,20 @@ packages: dependencies: glob: 7.2.3 - /rollup@3.20.0: - resolution: {integrity: sha512-YsIfrk80NqUDrxrjWPXUa7PWvAfegZEXHuPsEZg58fGCdjL1I9C1i/NaG+L+27kxxwkrG/QEDEQc8s/ynXWWGQ==} + /rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 9.3.5 + dev: true + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /run-async@2.4.1: @@ -6323,17 +6484,10 @@ packages: queue-microtask: 1.2.3 dev: true - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: true - - /rxjs@7.5.7: - resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.4.1 + tslib: 2.6.2 /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -6344,30 +6498,31 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /sax@1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} dev: false - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} dependencies: loose-envify: 1.4.0 dev: false - /schema-utils@3.1.1: - resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/json-schema': 7.0.11 + '@types/json-schema': 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true + dev: true - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true /semver@7.0.0: @@ -6375,12 +6530,10 @@ packages: hasBin: true dev: true - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} @@ -6402,8 +6555,8 @@ packages: transitivePeerDependencies: - supports-color - /serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: randombytes: 2.1.0 @@ -6420,6 +6573,19 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + requiresBuild: true + optional: true + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -6452,16 +6618,28 @@ packages: rechoir: 0.6.2 dev: true - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 - object-inspect: 1.12.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + /simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + /simple-update-notifier@1.1.0: resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} engines: {node: '>=8.10.0'} @@ -6489,22 +6667,22 @@ packages: dependencies: agent-base: 6.0.2 debug: 4.3.4 - socks: 2.7.1 + socks: 2.8.3 transitivePeerDependencies: - supports-color optional: true - /socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + /socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} requiresBuild: true dependencies: - ip: 2.0.0 + ip-address: 9.0.5 smart-buffer: 4.2.0 optional: true - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} dev: true @@ -6529,33 +6707,34 @@ packages: engines: {node: '>= 8'} dev: true - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - dev: true - - /split2@4.1.0: - resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} dev: false /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - /sqlite3@5.1.6: - resolution: {integrity: sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==} + /sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + requiresBuild: true + optional: true + + /sqlite3@5.1.7: + resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==} requiresBuild: true peerDependenciesMeta: node-gyp: optional: true dependencies: - '@mapbox/node-pre-gyp': 1.0.10 - node-addon-api: 4.3.0 - tar: 6.1.13 + bindings: 1.5.0 + node-addon-api: 7.1.0 + prebuild-install: 7.1.2 + tar: 6.2.1 optionalDependencies: node-gyp: 8.4.1 transitivePeerDependencies: - bluebird - - encoding - supports-color /ssri@8.0.1: @@ -6624,34 +6803,39 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /superagent@8.0.5: - resolution: {integrity: sha512-lQVE0Praz7nHiSaJLKBM/cZyi7J0E4io8tWnGSBdBrqAzhzrjQ/F5iGP9Zr29CJC8N5zYdhG2kKaNcB6dKxp7g==} + /superagent@8.1.2: + resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} engines: {node: '>=6.4.0 <13 || >=14'} + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net dependencies: - component-emitter: 1.3.0 - cookiejar: 2.1.3 + component-emitter: 1.3.1 + cookiejar: 2.1.4 debug: 4.3.4 fast-safe-stringify: 2.1.1 form-data: 4.0.0 - formidable: 2.1.1 + formidable: 2.1.2 methods: 1.1.2 mime: 2.6.0 - qs: 6.11.0 - semver: 7.3.8 + qs: 6.12.1 + semver: 7.6.2 transitivePeerDependencies: - supports-color dev: true - /supertest@6.3.2: - resolution: {integrity: sha512-mSmbW/sPpBU6K8w8189ZiHdc62zMe7dCHpC2ktS9tc0/d2DN0FaxNbDJJNFknZD4jCrGJpxkiFoVyemvKgOdwA==} + /supertest@6.3.4: + resolution: {integrity: sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==} engines: {node: '>=6.4.0'} dependencies: methods: 1.1.2 - superagent: 8.0.5 + superagent: 8.1.2 transitivePeerDependencies: - supports-color dev: true @@ -6685,8 +6869,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /swagger-ui-dist@4.15.1: - resolution: {integrity: sha512-DlZARu6ckUFqDe0j5IPayO4k0gQvYQw9Un02MhxAgaMtVnTH2vmyyDe+yKeV0r1LiiPx3JbasdS/5Yyb/AV3iw==} + /swagger-ui-dist@4.18.2: + resolution: {integrity: sha512-oVBoBl9Dg+VJw8uRWDxlyUyHoNEDC0c1ysT6+Boy6CTgr2rUcLcfPon4RvxgS2/taNW6O0+US+Z/dlAsWFjOAQ==} dev: false /symbol-observable@4.0.0: @@ -6698,13 +6882,31 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - /tar@6.1.13: - resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 - minipass: 4.2.8 + minipass: 5.0.0 minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 @@ -6716,8 +6918,8 @@ packages: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - /terser-webpack-plugin@5.3.6(@swc/core@1.3.56)(webpack@5.74.0): - resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} + /terser-webpack-plugin@5.3.10(@swc/core@1.5.5)(webpack@5.82.1): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -6732,17 +6934,17 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.17 - '@swc/core': 1.3.56 + '@jridgewell/trace-mapping': 0.3.25 + '@swc/core': 1.5.5 jest-worker: 27.5.1 - schema-utils: 3.1.1 - serialize-javascript: 6.0.0 - terser: 5.16.1 - webpack: 5.74.0(@swc/core@1.3.56) + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.0 + webpack: 5.82.1(@swc/core@1.5.5) dev: true - /terser-webpack-plugin@5.3.6(@swc/core@1.3.56)(webpack@5.75.0): - resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} + /terser-webpack-plugin@5.3.10(@swc/core@1.5.5)(webpack@5.91.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -6757,21 +6959,21 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.17 - '@swc/core': 1.3.56 + '@jridgewell/trace-mapping': 0.3.25 + '@swc/core': 1.5.5 jest-worker: 27.5.1 - schema-utils: 3.1.1 - serialize-javascript: 6.0.0 - terser: 5.16.1 - webpack: 5.75.0(@swc/core@1.3.56) + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.0 + webpack: 5.91.0(@swc/core@1.5.5) - /terser@5.16.1: - resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} + /terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.2 - acorn: 8.8.1 + '@jridgewell/source-map': 0.3.6 + acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 @@ -6843,6 +7045,17 @@ packages: hasBin: true dev: true + /ts-essentials@10.0.0(typescript@4.5.2): + resolution: {integrity: sha512-77FHNJEyysF9+1s4G6eejuA1lxw7uMchT3ZPy3CIbh7GIunffpshtM8pTe5G6N5dpOzNevqRHew859ceLWVBfw==} + peerDependencies: + typescript: '>=4.5.0' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 4.5.2 + dev: false + /ts-essentials@7.0.3(typescript@4.5.2): resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} peerDependencies: @@ -6850,7 +7063,7 @@ packages: dependencies: typescript: 4.5.2 - /ts-jest@28.0.8(@babel/core@7.21.3)(jest@28.1.3)(typescript@4.5.2): + /ts-jest@28.0.8(@babel/core@7.24.5)(jest@28.1.3)(typescript@4.5.2): resolution: {integrity: sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true @@ -6871,20 +7084,20 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 28.1.3(@types/node@16.18.4)(ts-node@10.7.0) + jest: 28.1.3(@types/node@16.18.97)(ts-node@10.7.0) jest-util: 28.1.3 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.3.8 + semver: 7.6.2 typescript: 4.5.2 yargs-parser: 21.1.1 dev: true - /ts-jest@28.0.8(@babel/core@7.21.3)(jest@28.1.3)(typescript@4.9.3): + /ts-jest@28.0.8(@babel/core@7.24.5)(jest@28.1.3)(typescript@4.9.5): resolution: {integrity: sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true @@ -6905,35 +7118,36 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.21.3 + '@babel/core': 7.24.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 28.1.3(@types/node@16.18.4)(ts-node@10.7.0) + jest: 28.1.3(@types/node@16.18.97)(ts-node@10.7.0) jest-util: 28.1.3 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.3.8 - typescript: 4.9.3 + semver: 7.6.2 + typescript: 4.9.5 yargs-parser: 21.1.1 dev: true - /ts-loader@9.4.2(typescript@4.5.2)(webpack@5.75.0): - resolution: {integrity: sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==} + /ts-loader@9.5.1(typescript@4.5.2)(webpack@5.91.0): + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' webpack: ^5.0.0 dependencies: chalk: 4.1.2 - enhanced-resolve: 5.12.0 + enhanced-resolve: 5.16.1 micromatch: 4.0.5 - semver: 7.3.8 + semver: 7.6.2 + source-map: 0.7.4 typescript: 4.5.2 - webpack: 5.75.0(@swc/core@1.3.56) + webpack: 5.91.0(@swc/core@1.5.5) dev: true - /ts-node@10.7.0(@swc/core@1.3.56)(@types/node@16.18.4)(typescript@4.5.2): + /ts-node@10.7.0(@swc/core@1.5.5)(@types/node@16.18.97)(typescript@4.5.2): resolution: {integrity: sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==} hasBin: true peerDependencies: @@ -6948,14 +7162,14 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.7.0 - '@swc/core': 1.3.56 - '@tsconfig/node10': 1.0.9 + '@swc/core': 1.5.5 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 16.18.4 - acorn: 8.8.1 - acorn-walk: 8.2.0 + '@tsconfig/node16': 1.0.4 + '@types/node': 16.18.97 + acorn: 8.11.3 + acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 @@ -6964,21 +7178,30 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - /tsconfig-paths-webpack-plugin@4.0.0: - resolution: {integrity: sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==} + /tsconfig-paths-webpack-plugin@4.0.1: + resolution: {integrity: sha512-m5//KzLoKmqu2MVix+dgLKq70MnFi8YL8sdzQZ6DblmCdfuq/y3OqvJd5vMndg2KEVCOeNz8Es4WVZhYInteLw==} engines: {node: '>=10.13.0'} dependencies: chalk: 4.1.2 - enhanced-resolve: 5.12.0 - tsconfig-paths: 4.1.0 + enhanced-resolve: 5.16.1 + tsconfig-paths: 4.2.0 dev: true /tsconfig-paths@4.1.0: resolution: {integrity: sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==} engines: {node: '>=6'} dependencies: - json5: 2.2.1 - minimist: 1.2.7 + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + dependencies: + json5: 2.2.3 + minimist: 1.2.8 strip-bom: 3.0.0 dev: true @@ -6986,8 +7209,11 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + /tslib@2.5.3: + resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} /tsutils@3.21.0(typescript@4.5.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -6999,6 +7225,11 @@ packages: typescript: 4.5.2 dev: true + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -7029,7 +7260,7 @@ packages: /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - /typeorm@0.3.11(pg@8.8.0)(sqlite3@5.1.6)(ts-node@10.7.0): + /typeorm@0.3.11(pg@8.11.5)(sqlite3@5.1.7)(ts-node@10.7.0): resolution: {integrity: sha512-pzdOyWbVuz/z8Ww6gqvBW4nylsM0KLdUCDExr2gR20/x1khGSVxQkjNV/3YqliG90jrWzrknYbYscpk8yxFJVg==} engines: {node: '>= 12.9.0'} hasBin: true @@ -7092,21 +7323,21 @@ packages: buffer: 6.0.3 chalk: 4.1.2 cli-highlight: 2.1.11 - date-fns: 2.29.3 + date-fns: 2.30.0 debug: 4.3.4 - dotenv: 16.0.3 + dotenv: 16.4.5 glob: 7.2.3 js-yaml: 4.1.0 mkdirp: 1.0.4 - pg: 8.8.0 - reflect-metadata: 0.1.13 + pg: 8.11.5 + reflect-metadata: 0.1.14 sha.js: 2.4.11 - sqlite3: 5.1.6 - ts-node: 10.7.0(@swc/core@1.3.56)(@types/node@16.18.4)(typescript@4.5.2) - tslib: 2.4.1 + sqlite3: 5.1.7 + ts-node: 10.7.0(@swc/core@1.5.5)(@types/node@16.18.97)(typescript@4.5.2) + tslib: 2.6.2 uuid: 8.3.2 xml2js: 0.4.23 - yargs: 17.6.2 + yargs: 17.7.2 transitivePeerDependencies: - supports-color dev: false @@ -7116,37 +7347,36 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - /typescript@4.8.4: - resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /typescript@4.9.3: - resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true + /uid@2.0.2: + resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} + engines: {node: '>=8'} + dependencies: + '@lukeed/csprng': 1.1.0 - /uncontrollable@7.2.1(react@18.2.0): + /uncontrollable@7.2.1(react@18.3.1): resolution: {integrity: sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==} peerDependencies: react: '>=15.0.0' dependencies: - '@babel/runtime': 7.21.0 - '@types/react': 18.0.28 + '@babel/runtime': 7.24.5 + '@types/react': 18.3.2 invariant: 2.2.4 - react: 18.2.0 + react: 18.3.1 react-lifecycles-compat: 3.0.4 dev: false - /uncontrollable@8.0.0(react@18.2.0): - resolution: {integrity: sha512-a954G/0JyXoZdpt0YIzTfoQyWtRS1VvygOBsHttCtZL8jDTKd6vQlUo811y46XnWoXIqQ36QKi3cSEdPuFADkA==} + /uncontrollable@8.0.4(react@18.3.1): + resolution: {integrity: sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==} peerDependencies: - react: '>=17.0.0' + react: '>=16.14.0' dependencies: - '@types/react': 18.0.28 - react: 18.2.0 + react: 18.3.1 dev: false /undefsafe@2.0.5: @@ -7176,34 +7406,29 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - /update-browserslist-db@1.0.10(browserslist@4.21.4): - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.4 - escalade: 3.1.1 - picocolors: 1.0.0 - - /update-browserslist-db@1.0.10(browserslist@4.21.5): - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + /update-browserslist-db@1.0.15(browserslist@4.23.0): + resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.5 - escalade: 3.1.1 + browserslist: 4.23.0 + escalade: 3.1.2 picocolors: 1.0.0 /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.1.1 + punycode: 2.3.1 /url-template@2.0.8: resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} @@ -7224,49 +7449,56 @@ packages: /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true + dev: false + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - /v8-to-istanbul@9.0.1: - resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.17 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - /vite-plugin-html@3.2.0(vite@4.2.1): - resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} + /vite-plugin-html@3.2.2(vite@4.5.3): + resolution: {integrity: sha512-vb9C9kcdzcIo/Oc3CLZVS03dL5pDlOFuhGlZYDCJ840BhWl/0nGeZWf3Qy7NlOayscY4Cm/QRgULCQkEZige5Q==} peerDependencies: vite: '>=2.0.0' dependencies: '@rollup/pluginutils': 4.2.1 - colorette: 2.0.19 + colorette: 2.0.20 connect-history-api-fallback: 1.6.0 consola: 2.15.3 - dotenv: 16.0.3 + dotenv: 16.4.5 dotenv-expand: 8.0.3 - ejs: 3.1.9 - fast-glob: 3.2.12 + ejs: 3.1.10 + fast-glob: 3.3.2 fs-extra: 10.1.0 html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 4.2.1 + vite: 4.5.3 dev: true - /vite@4.2.1: - resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} + /vite@4.5.3: + resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -7276,6 +7508,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -7285,12 +7519,11 @@ packages: terser: optional: true dependencies: - esbuild: 0.17.12 - postcss: 8.4.21 - resolve: 1.22.1 - rollup: 3.20.0 + esbuild: 0.18.20 + postcss: 8.4.38 + rollup: 3.29.4 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /walker@1.0.8: @@ -7304,12 +7537,12 @@ packages: loose-envify: 1.4.0 dev: false - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + /watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -7333,8 +7566,8 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - /webpack@5.74.0(@swc/core@1.3.56): - resolution: {integrity: sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==} + /webpack@5.82.1(@swc/core@1.5.5): + resolution: {integrity: sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -7343,29 +7576,29 @@ packages: webpack-cli: optional: true dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 0.0.51 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.8.1 - acorn-import-assertions: 1.8.0(acorn@8.8.1) - browserslist: 4.21.4 + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.23.0 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.12.0 - es-module-lexer: 0.9.3 + enhanced-resolve: 5.16.1 + es-module-lexer: 1.5.2 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 3.1.1 + schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6(@swc/core@1.3.56)(webpack@5.74.0) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(@swc/core@1.5.5)(webpack@5.82.1) + watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -7373,8 +7606,8 @@ packages: - uglify-js dev: true - /webpack@5.75.0(@swc/core@1.3.56): - resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} + /webpack@5.91.0(@swc/core@1.5.5): + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -7383,29 +7616,29 @@ packages: webpack-cli: optional: true dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 0.0.51 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.8.1 - acorn-import-assertions: 1.8.0(acorn@8.8.1) - browserslist: 4.21.4 + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.23.0 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.12.0 - es-module-lexer: 0.9.3 + enhanced-resolve: 5.16.1 + es-module-lexer: 1.5.2 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 3.1.1 + schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6(@swc/core@1.3.56)(webpack@5.75.0) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(@swc/core@1.5.5)(webpack@5.91.0) + watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -7427,8 +7660,10 @@ packages: /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + requiresBuild: true dependencies: string-width: 4.2.3 + optional: true /windows-release@4.0.0: resolution: {integrity: sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==} @@ -7437,8 +7672,8 @@ packages: execa: 4.1.0 dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} dev: true @@ -7464,7 +7699,7 @@ packages: resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} engines: {node: '>=4.0.0'} dependencies: - sax: 1.2.4 + sax: 1.3.0 xmlbuilder: 11.0.1 dev: false @@ -7510,7 +7745,7 @@ packages: engines: {node: '>=10'} dependencies: cliui: 7.0.4 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -7518,12 +7753,12 @@ packages: yargs-parser: 20.2.9 dev: false - /yargs@17.6.2: - resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 diff --git a/shared/package.json b/shared/package.json index 6d82609..dbfce42 100644 --- a/shared/package.json +++ b/shared/package.json @@ -11,18 +11,18 @@ "test:cov": "jest -i --verbose --coverage" }, "devDependencies": { - "@swc/core": "^1.3.56", - "@swc/jest": "^0.2.26", + "@swc/core": "^1.5.5", + "@swc/jest": "^0.2.36", "@types/jest": "28.1.8", "jest": "28.1.3", - "prettier": "^2.8.5", + "prettier": "^2.8.8", "ts-jest": "28.0.8", - "typescript": "^4.9.3" + "typescript": "^4.9.5" }, "dependencies": { - "@casl/ability": "^6.3.3", - "@joi/date": "^2.1.0", - "joi": "^17.7.0" + "@casl/ability": "^6.7.1", + "@joi/date": "^2.1.1", + "joi": "^17.13.1" }, "jest": { "testEnvironment": "node", diff --git a/shared/src/timeslot.ts b/shared/src/timeslot.ts index 6343754..aff04cc 100644 --- a/shared/src/timeslot.ts +++ b/shared/src/timeslot.ts @@ -1,10 +1,12 @@ import { Action, ApplyAbilities } from "./abilities"; import { Role } from "./person"; +import { RecruitmentSession } from "./recruitment-session"; export interface TimeSlot { id: number; start: Date; end: Date; + recruitmentSession: RecruitmentSession; } /* Abilities */ diff --git a/sonar-project.properties b/sonar-project.properties index edb0d90..156f835 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -4,4 +4,5 @@ sonar.projectName=HKrecruitment sonar.javascript.lcov.reportPaths=./coverage/shared/lcov.info, ./coverage/api/lcov.info, ./coverage/api-e2e/lcov.info sonar.sources=api/, frontend/, shared/ -sonar.coverage.exclusions=**/node_modules/**/*, **/*.spec.*, **/*.e2e-spec.*, **/documentation/**/*, **/frontend/**/*, **/test/**/*, **/tests/**/*, **/*.json, **/*.yaml, **/*.yml, **/*.md +sonar.coverage.exclusions=**/node_modules/**/*, **/*.spec.*, **/*.e2e-spec.*, **/documentation/**/*, **/frontend/**/*, **/test/**/*, **/tests/**/*, **/*.json, **/*.yaml, **/*.yml, **/*.md, **/mocks/**/* +sonar.cpd.exclusions=**/mocks/**/*
+ } + > + + {user.name ? user.name : user.email} + + + + +