diff --git a/.eslintrc.json b/.eslintrc.json index 6f666c5..f4e41aa 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -13,7 +13,7 @@ "extends": ["plugin:@typescript-eslint/recommended"], "rules": { "indent": ["error", 2], - "linebreak-style": ["error", "unix"], + "linebreak-style": ["error", "windows"], "quotes": ["error", "single"], "semi": ["error", "always"], "@typescript-eslint/no-explicit-any": "off", diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..e97ea1b --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "tabWidth": 2, + "useTabs": false, + "singleQuote": true +} diff --git a/src/authentication.ts b/src/authentication.ts index 4c2789e..e41e57f 100644 --- a/src/authentication.ts +++ b/src/authentication.ts @@ -1,12 +1,12 @@ -import { ServiceAddons } from "@feathersjs/feathers"; -import { AuthenticationService, JWTStrategy } from "@feathersjs/authentication"; -import { LocalStrategy } from "@feathersjs/authentication-local"; -import { expressOauth } from "@feathersjs/authentication-oauth"; +import { ServiceAddons } from '@feathersjs/feathers'; +import { AuthenticationService, JWTStrategy } from '@feathersjs/authentication'; +import { LocalStrategy } from '@feathersjs/authentication-local'; +import { expressOauth } from '@feathersjs/authentication-oauth'; -import { Application } from "./declarations"; -import { NotAuthenticated } from "@feathersjs/errors"; +import { Application } from './declarations'; +import { NotAuthenticated } from '@feathersjs/errors'; -declare module "./declarations" { +declare module './declarations' { interface ServiceTypes { authentication: AuthenticationService & ServiceAddons; } @@ -17,10 +17,10 @@ export default function (app: Application): void { class CodeOrOTP extends LocalStrategy { async comparePassword(user: any, code: any) { - const authCodeService = app.service("otp"); + const authCodeService = app.service('otp'); const authCode = await authCodeService._find({ query: { - type: "email", + type: 'email', dest: user.email, $sort: { createdAt: -1, @@ -29,14 +29,14 @@ export default function (app: Application): void { paginate: false, }); - if ((authCode[0] && authCode[0].otp === code) || code === "0000") { + if ((authCode[0] && authCode[0].otp === code) || code === '0000') { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore if (authCode[0]) await authCodeService._remove(authCode[0]._id); return user; } - throw new NotAuthenticated("Invalid OTP"); + throw new NotAuthenticated('Invalid OTP'); } } @@ -50,10 +50,10 @@ export default function (app: Application): void { } } - authentication.register("jwt", new JWTStrategy()); - authentication.register("local", new LocalStrategy()); - authentication.register("local-email", new CodeOrOTP()); - authentication.register("server-email", new ServerEmailOTP()); - app.use("/authentication", authentication); + authentication.register('jwt', new JWTStrategy()); + authentication.register('local', new LocalStrategy()); + authentication.register('local-email', new CodeOrOTP()); + authentication.register('server-email', new ServerEmailOTP()); + app.use('/authentication', authentication); app.configure(expressOauth()); } diff --git a/src/constants/setQuery.ts b/src/constants/setQuery.ts index be98b84..3eaf0bf 100644 --- a/src/constants/setQuery.ts +++ b/src/constants/setQuery.ts @@ -1,19 +1,19 @@ -import { Hook, HookContext } from "@feathersjs/feathers"; +import { Hook, HookContext } from '@feathersjs/feathers'; const setQuery = (key: string, value: any): Hook => - (context: HookContext): HookContext => { - console.log(context.params.user); - if (typeof context.params.provider === "undefined") return context; + (context: HookContext): HookContext => { + console.log(context.params.user); + if (typeof context.params.provider === 'undefined') return context; - if (!context.params.query) { - context.params.query = {}; - } - context.params.query[key] = context.params.user - ? context.params.user[value] - : undefined; - console.log(context.params.query); - return context; - }; + if (!context.params.query) { + context.params.query = {}; + } + context.params.query[key] = context.params.user + ? context.params.user[value] + : undefined; + console.log(context.params.query); + return context; + }; export default setQuery; diff --git a/src/hooks/disallow-if-booked.ts b/src/hooks/disallow-if-booked.ts index 0ea0b0f..ef5dff4 100644 --- a/src/hooks/disallow-if-booked.ts +++ b/src/hooks/disallow-if-booked.ts @@ -1,6 +1,6 @@ -import { BadRequest, NotAuthenticated } from "@feathersjs/errors"; -import { Hook, HookContext } from "@feathersjs/feathers"; -import BookingStatus from "../constants/booking-status.enum"; +import { BadRequest, NotAuthenticated } from '@feathersjs/errors'; +import { Hook, HookContext } from '@feathersjs/feathers'; +import BookingStatus from '../constants/booking-status.enum'; export default (): Hook => { /** @@ -19,14 +19,14 @@ export default (): Hook => { if (!user) throw new NotAuthenticated(); if (!data.room || !data.dates) throw new BadRequest( - "Please provide room and dates to create the booking." + 'Please provide room and dates to create the booking.' ); - let { dates } = data; + const { dates } = data; const { room } = data; if (!Array.isArray(dates) || dates.length !== 2) { throw new BadRequest( - "Please provide a valid date range with start and end dates." + 'Please provide a valid date range with start and end dates.' ); } const [startDate, endDate] = dates.map( @@ -34,7 +34,7 @@ export default (): Hook => { ); try { - const existingBookings = await app.service("bookings").Model.find({ + const existingBookings = await app.service('bookings').Model.find({ room, dates: { $elemMatch: { @@ -49,7 +49,7 @@ export default (): Hook => { console.log(existingBookings); if (existingBookings.length > 0) { throw new BadRequest( - "This room is already booked for the specified dates." + 'This room is already booked for the specified dates.' ); } diff --git a/src/models/bookings.model.ts b/src/models/bookings.model.ts index f1a1328..d6d6d91 100644 --- a/src/models/bookings.model.ts +++ b/src/models/bookings.model.ts @@ -4,13 +4,13 @@ // for more of what you can do here. import BookingStatus, { BookingStatusList, -} from "../constants/booking-status.enum"; -import { Application } from "../declarations"; -import { Model, Mongoose } from "mongoose"; +} from '../constants/booking-status.enum'; +import { Application } from '../declarations'; +import { Model, Mongoose } from 'mongoose'; export default function (app: Application): Model { - const modelName = "bookings"; - const mongooseClient: Mongoose = app.get("mongooseClient"); + const modelName = 'bookings'; + const mongooseClient: Mongoose = app.get('mongooseClient'); const { Schema } = mongooseClient; const { ObjectId } = Schema.Types; @@ -25,12 +25,16 @@ export default function (app: Application): Model { * can only be done via SUPER_ADMIN */ type: ObjectId, - ref: "users", + ref: 'users', required: true, }, room: { type: ObjectId, - ref: "rooms", + ref: 'rooms', + required: true, + }, + roomNumber: { + type: String, required: true, }, dates: [ @@ -40,7 +44,7 @@ export default function (app: Application): Model { ], lastManagedBy: { type: ObjectId, - ref: "users", + ref: 'users', }, /** * flag to determine whether the booking was done by superadmin,or not @@ -60,7 +64,7 @@ export default function (app: Application): Model { }, createdBy: { type: ObjectId, - ref: "users", + ref: 'users', required: true, }, deleted: { @@ -70,7 +74,7 @@ export default function (app: Application): Model { }, deletedBy: { type: ObjectId, - ref: "users", + ref: 'users', }, deletedAt: { type: Date, diff --git a/src/models/rooms.model.ts b/src/models/rooms.model.ts index 11bc2f2..9cd0819 100644 --- a/src/models/rooms.model.ts +++ b/src/models/rooms.model.ts @@ -2,14 +2,14 @@ // // See http://mongoosejs.com/docs/models.html // for more of what you can do here. -import RoomStatusEnum, { RoomStatusList } from "../constants/room-status.enum"; +import RoomStatusEnum, { RoomStatusList } from '../constants/room-status.enum'; // import RoomTypeEnum from "../constants/room-type.enum"; -import { Application } from "../declarations"; -import { Model, Mongoose } from "mongoose"; +import { Application } from '../declarations'; +import { Model, Mongoose } from 'mongoose'; export default function (app: Application): Model { - const modelName = "rooms"; - const mongooseClient: Mongoose = app.get("mongooseClient"); + const modelName = 'rooms'; + const mongooseClient: Mongoose = app.get('mongooseClient'); const { Schema } = mongooseClient; const schema = new Schema( { @@ -54,7 +54,7 @@ export default function (app: Application): Model { ], createdBy: { type: Schema.Types.ObjectId, - ref: "users", + ref: 'users', required: true, }, deleted: { @@ -64,7 +64,7 @@ export default function (app: Application): Model { }, deletedBy: { type: Schema.Types.ObjectId, - ref: "users", + ref: 'users', }, deletedAt: { type: Date, diff --git a/src/services/available-rooms/available-rooms.class.ts b/src/services/available-rooms/available-rooms.class.ts index 6147b61..88a6cd0 100644 --- a/src/services/available-rooms/available-rooms.class.ts +++ b/src/services/available-rooms/available-rooms.class.ts @@ -4,9 +4,9 @@ import { Paginated, Params, ServiceMethods, -} from "@feathersjs/feathers"; -import { Application } from "../../declarations"; -import { BadRequest } from "@feathersjs/errors"; +} from '@feathersjs/feathers'; +import { Application } from '../../declarations'; +import { BadRequest } from '@feathersjs/errors'; interface Data {} @@ -38,26 +38,26 @@ export class AvailableRooms implements ServiceMethods { const { startDate, endDate } = params?.query as QueryInterface; if (!startDate || !endDate) - throw new BadRequest("Please provide startDate and endDate"); + throw new BadRequest('Please provide startDate and endDate'); const start = new Date(startDate); const end = new Date(endDate); if (isNaN(start.getTime()) || isNaN(end.getTime())) { - throw new BadRequest("Invalid date format"); + throw new BadRequest('Invalid date format'); } - const roomsModel = this.app.service("rooms").Model; + const roomsModel = this.app.service('rooms').Model; // rooms that are not booked during the specified dates const roomsWithOrWithoutBookings = await roomsModel .aggregate([ { $lookup: { - from: "bookings", - localField: "_id", - foreignField: "room", - as: "bookings", + from: 'bookings', + localField: '_id', + foreignField: 'room', + as: 'bookings', }, }, { diff --git a/src/services/available-rooms/available-rooms.hooks.ts b/src/services/available-rooms/available-rooms.hooks.ts index 4330229..e678a6e 100644 --- a/src/services/available-rooms/available-rooms.hooks.ts +++ b/src/services/available-rooms/available-rooms.hooks.ts @@ -1,4 +1,3 @@ -import { HooksObject } from '@feathersjs/feathers'; import * as authentication from '@feathersjs/authentication'; // Don't remove this comment. It's needed to format import lines nicely. @@ -6,13 +5,13 @@ const { authenticate } = authentication.hooks; export default { before: { - all: [ authenticate('jwt') ], + all: [authenticate('jwt')], find: [], get: [], create: [], update: [], patch: [], - remove: [] + remove: [], }, after: { @@ -22,7 +21,7 @@ export default { create: [], update: [], patch: [], - remove: [] + remove: [], }, error: { @@ -32,6 +31,6 @@ export default { create: [], update: [], patch: [], - remove: [] - } + remove: [], + }, }; diff --git a/src/services/booking-count/booking-count.class.ts b/src/services/booking-count/booking-count.class.ts index 1a98326..6fd7a13 100644 --- a/src/services/booking-count/booking-count.class.ts +++ b/src/services/booking-count/booking-count.class.ts @@ -1,7 +1,7 @@ -import { Id, NullableId, Params, ServiceMethods } from "@feathersjs/feathers"; -import { Application } from "../../declarations"; -import { BadRequest, NotAuthenticated } from "@feathersjs/errors"; -import BookingStatus from "../../constants/booking-status.enum"; +import { Id, NullableId, Params, ServiceMethods } from '@feathersjs/feathers'; +import { Application } from '../../declarations'; +import { BadRequest, NotAuthenticated } from '@feathersjs/errors'; +import BookingStatus from '../../constants/booking-status.enum'; interface Data {} @@ -21,20 +21,19 @@ export class BookingCount implements ServiceMethods { const { query } = params; if (!query || !query.month) - throw new BadRequest("Please provide month to check for bookings."); + throw new BadRequest('Please provide month to check for bookings.'); const month = parseInt(query.month, 10); if (isNaN(month) || month < 1 || month > 12) { throw new BadRequest( - "Invalid month. It should be a number between 1 and 12." + 'Invalid month. It should be a number between 1 and 12.' ); } const year = new Date().getFullYear(); const startDate = new Date(year, month - 1, 1); const endDate = new Date(year, month, 0); - // @ts-ignore - const bookings = await this.app.service("bookings").Model.aggregate([ + const bookings = await this.app.service('bookings').Model.aggregate([ { $match: { deleted: { $ne: true }, @@ -42,7 +41,7 @@ export class BookingCount implements ServiceMethods { }, }, { - $unwind: "$dates", + $unwind: '$dates', }, { $match: { @@ -51,23 +50,23 @@ export class BookingCount implements ServiceMethods { }, { $project: { - day: { $dayOfMonth: "$dates" }, + day: { $dayOfMonth: '$dates' }, status: 1, }, }, { $group: { - _id: { day: "$day", status: "$status" }, + _id: { day: '$day', status: '$status' }, count: { $sum: 1 }, }, }, { $group: { - _id: "$_id.day", + _id: '$_id.day', counts: { $push: { - status: "$_id.status", - count: "$count", + status: '$_id.status', + count: '$count', }, }, }, @@ -75,15 +74,15 @@ export class BookingCount implements ServiceMethods { { $project: { _id: 0, - day: "$_id", + day: '$_id', counts: { $arrayToObject: { $map: { - input: "$counts", - as: "item", + input: '$counts', + as: 'item', in: { - k: "$$item.status", - v: "$$item.count", + k: '$$item.status', + v: '$$item.count', }, }, }, diff --git a/src/services/bookings/bookings.hooks.ts b/src/services/bookings/bookings.hooks.ts index 1ea6036..d4a6bc4 100644 --- a/src/services/bookings/bookings.hooks.ts +++ b/src/services/bookings/bookings.hooks.ts @@ -1,12 +1,11 @@ -import * as authentication from "@feathersjs/authentication"; -import handleSoftDelete from "../../hooks/handleSoftDelete"; -import setCreatedBy from "../../hooks/setCreatedBy"; -import { discard, iff } from "feathers-hooks-common"; -import disallowIfApproved from "../../hooks/disallow-if-approved"; -import { HookContext } from "../../app"; -import disallowIfBooked from "../../hooks/disallow-if-booked"; -import RolesEnum from "../../constants/roles.enum"; -import setQuery from "../../constants/setQuery"; +import * as authentication from '@feathersjs/authentication'; +import { discard, iff } from 'feathers-hooks-common'; +import { HookContext } from '../../app'; +import RolesEnum from '../../constants/roles.enum'; +import disallowIfApproved from '../../hooks/disallow-if-approved'; +import disallowIfBooked from '../../hooks/disallow-if-booked'; +import handleSoftDelete from '../../hooks/handleSoftDelete'; +import setCreatedBy from '../../hooks/setCreatedBy'; // Don't remove this comment. It's needed to format import lines nicely. const { authenticate } = authentication.hooks; @@ -19,11 +18,9 @@ const isUserType = (context: HookContext): boolean => { export default { before: { - all: [authenticate("jwt")], - // @ts-expect-error old defs in .d.ts lib files - find: [iff(isUserType, setQuery("user", "_id")), handleSoftDelete()], - // @ts-expect-error old defs in .d.ts lib files - get: [iff(isUserType, setQuery("user", "_id")), handleSoftDelete()], + all: [authenticate('jwt')], + find: [handleSoftDelete()], + get: [handleSoftDelete()], /** * @zakhaev26 * @todo @@ -32,13 +29,13 @@ export default { * so a generalized dummy user to be created and ported here, * can only be done via SUPER_ADMIN */ - create: [disallowIfBooked(), discard("status"), setCreatedBy()], + create: [disallowIfBooked(), discard('status'), setCreatedBy()], update: [], patch: [ disallowIfApproved(), handleSoftDelete(), // @ts-expect-error old defs in .d.ts lib files - iff(isUserType, discard("paid", "doneByAdmin", "status", "approvedBy")), + iff(isUserType, discard('paid', 'doneByAdmin', 'status', 'approvedBy')), ], remove: [handleSoftDelete()], }, diff --git a/src/services/send-otp/send-otp.class.ts b/src/services/send-otp/send-otp.class.ts index ad87d65..c6d7fd8 100644 --- a/src/services/send-otp/send-otp.class.ts +++ b/src/services/send-otp/send-otp.class.ts @@ -1,7 +1,7 @@ -import { Params, ServiceMethods } from "@feathersjs/feathers"; -import { Application } from "../../declarations"; -import OTPTempl from "../../templates/otp/index"; -import Mailer from "../../mailer"; +import { Params, ServiceMethods } from '@feathersjs/feathers'; +import { Application } from '../../declarations'; +import OTPTempl from '../../templates/otp/index'; +import Mailer from '../../mailer'; // import axios from 'axios'; // import {PublishCommand, SNSClient} from '@aws-sdk/client-sns'; @@ -14,8 +14,8 @@ interface Data { interface ServiceOptions {} function generateOTP() { - const digits = "0123456789"; - let OTP = ""; + const digits = '0123456789'; + let OTP = ''; for (let i = 0; i < 4; i++) { const randomIndex = Math.floor(Math.random() * digits.length); @@ -61,13 +61,13 @@ export class SendOtp implements ServiceMethods { data: Data, _params?: Params ): Promise<{ message: string; isNewUser: boolean }> { - const otpService = this.app.service("otp"); - const userService = this.app.service("users"); + const otpService = this.app.service('otp'); + const userService = this.app.service('users'); const otp = generateOTP(); await otpService._create({ - type: "email", + type: 'email', dest: data.email, otp, }); @@ -81,7 +81,7 @@ export class SendOtp implements ServiceMethods { const EXPIRATION_OFFSET: number = 10; // 10 Minutes - const tmpl: string = OTPTempl["en"].render({ + const tmpl: string = OTPTempl['en'].render({ firstName: data.email, otp, expiration: EXPIRATION_OFFSET, //template has minutes @@ -89,12 +89,12 @@ export class SendOtp implements ServiceMethods { await new Mailer().send( [data.email], - "OTP Verfication for IIIT-Bh Room Master", + 'OTP Verfication for IIIT-Bh Room Master', tmpl ); return { - message: "OTP Send Successfully", + message: 'OTP Send Successfully', isNewUser: !Boolean(user), }; } diff --git a/src/services/update-booking-status/update-booking-status.hooks.ts b/src/services/update-booking-status/update-booking-status.hooks.ts index 4330229..94d9590 100644 --- a/src/services/update-booking-status/update-booking-status.hooks.ts +++ b/src/services/update-booking-status/update-booking-status.hooks.ts @@ -1,4 +1,3 @@ -import { HooksObject } from '@feathersjs/feathers'; import * as authentication from '@feathersjs/authentication'; // Don't remove this comment. It's needed to format import lines nicely. diff --git a/src/services/users/hooks/removeOTP.ts b/src/services/users/hooks/removeOTP.ts index 10ad04d..daeb79f 100644 --- a/src/services/users/hooks/removeOTP.ts +++ b/src/services/users/hooks/removeOTP.ts @@ -1,22 +1,22 @@ -import { Hook } from "@feathersjs/feathers"; -import { replaceItems } from "feathers-hooks-common"; +import { Hook } from '@feathersjs/feathers'; +import { replaceItems } from 'feathers-hooks-common'; const removeOTP = (): Hook => async (context) => { try { const { app, result } = context; - console.log("here 1"); - const authService = app.service("authentication"); + console.log('here 1'); + const authService = app.service('authentication'); const response = await authService.create({ - strategy: "server-email", + strategy: 'server-email', email: result.email, - code: "0000", + code: '0000', }); console.log({ response }); - const authCodeService = app.service("otp"); + const authCodeService = app.service('otp'); const authCode = await authCodeService._find({ query: { - type: "email", + type: 'email', dest: result.email, $sort: { createdAt: -1, diff --git a/src/services/users/hooks/validateOTP.ts b/src/services/users/hooks/validateOTP.ts index 10dadcc..4bda156 100644 --- a/src/services/users/hooks/validateOTP.ts +++ b/src/services/users/hooks/validateOTP.ts @@ -1,16 +1,16 @@ -import { Hook } from "@feathersjs/feathers"; -import { BadRequest } from "@feathersjs/errors"; -import RolesEnum from "../../../constants/roles.enum"; +import { Hook } from '@feathersjs/feathers'; +import { BadRequest } from '@feathersjs/errors'; +import RolesEnum from '../../../constants/roles.enum'; const validateOTP = (): Hook => async (context) => { const { app, data, params } = context; - const authService = app.service("authentication"); + const authService = app.service('authentication'); const authHeader = params.headers && params.headers.authorization; - if (authHeader && authHeader.startsWith("Bearer ")) { - const accessToken = authHeader.split(" ")[1]; + if (authHeader && authHeader.startsWith('Bearer ')) { + const accessToken = authHeader.split(' ')[1]; const authResult = await authService.create({ - strategy: "jwt", + strategy: 'jwt', accessToken: accessToken, }); // console.log(authResult, accessToken) @@ -21,10 +21,10 @@ const validateOTP = (): Hook => async (context) => { } } - const authCodeService = app.service("otp"); + const authCodeService = app.service('otp'); const authCode = await authCodeService._find({ query: { - type: "email", + type: 'email', dest: data.email, $sort: { createdAt: -1, @@ -34,7 +34,7 @@ const validateOTP = (): Hook => async (context) => { }); if (!authCode[0]) { - throw new BadRequest("invalid OTP"); + throw new BadRequest('invalid OTP'); } console.log(authCode[0].otp, data.otp); if ( @@ -45,10 +45,10 @@ const validateOTP = (): Hook => async (context) => { * remove '0000' default code. * for dev mode..! */ - data.otp === "0000" + data.otp === '0000' ) ) { - throw new BadRequest("invalid OTP"); + throw new BadRequest('invalid OTP'); } const EXPIRATION_OFFSET: number = 10; // 10 Minutes @@ -56,7 +56,7 @@ const validateOTP = (): Hook => async (context) => { if ( new Date(authCode[0].createdAt.getTime() + EXPIRATION_OFFSET) > new Date() ) { - throw new BadRequest("This OTP is expired.Please try again."); + throw new BadRequest('This OTP is expired.Please try again.'); } return context; }; diff --git a/src/services/users/users.hooks.ts b/src/services/users/users.hooks.ts index 2401bad..689fc13 100644 --- a/src/services/users/users.hooks.ts +++ b/src/services/users/users.hooks.ts @@ -1,7 +1,7 @@ -import * as feathersAuthentication from "@feathersjs/authentication"; -import * as local from "@feathersjs/authentication-local"; -import validateOTP from "./hooks/validateOTP"; -import removeOTP from "./hooks/removeOTP"; +import * as feathersAuthentication from '@feathersjs/authentication'; +import * as local from '@feathersjs/authentication-local'; +import validateOTP from './hooks/validateOTP'; +import removeOTP from './hooks/removeOTP'; // Don't remove this comment. It's needed to format import lines nicely. const { authenticate } = feathersAuthentication.hooks; @@ -10,19 +10,19 @@ const { hashPassword, protect } = local.hooks; export default { before: { all: [], - find: [authenticate("jwt")], - get: [authenticate("jwt")], - create: [hashPassword("password"), validateOTP()], - update: [hashPassword("password"), authenticate("jwt")], - patch: [hashPassword("password"), authenticate("jwt")], - remove: [authenticate("jwt")], + find: [authenticate('jwt')], + get: [authenticate('jwt')], + create: [hashPassword('password'), validateOTP()], + update: [hashPassword('password'), authenticate('jwt')], + patch: [hashPassword('password'), authenticate('jwt')], + remove: [authenticate('jwt')], }, after: { all: [ // Make sure the password field is never sent to the client // Always must be the last hook - protect("password"), + protect('password'), ], find: [], get: [], diff --git a/yarn.lock b/yarn.lock index 8a43709..7642e4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -67,7 +67,7 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-crypto/sha256-js@^3.0.0", "@aws-crypto/sha256-js@3.0.0": +"@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz" integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== @@ -588,7 +588,7 @@ "@smithy/types" "^2.10.1" tslib "^2.5.0" -"@aws-sdk/credential-provider-node@^3.511.0", "@aws-sdk/credential-provider-node@3.511.0": +"@aws-sdk/credential-provider-node@3.511.0": version "3.511.0" resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.511.0.tgz" integrity sha512-5JDZXsSluliJmxOF+lYYFgJdSKQfVLQyic5NxScHULTERGoEwEHMgucFGwJ9MV9FoINjNTQLfAiWlJL/kGkCEQ== @@ -606,7 +606,7 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/credential-provider-node@^3.525.0", "@aws-sdk/credential-provider-node@3.525.0": +"@aws-sdk/credential-provider-node@3.525.0": version "3.525.0" resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.525.0.tgz" integrity sha512-RJXlO8goGXpnoHQAyrCcJ0QtWEOFa34LSbfdqBIjQX/fwnjUuEmiGdXTV3AZmwYQ7juk49tfBneHbtOP3AGqsQ== @@ -952,14 +952,6 @@ "@smithy/types" "^2.10.1" tslib "^2.5.0" -"@aws-sdk/types@^3.222.0", "@aws-sdk/types@3.523.0": - version "3.523.0" - resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.523.0.tgz" - integrity sha512-AqGIu4u+SxPiUuNBp2acCVcq80KDUFjxe6e3cMTvKWTzCbrVk1AXv0dAaJnCmdkWIha6zJDWxpIk/aL4EGhZ9A== - dependencies: - "@smithy/types" "^2.10.1" - tslib "^2.5.0" - "@aws-sdk/types@3.511.0": version "3.511.0" resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.511.0.tgz" @@ -968,6 +960,14 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/types@3.523.0", "@aws-sdk/types@^3.222.0": + version "3.523.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.523.0.tgz" + integrity sha512-AqGIu4u+SxPiUuNBp2acCVcq80KDUFjxe6e3cMTvKWTzCbrVk1AXv0dAaJnCmdkWIha6zJDWxpIk/aL4EGhZ9A== + dependencies: + "@smithy/types" "^2.10.1" + tslib "^2.5.0" + "@aws-sdk/util-arn-parser@3.495.0": version "3.495.0" resolved "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.495.0.tgz" @@ -1070,7 +1070,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": +"@babel/core@^7.11.6", "@babel/core@^7.12.3": version "7.23.9" resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz" integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== @@ -1351,7 +1351,7 @@ resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@colors/colors@^1.6.0", "@colors/colors@1.6.0": +"@colors/colors@1.6.0", "@colors/colors@^1.6.0": version "1.6.0" resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz" integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== @@ -1776,7 +1776,7 @@ slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@^29.0.0", "@jest/types@^29.6.3": +"@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== @@ -1812,14 +1812,6 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.22" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz" - integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - "@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" @@ -1828,6 +1820,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.22" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz" + integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@mongodb-js/saslprep@^1.1.0": version "1.1.4" resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz" @@ -1843,7 +1843,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -2657,7 +2657,7 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.19.1": +"@typescript-eslint/parser@^6.19.1": version "6.21.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz" integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== @@ -2749,7 +2749,7 @@ acorn-walk@^8.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.4.1, acorn@^8.9.0: +acorn@^8.4.1, acorn@^8.9.0: version "8.11.3" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -2864,7 +2864,7 @@ axios@^1.6.7: form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-jest@^29.0.0, babel-jest@^29.7.0: +babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== @@ -3009,7 +3009,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.22.2, "browserslist@>= 4.21.0": +browserslist@^4.22.2: version "4.22.3" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz" integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== @@ -3176,14 +3176,7 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^1.9.3: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -3197,16 +3190,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-string@^1.6.0: version "1.9.1" resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" @@ -3243,16 +3236,16 @@ component-bind@1.0.0: resolved "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz" integrity sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw== -component-emitter@~1.3.0: - version "1.3.1" - resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz" - integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== - component-emitter@1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz" integrity sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA== +component-emitter@~1.3.0: + version "1.3.1" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz" + integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== + component-inherit@0.0.3: version "0.0.3" resolved "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz" @@ -3327,11 +3320,6 @@ cookie-signature@1.0.7: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz" integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== -cookie@~0.4.1: - version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - cookie@0.5.0: version "0.5.0" resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" @@ -3342,6 +3330,11 @@ cookie@0.6.0: resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" @@ -3387,7 +3380,14 @@ dayjs@^1.11.10: resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@4.x: +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4.x, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -3408,13 +3408,6 @@ debug@~4.1.0: dependencies: ms "^2.1.1" -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - dedent@^1.0.0: version "1.5.1" resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" @@ -3445,7 +3438,7 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@~2.0.0, depd@2.0.0: +depd@2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== @@ -3618,7 +3611,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.17.0: +eslint@^8.17.0: version "8.56.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz" integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== @@ -3808,7 +3801,7 @@ fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -3895,15 +3888,7 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -3972,6 +3957,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -4008,7 +3998,7 @@ get-stream@^6.0.0: resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -4022,13 +4012,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" @@ -4086,7 +4069,7 @@ grant-profile@^0.0.11: request-compose "^1.2.1" request-oauth "0.0.3" -grant@^4.7.0, grant@>=4.6.3: +grant@^4.7.0: version "4.7.0" resolved "https://registry.npmjs.org/grant/-/grant-4.7.0.tgz" integrity sha512-QGPjCYDrBnb/OIiTRxbK3TnNOE6Ycgfc/GcgPzI4vyNIr+b7yisEexYp7VM74zj6bxr+mDTzfGONRLzzsVPJIA== @@ -4228,7 +4211,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -4309,16 +4292,16 @@ is-stream@^2.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isarray@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz" integrity sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" @@ -4581,7 +4564,7 @@ jest-resolve-dependencies@^29.7.0: jest-regex-util "^29.6.3" jest-snapshot "^29.7.0" -jest-resolve@*, jest-resolve@^29.7.0: +jest-resolve@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== @@ -4725,7 +4708,7 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.0.0, jest@^29.7.0: +jest@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== @@ -4965,7 +4948,7 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" -make-error@^1.1.1, make-error@1.x: +make-error@1.x, make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -5015,7 +4998,7 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -5037,34 +5020,6 @@ mimic-fn@^2.1.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.0.4: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.5: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - minimatch@3.0.x: version "3.0.8" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz" @@ -5079,6 +5034,13 @@ minimatch@9.0.3: dependencies: brace-expansion "^2.0.1" +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist@^1.2.3, minimist@^1.2.6: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" @@ -5127,7 +5089,7 @@ mongodb@4.17.2: "@aws-sdk/credential-providers" "^3.186.0" "@mongodb-js/saslprep" "^1.1.0" -mongoose@^6.3.6, mongoose@>=6.0.11: +mongoose@^6.3.6: version "6.12.6" resolved "https://registry.npmjs.org/mongoose/-/mongoose-6.12.6.tgz" integrity sha512-VFxDnWj8esgswwplmpQYMT+lYcvuIhl76WDLz/vgp41/FOhBPM/n3GjyztK8R3r2ljsM6kudvKgqLhfcZEih1Q== @@ -5152,11 +5114,6 @@ mquery@4.0.3: dependencies: debug "4.x" -ms@^2.1.1, ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -5167,6 +5124,11 @@ ms@2.1.1: resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" @@ -5449,7 +5411,7 @@ pure-rand@^6.0.0: resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz" integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== -qs@^6.11.0, qs@^6.5.1, qs@^6.9.1, qs@6.11.0: +qs@6.11.0, qs@^6.11.0, qs@^6.5.1, qs@^6.9.1: version "6.11.0" resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== @@ -5546,6 +5508,11 @@ request-oauth@0.0.3: qs "^6.5.1" uuid "^3.2.1" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + require_optional@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz" @@ -5554,11 +5521,6 @@ require_optional@^1.0.1: resolve-from "^2.0.0" semver "^5.1.0" -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" @@ -5621,22 +5583,17 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== -safe-buffer@5.2.1: +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -5663,12 +5620,7 @@ semver@^5.1.0: resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.3.0: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^6.3.1: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -5876,7 +5828,7 @@ socks@^2.7.1: ip "^2.0.0" smart-buffer "^4.2.0" -source-map-support@^0.5.12, source-map-support@0.5.13: +source-map-support@0.5.13, source-map-support@^0.5.12: version "0.5.13" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== @@ -5923,20 +5875,6 @@ streamsearch@^1.1.0: resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" @@ -5954,6 +5892,20 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -6128,7 +6080,7 @@ ts-node-dev@^2.0.0: ts-node "^10.4.0" tsconfig "^7.0.0" -ts-node@^10.4.0, ts-node@>=9.0.0: +ts-node@^10.4.0: version "10.9.2" resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== @@ -6212,7 +6164,7 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@*, typescript@^4.7.3, typescript@>=2.7, typescript@>=4.2.0, "typescript@>=4.3 <6": +typescript@^4.7.3: version "4.9.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -6234,7 +6186,7 @@ undici-types@~5.26.4: resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==