From 840ad5e55e8c03f80a263fb6a92a7dbb3d36fadc Mon Sep 17 00:00:00 2001 From: Max Weng Date: Thu, 16 Jan 2025 18:54:10 -0800 Subject: [PATCH] faker --- package.json | 4 +- services/UserAccountService.ts | 4 +- tests/attendance.test.ts | 4 +- tests/auth.test.ts | 6 +- tests/data/EventFactory.ts | 12 +- tests/data/FactoryUtils.ts | 6 +- tests/data/FeedbackFactory.ts | 2 +- tests/data/MerchFactory.ts | 14 +- tests/data/ResumeFactory.ts | 2 +- tests/data/UserFactory.ts | 8 +- tests/data/UserRegistrationFactory.ts | 8 +- tests/data/UserSocialMediaFactory.ts | 2 +- tests/expressCheckin.test.ts | 2 +- tests/merchOrder.test.ts | 8 +- tests/merchStore.test.ts | 20 +- tests/user.handles.test.ts | 4 +- tests/userSocialMedia.test.ts | 4 +- yarn.lock | 266 +++++++++++++------------- 18 files changed, 191 insertions(+), 185 deletions(-) diff --git a/package.json b/package.json index bab98fb49..fa926fe5a 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ }, "homepage": "https://github.com/acmucsd/membership-portal#readme", "dependencies": { + "@faker-js/faker": "^9.4.0", "@sendgrid/mail": "^8.1.4", "amazon-s3-uri": "^0.1.1", "async-retry": "^1.3.3", @@ -54,9 +55,8 @@ "eslint-plugin-react": "^7.21.5", "eslint-plugin-react-hooks": "^4", "express": "^4.21.1", - "faker": "^5.5.3", "jsonwebtoken": "^9.0.2", - "moment": "^2.27.0", + "moment": "2.29.4", "moment-timezone": "^0.5.34", "morgan": "^1.10.0", "multer": "^1.4.5-lts.1", diff --git a/services/UserAccountService.ts b/services/UserAccountService.ts index e323bd93b..1b87c2748 100644 --- a/services/UserAccountService.ts +++ b/services/UserAccountService.ts @@ -1,7 +1,7 @@ import { BadRequestError, ForbiddenError, NotFoundError } from 'routing-controllers'; import { Service } from 'typedi'; import * as moment from 'moment'; -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import { UserAccessUpdates } from 'api/validators/AdminControllerRequests'; import { RegExpMatcher, @@ -58,7 +58,7 @@ export default class UserAccountService { public static generateDefaultHandle(firstName: string, lastName: string): string { const nameString = `${firstName}-${lastName}`.slice(0, 25); // Hexadecimals look like 0x1b9Dle so we have to truncate the fixed '0x'. - const hashValue = faker.datatype.hexaDecimal(6).slice(2); + const hashValue = faker.string.hexadecimal({ length:6 }).slice(2); const handle = `${nameString}-${hashValue}`.toLowerCase(); return handle; } diff --git a/tests/attendance.test.ts b/tests/attendance.test.ts index bb696bbb8..1e38e6637 100644 --- a/tests/attendance.test.ts +++ b/tests/attendance.test.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import * as moment from 'moment'; import { ForbiddenError } from 'routing-controllers'; import { DatabaseConnection, EventFactory, PortalState, UserFactory } from './data'; @@ -147,7 +147,7 @@ describe('attendance', () => { .createEvents(event) .write(); - const attendEventRequest = { attendanceCode: faker.datatype.hexaDecimal(10) }; + const attendEventRequest = { attendanceCode: faker.string.hexadecimal({ length: 10 }) }; await expect(ControllerFactory.attendance(conn).attendEvent(attendEventRequest, member)) .rejects.toThrow('Oh no! That code didn\'t work.'); }); diff --git a/tests/auth.test.ts b/tests/auth.test.ts index cb8aabd4d..abb262c3d 100644 --- a/tests/auth.test.ts +++ b/tests/auth.test.ts @@ -2,7 +2,7 @@ import * as jwt from 'jsonwebtoken'; import * as bcrypt from 'bcrypt'; import { NotFoundError } from 'routing-controllers'; import { anyString, instance, mock, verify, when } from 'ts-mockito'; -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import { DatabaseConnection, EventFactory, PortalState, UserFactory } from './data'; import { Config } from '../config'; import { UserModel } from '../models/UserModel'; @@ -134,8 +134,8 @@ describe('account registration', () => { .write(); const user = UserRegistrationFactory.fake({ - firstName: faker.datatype.string(40), - lastName: faker.datatype.string(40), + firstName: faker.string.alpha({ length: 40 }), + lastName: faker.string.alpha({ length: 40 }), }); // register member diff --git a/tests/data/EventFactory.ts b/tests/data/EventFactory.ts index 418cc58df..478fc2231 100644 --- a/tests/data/EventFactory.ts +++ b/tests/data/EventFactory.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import * as moment from 'moment'; import { v4 as uuid } from 'uuid'; import { EventModel } from '../../models/EventModel'; @@ -28,12 +28,12 @@ export class EventFactory { const fake = EventRepository.create({ uuid: uuid(), organization: FactoryUtils.pickRandomValue(EventFactory.ORGS), - title: faker.datatype.hexaDecimal(10), + title: faker.string.hexadecimal({ length: 10 }), description: faker.lorem.sentences(2), - location: faker.datatype.hexaDecimal(10), + location: faker.string.hexadecimal({ length: 10 }), start, end, - attendanceCode: faker.datatype.hexaDecimal(10), + attendanceCode: faker.string.hexadecimal({ length: 10 }), pointValue: EventFactory.randomPointValue(), requiresStaff: FactoryUtils.getRandomBoolean(), staffPointBonus: EventFactory.randomPointValue(), @@ -42,8 +42,8 @@ export class EventFactory { deleted: false, eventLink: faker.internet.url(), thumbnail: FactoryUtils.getRandomImageUrl(), - discordEvent: faker.datatype.hexaDecimal(10), - googleCalendarEvent: faker.datatype.hexaDecimal(10), + discordEvent: faker.string.hexadecimal({ length: 10 }), + googleCalendarEvent: faker.string.hexadecimal({ length: 10 }), foodItems: null, }); return EventRepository.merge(fake, substitute); diff --git a/tests/data/FactoryUtils.ts b/tests/data/FactoryUtils.ts index 567990cff..e91ac7a23 100644 --- a/tests/data/FactoryUtils.ts +++ b/tests/data/FactoryUtils.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import * as moment from 'moment'; export default class FactoryUtils { @@ -38,10 +38,10 @@ export default class FactoryUtils { } public static randomHexString(): string { - return faker.datatype.hexaDecimal(10); + return faker.string.hexadecimal({ length: 10 }); } public static getRandomImageUrl(): string { - return `http://i.imgur.com/${faker.random.alphaNumeric(10)}.jpeg`; + return `http://i.imgur.com/${faker.string.alphanumeric(10)}.jpeg`; } } diff --git a/tests/data/FeedbackFactory.ts b/tests/data/FeedbackFactory.ts index 971d8a8b7..4c932ec3c 100644 --- a/tests/data/FeedbackFactory.ts +++ b/tests/data/FeedbackFactory.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import { v4 as uuid } from 'uuid'; import { FeedbackStatus, FeedbackType } from '../../types'; import FactoryUtils from './FactoryUtils'; diff --git a/tests/data/MerchFactory.ts b/tests/data/MerchFactory.ts index 349e8cbf4..49bf62d4f 100644 --- a/tests/data/MerchFactory.ts +++ b/tests/data/MerchFactory.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import * as moment from 'moment'; import { v4 as uuid } from 'uuid'; import { MerchItemOptionMetadata, OrderPickupEventStatus } from '../../types'; @@ -22,7 +22,7 @@ export class MerchFactory { public static fakeCollection(substitute?: Partial): MerchandiseCollectionModel { const fake = MerchCollectionRepository.create({ uuid: uuid(), - title: faker.datatype.hexaDecimal(10), + title: faker.string.hexadecimal({ length: 10 }), description: faker.lorem.sentences(2), themeColorHex: faker.internet.color(), createdAt: faker.date.recent(), @@ -52,7 +52,7 @@ export class MerchFactory { const hasVariantsEnabled = substitute?.hasVariantsEnabled ?? FactoryUtils.getRandomBoolean(); const fake = MerchItemRepository.create({ uuid: uuid(), - itemName: faker.datatype.hexaDecimal(10), + itemName: faker.string.hexadecimal({ length: 10}), description: faker.lorem.sentences(2), hasVariantsEnabled, monthlyLimit: FactoryUtils.getRandomNumber(1, 5), @@ -121,8 +121,8 @@ export class MerchFactory { public static fakeOptionMetadata(substitute?: Partial): MerchItemOptionMetadata { const fake = { - type: faker.datatype.hexaDecimal(10), - value: faker.datatype.hexaDecimal(10), + type: faker.string.hexadecimal({ length: 10 }), + value: faker.string.hexadecimal({ length: 10 }), position: FactoryUtils.getRandomNumber(1, 10), }; const sub = substitute ?? {}; @@ -136,7 +136,7 @@ export class MerchFactory { const [start, end] = FactoryUtils.getRandomTimeInterval(); const fake = OrderPickupEventRepository.create({ uuid: uuid(), - title: faker.datatype.hexaDecimal(10), + title: faker.string.hexadecimal({ length: 10 }), description: faker.lorem.sentences(2), start, end, @@ -177,7 +177,7 @@ export class MerchFactory { if (n === 1) return [MerchFactory.fakeOption()]; // create multiple options with consistent types - const type = faker.datatype.hexaDecimal(10); + const type = faker.string.hexadecimal({ length: 10 }); return FactoryUtils.create(n, () => MerchFactory.fakeOptionWithType(type)); } diff --git a/tests/data/ResumeFactory.ts b/tests/data/ResumeFactory.ts index da26bb229..1639a607c 100644 --- a/tests/data/ResumeFactory.ts +++ b/tests/data/ResumeFactory.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import { v4 as uuid } from 'uuid'; import { ResumeModel } from '../../models/ResumeModel'; import FactoryUtils from './FactoryUtils'; diff --git a/tests/data/UserFactory.ts b/tests/data/UserFactory.ts index 329a23b6c..cbb77a608 100644 --- a/tests/data/UserFactory.ts +++ b/tests/data/UserFactory.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import * as moment from 'moment'; import { v4 as uuid } from 'uuid'; import UserAccountService from '../../services/UserAccountService'; @@ -29,11 +29,11 @@ export class UserFactory { } public static fake(substitute?: Partial): UserModel { - const firstName = faker.name.firstName(); - const lastName = faker.name.lastName(); + const firstName = faker.person.firstName(); + const lastName = faker.person.lastName(); const fake = UserRepository.create({ uuid: uuid(), - email: faker.internet.email(firstName, lastName, 'ucsd.edu'), + email: faker.internet.email({ firstName, lastName, provider: 'ucsd.edu' }), firstName, lastName, hash: UserFactory.PASSWORD_HASH, diff --git a/tests/data/UserRegistrationFactory.ts b/tests/data/UserRegistrationFactory.ts index 4fa865e96..e2f25039b 100644 --- a/tests/data/UserRegistrationFactory.ts +++ b/tests/data/UserRegistrationFactory.ts @@ -1,5 +1,5 @@ import { UserRegistration } from 'types'; -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import FactoryUtils from './FactoryUtils'; import { UserFactory } from './UserFactory'; @@ -11,9 +11,9 @@ export class UserRegistrationFactory { public static fake(substitute?: Partial): UserRegistration { const fake: UserRegistration = { email: faker.internet.email(), - firstName: faker.name.firstName(), - lastName: faker.name.lastName(), - password: faker.datatype.string(10), + firstName: faker.person.firstName(), + lastName: faker.person.lastName(), + password: faker.string.alphanumeric(10), graduationYear: UserFactory.graduationYear(), major: UserFactory.major(), }; diff --git a/tests/data/UserSocialMediaFactory.ts b/tests/data/UserSocialMediaFactory.ts index 5d99ea2e9..72c0589ac 100644 --- a/tests/data/UserSocialMediaFactory.ts +++ b/tests/data/UserSocialMediaFactory.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import { v4 as uuid } from 'uuid'; import { UserSocialMediaModel } from '../../models/UserSocialMediaModel'; import { SocialMediaType } from '../../types'; diff --git a/tests/expressCheckin.test.ts b/tests/expressCheckin.test.ts index 9af1437c7..fd3e0745f 100644 --- a/tests/expressCheckin.test.ts +++ b/tests/expressCheckin.test.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import { anything, instance, mock, verify, when } from 'ts-mockito'; import { DatabaseConnection, EventFactory, PortalState, UserFactory } from './data'; import { ControllerFactory } from './controllers'; diff --git a/tests/merchOrder.test.ts b/tests/merchOrder.test.ts index 098f958d6..50f627aac 100644 --- a/tests/merchOrder.test.ts +++ b/tests/merchOrder.test.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import * as moment from 'moment'; import { mock, when, anything, instance, verify, anyString } from 'ts-mockito'; import { ForbiddenError, NotFoundError } from 'routing-controllers'; @@ -514,7 +514,7 @@ describe('merch orders', () => { const order = placedOrderResponse.order.uuid; const fulfillOrderParams = { uuid: order }; const orderItem = placedOrderResponse.order.items[0].uuid; - const fulfillmentUpdate = { uuid: orderItem, notes: faker.datatype.hexaDecimal(10) }; + const fulfillmentUpdate = { uuid: orderItem, notes: faker.string.hexadecimal({ length: 10}) }; const itemsToFulfill = { items: [fulfillmentUpdate] }; await MerchStoreControllerWrapper.fulfillMerchOrderItems(merchController, fulfillOrderParams, itemsToFulfill, merchDistributor, conn, pickupEvent); @@ -664,7 +664,7 @@ describe('merch orders', () => { test('order route accurately verifies monthly and lifetime limits', async () => { const conn = await DatabaseConnection.get(); - const optionMetadataType = faker.datatype.hexaDecimal(10); + const optionMetadataType = faker.string.hexadecimal({ length: 10}); const option1 = MerchFactory.fakeOptionWithType(optionMetadataType); const option2 = MerchFactory.fakeOptionWithType(optionMetadataType); const option3 = MerchFactory.fakeOptionWithType(optionMetadataType); @@ -1044,7 +1044,7 @@ describe('merch order pickup events', () => { .createOrderPickupEvents(pickupEvent) .write(); - const editPickupEventRequest = { pickupEvent: { title: faker.datatype.hexaDecimal(10) } }; + const editPickupEventRequest = { pickupEvent: { title: faker.string.hexadecimal({ length: 10}) } }; const params = { uuid: pickupEvent.uuid }; await ControllerFactory.merchStore(conn).editPickupEvent(params, editPickupEventRequest, merchDistributor); diff --git a/tests/merchStore.test.ts b/tests/merchStore.test.ts index 4dfd79fcf..6c2ea42b0 100644 --- a/tests/merchStore.test.ts +++ b/tests/merchStore.test.ts @@ -1,4 +1,4 @@ -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import { ForbiddenError, NotFoundError } from 'routing-controllers'; import { zip } from 'underscore'; import { anything, instance, verify, mock, when } from 'ts-mockito'; @@ -176,7 +176,7 @@ describe('editing merch collections', () => { const merchStoreController = ControllerFactory.merchStore(conn); const params = { uuid: collection.uuid }; - const editMerchCollectionRequest = { collection: { title: faker.datatype.hexaDecimal(10) } }; + const editMerchCollectionRequest = { collection: { title: faker.string.hexadecimal({ length: 10}) } }; await expect(merchStoreController.editMerchCollection(params, editMerchCollectionRequest, member)) .rejects.toThrow(ForbiddenError); @@ -381,7 +381,7 @@ describe('merch items with options', () => { test('monthly and lifetime remaining values are properly set when ordering different item options', async () => { const conn = await DatabaseConnection.get(); const member = UserFactory.fake(); - const optionMetadataType = faker.datatype.hexaDecimal(10); + const optionMetadataType = faker.string.hexadecimal({ length: 10}); const option1 = MerchFactory.fakeOptionWithType(optionMetadataType); const option2 = MerchFactory.fakeOptionWithType(optionMetadataType); const option3 = MerchFactory.fakeOptionWithType(optionMetadataType); @@ -606,7 +606,7 @@ describe('merch item edits', () => { // update the description and increment the purchase limits const merchItemEdits: MerchItemEdit = { - description: faker.datatype.hexaDecimal(10), + description: faker.string.hexadecimal({ length: 10}), monthlyLimit: item.monthlyLimit + 1, lifetimeLimit: item.lifetimeLimit + 1, }; @@ -639,7 +639,7 @@ describe('merch item edits', () => { // update the description and increment the purchase limits const merchItemEdits: MerchItemEdit = { - description: faker.datatype.hexaDecimal(10), + description: faker.string.hexadecimal({ length: 10}), collection: collection.uuid, }; const editMerchItemRequest = { merchandise: merchItemEdits }; @@ -784,7 +784,7 @@ describe('merch item edits', () => { .write(); // change only one option's type to a different one - item.options[0].metadata.type = faker.datatype.hexaDecimal(10); + item.options[0].metadata.type = faker.string.hexadecimal({ length: 10}); const params = { uuid: item.uuid }; const editMerchItemRequest = { merchandise: { options: item.options } }; @@ -806,7 +806,7 @@ describe('merch item edits', () => { const params = { uuid: item.uuid }; // change every option's type to a different but consistent one - const type = faker.datatype.hexaDecimal(10); + const type = faker.string.hexadecimal({ length: 10}); const updatedOptions = item.options.map((o) => MerchItemOptionRepository.merge(o, { metadata: { type, @@ -901,7 +901,7 @@ describe('merch item options', () => { .createMerchItem(item) .write(); - const optionWithDifferentType = MerchFactory.fakeOptionWithType(faker.datatype.hexaDecimal(10)); + const optionWithDifferentType = MerchFactory.fakeOptionWithType(faker.string.hexadecimal({ length: 10})); const params = { uuid: item.uuid }; const createMerchOptionRequest = { option: optionWithDifferentType }; @@ -930,7 +930,7 @@ describe('merch item options', () => { await merchStoreController.deleteMerchItemOption(optionParams, admin); // add option of another type - const optionWithDifferentType = MerchFactory.fakeOptionWithType(faker.datatype.hexaDecimal(10)); + const optionWithDifferentType = MerchFactory.fakeOptionWithType(faker.string.hexadecimal({ length: 10})); const createMerchOptionRequest = { option: optionWithDifferentType }; await merchStoreController.createMerchItemOption(itemParams, createMerchOptionRequest, admin); @@ -1181,7 +1181,7 @@ describe('checkout cart', () => { .write(); const validOptionUuids = options.map((o) => o.uuid); - const invalidOptionUuid = faker.datatype.uuid(); + const invalidOptionUuid = faker.string.uuid(); const params = { items: [...validOptionUuids, invalidOptionUuid] }; const merchStoreController = ControllerFactory.merchStore(conn); await expect(merchStoreController.getCartItems(params, member)) diff --git a/tests/user.handles.test.ts b/tests/user.handles.test.ts index 11cfe6ac0..f72bde445 100644 --- a/tests/user.handles.test.ts +++ b/tests/user.handles.test.ts @@ -1,7 +1,7 @@ import 'reflect-metadata'; // this shim is required import { plainToClass } from 'class-transformer'; import { validate } from 'class-validator'; -import * as faker from 'faker'; +import { faker } from '@faker-js/faker'; import { DatabaseConnection, PortalState, UserFactory } from './data'; import { UserPatches } from '../api/validators/UserControllerRequests'; import { ControllerFactory } from './controllers'; @@ -107,7 +107,7 @@ describe('Update to Invalid User Handle', () => { test('Update handle error: too long', async () => { const MAX_LEN = 32; - const user = UserFactory.fake({ handle: faker.datatype.hexaDecimal(2 * MAX_LEN).toLowerCase() }); + const user = UserFactory.fake({ handle: faker.string.hexadecimal({ length: 2 * MAX_LEN }).toLowerCase() }); const errors = await validate(plainToClass(UserPatches, { ...user, passwordChange })); diff --git a/tests/userSocialMedia.test.ts b/tests/userSocialMedia.test.ts index badbfd6f3..ac9419583 100644 --- a/tests/userSocialMedia.test.ts +++ b/tests/userSocialMedia.test.ts @@ -1,4 +1,4 @@ -import faker = require('faker'); +import { faker } from '@faker-js/faker'; import { DataSource } from 'typeorm'; import { DatabaseConnection, PortalState, UserFactory } from './data'; import { UserModel } from '../models/UserModel'; @@ -116,7 +116,7 @@ describe('social media URL update', () => { const socialMediaParams = { socialMedia: [{ url: faker.internet.url(), - uuid: faker.datatype.uuid(), + uuid: faker.string.uuid(), }] }; const errorMessage = `Social media of UUID "${socialMediaParams.socialMedia[0].uuid}" not found`; await expect(userController.updateSocialMediaForUser(socialMediaParams, member)) diff --git a/yarn.lock b/yarn.lock index dcbbfe2fc..39f9986a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,10 +19,10 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/compat-data@^7.25.9": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02" - integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g== +"@babel/compat-data@^7.26.5": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.5.tgz#df93ac37f4417854130e21d72c66ff3d4b897fc7" + integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg== "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.14.6", "@babel/core@^7.23.9": version "7.26.0" @@ -45,23 +45,23 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.26.0", "@babel/generator@^7.26.3", "@babel/generator@^7.7.2": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" - integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== +"@babel/generator@^7.26.0", "@babel/generator@^7.26.5", "@babel/generator@^7.7.2": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.5.tgz#e44d4ab3176bbcaf78a5725da5f1dc28802a9458" + integrity sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw== dependencies: - "@babel/parser" "^7.26.3" - "@babel/types" "^7.26.3" + "@babel/parser" "^7.26.5" + "@babel/types" "^7.26.5" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" "@babel/helper-compilation-targets@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" - integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz#75d92bb8d8d51301c0d49e52a65c9a7fe94514d8" + integrity sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA== dependencies: - "@babel/compat-data" "^7.25.9" + "@babel/compat-data" "^7.26.5" "@babel/helper-validator-option" "^7.25.9" browserslist "^4.24.0" lru-cache "^5.1.1" @@ -85,9 +85,9 @@ "@babel/traverse" "^7.25.9" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" - integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" + integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== "@babel/helper-string-parser@^7.25.9": version "7.25.9" @@ -112,12 +112,12 @@ "@babel/template" "^7.25.9" "@babel/types" "^7.26.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" - integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.5": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.5.tgz#6fec9aebddef25ca57a935c86dbb915ae2da3e1f" + integrity sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw== dependencies: - "@babel/types" "^7.26.3" + "@babel/types" "^7.26.5" "@babel/plugin-proposal-export-namespace-from@^7.14.5": version "7.18.9" @@ -278,22 +278,22 @@ "@babel/types" "^7.25.9" "@babel/traverse@^7.25.9": - version "7.26.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" - integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.5.tgz#6d0be3e772ff786456c1a37538208286f6e79021" + integrity sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ== dependencies: "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.3" - "@babel/parser" "^7.26.3" + "@babel/generator" "^7.26.5" + "@babel/parser" "^7.26.5" "@babel/template" "^7.25.9" - "@babel/types" "^7.26.3" + "@babel/types" "^7.26.5" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3", "@babel/types@^7.3.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" - integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.5", "@babel/types@^7.3.3": + version "7.26.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.5.tgz#7a1e1c01d28e26d1fe7f8ec9567b3b92b9d07747" + integrity sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg== dependencies: "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" @@ -345,10 +345,10 @@ debug "^4.3.1" minimatch "^3.1.2" -"@eslint/core@^0.9.0": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.9.1.tgz#31763847308ef6b7084a4505573ac9402c51f9d1" - integrity sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q== +"@eslint/core@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.10.0.tgz#23727063c21b335f752dbb3a16450f6f9cbc9091" + integrity sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw== dependencies: "@types/json-schema" "^7.0.15" @@ -367,23 +367,29 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.17.0": - version "9.17.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.17.0.tgz#1523e586791f80376a6f8398a3964455ecc651ec" - integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w== +"@eslint/js@9.18.0": + version "9.18.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.18.0.tgz#3356f85d18ed3627ab107790b53caf7e1e3d1e84" + integrity sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA== "@eslint/object-schema@^2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== -"@eslint/plugin-kit@^0.2.3": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz#2b78e7bb3755784bb13faa8932a1d994d6537792" - integrity sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg== +"@eslint/plugin-kit@^0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz#ee07372035539e7847ef834e3f5e7b79f09e3a81" + integrity sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A== dependencies: + "@eslint/core" "^0.10.0" levn "^0.4.1" +"@faker-js/faker@^9.4.0": + version "9.4.0" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-9.4.0.tgz#3e85604df3a318729436677565e9433d964276d2" + integrity sha512-85+k0AxaZSTowL0gXp8zYWDIrWclTbRPg/pm/V0dSFZ6W6D4lhcG3uuZl4zLsEKfEvs69xDbLN2cHQudwp95JA== + "@hapi/bourne@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-3.0.0.tgz#f11fdf7dda62fe8e336fa7c6642d9041f30356d7" @@ -894,9 +900,9 @@ "@types/send" "*" "@types/express-serve-static-core@^5.0.0": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.4.tgz#88c29e3052cec3536d64b6ce5015a30dfcbefca7" - integrity sha512-5kz9ScmzBdzTgB/3susoCgfqNDzBjvLL4taparufgSvlwjdLy6UyUy9T/tCpYd2GIdIilCatC4iSQS0QSYHt0w== + version "5.0.5" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.5.tgz#f6a851c7fd512e5da087f6f20d29f44b162a6a95" + integrity sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA== dependencies: "@types/node" "*" "@types/qs" "*" @@ -1004,16 +1010,16 @@ "@types/express" "*" "@types/node@*", "@types/node@^22.10.5": - version "22.10.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.5.tgz#95af89a3fb74a2bb41ef9927f206e6472026e48b" - integrity sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ== + version "22.10.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.7.tgz#14a1ca33fd0ebdd9d63593ed8d3fbc882a6d28d7" + integrity sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg== dependencies: undici-types "~6.20.0" "@types/qs@*": - version "6.9.17" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.17.tgz#fc560f60946d0aeff2f914eb41679659d3310e1a" - integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ== + version "6.9.18" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.18.tgz#877292caa91f7c1b213032b34626505b746624c2" + integrity sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA== "@types/range-parser@*": version "1.2.7" @@ -1087,15 +1093,15 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^8.19.1": - version "8.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.1.tgz#5f26c0a833b27bcb1aa402b82e76d3b8dda0b247" - integrity sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg== + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz#b47a398e0e551cb008c60190b804394e6852c863" + integrity sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.19.1" - "@typescript-eslint/type-utils" "8.19.1" - "@typescript-eslint/utils" "8.19.1" - "@typescript-eslint/visitor-keys" "8.19.1" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/type-utils" "8.20.0" + "@typescript-eslint/utils" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" @@ -1112,14 +1118,14 @@ debug "^4.3.1" "@typescript-eslint/parser@^8.19.1": - version "8.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.19.1.tgz#b836fcfe7a704c8c65f5a50e5b0ff8acfca5c21b" - integrity sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw== - dependencies: - "@typescript-eslint/scope-manager" "8.19.1" - "@typescript-eslint/types" "8.19.1" - "@typescript-eslint/typescript-estree" "8.19.1" - "@typescript-eslint/visitor-keys" "8.19.1" + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.20.0.tgz#5caf2230a37094dc0e671cf836b96dd39b587ced" + integrity sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g== + dependencies: + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" debug "^4.3.4" "@typescript-eslint/scope-manager@4.33.0": @@ -1130,21 +1136,21 @@ "@typescript-eslint/types" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0" -"@typescript-eslint/scope-manager@8.19.1": - version "8.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.19.1.tgz#794cfc8add4f373b9cd6fa32e367e7565a0e231b" - integrity sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q== +"@typescript-eslint/scope-manager@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz#aaf4198b509fb87a6527c02cfbfaf8901179e75c" + integrity sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw== dependencies: - "@typescript-eslint/types" "8.19.1" - "@typescript-eslint/visitor-keys" "8.19.1" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" -"@typescript-eslint/type-utils@8.19.1": - version "8.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.19.1.tgz#23710ab52643c19f74601b3f4a076c98f4e159aa" - integrity sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw== +"@typescript-eslint/type-utils@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz#958171d86b213a3f32b5b16b91db267968a4ef19" + integrity sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA== dependencies: - "@typescript-eslint/typescript-estree" "8.19.1" - "@typescript-eslint/utils" "8.19.1" + "@typescript-eslint/typescript-estree" "8.20.0" + "@typescript-eslint/utils" "8.20.0" debug "^4.3.4" ts-api-utils "^2.0.0" @@ -1153,10 +1159,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== -"@typescript-eslint/types@8.19.1": - version "8.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.19.1.tgz#015a991281754ed986f2e549263a1188d6ed0a8c" - integrity sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA== +"@typescript-eslint/types@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.20.0.tgz#487de5314b5415dee075e95568b87a75a3e730cf" + integrity sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA== "@typescript-eslint/typescript-estree@4.33.0": version "4.33.0" @@ -1171,13 +1177,13 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@8.19.1": - version "8.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz#c1094bb00bc251ac76cf215569ca27236435036b" - integrity sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q== +"@typescript-eslint/typescript-estree@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz#658cea07b7e5981f19bce5cf1662cb70ad59f26b" + integrity sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA== dependencies: - "@typescript-eslint/types" "8.19.1" - "@typescript-eslint/visitor-keys" "8.19.1" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/visitor-keys" "8.20.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -1185,15 +1191,15 @@ semver "^7.6.0" ts-api-utils "^2.0.0" -"@typescript-eslint/utils@8.19.1": - version "8.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.19.1.tgz#dd8eabd46b92bf61e573286e1c0ba6bd243a185b" - integrity sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA== +"@typescript-eslint/utils@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.20.0.tgz#53127ecd314b3b08836b4498b71cdb86f4ef3aa2" + integrity sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.19.1" - "@typescript-eslint/types" "8.19.1" - "@typescript-eslint/typescript-estree" "8.19.1" + "@typescript-eslint/scope-manager" "8.20.0" + "@typescript-eslint/types" "8.20.0" + "@typescript-eslint/typescript-estree" "8.20.0" "@typescript-eslint/visitor-keys@4.33.0": version "4.33.0" @@ -1203,12 +1209,12 @@ "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@8.19.1": - version "8.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz#fce54d7cfa5351a92387d6c0c5be598caee072e0" - integrity sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q== +"@typescript-eslint/visitor-keys@8.20.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz#2df6e24bc69084b81f06aaaa48d198b10d382bed" + integrity sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA== dependencies: - "@typescript-eslint/types" "8.19.1" + "@typescript-eslint/types" "8.20.0" eslint-visitor-keys "^4.2.0" abbrev@1: @@ -2265,9 +2271,9 @@ ejs@^3.1.10, ejs@^3.1.3: jake "^10.8.5" electron-to-chromium@^1.5.73: - version "1.5.80" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.80.tgz#ca7a8361d7305f0ec9e203ce4e633cbb8a8ef1b1" - integrity sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw== + version "1.5.83" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz#3f74078f0c83e24bf7e692eaa855a998d1bec34f" + integrity sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ== emittery@^0.13.1: version "0.13.1" @@ -2396,9 +2402,9 @@ es-iterator-helpers@^1.2.1: safe-array-concat "^1.1.3" es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== dependencies: es-errors "^1.3.0" @@ -2543,9 +2549,9 @@ eslint-plugin-react-hooks@^4: integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react@^7.21.5: - version "7.37.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz#567549e9251533975c4ea9706f986c3a64832031" - integrity sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA== + version "7.37.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz#1b6c80b6175b6ae4b26055ae4d55d04c414c7181" + integrity sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" @@ -2590,17 +2596,17 @@ eslint-visitor-keys@^4.2.0: integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== eslint@^9.17.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.17.0.tgz#faa1facb5dd042172fdc520106984b5c2421bb0c" - integrity sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA== + version "9.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.18.0.tgz#c95b24de1183e865de19f607fda6518b54827850" + integrity sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.12.1" "@eslint/config-array" "^0.19.0" - "@eslint/core" "^0.9.0" + "@eslint/core" "^0.10.0" "@eslint/eslintrc" "^3.2.0" - "@eslint/js" "9.17.0" - "@eslint/plugin-kit" "^0.2.3" + "@eslint/js" "9.18.0" + "@eslint/plugin-kit" "^0.2.5" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.4.1" @@ -2764,11 +2770,6 @@ extend@^3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -faker@^5.5.3: - version "5.5.3" - resolved "https://registry.yarnpkg.com/faker/-/faker-5.5.3.tgz#c57974ee484431b25205c2c8dc09fda861e51e0e" - integrity sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g== - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -4187,9 +4188,9 @@ levn@^0.4.1: type-check "~0.4.0" libphonenumber-js@^1.10.53: - version "1.11.17" - resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.11.17.tgz#37ddbf16dc4dd45c723a150996c253c58dad034b" - integrity sha512-Jr6v8thd5qRlOlc6CslSTzGzzQW03uiscab7KHQZX1Dfo4R6n6FDhZ0Hri6/X7edLIDv9gl4VMZXhxTjLnl0VQ== + version "1.11.18" + resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.11.18.tgz#0ce5188a76487fae01afdf318255783cde36501e" + integrity sha512-okMm/MCoFrm1vByeVFLBdkFIXLSHy/AIK2AEGgY3eoicfWZeOZqv3GfhtQgICkzs/tqorAMm3a4GBg5qNCrqzg== lines-and-columns@^1.1.6: version "1.2.4" @@ -4452,7 +4453,12 @@ moment-timezone@^0.5.34: dependencies: moment "^2.29.4" -moment@^2.27.0, moment@^2.29.1, moment@^2.29.4: +moment@2.29.4: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + +moment@^2.29.1, moment@^2.29.4: version "2.30.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== @@ -4999,11 +5005,11 @@ qs@6.13.0: side-channel "^1.0.6" qs@^6.5.2: - version "6.13.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.1.tgz#3ce5fc72bd3a8171b85c99b93c65dd20b7d1b16e" - integrity sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg== + version "6.14.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== dependencies: - side-channel "^1.0.6" + side-channel "^1.1.0" querystring@0.2.0: version "0.2.0"